2 Copyright (C) 2006, Stefan Greven.
\r
5 This file is part of GtkRadiant.
\r
7 GtkRadiant is free software; you can redistribute it and/or modify
\r
8 it under the terms of the GNU General Public License as published by
\r
9 the Free Software Foundation; either version 2 of the License, or
\r
10 (at your option) any later version.
\r
12 GtkRadiant is distributed in the hope that it will be useful,
\r
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
15 GNU General Public License for more details.
\r
17 You should have received a copy of the GNU General Public License
\r
18 along with GtkRadiant; if not, write to the Free Software
\r
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
\r
22 #if !defined(INCLUDED_XMLTEXTAGS_H)
\r
23 #define INCLUDED_XMLTEXTAGS_H
\r
26 #include <string/string.h>
\r
29 #include "iscriplib.h"
\r
31 #include <libxml/xpath.h>
\r
32 #include <libxml/xmlwriter.h>
\r
55 CopiedString m_savefilename;
\r
57 xmlXPathContextPtr context;
\r
58 xmlNodeSetPtr nodePtr;
\r
60 xmlXPathObjectPtr XpathEval(const char* queryString)
\r
62 xmlChar* expression = (xmlChar*)queryString;
\r
63 xmlXPathObjectPtr result = xmlXPathEvalExpression(expression, context);
\r
67 char* GetTagsXpathExpression(char* buffer, const char* shader, NodeTagType nodeTagType)
\r
69 strcpy(buffer, "/root/*/*[@path='");
\r
70 strcat(buffer, shader);
\r
75 strcat(buffer, "']/tag");
\r
78 strcat(buffer, "']");
\r
88 bool CreateXmlDocument();
\r
89 bool OpenXmlDoc(const char* file, const char* savefile = 0);
\r
90 bool SaveXmlDoc(const char* file);
\r
91 bool SaveXmlDoc(void);
\r
92 bool AddShaderNode(const char* shader, TextureType textureType, NodeShaderType nodeShaderType);
\r
93 bool DeleteShaderNode(const char* shader);
\r
94 bool CheckShaderTag(const char* shader);
\r
95 bool CheckShaderTag(const char* shader, const char* content);
\r
96 bool AddShaderTag(const char* shader, const char* content, NodeTagType nodeTagType);
\r
97 bool DeleteTag(const char* tag);
\r
98 int RenameShaderTag(const char* oldtag, CopiedString newtag);
\r
99 bool DeleteShaderTag(const char* shader, const char* tag);
\r
100 void GetShaderTags(const char* shader, std::vector<CopiedString>& tags);
\r
101 void GetUntagged(std::set<CopiedString>& shaders);
\r
102 void GetAllTags(std::set<CopiedString>& tags);
\r
103 void TagSearch(const char* expression, std::set<CopiedString>& paths);
\r