00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef __SIMULATORIMPLEMENTATION_HPP
00033 #define __SIMULATORIMPLEMENTATION_HPP
00034
00035 #include "libecs/libecs.hpp"
00036
00037 #include "libemc.hpp"
00038
00039
00040 namespace libemc
00041 {
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 class SimulatorImplementation
00056 {
00057
00058 public:
00059
00060 SimulatorImplementation() {}
00061 virtual ~SimulatorImplementation() {}
00062
00063
00064 virtual void createStepper( libecs::StringCref aClassname,
00065 libecs::StringCref anId ) = 0;
00066
00067 virtual void deleteStepper( libecs::StringCref anID ) = 0;
00068
00069 virtual const libecs::Polymorph getStepperList() const = 0;
00070
00071 virtual const libecs::Polymorph
00072 getStepperPropertyList( libecs::StringCref aStepperID ) const = 0;
00073
00074 virtual const libecs::Polymorph
00075 getStepperPropertyAttributes( libecs::StringCref aStepperID,
00076 libecs::StringCref aPropertyName ) const = 0;
00077
00078 virtual void setStepperProperty( libecs::StringCref aStepperID,
00079 libecs::StringCref aPropertyName,
00080 libecs::PolymorphCref aValue ) = 0;
00081
00082 virtual const libecs::Polymorph
00083 getStepperProperty( libecs::StringCref aStepperID,
00084 libecs::StringCref aPropertyName ) const = 0;
00085
00086 virtual void loadStepperProperty( libecs::StringCref aStepperID,
00087 libecs::StringCref aPropertyName,
00088 libecs::PolymorphCref aValue ) = 0;
00089
00090 virtual const libecs::Polymorph
00091 saveStepperProperty( libecs::StringCref aStepperID,
00092 libecs::StringCref aPropertyName ) const = 0;
00093
00094 virtual const libecs::String
00095 getStepperClassName( libecs::StringCref aStepperID ) const = 0;
00096
00097
00098 virtual const libecs::PolymorphMap
00099 getClassInfo( libecs::StringCref aClasstype,
00100 libecs::StringCref aClassname,
00101 const libecs::Integer forceReload ) = 0;
00102
00103
00104 virtual void createEntity( libecs::StringCref aClassname,
00105 libecs::StringCref aFullIDString ) = 0;
00106
00107 virtual void deleteEntity( libecs::StringCref aFullIDString ) = 0;
00108
00109 virtual const libecs::Polymorph
00110 getEntityList( libecs::StringCref anEntityTypeString,
00111 libecs::StringCref aSystemPathString ) const = 0;
00112
00113 virtual const libecs::Polymorph
00114 getEntityPropertyList( libecs::StringCref aFullIDString ) const = 0;
00115
00116 virtual const bool
00117 isEntityExist( libecs::StringCref aFullIDString ) const = 0;
00118
00119 virtual void setEntityProperty( libecs::StringCref aFullPNString,
00120 libecs::PolymorphCref aValue ) = 0;
00121
00122 virtual const libecs::Polymorph
00123 getEntityProperty( libecs::StringCref aFullPNString ) const = 0;
00124
00125 virtual void loadEntityProperty( libecs::StringCref aFullPNString,
00126 libecs::PolymorphCref aValue ) = 0;
00127
00128 virtual const libecs::Polymorph
00129 saveEntityProperty( libecs::StringCref aFullPNString ) const = 0;
00130
00131 virtual const libecs::Polymorph
00132 getEntityPropertyAttributes( libecs::StringCref aFullPNString ) const = 0;
00133
00134 virtual const libecs::String
00135 getEntityClassName( libecs::StringCref aFullIDString ) const = 0;
00136
00137 virtual void createLogger( libecs::StringCref aFullPNString ) = 0;
00138
00139 virtual void createLogger( libecs::StringCref aFullPNString, libecs::Polymorph aParamList ) = 0;
00140
00141 virtual const libecs::Polymorph getLoggerList() const = 0;
00142
00143 virtual const libecs::DataPointVectorSharedPtr
00144 getLoggerData( libecs::StringCref aFullPNString ) const = 0;
00145
00146 virtual const libecs::DataPointVectorSharedPtr
00147 getLoggerData( libecs::StringCref aFullPNString,
00148 libecs::RealCref aStartTime,
00149 libecs::RealCref anEndTime ) const = 0;
00150
00151 virtual const libecs::DataPointVectorSharedPtr
00152 getLoggerData( libecs::StringCref aFullPNString,
00153 libecs::RealCref aStartTime, libecs::RealCref anEndTime,
00154 libecs::RealCref interval ) const = 0;
00155
00156 virtual const libecs::Real
00157 getLoggerStartTime( libecs::StringCref aFullPNString ) const = 0;
00158
00159 virtual const libecs::Real
00160 getLoggerEndTime( libecs::StringCref aFullPNString ) const = 0;
00161
00162 virtual void
00163 setLoggerMinimumInterval( libecs::StringCref aFullPNString,
00164 libecs::RealCref anInterval ) = 0;
00165
00166 virtual const libecs::Real
00167 getLoggerMinimumInterval( libecs::StringCref aFullPNString ) const = 0;
00168
00169 virtual void
00170 setLoggerPolicy( libecs::StringCref aFullPNString,
00171 libecs::Polymorph aParamList ) = 0;
00172
00173 virtual const libecs::Polymorph
00174 getLoggerPolicy( libecs::StringCref aFullPNString ) const = 0;
00175
00176 virtual const libecs::Integer
00177 getLoggerSize( libecs::StringCref aFullPNString ) const = 0;
00178
00179 virtual const libecs::Polymorph getNextEvent() const = 0;
00180
00181 virtual void step( const libecs::Integer aNumSteps ) = 0;
00182
00183 virtual const libecs::Real getCurrentTime() const = 0;
00184
00185 virtual void run() = 0;
00186
00187 virtual void run( const libecs::Real aDuration ) = 0;
00188
00189 virtual void stop() = 0;
00190
00191 virtual void setEventChecker( EventCheckerSharedPtrCref aEventChecker ) = 0;
00192
00193 virtual void setEventHandler( EventHandlerSharedPtrCref anEventHandler ) = 0;
00194
00195 virtual const libecs::Polymorph getDMInfo() = 0;
00196
00197 };
00198
00199
00200
00201 }
00202
00203 #endif
00204