#include "headers.h" CXmlCache g_XmlCache; CXmlCache::CachedFile::CachedFile(const TCHAR *path, bool load) { this->path = _tcsdup(path); if (load) { } else { hXmlRoot = NULL; } } CXmlCache::CachedFile::~CachedFile() { free(path); if (hXmlRoot) xi.destroyNode(hXmlRoot); } CXmlCache::CXmlCache(): m_files(5, CachedFile::cmp), m_classes(10, CachedClass::cmp) { } CXmlCache::~CXmlCache() { } void CXmlCache::LoadXmlFile(const TCHAR *path) { CachedFile *file = new CachedFile(path); if (!file->hXmlRoot) { delete file; return; } int count = xi.getChildCount(file->hXmlRoot); for (int i = 0; i < count; ++i) { HXML hXml = xi.getChild(file->hXmlRoot, i); if (!hXml) break; const TCHAR *tagName = xi.getName(hXml); if (!tagName || lstrcmp(tagName, _T("class"))) continue; const TCHAR *className = xi.getAttrValue(hXml, _T("name")); if (!className) continue; RegisterClass(className, file, hXml); } } void CXmlCache::UnloadXmlFile(const TCHAR *path) { } void CXmlCache::RegisterClass(const TCHAR *name, CachedFile *file, HXML hXmlClass) { CachedClass *cls = new CachedClass; cls->name = name; cls->file = file; cls->hXml = hXmlClass; m_classes.insert(cls); } ISkinElement *CXmlCache::CreateObject(const TCHAR *name) { return NULL; }