//TagObjects.h #ifndef __TAG_OBJECTS_H__ #define __TAG_OBJECTS_H__ #include #include #include #include #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class TagObject { // Construction public: TagObject(); virtual ~TagObject(); char* GetName(); void SetName(char *strName); virtual BOOL IsMatched(char *strTagName); virtual void SetState(LPVOID lpState); virtual BOOL GetMessageObject(char *strPath, MessageObject *lpMsgObj); virtual void ProcessMessage(int nSlot, MessageObject *lpMsgObj); protected: char m_strName[256]; int m_nNameLen; BOOL m_bStateModified; }; typedef TagObject* (*TagCreateHandler)(const char **atts); typedef void (*PropertyHandler)(char *strPropertyName, char *strPropertyValue); class TagContainer { public: TagContainer(); virtual ~TagContainer(); static char* AttrGetValue(const char **atts, char *strTarget); BOOL LoadProfile(int nMySlot, char *strProfilename, PropertyHandler procSetProperty, TagCreateHandler procCreateTag); void AddTagObject(TagObject *lpTagObj); BOOL IsTagExist(char *strTagName); void RemoveTag(char *strTagName); void RemoveGroup(char *strGroupPath); virtual void SetState(LPVOID lpState); virtual BOOL GetMessageObject(char *strGroupPath, MessageObject *lpMsgObj); virtual void ProcessMessage(char *strGroupPath, int nSlot, MessageObject *lpMsgObj); int m_nParseState; int m_nMySlot; char m_strCurrentPropertyName[256]; char m_strTagName[256]; TagCreateHandler m_procTagCreatHandler; PropertyHandler m_procPropertyHandler; private: BOOL ParseXMLProfile(char *strFilePath); CArray m_arObjects; }; #endif