00001 // Copyright CERN 2012 - Developed in collaboration with GSI 00002 00003 #ifndef _HOMOGENEOUS_DEV_COL_H_ 00004 #define _HOMOGENEOUS_DEV_COL_H_ 00005 00006 #include <vector> 00007 #include <set> 00008 #include <string> 00009 00010 #include <stdint.h> 00011 00012 namespace fesa 00013 { 00014 00015 class AbstractDevice; 00016 00022 class HomogeneousDevCol 00023 { 00024 public: 00029 std::vector<AbstractDevice *> getAsVector(); 00030 int32_t getSize(); 00031 HomogeneousDevCol(); 00032 00033 std::set<AbstractDevice*>* getDevCol(); 00034 void setDevCol(std::set<AbstractDevice *> col); 00035 00036 std::string getSharedCriteria(); 00037 void setSharedCriteria(std::string sharedCriteria); 00038 00039 private: 00040 std::set<AbstractDevice *> devCol_; 00041 std::string sharedCriteria_; 00042 }; 00043 00044 HomogeneousDevCol operator+(HomogeneousDevCol, HomogeneousDevCol); // set union 00045 HomogeneousDevCol operator^(HomogeneousDevCol, HomogeneousDevCol); // intersection 00046 00047 inline std::set<AbstractDevice*>* HomogeneousDevCol::getDevCol() 00048 { 00049 return &devCol_; 00050 } 00051 00052 inline std::string HomogeneousDevCol::getSharedCriteria() 00053 { 00054 return sharedCriteria_; 00055 } 00056 00057 inline void HomogeneousDevCol::setSharedCriteria(std::string sharedCriteria) 00058 { 00059 sharedCriteria_ = sharedCriteria; 00060 } 00061 00062 inline void HomogeneousDevCol::setDevCol(std::set<AbstractDevice *> col) 00063 { 00064 devCol_ = col; 00065 } 00066 00067 } // fesa 00068 00069 #endif // _HOMOGENEOUS_DEV_COL_H_