netgen/libsrc/general/flags.hpp
2019-01-02 18:21:52 +01:00

89 lines
3.0 KiB
C++

#ifndef FILE_FLAGS
#define FILE_FLAGS
/**************************************************************************/
/* File: flags.hh */
/* Author: Joachim Schoeberl */
/* Date: 10. Oct. 96 */
/**************************************************************************/
namespace netgen
{
/**
Flag - Table.
A flag table maintains string variables, numerical
variables and boolean flags.
*/
class Flags
{
///
SymbolTable<char *> strflags;
///
SymbolTable<double> numflags;
///
SymbolTable<int> defflags;
///
SymbolTable<Array<char*>*> strlistflags;
///
SymbolTable<Array<double>*> numlistflags;
public:
///
DLL_HEADER Flags ();
///
DLL_HEADER ~Flags ();
/// Deletes all flags
DLL_HEADER void DeleteFlags ();
/// Sets string flag, overwrite if exists
DLL_HEADER void SetFlag (const char * name, const char * val);
/// Sets numerical flag, overwrite if exists
DLL_HEADER void SetFlag (const char * name, double val);
/// Sets boolean flag
DLL_HEADER void SetFlag (const char * name);
/// Sets string arary flag
DLL_HEADER void SetFlag (const char * name, const Array<char*> & val);
/// Sets double array flag
DLL_HEADER void SetFlag (const char * name, const Array<double> & val);
/// Save flags to file
DLL_HEADER void SaveFlags (const char * filename) const;
/// write flags to stream
DLL_HEADER void PrintFlags (ostream & ost) const;
/// Load flags from file
DLL_HEADER void LoadFlags (const char * filename);
/// set flag of form -name=hello -val=0.5 -defined
DLL_HEADER void SetCommandLineFlag (const char * st);
/// Returns string flag, default value if not exists
DLL_HEADER const char * GetStringFlag (const char * name, const char * def) const;
/// Returns numerical flag, default value if not exists
DLL_HEADER double GetNumFlag (const char * name, double def) const;
/// Returns address of numerical flag, null if not exists
DLL_HEADER const double * GetNumFlagPtr (const char * name) const;
/// Returns address of numerical flag, null if not exists
DLL_HEADER double * GetNumFlagPtr (const char * name);
/// Returns boolean flag
DLL_HEADER bool GetDefineFlag (const char * name) const;
/// Returns string list flag, empty array if not exist
DLL_HEADER const Array<char*> & GetStringListFlag (const char * name) const;
/// Returns num list flag, empty array if not exist
DLL_HEADER const Array<double> & GetNumListFlag (const char * name) const;
/// Test, if string flag is defined
DLL_HEADER bool StringFlagDefined (const char * name) const;
/// Test, if num flag is defined
DLL_HEADER bool NumFlagDefined (const char * name) const;
/// Test, if string list flag is defined
DLL_HEADER bool StringListFlagDefined (const char * name) const;
/// Test, if num list flag is defined
DLL_HEADER bool NumListFlagDefined (const char * name) const;
};
}
#endif