argList类的组成如下图所示:
私有成员变量的类型:
stringList args_;
HashTable<string> options_;
word executable_;
fileName rootPath_;
fileName globalCase_;
fileName case_;
bool parRun_;
ParRunControl parRunControl_;
// 与信号处理有关的成员变量
sigFpe sigFpe_;
sigInt sigInt_;
sigQuit sigQuit_;
sigSegv sigSegv_;
公有静态成员变量:
static SLList<string> validArgs;
static HashTable<string> validOptions;
static HashTable<string> validParOptions;
以上三个静态成员变量的初始化都是通过相应类型的默认构造函数进行的。
私有成员函数:
int findArg(const string& arg) const; 遍历validArgs从中找出与形参arg相同的参数的位置,如果找不到则返回0。
构造函数:
argList(int& argc, char**& argv, bool checkArgs, bool checkOpts);checkArgs与checkOpts在默认情况下都是true,即当只传两个参数来构造argList时,认为这两个参数都是true。该函数完成一个argList对象的构造,同时完成一系列工作。这里不详细介绍,其中有一项为打印OpenFOAM的标签于控制台上。
析构函数:
virtual ~argList(); 调用全局静态对象jobInfo的end()函数。jobInfo为dictionary类的一个派生类的对象。
静态公有成员函数:
static void noParallel(); 调用静态成员对象validOptions的erease("parallel")函数将parallel从validOptions表中删除
公有成员函数:
const stringList& args() const; 返回args_成员变量的值。
stringList::subList params() const; 返回主程序之外的所有参数的列表
const HashTable<string>& options() const; 返回options_成员变量的常量引用
const word& executable() const; 返回executable_成员变量的常量引用
const fileName& rootPath() const; 返回rootPath_成员变量的常量引用
const fileName& globalCaseName() const; 返回globalCase_成员变量的常量引用
const fileName& caseName() const; 返回case_成员变量的常量引用
fileName path() const; 返回rootCase_/case_
bool parRun() const; 返回parRun_成员变量的值
void printUsage() const; 打印使用信息,
例如:Usage: blockMesh <root> <case> [-blockTopology]
bool check(bool checkArgs = true, bool checkOpts = true) const; checkArgs参数用来决定是否检查命令行中输入的参数是否有效,为true时检查,否则不检查;checkOpts参数决定是否检查命令行中输入的选项是否有效,为true时检查,否则不检查。
bool checkRootCase() const;检查rootPath_的有效性,若有效则返回true,否则返回false
以上即为argList类的构成说明。
具体代码请参照:src/OpenFOAM/global/argList/argList.H及argList.C
评论