From f04d64869f3b1de54fb343f28f955584780001b8 Mon Sep 17 00:00:00 2001 From: mataes2007 Date: Sat, 26 Nov 2011 15:41:10 +0000 Subject: Project folders rename part 3 git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@215 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