00001 // Copyright CERN 2012 - Developed in collaboration with GSI 00002 #ifndef LOGICALEVENTELEMENT_H_ 00003 #define LOGICALEVENTELEMENT_H_ 00004 00005 #include <boost/shared_ptr.hpp> 00006 #include <boost/enable_shared_from_this.hpp> 00007 #include <vector> 00008 #include <string> 00009 00010 namespace fesa 00011 { 00012 00013 class ClassElement; 00014 class EventElement; 00015 class ElementXML; 00016 class ParserElementFactory; 00017 class EventConfigurationElement; 00018 class AbstractDeviceClass; 00019 00024 class LogicalEventElement: public boost::enable_shared_from_this<LogicalEventElement> 00025 { 00026 public: 00027 00031 LogicalEventElement(boost::shared_ptr<ClassElement> parent); 00032 00036 virtual void initialize(const std::string& xpath,ElementXML* logicalEventElement, ParserElementFactory& parserElementFactory); 00037 00038 virtual ~LogicalEventElement(); 00039 00043 virtual boost::shared_ptr<EventConfigurationElement> getEventConfigurationElementRef(const std::string& eventConfigurationName) const; 00044 00045 virtual AbstractDeviceClass* getClassRef() const; 00046 00047 virtual const std::vector<boost::shared_ptr<EventConfigurationElement> >& getEventConfigurationElementCol() const; 00048 00052 virtual std::vector<boost::shared_ptr<EventElement> > getActiveEventElements() const; 00053 00054 virtual const std::string& getName() const; 00055 00056 protected: 00057 00061 LogicalEventElement(); 00062 00063 private: 00064 00068 void loadEventConfigurationElements(const std::string& xpath, ElementXML *logicalEventElement, ParserElementFactory& parserElementFactory); 00069 00073 std::vector<boost::shared_ptr<EventConfigurationElement> > configurationElementCol_; 00074 00078 boost::shared_ptr<ClassElement> parentClassElement_; 00079 00083 std::string logicalEventName_; 00084 00088 bool isInitialized_; 00089 }; 00090 00091 } //end namespace 00092 00093 #endif /* LOGICALEVENTELEMENT_H_ */