NCStruct, /// Context is a list of pointers to structs of variables, followed by the /// variables of the inner-most function with variables accessed by nested /// functions. The initial pointers point to similar structs for enclosing /// functions. /// Only functions whose variables are accessed by nested functions create /// new frames, others just pass on what got passed in. NCHybrid }; static cl::opt<NestedCtxType> nestedCtx("nested-ctx", cl::desc("How to construct a nested function's context:"), cl::ZeroOrMore, cl::values( clEnumValN(NCArray, "array", "Array of pointers to variables (including multi-level)"), //clEnumValN(NCStruct, "struct", "Struct of variables (with multi-level via linked list)"), clEnumValN(NCHybrid, "hybrid", "List of pointers to structs of variables, one per level."), clEnumValEnd), cl::init(NCHybrid)); /****************************************************************************************/ /*//////////////////////////////////////////////////////////////////////////////////////// // NESTED VARIABLE HELPERS ////////////////////////////////////////////////////////////////////////////////////////*/ static FuncDeclaration* getParentFunc(Dsymbol* sym, bool stopOnStatic) { if (!sym) return NULL; Dsymbol* parent = sym->parent;
cl::list<std::string> Languages("x", cl::desc("Specify the language of the following input files"), cl::ZeroOrMore); cl::opt<bool> DryRun("dry-run", cl::desc("Only pretend to run commands")); cl::opt<bool> Time("time", cl::desc("Time individual commands")); cl::opt<bool> VerboseMode("v", cl::desc("Enable verbose mode")); cl::opt<bool> CheckGraph("check-graph", cl::desc("Check the compilation graph for errors"), cl::Hidden); cl::opt<bool> WriteGraph("write-graph", cl::desc("Write compilation-graph.dot file"), cl::Hidden); cl::opt<bool> ViewGraph("view-graph", cl::desc("Show compilation graph in GhostView"), cl::Hidden); cl::opt<SaveTempsEnum::Values> SaveTemps ("save-temps", cl::desc("Keep temporary files"), cl::init(SaveTempsEnum::Unset), cl::values(clEnumValN(SaveTempsEnum::Obj, "obj", "Save files in the directory specified with -o"), clEnumValN(SaveTempsEnum::Cwd, "cwd", "Use current working directory"), clEnumValN(SaveTempsEnum::Obj, "", "Same as 'cwd'"), clEnumValEnd), cl::ValueOptional);