|
AndroMeta
2.0.0
|
00001 /* 00002 * Copyright 2009-2012 AndroMeta LLC. All rights reserved. 00003 * 00004 * AndroMeta LLC retains all intellectual property and proprietary 00005 * rights to this software and related documentation and any modifications 00006 * thereto. Any use, reproduction, disclosure, or distribution of this 00007 * software and related documentation without an express license agreement 00008 * from AndroMeta LLC is strictly prohibited. 00009 * 00010 */ 00011 00019 #ifndef ANDROMETA_M_PROC_H 00020 #define ANDROMETA_M_PROC_H 00021 00022 #include <AndroMeta/MTime.h> 00023 00024 namespace Meta{ 00025 00026 class MProcTask; 00027 00044 class MProc{ 00045 public: 00046 00047 typedef MMap<int, mvar> SignalMap; 00048 typedef MVector<int> IdVec; 00049 00053 MProc(); 00054 00058 virtual ~MProc(); 00059 00078 void queue(MProcTask* task, 00079 MProc::SignalMap* signalMap=0, 00080 double priority=0, 00081 bool activate=false, 00082 const mtime* time=0); 00083 00091 virtual bool activate(SignalMap& signalMap); 00092 00097 virtual mvar run(SignalMap& signalMap); 00098 00102 void run(SignalMap* signalMap); 00103 00112 virtual int connect(MProc* mp, const mvar& data=undef); 00113 00121 virtual void connect(int outId, 00122 int inId, 00123 MProc* mp, 00124 const mvar& data=undef); 00125 00131 virtual void disconnect(int outId); 00132 00136 virtual void disconnect(); 00137 00141 virtual void detach(); 00142 00146 virtual void signal(int outId); 00147 00151 virtual void signal(int outId, const mvar& v); 00152 00162 virtual void signal(int outId, 00163 const mvar& v, 00164 double priority, 00165 bool persist=true, 00166 const mtime* time=0); 00167 00171 virtual void signalAll(); 00172 00176 virtual void signalAll(const mvar& v); 00177 00181 virtual void signalAll(const mvar& v, 00182 double priority, 00183 bool persist=true, 00184 const mtime* time=0); 00185 00189 const IdVec& outEdges() const; 00190 00194 const IdVec& inEdges() const; 00195 00199 bool isThreaded() const; 00200 00205 void setThreaded(bool flag); 00206 00216 bool terminate(bool block=true); 00217 00224 bool hasTerminated() const; 00225 00230 void reset(); 00231 00235 MProc* outEdge(int outId); 00236 00240 MProc* inEdge(int inId); 00241 00245 const MProc* outEdge(int outId) const; 00246 00250 const MProc* inEdge(int inId) const; 00251 00256 int inId(int outId) const; 00257 00262 int outId(int inId) const; 00263 00267 const mvar& edgeData(int outId) const; 00268 00272 void setEdgeData(int outId, const mvar& v); 00273 00274 private: 00275 MProc& operator=(const MProc&); 00276 MProc(const MProc&); 00277 00278 class MProc_* x_; 00279 }; 00280 00281 } // end namespace Meta 00282 00283 #endif // ANDROMETA_M_PROC_H
1.7.6.1