libMVRgdtf 40bc00a
A library for GDTF and MVR
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
XMLLib/XMLFileImpl.h
Go to the documentation of this file.
1#ifndef DONT_USE_XERCES_AS_XMLLIB
2#pragma once
3#include "XercesSupport.h"
4
5
6
7namespace VectorworksMVR
8{
9 namespace XML
10 {
11 using namespace VectorworksMVR::Filing;
12
13
14
15 // ----------------------------------------------------------------------------------------------------
16 class CXMLFileImpl : public VCOMImpl<IXMLFile>, DOMErrorHandler
17 {
18 public:
20 virtual ~CXMLFileImpl();
21
22 // IXMLFile
23 public:
24 virtual VCOMError VCOM_CALLTYPE CreateNew(const TXString& rootName);
26 virtual VCOMError VCOM_CALLTYPE ReadBuffer(IXMLFileIOBuffer* pInputBuffer, EXMLEncoding encoding);
28 virtual VCOMError VCOM_CALLTYPE WriteBuffer(IXMLFileIOBuffer* pOutputBuffer, EXMLEncoding encoding);
31 virtual VCOMError VCOM_CALLTYPE SetFeature(EXMLFileFeature feature, bool bValue);
32
33 virtual VCOMError VCOM_CALLTYPE GetSimpleNode(const TXString& nodePath, IXMLFileNode** ppOutNode);
34 virtual VCOMError VCOM_CALLTYPE GetSimpleNode(IXMLFileNode* pRefNode, const TXString& nodePath, IXMLFileNode** ppOutNode);
35 virtual VCOMError VCOM_CALLTYPE GetSimpleValue(const TXString& nodePath, TXString& outValue);
36 virtual VCOMError VCOM_CALLTYPE GetSimpleValue(IXMLFileNode* pRefNode, const TXString& nodePath, TXString& outValue);
37 virtual TXString VCOM_CALLTYPE GetSimpleValue(const TXString& nodePath, const TXString& defaultValue);
38 virtual TXString VCOM_CALLTYPE GetSimpleValue(IXMLFileNode* pRefNode, const TXString& nodePath, const TXString& defaultValue);
39 virtual VCOMError VCOM_CALLTYPE SetSimpleValue(const TXString& nodePath, const TXString& value);
40 virtual VCOMError VCOM_CALLTYPE SetSimpleValue(IXMLFileNode* pRefNode, const TXString& nodePath, const TXString& value);
41 virtual bool VCOM_CALLTYPE GetSimpleExist(const TXString& nodePath); // check to see if exist -- for organizing loops more efficiently
42 virtual bool VCOM_CALLTYPE GetSimpleExist(IXMLFileNode* pRefNode, const TXString& nodePath); // check to see if exist
43
44 // DOMErrorHandler
45 public:
46 bool handleError(const DOMError& domError);
47 void resetErrors();
48
49 public:
50 static char GetPathDelimiter();
51 static char GetArrayStartDelimiter();
52 static void ConvertXMLError(XMLExcepts::Codes error);
53 static void ConvertXMLError(DOMException::ExceptionCode error);
54 static VCOMError GetLastError();
55 static void SetLastError(VCOMError error);
56 static bool IsNameXMLValid(const XMLCh* szString, size_t len);
58 static void Tokenize(const TXString& string, TXStringArray& outArray, const char* szTokens, size_t tokensLen, bool doStopTokenizeForSpecialCh = false, char stopStartCh = '\'');
59
60 private:
61 typedef EXMLFileError (*TWriteCallback)(void* pData, size_t dataSize, void* pEnv);
62 void WriteXML(TWriteCallback pCallback, EXMLEncoding encoding, void* pEnv);
63 virtual VCOMError DoSimpleNode(IXMLFileNode* pRefNode, const TXString& nodePath, IXMLFileNode** ppOutNode, TXString& outValue, bool doWrite);
64
65 private:
67
68 XercesDOMParserPtr fpXercesDOMParser; // Pointer to Xerces DOM parser structure
69
70 DOMDocumentPtr fpDomDocument;
71 DOMElementPtr fpDocRoot;
72
73 // features
74 bool fbDoFormatPrettyPrint;
75 XMLCh fTheNewLine[5];
76
77 private:
78 static VCOMError fLastError;
79 };
80 }
81}
82#endif
#define VCOM_CALLTYPE
Definition VectorworksMVR.h:93
XERCES_CPP_NAMESPACE_USE typedef DOMImplementation * DOMImplementationPtr
Definition XercesSupport.h:51
XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * DOMDocumentPtr
Definition XercesSupport.h:54
DOMElement * DOMElementPtr
Definition XercesSupport.h:55
XercesDOMParser * XercesDOMParserPtr
Definition XercesSupport.h:52
Definition StdAfx.h:187
Definition IFileIdentifier.h:21
Definition IXMLFile.h:60
Definition GSString.h:134
Definition XMLLib/XMLFileImpl.h:17
static char GetPathDelimiter()
Definition XMLLib/XMLFileImpl.cpp:594
static void Tokenize(const TXString &string, TXStringArray &outArray, const char *szTokens, size_t tokensLen, bool doStopTokenizeForSpecialCh=false, char stopStartCh='\'')
Definition XMLLib/XMLFileImpl.cpp:647
static EXMLFileError GetLastEXMLFileError()
Definition XMLLib/XMLFileImpl.cpp:629
static void ConvertXMLError(XMLExcepts::Codes error)
Definition XMLLib/XMLFileImpl.cpp:604
virtual VCOMError VCOM_CALLTYPE GetSimpleNode(const TXString &nodePath, IXMLFileNode **ppOutNode)
Definition XMLLib/XMLFileImpl.cpp:826
static char GetArrayStartDelimiter()
Definition XMLLib/XMLFileImpl.cpp:599
virtual VCOMError VCOM_CALLTYPE ReadBuffer(IXMLFileIOBuffer *pInputBuffer, EXMLEncoding encoding)
Definition XMLLib/XMLFileImpl.cpp:250
virtual VCOMError VCOM_CALLTYPE GetSimpleValue(const TXString &nodePath, TXString &outValue)
Definition XMLLib/XMLFileImpl.cpp:838
void resetErrors()
Definition XMLLib/XMLFileImpl.cpp:590
static VCOMError GetLastError()
Definition XMLLib/XMLFileImpl.cpp:614
virtual VCOMError VCOM_CALLTYPE ReadFile(IFileIdentifier *pFileID)
Definition XMLLib/XMLFileImpl.cpp:136
virtual VCOMError VCOM_CALLTYPE WriteBuffer(IXMLFileIOBuffer *pOutputBuffer, EXMLEncoding encoding)
Definition XMLLib/XMLFileImpl.cpp:431
virtual VCOMError VCOM_CALLTYPE SetSimpleValue(const TXString &nodePath, const TXString &value)
Definition XMLLib/XMLFileImpl.cpp:872
static void SetLastError(VCOMError error)
Definition XMLLib/XMLFileImpl.cpp:619
virtual ~CXMLFileImpl()
Definition XMLLib/XMLFileImpl.cpp:77
static bool IsNameXMLValid(const XMLCh *szString, size_t len)
Definition XMLLib/XMLFileImpl.cpp:624
virtual VCOMError VCOM_CALLTYPE CreateNew(const TXString &rootName)
Definition XMLLib/XMLFileImpl.cpp:96
virtual VCOMError VCOM_CALLTYPE GetRootNode(IXMLFileNode **ppOutNode)
Definition XMLLib/XMLFileImpl.cpp:515
virtual bool VCOM_CALLTYPE GetSimpleExist(const TXString &nodePath)
Definition XMLLib/XMLFileImpl.cpp:884
CXMLFileImpl()
Definition XMLLib/XMLFileImpl.cpp:57
bool handleError(const DOMError &domError)
Definition XMLLib/XMLFileImpl.cpp:581
virtual VCOMError VCOM_CALLTYPE SetFeature(EXMLFileFeature feature, bool bValue)
Definition XMLLib/XMLFileImpl.cpp:550
virtual VCOMError VCOM_CALLTYPE WriteFile(IFileIdentifier *pFileID, EXMLEncoding encoding)
Definition XMLLib/XMLFileImpl.cpp:335
Definition IFileIdentifier.h:15
EXMLFileFeature
Definition IXMLFile.h:51
EXMLEncoding
Definition IXMLFile.h:16
EXMLFileError
Definition IXMLFile.h:35
Definition CieColor.h:9
std::vector< TXString > TXStringArray
Definition GSString.h:547
uint32_t VCOMError
Definition VectorworksMVR.h:119