00001 #ifndef SCT_IONAME_H 00002 #define SCT_IONAME_H 00003 00004 #include "LogicErrors.h" 00005 00006 namespace Sct { 00007 00008 00009 class IOName { 00010 public: 00011 IOName(const string& nameIO) throw(InvalidArgumentError); 00012 IOName(const string& uniqueID, const string& className) throw(InvalidArgumentError); 00013 virtual ~IOName() throw(); 00014 00015 string getIOName() const throw(); 00016 string getUniqueID() const throw(); 00017 string getClassName() const throw(); 00018 00020 virtual bool wildcard() const; 00021 typedef std::list<shared_ptr<IOName> >::iterator iterator; 00022 typedef std::list<shared_ptr<IOName> >::const_iterator const_iterator; 00024 iterator begin(); 00026 iterator end(); 00028 const_iterator begin() const; 00030 const_iterator end() const; 00031 protected: protected: 00036 virtual void parse() throw(InvalidArgumentError) = 0; 00037 00041 virtual void construct() throw() = 0; 00042 00046 virtual void expandWildcards(); 00047 string uniqueID; 00048 string className; 00049 string nameIO; 00050 std::list<shared_ptr<IOName> > m_list; 00051 mutable bool m_wildcardsExpanded; 00052 IOName() {} 00053 }; 00054 00055 } 00056 00057 #endif //SCT_IONAME_H