Main Page | Namespace List | Class Hierarchy | Class List | File List | Class Members | File Members | Related Pages

id.h

Go to the documentation of this file.
00001 #pragma once
00002 
00027 #ifndef __ID_H__
00028 #define __ID_H__
00029 
00030 // USINGS
00031 using std::string;
00032 using std::list;
00033 
00035 class id
00036 {
00037         // Member functions.
00038 public:
00039         id(const string& IDName, id* pID);
00040         virtual ~id(void);
00042         virtual string ParseID(void) const=0;
00043         string GetIDName(void) const;
00044     id* FindSubID(const string& IDName, string::size_type Offset=0);
00045     const id* FindSubID(const string& IDName, string::size_type Offset=0) const;
00046     const id* GetParentID(void) const;
00047     void RegisterSubID(id* pID);
00048 
00049         // Attributes.
00050 private:
00051         const string m_IDName;          
00052         const id* m_pParentID;          
00053         list<id*> m_SubIDs;                     
00054 };
00055 
00057 class custom_id: public id
00058 {
00059         // Member functions.
00060 public:
00061         custom_id(const string& IDName, id* pID);
00062         virtual string ParseID(void) const;
00063 };
00064 
00065 // ID exceptions.
00066 namespace except
00067 {
00069     class id_except: public exception
00070     {
00071         // Member functions.
00072     public:
00074         id_except(void) throw(): exception() {};
00076         virtual ~id_except(void) throw() {};
00078             virtual const char *what(void) const throw()=0;
00079     };
00080 
00082     class unknow_id: public id_except
00083     {
00084         // Member functions.
00085     public:
00086         unknow_id(const string& UnknowID) throw();
00087         virtual ~unknow_id(void) throw();
00088         virtual const char *what(void) const throw();
00089 
00090         // Attributes.
00091     private:
00092         string m_UnknowID;          
00093     };
00094 };
00095 
00096 #endif // __ID_H__

doxygen sourceforge id3lib