Diana
0.8.3
|
00001 #ifndef IDIANA_PETRINET_H 00002 #define IDIANA_PETRINET_H 00003 00004 00005 #include <CapeOpen.hpp> 00006 00007 namespace Diana { 00008 class IDianaNumericDAESolver; 00009 00013 class IDianaPetriNet { 00014 public: 00018 virtual Common::Collection::ICapeCollection* GetPlaces()=0; 00022 virtual Common::Collection::ICapeCollection* GetTransitions()=0; 00029 virtual Common::Types::CapeBoolean Switch(const Common::Types::CapeArrayLong& indices)=0; 00030 00037 virtual Common::Types::CapeBoolean shouldFork()=0; 00042 virtual void afterFork(const Common::Types::CapeArrayLong& phiIndices,Common::Types::CapeBoolean isDaughter)=0; 00043 00047 virtual Common::Types::CapeArrayBoolean getState()=0; 00048 00052 virtual void setState(const Common::Types::CapeArrayBoolean& state)=0; 00053 00057 virtual Common::Types::CapeLong getForkIndex() = 0; 00058 00062 virtual Common::Types::CapeDouble GetNextExplicitTime() const = 0; 00063 00067 virtual const CapeArrayDouble& GetStoredPhi() const = 0; 00068 00072 virtual void SetStoredPhi(const CapeArrayDouble& phi) = 0; 00073 00074 00075 }; 00076 00080 class IDianaPetriPlace : public virtual Common::Parameter::ICapeParameter { 00081 public: 00085 virtual Common::Types::CapeBoolean GetMark() = 0; 00089 virtual void SetMark(Common::Types::CapeBoolean mark) 00090 throw (ECapeUnknown, ECapeInvalidArgument) = 0; 00094 void SetValue(const Common::Types::CapeVariant& _value) 00095 throw (ECapeUnknown, ECapeInvalidArgument) = 0; 00096 00097 }; 00098 00102 class IDianaPetriTransition : public virtual Common::Parameter::ICapeParameter { 00103 public: 00107 virtual Common::Types::CapeDouble GetPhiValue() const throw (Common::Error::ECapeUnknown) = 0; 00108 }; 00109 } 00110 00111 #ifndef SWIG 00112 00113 std::ostream& operator<<(std::ostream& out_file, const Diana::IDianaPetriPlace& place); 00114 #endif 00115 00116 #endif //IDIANA_PETRINET_H