SimulatorImplementation.hpp

Go to the documentation of this file.
00001 //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
00002 //
00003 //        This file is part of E-Cell Simulation Environment package
00004 //
00005 //                Copyright (C) 1996-2002 Keio University
00006 //
00007 //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
00008 //
00009 //
00010 // E-Cell is free software; you can redistribute it and/or
00011 // modify it under the terms of the GNU General Public
00012 // License as published by the Free Software Foundation; either
00013 // version 2 of the License, or (at your option) any later version.
00014 // 
00015 // E-Cell is distributed in the hope that it will be useful,
00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00018 // See the GNU General Public License for more details.
00019 // 
00020 // You should have received a copy of the GNU General Public
00021 // License along with E-Cell -- see the file COPYING.
00022 // If not, write to the Free Software Foundation, Inc.,
00023 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00024 // 
00025 //END_HEADER
00026 //
00027 // written by Koichi Takahashi <shafi@e-cell.org>,
00028 // E-Cell Project.
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   /** @addtogroup libemc_module 
00044    * @{ 
00045    */ 
00046 
00047   /** @file */
00048 
00049 
00050   /**
00051      Pure virtual base class (interface definition) of simulator
00052      implementation.
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   };   //end of class Simulator
00198 
00199   /** @} */ //end of libemc_module 
00200 
00201 } // namespace libemc
00202 
00203 #endif   /* ___SIMULATOR_IMPLEMENTATION_H___ */
00204 

Generated on Mon Dec 18 07:29:46 2006 for E-CELL C++ libraries (libecs and libemc) 3.1.105 by  doxygen 1.5.1