00001 #ifndef SCT_IONAME_H 00002 #define SCT_IONAME_H 00003 00004 #include "Sct/LogicErrors.h" 00005 #include "Sct/UniqueID.h" 00006 00007 namespace Sct { 00008 00014 class IOName { 00015 public: 00016 IOName(const string& nameIO) throw(InvalidArgumentError); 00017 IOName(const UniqueID& uniqueID, const string& className) throw(InvalidArgumentError); 00018 virtual ~IOName() throw(); 00019 00020 string getIOName() const throw(); 00021 UniqueID getUniqueID() const throw(); 00022 string getClassName() const throw(); 00023 00025 virtual bool wildcard() const; 00026 typedef std::list<shared_ptr<IOName> >::iterator iterator; 00027 typedef std::list<shared_ptr<IOName> >::const_iterator const_iterator; 00029 iterator begin(); 00031 iterator end(); 00033 const_iterator begin() const; 00035 const_iterator end() const; 00036 protected: protected: 00041 virtual void parse() throw(InvalidArgumentError) = 0; 00042 00046 virtual void construct() throw() = 0; 00047 00051 virtual void expandWildcards(); 00052 UniqueID uniqueID; 00053 string className; 00054 string nameIO; 00055 std::list<shared_ptr<IOName> > m_list; 00056 mutable bool m_wildcardsExpanded; 00057 IOName() {} 00058 }; 00059 00060 } 00061 00062 #endif //SCT_IONAME_H