/* * Application.h * * Created on: 13 Jul 2017 * Author: wentzelc */ #ifndef REDACORE_APPLICATIONCORE_H_ #define REDACORE_APPLICATIONCORE_H_ // Standard C/C++ Libraries /* none */ // redA Libraries #include "SignalCore.h" #include "TimingCore.h" #include "LogCore.h" #include "DataTreeCore.h" #include "JSONparseCore.h" #include "FunctionCore.h" #include "SelectableCore.h" //--------------------------------------------------------------------------- // Preview typedef struct SFunctionItem TFunctionItem; class Application; //--------------------------------------------------------------------------- struct SFunctionItem { CFunctionCore * Function; SFunctionItem * Next; }; //--------------------------------------------------------------------------- class CApplication { protected: // Variables used for configuration char * ConfigFile; char * AddressFile; // List TFunctionItem * FirstFunction; // Configuration CJSONparse * ConfigParser = NULL; // Output EDebugLevel LogLevel; int LogOutput; // Configuration TDataMember * ConfigMember; TDataMember * FunctionConfigMember; TDataMember * LinkConfigMember; bool LoadConfigData(); public: // Public function vars CDataTree * DataTree; CLogCore * Log; CSelect * Selector; // Life Cycle CApplication( EDebugLevel pDebugLevel ); virtual ~CApplication(); // Manage Config File void GetProcessName( char ** ProcessName, char * pFilePath ); bool LoadConfig( int argc, char *argv[], const char * pConfigPath ); bool SaveConfig(); // Manually set configuration bool SetLogParam( EDebugLevel pDebugLevel, int pOutputDisplay ); // Init application virtual bool Init(); bool InitConfig( const char * pConfigPath ); bool InitFunctions( const char * pConfigPath ); bool InitFunctionLinks( const char * pConfigPath ); // Manage Functions bool AddFunction( CFunctionCore * Function ); CFunctionCore * GetFunction( const char * Name ); // Run Application bool Run( bool TerminateOnError ); }; //--------------------------------------------------------------------------- #endif /* REDACORE_APPLICATIONCORE_H_ */