#ifndef xml_cache_h__ #define xml_cache_h__ class CXmlCache { private: struct CachedFile { TCHAR *path; HXML hXmlRoot; CachedFile(const TCHAR *path, bool load=true); ~CachedFile(); static int cmp(const CachedFile *p1, const CachedFile *p2) { return lstrcmp(p1->path, p2->path); } }; struct CachedClass { const TCHAR *name; CachedFile *file; HXML hXml; static int cmp(const CachedClass *p1, const CachedClass *p2) { return lstrcmp(p1->name, p2->name); } }; OBJLIST m_classes; OBJLIST m_files; void RegisterClass(const TCHAR *name, CachedFile *file, HXML hXmlClass); public: CXmlCache(); ~CXmlCache(); void LoadXmlFile(const TCHAR *path); void UnloadXmlFile(const TCHAR *path); ISkinElement *CreateObject(const TCHAR *name); }; extern CXmlCache g_XmlCache; #endif // xml_cache_h__