summaryrefslogtreecommitdiff
path: root/SkinEngine/src/xml_cache.h
diff options
context:
space:
mode:
authormataes2007 <mataes2007@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb>2011-11-26 15:41:10 +0000
committermataes2007 <mataes2007@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb>2011-11-26 15:41:10 +0000
commitf04d64869f3b1de54fb343f28f955584780001b8 (patch)
tree5453dc10de3d980de79ffe019fa0b5fcb692a27d /SkinEngine/src/xml_cache.h
parent7aff1e4cb053394db57c2814d5fe1e6493e0cc75 (diff)
Project folders rename part 3
git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@215 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb
Diffstat (limited to 'SkinEngine/src/xml_cache.h')
-rw-r--r--SkinEngine/src/xml_cache.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/SkinEngine/src/xml_cache.h b/SkinEngine/src/xml_cache.h
new file mode 100644
index 0000000..50e30e0
--- /dev/null
+++ b/SkinEngine/src/xml_cache.h
@@ -0,0 +1,50 @@
+#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<CachedClass> m_classes;
+ OBJLIST<CachedFile> 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__