NGSolve
4.9
|
00001 #ifndef FILE_NGS_FLAGS 00002 #define FILE_NGS_FLAGS 00003 00004 00005 /**************************************************************************/ 00006 /* File: flags.hpp */ 00007 /* Author: Joachim Schoeberl */ 00008 /* Date: 10. Oct. 96 */ 00009 /**************************************************************************/ 00010 00011 namespace ngstd 00012 { 00013 00022 class NGS_DLL_HEADER Flags 00023 { 00025 SymbolTable<char *> strflags; 00027 SymbolTable<double> numflags; 00029 SymbolTable<int> defflags; 00031 SymbolTable<Array<char*>*> strlistflags; 00033 SymbolTable<Array<double>*> numlistflags; 00034 public: 00036 Flags (); 00038 Flags (const Flags & flags); 00040 Flags (string f1, string f2 = "", string f3 = "", string f4 = "", string f5 = ""); 00042 ~Flags (); 00043 00045 void DeleteFlags (); 00047 Flags & SetFlag (const char * name, const char * val); 00049 Flags & SetFlag (const char * name, double val); 00051 Flags & SetFlag (const char * name); 00053 Flags & SetFlag (const char * name, const Array<char*> & val); 00055 Flags & SetFlag (const char * name, const Array<double> & val); 00056 00058 void SaveFlags (const char * filename) const; 00060 void PrintFlags (ostream & ost) const; 00062 void LoadFlags (const char * filename); 00068 void SetCommandLineFlag (const char * st); 00069 00070 00072 const char * GetStringFlag (const char * name, const char * def) const; 00074 double GetNumFlag (const char * name, double def) const; 00076 const double * GetNumFlagPtr (const char * name) const; 00078 double * GetNumFlagPtr (const char * name); 00080 int GetDefineFlag (const char * name) const; 00081 int GetDefineFlag (const string & name) const; 00083 const Array<char*> & GetStringListFlag (const char * name) const; 00085 const Array<double> & GetNumListFlag (const char * name) const; 00086 00087 00089 int StringFlagDefined (const char * name) const; 00091 int NumFlagDefined (const char * name) const; 00093 int StringListFlagDefined (const char * name) const; 00095 int NumListFlagDefined (const char * name) const; 00096 00098 int GetNStringFlags () const { return strflags.Size(); } 00100 int GetNNumFlags () const { return numflags.Size(); } 00102 int GetNDefineFlags () const { return defflags.Size(); } 00104 int GetNStringListFlags () const { return strlistflags.Size(); } 00106 int GetNNumListFlags () const { return numlistflags.Size(); } 00107 00109 const char * GetStringFlag (int i, const char *& name) const 00110 { name = strflags.GetName(i); return strflags[i]; } 00111 double GetNumFlag (int i, const char *& name) const 00112 { name = numflags.GetName(i); return numflags[i]; } 00113 void GetDefineFlag (int i, const char *& name) const 00114 { name = defflags.GetName(i); } 00115 const Array<double> * GetNumListFlag (int i, const char *& name) const 00116 { name = numlistflags.GetName(i); return numlistflags[i]; } 00117 const Array<char*> * GetStringListFlag (int i, const char *& name) const 00118 { name = strlistflags.GetName(i); return strlistflags[i]; } 00119 }; 00120 00121 00122 00124 inline ostream & operator<< (ostream & s, const Flags & flags) 00125 { 00126 flags.PrintFlags (s); 00127 return s; 00128 } 00129 } 00130 00131 00132 #endif 00133