00001 #ifndef SCT_IONAME_H
00002 #define SCT_IONAME_H
00003
00004 #include "LogicErrors.h"
00005 #include "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