BIE |
/home/weinberg/src/BIE/include/RecordStreamFilter.h00001 // This is really -*- C++ -*- 00002 00003 #ifndef RecordStreamFilter_h 00004 #define RecordStreamFilter_h 00005 00006 #include <string> 00007 #include <vector> 00008 using namespace std; 00009 00010 #include "RecordStream.h" 00011 #include "RecordType.h" 00012 #include "RecordBuffer.h" 00013 #include "BasicType.h" 00014 00015 00016 #include "Serializable.h" 00017 00018 00019 namespace BIE { 00020 00022 class filterIn: public Serializable 00023 { 00024 public: 00026 filterIn() : inputtype(0), isset(0) {} 00027 00029 filterIn(string i, BasicType* t, bool b) : 00030 inputname(i), inputtype(t), isset(b) {} 00031 00033 string inputname; 00034 00036 BasicType * inputtype; 00037 00039 bool isset; 00040 00042 bool isarray; 00043 00044 // AUTO GENERATED BY ../persistence/autopersist.py 00045 private: 00046 friend class boost::serialization::access; 00047 template<class Archive> 00048 void serialize(Archive & ar, const unsigned int version) { 00049 this->pre_serialize(ar, version); 00050 try { 00051 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable); 00052 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00053 } 00054 try { 00055 ar & BOOST_SERIALIZATION_NVP(inputname); 00056 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00057 } 00058 try { 00059 ar & BOOST_SERIALIZATION_NVP(inputtype); 00060 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00061 } 00062 try { 00063 ar & BOOST_SERIALIZATION_NVP(isset); 00064 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00065 } 00066 try { 00067 ar & BOOST_SERIALIZATION_NVP(isarray); 00068 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00069 } 00070 this->post_serialize(ar, version); 00071 } 00072 00073 00074 }; 00075 00077 class filterOut: public Serializable 00078 { 00079 public: 00081 filterOut() : outputtype(0) {} 00082 00084 filterOut(string i, BasicType* t) : 00085 outputname(i), outputtype(t) {} 00086 00088 string outputname; 00089 00091 BasicType * outputtype; 00092 00094 bool isarray; 00095 00096 // AUTO GENERATED BY ../persistence/autopersist.py 00097 private: 00098 friend class boost::serialization::access; 00099 template<class Archive> 00100 void serialize(Archive & ar, const unsigned int version) { 00101 this->pre_serialize(ar, version); 00102 try { 00103 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable); 00104 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00105 } 00106 try { 00107 ar & BOOST_SERIALIZATION_NVP(outputname); 00108 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00109 } 00110 try { 00111 ar & BOOST_SERIALIZATION_NVP(outputtype); 00112 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00113 } 00114 try { 00115 ar & BOOST_SERIALIZATION_NVP(isarray); 00116 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00117 } 00118 this->post_serialize(ar, version); 00119 } 00120 00121 }; 00122 00123 00124 //+ CLICLASS RecordStreamFilter 00195 class RecordStreamFilter: public Serializable 00196 { 00197 00198 public: 00199 00200 virtual ~RecordStreamFilter() {} 00201 00202 //+ CLIMETHOD void connect string string 00206 void connect(string streamfieldname, string inputname); 00207 00208 //+ CLIMETHOD void connect int string 00212 void connect(int streamfieldindex, string inputname); 00213 00214 //+ CLIMETHOD void connect string int 00218 void connect(string streamfieldname, int inputindex); 00219 00220 //+ CLIMETHOD void connect int int 00224 void connect(int streamfieldindex, int inputindex); 00225 00226 //+ CLIMETHOD void disconnect string string 00229 void disconnect(string streamfieldname, string inputname); 00230 00231 //+ CLIMETHOD void disconnect int string 00234 void disconnect(int streamfieldindex, string inputname); 00235 00236 //+ CLIMETHOD void disconnect string int 00239 void disconnect(string streamfieldname, int inputindex); 00240 00241 //+ CLIMETHOD void disconnect int int 00244 void disconnect(int streamfieldindex, int inputindex); 00245 00246 //+ CLIMETHOD void disconnect string 00248 void disconnect(string inputname); 00249 00250 //+ CLIMETHOD void disconnect int 00252 void disconnect(int inputindex); 00253 00254 //+ CLIMETHOD void disconnect 00256 void disconnect(); 00257 00258 //+ CLIMETHOD void renameOutputField int string 00262 void renameOutputField(int fieldindex, string newname); 00263 00264 //+ CLIMETHOD void renameOutputField string string 00268 void renameOutputField(string fieldname, string newname); 00269 00270 //+ CLIMETHOD bool isConnected 00272 bool isConnected(); 00273 00274 //+ CLIMETHOD bool isConnected int 00276 bool isConnected(int inputindex); 00277 00278 //+ CLIMETHOD bool isConnected string 00280 bool isConnected(string inputname); 00281 00282 //+ CLIMETHOD int getInputCardinality string 00285 int getInputCardinality(string inputname); 00286 00287 //+ CLIMETHOD int getInputCardinality string 00290 int getInputCardinality(int inputindex); 00291 00292 //+ CLIMETHOD bool isAttached 00294 bool isAttached(); 00295 00296 //+ CLIMETHOD bool nameClash 00299 bool nameClash(); 00300 00301 //+ CLIMETHOD bool isUseable 00306 virtual bool isUseable(); 00307 00308 //+ CLIMETHOD RecordBuffer* getBuffer 00310 RecordBuffer * getBuffer(); 00311 00312 //+ CLIMETHOD RecordType* getOutputType 00314 RecordType * getOutputType(); 00315 00316 //+ CLIMETHOD RecordType* getStreamType 00318 RecordType * getStreamType(); 00319 00320 //+ CLIMETHOD int numInputs 00322 int numInputs(); 00323 00324 //+ CLIMETHOD int getInputIndex string 00326 int getInputIndex(string inputname); 00327 00328 //+ CLIMETHOD string getInputName int 00330 string getInputName(int inputindex); 00331 00332 //+ CLIMETHOD bool isValidInputName string 00334 bool isValidInputName(string inputname); 00335 00336 //+ CLIMETHOD bool isValidInputIndex int 00338 bool isValidInputIndex(int inputindex); 00339 00340 //+ CLIMETHOD string toString 00342 string toString(); 00343 00344 /******************************************************************************* 00345 * These are called only by input and output streams. perhaps 00346 * they should be protected, and accessed by "friends" only 00347 *******************************************************************************/ 00350 virtual void compute() = 0; 00351 00355 void attachToStream(RecordStream * stream); 00356 00357 protected: 00358 00362 void initialize(const filterIn * input, 00363 const filterOut * output, 00364 RecordStream * stream); 00365 00367 string getDefaultOutputName(int outputindex); 00368 00370 int getDefaultOutputIndex(string outputname); 00371 00373 bool isValidDefaultOutputName(string outputname); 00374 00376 bool isValidOutputIndex(int outputindex); 00377 00382 00383 int getIntInput (string inputname); 00384 int getIntInput (int inputindex); 00385 double getRealInput (string inputname); 00386 double getRealInput (int inputindex); 00387 bool getBoolInput (string inputname); 00388 bool getBoolInput (int inputindex); 00389 string getStringInput(string inputname); 00390 string getStringInput(int inputindex); 00391 00392 vector<int> getIntArrayInput(int inputindex); 00393 vector<double> getRealArrayInput(int inputindex); 00394 vector<bool> getBoolArrayInput(int inputindex); 00396 00401 00402 int getIntInput (string inputname, int setindex); 00403 int getIntInput (int inputindex, int setindex); 00404 double getRealInput (string inputname, int setindex); 00405 double getRealInput (int inputindex, int setindex); 00406 bool getBoolInput (string inputname, int setindex); 00407 bool getBoolInput (int inputindex, int setindex); 00408 string getStringInput(string inputname, int setindex); 00409 string getStringInput(int inputindex, int setindex); 00411 00416 00417 void setIntOutput (string inputname, int value); 00418 void setIntOutput (int inputindex, int value); 00419 void setRealOutput (string inputname, double value); 00420 void setRealOutput (int inputindex, double value); 00421 void setBoolOutput (string inputname, bool value); 00422 void setBoolOutput (int inputindex, bool value); 00423 void setStringOutput(string inputname, string value); 00424 void setStringOutput(int inputindex, string value); 00425 00426 void setIntArrayOutput(int outputindex, vector<int> vint); 00427 void setRealArrayOutput(int outputindex, vector<double> vdbl); 00428 void setBoolArrayOutput(int outputindex, vector<bool> vbln); 00430 00432 bool isArray(int inputindex); 00433 00434 private: 00436 RecordBuffer * filter_outputbuffer; 00437 00439 RecordType * filter_streamtype; 00440 00442 RecordStream * filter_stream; 00443 00445 bool filter_isattached; 00446 00448 filterIn * filter_input; 00450 filterOut * filter_output; 00451 00452 int filter_numinputs; 00453 int filter_numoutputs; 00454 00456 vector< vector<int> > filter_connections; 00457 00459 vector <int> filter_inputcardinality; 00460 00461 // AUTO GENERATED BY ../persistence/autopersist.py 00462 protected: 00463 RecordStreamFilter() {} 00464 private: 00465 friend class boost::serialization::access; 00466 template<class Archive> 00467 void serialize(Archive & ar, const unsigned int version) { 00468 this->pre_serialize(ar, version); 00469 try { 00470 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable); 00471 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00472 } 00473 try { 00474 ar & BOOST_SERIALIZATION_NVP(filter_outputbuffer); 00475 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00476 } 00477 try { 00478 ar & BOOST_SERIALIZATION_NVP(filter_streamtype); 00479 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00480 } 00481 try { 00482 ar & BOOST_SERIALIZATION_NVP(filter_stream); 00483 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00484 } 00485 try { 00486 ar & BOOST_SERIALIZATION_NVP(filter_isattached); 00487 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00488 } 00489 try { 00490 ar & BOOST_SERIALIZATION_NVP(filter_input); 00491 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00492 } 00493 try { 00494 ar & BOOST_SERIALIZATION_NVP(filter_output); 00495 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00496 } 00497 try { 00498 ar & BOOST_SERIALIZATION_NVP(filter_numinputs); 00499 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00500 } 00501 try { 00502 ar & BOOST_SERIALIZATION_NVP(filter_numoutputs); 00503 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00504 } 00505 try { 00506 ar & BOOST_SERIALIZATION_NVP(filter_connections); 00507 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00508 } 00509 try { 00510 ar & BOOST_SERIALIZATION_NVP(filter_inputcardinality); 00511 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00512 } 00513 this->post_serialize(ar, version); 00514 } 00515 00516 }; 00517 00518 } 00519 00520 #if BOOST_VERSION <= 103500 00521 BOOST_IS_ABSTRACT(BIE::RecordStreamFilter) 00522 #else 00523 BOOST_SERIALIZATION_ASSUME_ABSTRACT(RecordStreamFilter) 00524 #endif 00525 00526 00527 BIE_CLASS_TYPE_INFO(BIE::filterIn) 00528 BIE_CLASS_TYPE_INFO(BIE::filterOut) 00529 BIE_CLASS_EXPORT_KEY(BIE::filterIn) 00530 BIE_CLASS_EXPORT_KEY(BIE::filterOut) 00531 BIE_CLASS_EXPORT_KEY(BIE::RecordStreamFilter) 00532 #endif Send suggestions, questions, and feedback to WEINBERG at ASTRO dot UMASS dot EDU. Documentation generated at Fri Mar 26 00:35:10 2010 by
|