[Echempp-devel] Experiment/Experiment Experiment.hpp,1.4,1.5
Status: Beta
Brought to you by:
berndspeiser
|
From: beeblbrox <bee...@us...> - 2007-05-05 08:49:11
|
Update of /cvsroot/echempp/Experiment/Experiment In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv28324 Modified Files: Experiment.hpp Log Message: Updated to use TechniqueType, autoregistration yet to be added. Index: Experiment.hpp =================================================================== RCS file: /cvsroot/echempp/Experiment/Experiment/Experiment.hpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Experiment.hpp 11 Apr 2007 08:25:35 -0000 1.4 --- Experiment.hpp 5 May 2007 08:49:07 -0000 1.5 *************** *** 1,2 **** --- 1,26 ---- + /*! \file Experiment.hpp + \brief header file for experiment classes. + + Experiment.hpp is part of the Experiment package. + */ + + /* Copyright (C) 2007, Dominik Brugger, Bernd Speiser + This file is part of EChem++. + + EChem++ is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + EChem++ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. + */ // $Id$ *************** *** 27,32 **** --- 51,62 ---- #include <loki/LokiTypeInfo.h> + // BSUtilities includes + #include "TemplateTools.h" + #include "SerializationTools.h" + #include "TypeToName.h" + // Local includes #include "ExcitationFunction/excitationFunction.hpp" + #include "Experiment/TechniqueType.hpp" namespace experiment *************** *** 38,43 **** --- 68,76 ---- { public: + //! Type of functor argument. typedef Obj argument_type; + //! Type of functor result. typedef void result_type; + //! Apply functor to argument. result_type operator()(argument_type obj) { *************** *** 50,58 **** { //! Type used to designate simulated experiments. ! struct Simulated{}; //! Type used to designate real experiments. ! struct Real{}; //! Type used to designate dual experiments, e.g. one part real the other simulated. ! struct Dual{}; } //! Namespace for dynamics types. --- 83,103 ---- { //! Type used to designate simulated experiments. ! struct Simulated ! { ! static const std::string TSID; ! }; ! const std::string Simulated::TSID = "experiment::realism::Simulated"; //! Type used to designate real experiments. ! struct Real ! { ! static const std::string TSID; ! }; ! const std::string Real::TSID = "experiment::realism::Real"; //! Type used to designate dual experiments, e.g. one part real the other simulated. ! struct Dual ! { ! static const std::string TSID; ! }; ! const std::string Dual::TSID = "experiment::realism::Dual"; } //! Namespace for dynamics types. *************** *** 60,70 **** { //! Type used to designate dynamic experiments. ! struct Dynamic{}; //! Type used to designate static experiments. ! struct Static{}; } //! Exception class for experiment module. ! //! This exception is thrown for example, when violation of //! Experiment container invariants occurs. //! \sa Homogeneous --- 105,123 ---- { //! Type used to designate dynamic experiments. ! struct Dynamic ! { ! static const std::string TSID; ! }; ! const std::string Dynamic::TSID = "experiment::dynamics::Dynamic"; //! Type used to designate static experiments. ! struct Static ! { ! static const std::string TSID; ! }; ! const std::string Static::TSID = "experiment::dynamics::Static"; } //! Exception class for experiment module. ! //! This exception is thrown for example, when a violation of //! Experiment container invariants occurs. //! \sa Homogeneous *************** *** 88,97 **** { public: ! Experiment() { title_ = "Insert Experiment title"; } ! Experiment(const std::string title) : title_(title) {} virtual ~Experiment() {} virtual void perform() = 0; virtual void add(Experiment* e) = 0; virtual void remove(const size_t idx) = 0; virtual const Loki::TypeInfo get_independent_type() const = 0; virtual const Loki::TypeInfo get_dependent_type() const = 0; --- 141,152 ---- { public: ! Experiment() { title_ = "Insert Experiment title"; parent_ = NULL; } ! Experiment(const std::string title) : title_(title) { parent_ = NULL; } virtual ~Experiment() {} virtual void perform() = 0; virtual void add(Experiment* e) = 0; virtual void remove(const size_t idx) = 0; + Experiment* get_parent() { return parent_; } + void set_parent(Experiment* parent) { parent_ = parent; } virtual const Loki::TypeInfo get_independent_type() const = 0; virtual const Loki::TypeInfo get_dependent_type() const = 0; *************** *** 109,117 **** private: std::string title_; friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { ! ar & BOOST_SERIALIZATION_NVP(title_); } }; --- 164,174 ---- private: std::string title_; + Experiment* parent_; friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { ! ar & BOOST_SERIALIZATION_NVP(title_) ! & BOOST_SERIALIZATION_NVP(parent_); } }; *************** *** 120,128 **** //! Atomic experiments are used to represent self-contained //! experiments that are not further divisible. ! template<class Realism, ! class Dynamics> class Atomic : public Experiment { public: Atomic() {} Atomic(const std::string title) : Experiment(title) {} --- 177,186 ---- //! Atomic experiments are used to represent self-contained //! experiments that are not further divisible. ! template<class TechType> class Atomic : public Experiment { public: + typedef typename TechType::dynamics_type dynamics_type; + typedef typename TechType::realism_type realism_type; Atomic() {} Atomic(const std::string title) : Experiment(title) {} *************** *** 131,140 **** const Loki::TypeInfo get_realism_type() const { ! Loki::TypeInfo info = typeid(Realism); return info; } const Loki::TypeInfo get_dynamics_type() const { ! Loki::TypeInfo info = typeid(Dynamics); return info; } --- 189,198 ---- const Loki::TypeInfo get_realism_type() const { ! Loki::TypeInfo info = typeid(realism_type); return info; } const Loki::TypeInfo get_dynamics_type() const { ! Loki::TypeInfo info = typeid(dynamics_type); return info; } *************** *** 162,175 **** //! \sa Induced //! \sa Observation template<class Realism, class Dynamics, ! class D, /* type of dependent variable */ ! class I> /* type of independent variable */ ! class Action : public Atomic<Realism, Dynamics> { public: ! typedef Atomic<Realism, Dynamics> AtomicBase; Action() {} ! Action(const std::string title) : AtomicBase(title) {} virtual ~Action() {} virtual void perform() {} --- 220,243 ---- //! \sa Induced //! \sa Observation + template<class TechType> class Action : public Atomic<TechType> {}; template<class Realism, class Dynamics, ! class I, ! class D, ! class R, ! template<class, class> class S> ! class Action<TechniqueType<Realism, Dynamics, I, D, R, S> > ! : public Atomic<TechniqueType<Realism, Dynamics, I, D, R, S> > { public: ! typedef TechniqueType<Realism, Dynamics, I, D, R, S> TechType; ! // BSUtilities::AutoRegistor<Action<TechType> > reg; ! // static const std::string TSID; ! typedef Atomic<TechType> ! _AtomicBase; ! typedef Action<TechType> ! _Action; Action() {} ! Action(const std::string title) : _AtomicBase(title) {} virtual ~Action() {} virtual void perform() {} *************** *** 206,214 **** execution_end = pt; } ! const ExcitationFunctions::DIExcitationFunction<D,I> get_exc_func() const { return exc_func; } ! void set_exc_func(const ExcitationFunctions::DIExcitationFunction<D,I>& ef) { exc_func = ef; --- 274,284 ---- execution_end = pt; } ! const ExcitationFunctions::SDIExcitationFunction<D,I,S> ! get_exc_func() const { return exc_func; } ! void set_exc_func(const ExcitationFunctions::SDIExcitationFunction< ! D, I, S>& ef) { exc_func = ef; *************** *** 216,221 **** const bool has_matching_independent_range(Experiment* e) const { ! Action<Realism, Dynamics, D, I> *a = ! dynamic_cast<Action<Realism, Dynamics, D, I> *>(e); if(a != 0) { --- 286,290 ---- const bool has_matching_independent_range(Experiment* e) const { ! _Action *a = dynamic_cast<_Action *>(e); if(a != 0) { *************** *** 233,238 **** virtual const bool equal(Experiment* e) const { ! Action<Realism, Dynamics, D, I>* a ! = dynamic_cast<Action<Realism, Dynamics, D, I>* >(e); return a != 0 && execution_start == a->execution_start --- 302,306 ---- virtual const bool equal(Experiment* e) const { ! _Action* a = dynamic_cast<_Action *>(e); return a != 0 && execution_start == a->execution_start *************** *** 240,244 **** && exc_func == a->exc_func /* TODO: Check equality of other fields */ ! && Atomic<Realism, Dynamics>::equal(e); } private: --- 308,312 ---- && exc_func == a->exc_func /* TODO: Check equality of other fields */ ! && _AtomicBase::equal(e); } private: *************** *** 247,251 **** void serialize(Archive & ar, const unsigned int version) { ! ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(AtomicBase) & BOOST_SERIALIZATION_NVP(execution_start) & BOOST_SERIALIZATION_NVP(execution_end); --- 315,319 ---- void serialize(Archive & ar, const unsigned int version) { ! ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(_AtomicBase) & BOOST_SERIALIZATION_NVP(execution_start) & BOOST_SERIALIZATION_NVP(execution_end); *************** *** 254,259 **** boost::posix_time::ptime execution_start; boost::posix_time::ptime execution_end; ! ExcitationFunctions::DIExcitationFunction<D,I> exc_func; }; //! Class to represent induced experiments. --- 322,337 ---- boost::posix_time::ptime execution_start; boost::posix_time::ptime execution_end; ! ExcitationFunctions::SDIExcitationFunction<D,I,S> exc_func; }; + + // template<class Realism, + // class Dynamics, + // class I, + // class D, + // class R, + // template<class, class> class S> + // const std::string Action<TechniqueType<Realism,Dynamics,I,D,R,S> >::TSID = + // "experiment::Action" + + // BSUtilities::TypeToName<TechniqueType<Realism,Dynamics,I,D,R,S> >(); //! Class to represent induced experiments. *************** *** 262,273 **** //! \sa Action //! \sa Observation template<class Realism, class Dynamics, ! class D, /* type of dependent variable */ ! class I, /* type of independent variable */ ! class R> /* type of result variable */ ! class Induced : public Atomic<Realism, Dynamics> { public: Induced() {}; virtual ~Induced() { std::cout << "Called ~Induced" << std::endl; }; --- 340,358 ---- //! \sa Action //! \sa Observation + template<class TechType> class Induced : public Atomic<TechType> {}; template<class Realism, class Dynamics, ! class I, ! class D, ! class R, ! template<class, class> class S> ! class Induced<TechniqueType<Realism, Dynamics, I, D, R, S> > ! : public Atomic<TechniqueType<Realism, Dynamics, I, D, R, S> > { public: + typedef Atomic<TechniqueType<Realism, Dynamics, I, D, R, S> > + _AtomicBase; + typedef Induced<TechniqueType<Realism, Dynamics, I, D, R, S> > + _Induced; Induced() {}; virtual ~Induced() { std::cout << "Called ~Induced" << std::endl; }; *************** *** 291,296 **** const bool has_matching_independent_range(Experiment* e) const { ! Induced<Realism, Dynamics, D, I, R> *i = ! dynamic_cast<Induced<Realism, Dynamics, D, I, R> *>(e); if(i != 0) { --- 376,380 ---- const bool has_matching_independent_range(Experiment* e) const { ! _Induced *i = dynamic_cast<_Induced *>(e); if(i != 0) { *************** *** 308,313 **** virtual const bool equal(Experiment* e) const { ! Induced<Realism, Dynamics, D, I, R> *i = ! dynamic_cast<Induced<Realism, Dynamics, D, I, R>* >(e); return i != 0 && induction_start == i->induction_start --- 392,396 ---- virtual const bool equal(Experiment* e) const { ! _Induced *i = dynamic_cast<_Induced *>(e); return i != 0 && induction_start == i->induction_start *************** *** 315,319 **** && exc_func == i->exc_func /* TODO: Check equality of other fields */ ! && Atomic<Realism, Dynamics>::equal(e); } const boost::posix_time::ptime get_induction_start() const --- 398,402 ---- && exc_func == i->exc_func /* TODO: Check equality of other fields */ ! && _AtomicBase::equal(e); } const boost::posix_time::ptime get_induction_start() const *************** *** 333,351 **** induction_end = pt; } ! const ExcitationFunctions::DIExcitationFunction<D,I> get_exc_func() const { return exc_func; } ! void set_exc_func(const ExcitationFunctions::DIExcitationFunction<D,I>& ef) { exc_func = ef; } private: - typedef Atomic<Realism, Dynamics> AtomicBase; friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { ! ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(AtomicBase) & BOOST_SERIALIZATION_NVP(induction_start) & BOOST_SERIALIZATION_NVP(induction_end); --- 416,435 ---- induction_end = pt; } ! const ExcitationFunctions::SDIExcitationFunction<D, I, S> ! get_exc_func() const { return exc_func; } ! void set_exc_func(const ExcitationFunctions::SDIExcitationFunction< ! D, I, S>& ef) { exc_func = ef; } private: friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { ! ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(_AtomicBase) & BOOST_SERIALIZATION_NVP(induction_start) & BOOST_SERIALIZATION_NVP(induction_end); *************** *** 354,358 **** boost::posix_time::ptime induction_start; boost::posix_time::ptime induction_end; ! ExcitationFunctions::DIExcitationFunction<D,I> exc_func; // TODO: MeasurementData ? R result; --- 438,442 ---- boost::posix_time::ptime induction_start; boost::posix_time::ptime induction_end; ! ExcitationFunctions::SDIExcitationFunction<D, I, S> exc_func; // TODO: MeasurementData ? R result; *************** *** 365,373 **** //! \sa Action //! \sa Induced ! template<class Realism, ! class Dynamics, ! class I, /* type of independent variable */ ! class R> /* type of result variable */ ! class Observation : public Atomic<Realism, Dynamics> {}; // partial template specialization to enforce constraint, --- 449,458 ---- //! \sa Action //! \sa Induced ! template<class TechType> ! class Observation : Atomic<TechType> {}; ! // { ! // private: ! // Observation(){} ! // }; // partial template specialization to enforce constraint, *************** *** 377,385 **** class I, class R> ! class Observation<Realism, dynamics::Dynamic, I, R> ! : public Atomic<Realism, dynamics::Dynamic> { public: Observation() {}; Observation(const I start, const I end) : start_(start), end_(end) {}; --- 462,472 ---- class I, class R> ! class Observation<TechniqueType<Realism, dynamics::Dynamic, I, Loki::EmptyType, R, BSUtilities::EmptyTemplate_2> > ! : public Atomic<TechniqueType<Realism, dynamics::Dynamic, I, Loki::EmptyType, R, BSUtilities::EmptyTemplate_2> > { public: Observation() {}; + typedef Observation<TechniqueType<Realism, dynamics::Dynamic, I, Loki::EmptyType, R, BSUtilities::EmptyTemplate_2> > _Observation; + typedef Atomic<TechniqueType<Realism, dynamics::Dynamic, I, Loki::EmptyType, R, BSUtilities::EmptyTemplate_2> > _AtomicBase; Observation(const I start, const I end) : start_(start), end_(end) {}; *************** *** 404,409 **** const bool has_matching_independent_range(Experiment* e) const { ! Observation<Realism, dynamics::Dynamic, I, R> *o = ! dynamic_cast<Observation<Realism, dynamics::Dynamic, I, R> *>(e); if(o != 0) { --- 491,495 ---- const bool has_matching_independent_range(Experiment* e) const { ! _Observation *o = dynamic_cast<_Observation *>(e); if(o != 0) { *************** *** 433,442 **** void set_end(const I end) { end_ = end; } private: - typedef Atomic<Realism, dynamics::Dynamic> AtomicBase; friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { ! ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(AtomicBase) & BOOST_SERIALIZATION_NVP(recording_start_) & BOOST_SERIALIZATION_NVP(recording_end_); --- 519,527 ---- void set_end(const I end) { end_ = end; } private: friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { ! ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(_AtomicBase) & BOOST_SERIALIZATION_NVP(recording_start_) & BOOST_SERIALIZATION_NVP(recording_end_); *************** *** 453,460 **** template<class Realism, class R> ! class Observation<Realism, dynamics::Static, Loki::EmptyType, R> ! : public Atomic<Realism, dynamics::Static> { public: Observation() {}; virtual ~Observation() { std::cout << "Called ~Observation" << std::endl; }; --- 538,555 ---- template<class Realism, class R> ! class Observation<TechniqueType<Realism, dynamics::Static, Loki::EmptyType, ! Loki::EmptyType, ! R, BSUtilities::EmptyTemplate_2> > ! : public Atomic<TechniqueType<Realism, dynamics::Static, Loki::EmptyType, ! Loki::EmptyType, ! R, BSUtilities::EmptyTemplate_2> > { public: + typedef Observation<TechniqueType<Realism, dynamics::Static, Loki::EmptyType, + Loki::EmptyType, + R, BSUtilities::EmptyTemplate_2> > _Observation; + typedef Atomic<TechniqueType<Realism, dynamics::Static, Loki::EmptyType, + Loki::EmptyType, + R, BSUtilities::EmptyTemplate_2> > _AtomicBase; Observation() {}; virtual ~Observation() { std::cout << "Called ~Observation" << std::endl; }; *************** *** 481,490 **** } private: - typedef Atomic<Realism, dynamics::Static> AtomicBase; friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { ! ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(AtomicBase) & BOOST_SERIALIZATION_NVP(recording_start) & BOOST_SERIALIZATION_NVP(recording_end); --- 576,584 ---- } private: friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { ! ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(_AtomicBase) & BOOST_SERIALIZATION_NVP(recording_start) & BOOST_SERIALIZATION_NVP(recording_end); *************** *** 515,518 **** --- 609,613 ---- virtual void add(Experiment* e) { + e->set_parent(this); elements.push_back(e); } *************** *** 772,811 **** }; ! typedef Action<realism::Real, dynamics::Dynamic, ! quantity::ElectricPotential, quantity::Time> ! RealDynamicEPTAction; ! typedef Action<realism::Simulated, dynamics::Dynamic, ! quantity::ElectricPotential, quantity::Time> ! SimulatedDynamicEPTAction; ! typedef Action<realism::Dual, dynamics::Dynamic, ! quantity::ElectricPotential, quantity::Time> ! DualDynamicEPTAction; ! typedef Action<realism::Real, dynamics::Static, ! quantity::ElectricPotential, quantity::Time> ! RealStaticEPTAction; ! typedef Action<realism::Simulated, dynamics::Static, ! quantity::ElectricPotential, quantity::Time> ! SimulatedStaticEPTAction; ! typedef Action<realism::Dual, dynamics::Static, ! quantity::ElectricPotential, quantity::Time> ! DualStaticEPTAction; ! typedef Action<realism::Real, dynamics::Dynamic, ! quantity::ElectricPotential, quantity::CelsiusTemperature> ! RealDynamicEPTempAction; ! typedef Action<realism::Real, dynamics::Dynamic, ! quantity::ElectricCurrent, quantity::Time> ! RealDynamicECTAction; ! typedef Observation<realism::Real, dynamics::Dynamic, quantity::Time, ! quantity::ElectricPotential> ! RealDynamicTEPObservation; ! typedef Induced<realism::Real, dynamics::Dynamic, ! quantity::ElectricPotential, quantity::Time, quantity::Time> ! RealDynamicEPTInduced; ! typedef Atomic<realism::Real, dynamics::Dynamic> RealDynamicAtomic; ! typedef Atomic<realism::Real, dynamics::Static> RealStaticAtomic; ! typedef Atomic<realism::Simulated, dynamics::Dynamic> SimulatedDynamicAtomic; ! typedef Atomic<realism::Simulated, dynamics::Static> SimulatedStaticAtomic; ! typedef Atomic<realism::Dual, dynamics::Dynamic> DualDynamicAtomic; ! typedef Atomic<realism::Dual, dynamics::Static> DualStaticAtomic; } // end namespace experiment --- 867,1016 ---- }; ! namespace cv ! { ! typedef TechniqueType<realism::Real, ! dynamics::Dynamic, ! quantity::Time, ! quantity::ElectricPotential, ! quantity::ElectricCurrent, ! ExcitationFunctions::Segments::LinearSegment> ! RealDynamicTech; ! typedef TechniqueType<realism::Simulated, ! dynamics::Dynamic, ! quantity::Time, ! quantity::ElectricPotential, ! quantity::ElectricCurrent, ! ExcitationFunctions::Segments::LinearSegment> ! SimulatedDynamicTech; ! typedef TechniqueType<realism::Dual, ! dynamics::Dynamic, ! quantity::Time, ! quantity::ElectricPotential, ! quantity::ElectricCurrent, ! ExcitationFunctions::Segments::LinearSegment> ! DualDynamicTech; ! } // end namespace cv ! ! namespace internal{ ! // for internal testing of experiment classes, do not use ! typedef TechniqueType<realism::Real, ! dynamics::Dynamic, ! quantity::Time, ! quantity::ElectricPotential, ! Loki::EmptyType, ! ExcitationFunctions::Segments::LinearSegment> ! AT1; ! typedef TechniqueType<realism::Simulated, ! dynamics::Dynamic, ! quantity::Time, ! quantity::ElectricPotential, ! Loki::EmptyType, ! ExcitationFunctions::Segments::LinearSegment> ! AT2; ! typedef TechniqueType<realism::Dual, ! dynamics::Dynamic, ! quantity::Time, ! quantity::ElectricPotential, ! Loki::EmptyType, ! ExcitationFunctions::Segments::LinearSegment> ! AT3; ! typedef TechniqueType<realism::Real, ! dynamics::Static, ! quantity::Time, ! quantity::ElectricPotential, ! Loki::EmptyType, ! ExcitationFunctions::Segments::LinearSegment> ! AT4; ! typedef TechniqueType<realism::Simulated, ! dynamics::Static, ! quantity::Time, ! quantity::ElectricPotential, ! Loki::EmptyType, ! ExcitationFunctions::Segments::LinearSegment> ! AT5; ! typedef TechniqueType<realism::Dual, ! dynamics::Static, ! quantity::Time, ! quantity::ElectricPotential, ! Loki::EmptyType, ! ExcitationFunctions::Segments::LinearSegment> ! AT6; ! typedef TechniqueType<realism::Real, ! dynamics::Dynamic, ! quantity::CelsiusTemperature, ! quantity::ElectricPotential, ! Loki::EmptyType, ! ExcitationFunctions::Segments::LinearSegment> ! AT7; ! typedef TechniqueType<realism::Real, ! dynamics::Dynamic, ! quantity::Time, ! quantity::ElectricCurrent, ! Loki::EmptyType, ! ExcitationFunctions::Segments::LinearSegment> ! AT8; ! typedef TechniqueType<realism::Real, ! dynamics::Dynamic, ! quantity::Time, ! Loki::EmptyType, ! quantity::ElectricCurrent, ! BSUtilities::EmptyTemplate_2> ! OT1; ! typedef TechniqueType<realism::Simulated, ! dynamics::Dynamic, ! quantity::Time, ! Loki::EmptyType, ! quantity::ElectricCurrent, ! BSUtilities::EmptyTemplate_2> ! OT2; ! typedef TechniqueType<realism::Dual, ! dynamics::Dynamic, ! quantity::Time, ! Loki::EmptyType, ! quantity::ElectricCurrent, ! ExcitationFunctions::Segments::LinearSegment> ! OT3; ! typedef TechniqueType<realism::Real, ! dynamics::Dynamic, ! quantity::Time, ! quantity::ElectricPotential, ! quantity::ElectricCurrent, ! ExcitationFunctions::Segments::LinearSegment> ! IT1; ! typedef TechniqueType<realism::Simulated, ! dynamics::Dynamic, ! quantity::Time, ! quantity::ElectricPotential, ! quantity::ElectricCurrent, ! ExcitationFunctions::Segments::LinearSegment> ! IT2; ! typedef TechniqueType<realism::Dual, ! dynamics::Dynamic, ! quantity::Time, ! quantity::ElectricPotential, ! quantity::ElectricCurrent, ! ExcitationFunctions::Segments::LinearSegment> ! IT3; ! ! } ! ! typedef Action<internal::AT1> RealDynamicEPTAction; ! typedef Action<internal::AT2> SimulatedDynamicEPTAction; ! typedef Action<internal::AT3> DualDynamicEPTAction; ! typedef Observation<internal::OT1> RealDynamicTEPObservation; ! typedef Induced<internal::IT1> RealDynamicEPTInduced; ! ! typedef Action<internal::AT4> RealStaticEPTAction; ! typedef Action<internal::AT5> SimulatedStaticEPTAction; ! typedef Action<internal::AT6> DualStaticEPTAction; ! typedef Action<internal::AT7> RealDynamicEPTempAction; ! typedef Action<internal::AT8> RealDynamicECTAction; ! ! typedef Atomic<internal::AT1> RealDynamicAtomic; ! typedef Atomic<internal::AT4> RealStaticAtomic; ! typedef Atomic<internal::AT2> SimulatedDynamicAtomic; ! typedef Atomic<internal::AT5> SimulatedStaticAtomic; ! typedef Atomic<internal::AT3> DualDynamicAtomic; ! typedef Atomic<internal::AT6> DualStaticAtomic; } // end namespace experiment |