From cb4a46e7fbe62d788e66ed6121c717a2d22a4d7c Mon Sep 17 00:00:00 2001 From: watcherhd Date: Thu, 21 Apr 2011 14:14:52 +0000 Subject: svn.miranda.im is moving to a new home! git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@7 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- skinengine/src/xml_cache.cpp | 71 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 skinengine/src/xml_cache.cpp (limited to 'skinengine/src/xml_cache.cpp') diff --git a/skinengine/src/xml_cache.cpp b/skinengine/src/xml_cache.cpp new file mode 100644 index 0000000..136d257 --- /dev/null +++ b/skinengine/src/xml_cache.cpp @@ -0,0 +1,71 @@ +#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; +} -- cgit v1.2.3