sp_simconditionset.h

Go to the documentation of this file.
00001 
00003 /*
00004    Copyright (C) 2008  Thomas Moor
00005    Exclusive copyright is granted to Klaus Schmidt
00006 */
00007 
00008 
00009 #include "tokenreader.h"
00010 #include "tokenwriter.h"
00011 #include "nameset.h"
00012 #include "attributes.h"
00013 #include "sp_densityfnct.h"
00014 
00015 
00016 #ifndef FAUDES_SP_SIMCONDITIONSET_H
00017 #define FAUDES_SP_SIMCONDITIONSET_H
00018 
00019 namespace faudes {
00020 
00045 class SimEventConditionAttribute {
00046  public:
00047   EventSet mStart;
00048   EventSet mStop;
00049 };
00050 
00065 // state based condition
00066 class  SimStateConditionAttribute {
00067 public:
00068   bool mAllFlag;
00069   std::vector<StateSet> mStateSets;
00070 };
00071 
00072 
00101 class SimConditionAttribute : public AttributeVoid {
00102 
00103   public:
00104 
00106   typedef std::vector<StateSet>::iterator Iterator;
00107   typedef std::vector<StateSet>::const_iterator CIterator;
00108 
00110   SimConditionAttribute(void) : AttributeVoid() { 
00111     mEventCondition=false; mStateCondition=false; mEnabled=true; mBreakCondition=false; Reset();};
00112 
00114   bool IsDefault(void) const {
00115     return !mEventCondition && !mStateCondition && mEnabled && !mBreakCondition; };
00116 
00118   bool IsStateCondition(void) const {return mStateCondition; };
00119 
00121   bool IsEventCondition(void) const {return mEventCondition; };
00122 
00124   bool IsBreakCondition(void) const {return mBreakCondition; };
00125 
00127   bool IsEnabled(void) const {return mEnabled; };
00128 
00130   void StateCondition(const SimStateConditionAttribute&  rStateConditionAttribute) 
00131     {mStateConditionAttribute=rStateConditionAttribute; mStateCondition=true; mEventCondition=false;
00132     for(Idx i=0; i<mStateConditionAttribute.mStateSets.size(); i++) 
00133       mStateConditionAttribute.mStateSets.at(i).Name("StateSet");
00134   };
00135 
00137   void EventCondition(const SimEventConditionAttribute&  rEventConditionAttribute) 
00138     {mEventConditionAttribute=rEventConditionAttribute; mEventCondition=true; mStateCondition=false;};
00139 
00141   void BreakCondition(bool on) {mBreakCondition=on; };
00142 
00144   void Enabled(bool on) {mEnabled=on; };
00145 
00147   const SimEventConditionAttribute& EventCondition(void) const {return mEventConditionAttribute; };
00148 
00150   const SimStateConditionAttribute& StateCondition(void) const {return mStateConditionAttribute; };
00151 
00153   void Reset(void) 
00154   { mSatisfied=false; mActivationTime=-1; mSamplesPeriod.Clear(); mSamplesDuration.Clear(); };
00155 
00157   // condition state: get satisfied 
00158   bool Satisfied(void) const { return mSatisfied; };
00159 
00161   void Satisfied(bool on, tpTime::Type now);
00162    
00164   SampledDensityFunction mSamplesPeriod;
00165 
00167   SampledDensityFunction mSamplesDuration;
00168 
00169 protected:
00170  
00172   bool mEventCondition;
00173 
00175   bool mStateCondition;
00176 
00178   bool mBreakCondition;
00179 
00181   bool mEnabled;
00182 
00184   SimEventConditionAttribute mEventConditionAttribute;
00185 
00187   SimStateConditionAttribute mStateConditionAttribute;
00188 
00190   bool mSatisfied;
00191 
00193   tpTime::Type mActivationTime;
00194    
00195 
00196  protected:
00197 
00218   virtual void DoRead(TokenReader& rTr, const std::string& rLabel="", const Type* pContext=0);
00219  
00237   virtual void DoWrite(TokenWriter& rTw,const std::string& rLabel="", const Type* pContext=0) const;
00238 
00239 
00240 
00241 }; // class SimConditionAttribute
00242 
00243 
00255 class SimConditionSet : public TaNameSet<SimConditionAttribute> {
00256 
00257  public:
00258 
00260   SimConditionSet(void) : TaNameSet<SimConditionAttribute>() {};
00261 
00263   SimConditionSet(const SimConditionSet& rOtherSet) : IndexSet(), TaNameSet<SimConditionAttribute>(rOtherSet) {};
00264 
00266   virtual ~SimConditionSet(void) {};
00267 
00269   bool Enabled(Idx cond) const { return Attribute(cond).IsEnabled(); };
00270 
00272   void Enabled(Idx cond, bool on) { Attributep(cond)->Enabled(on); };
00273 
00275   SimConditionSet EnabledConditions(void);
00276 
00278   void Reset(void);
00279 
00280 };
00281 
00282 
00283 
00286 } // namespace
00287 
00288 #endif

Generated on Mon Nov 10 08:13:15 2008 for libFAUDES 2.11v by  doxygen 1.4.4