diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 466d5b12c240..8ee5959b74b8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -138,10 +138,6 @@ jobs: cache: true modules: qt5compat qtmultimedia - - name: install build dependencies - run: | - brew install xerces-c - - name: update version run: | ./scripts/version.sh ${VERSION_NUMBER} diff --git a/common.pri b/common.pri index 18f303c8062c..0c22edd472bc 100644 --- a/common.pri +++ b/common.pri @@ -13,8 +13,6 @@ win32{ QMAKE_INSTALL_PROGRAM = xcopy /y VCOPY = $$QMAKE_COPY /D - - INSTALL_XERCES += ../../../extern/xerces-c/lib/xerces-c_3_2D.dll } unix{ diff --git a/extern/xerces-c/include/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.hpp b/extern/xerces-c/include/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.hpp deleted file mode 100644 index b7bf5fd32d42..000000000000 --- a/extern/xerces-c/include/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.hpp +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * $Id: BinFileInputStream.hpp 553903 2007-07-06 14:43:42Z amassari $ - */ - -#if !defined(XERCESC_INCLUDE_GUARD_BINHTTPINPUTSTREAMCOMMON_HPP) -#define XERCESC_INCLUDE_GUARD_BINHTTPINPUTSTREAMCOMMON_HPP - -#include -#include -#include -#include -#include - -XERCES_CPP_NAMESPACE_BEGIN - -// -// This class implements a simple expanding character buffer -// -class XMLUTIL_EXPORT CharBuffer -{ -public: - CharBuffer(XMLSize_t capacity = 1023, - MemoryManager *manager = XMLPlatformUtils::fgMemoryManager) - : fCapacity(capacity), - fIndex(0), - fMemoryManager(manager) - { - fBuffer = (char*)fMemoryManager->allocate((fCapacity + 1) * sizeof(char)); - } - - ~CharBuffer() - { - fMemoryManager->deallocate(fBuffer); - } - - const char* getRawBuffer() const - { - fBuffer[fIndex] = 0; - return fBuffer; - } - - char* getRawBuffer() - { - fBuffer[fIndex] = 0; - return fBuffer; - } - - XMLSize_t getLen() const - { - return fIndex; - } - - void reset() - { - fIndex = 0; - } - - void append(const char *chars) - { - if(chars != 0 && *chars != 0) { - // get length of chars - XMLSize_t count = 0; - for(; *(chars+count); ++count) ; - - if(fIndex + count >= fCapacity) { - ensureCapacity(count); - } - memcpy(&fBuffer[fIndex], chars, count * sizeof(char)); - fIndex += count; - } - } - - void append(const char *chars, XMLSize_t len) - { - if(chars != 0 && len != 0) { - if(fIndex + len >= fCapacity) { - ensureCapacity(len); - } - memcpy(&fBuffer[fIndex], chars, len * sizeof(char)); - fIndex += len; - } - } - - void appendDecimalNumber(unsigned int n) - { - if(n >= 10) { - appendDecimalNumber(n / 10); - n = n % 10; - } - - if(fIndex + 1 >= fCapacity) - ensureCapacity(1); - - fBuffer[fIndex] = '0' + n; - ++fIndex; - } - - void set(const char *chars) - { - reset(); - append(chars); - } - -private: - // ----------------------------------------------------------------------- - // Unimplemented constructors and operators - // ----------------------------------------------------------------------- - CharBuffer(const CharBuffer &); - CharBuffer &operator=(const CharBuffer &); - - void ensureCapacity(XMLSize_t extraNeeded) - { - // If we can't handle it, try doubling the buffer size. - XMLSize_t newCap = (fIndex + extraNeeded) * 2; - - if(newCap > fCapacity) - { - // Allocate new buffer - char* newBuf = (char*)fMemoryManager->allocate((newCap + 1) * sizeof(char)); - - // Copy over the old stuff - memcpy(newBuf, fBuffer, fIndex * sizeof(char)); - - // Clean up old buffer and store new stuff - fMemoryManager->deallocate(fBuffer); - fBuffer = newBuf; - fCapacity = newCap; - } - } - - // ----------------------------------------------------------------------- - // Private data members - // ----------------------------------------------------------------------- - char *fBuffer; - XMLSize_t fCapacity; - XMLSize_t fIndex; - MemoryManager *fMemoryManager; -}; - -// -// Common base implementation of HTTP BinInputStream that is used by some -// platform-specific implementations. -// -class XMLUTIL_EXPORT BinHTTPInputStreamCommon : public BinInputStream -{ -public : - virtual XMLFilePos curPos() const; - virtual XMLSize_t readBytes - ( - XMLByte* const toFill - , const XMLSize_t maxToRead - ); - - virtual const XMLCh *getContentType() const; - virtual const XMLCh *getEncoding() const; - -protected : - BinHTTPInputStreamCommon(MemoryManager *manager); - virtual ~BinHTTPInputStreamCommon(); - - /** - * \return The HTTP status code - */ - int sendRequest(const XMLURL &url, const XMLNetHTTPInfo *httpInfo); - XMLCh *findHeader(const char *name); - - virtual bool send(const char *buf, XMLSize_t len) = 0; - /** - * \return The length of the data received, or -1 if an error occured - */ - virtual int receive(char *buf, XMLSize_t len) = 0; - -private : - // ----------------------------------------------------------------------- - // Unimplemented constructors and operators - // ----------------------------------------------------------------------- - BinHTTPInputStreamCommon(const BinHTTPInputStreamCommon&); - BinHTTPInputStreamCommon& operator=(const BinHTTPInputStreamCommon&); - - void createHTTPRequest(const XMLURL &urlSource, const XMLNetHTTPInfo *httpInfo, CharBuffer &buffer); - - // ----------------------------------------------------------------------- - // Private data members - // - // fBytesProcessed - // Its a rolling count of the number of bytes processed off this - // input stream. - // fBuffer - // Holds the http header, plus the first part of the actual - // data. Filled at the time the stream is opened, data goes - // out to user in response to readBytes(). - // fBufferPos - // Pointers into fBuffer, showing start and end+1 of content - // that readBytes must return. - // fContentType - // Holds the HTTP header for the Content-Type setting - // fEncoding - // Holds the encoding of this stream, extracted from the Content-Type setting - // ----------------------------------------------------------------------- - - XMLSize_t fBytesProcessed; - CharBuffer fBuffer; - char * fBufferPos; - XMLCh * fContentType; - XMLCh * fEncoding; - MemoryManager* fMemoryManager; -}; - - -inline XMLFilePos BinHTTPInputStreamCommon::curPos() const -{ - return fBytesProcessed; -} - -XERCES_CPP_NAMESPACE_END - -#endif diff --git a/extern/xerces-c/include/xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.hpp b/extern/xerces-c/include/xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.hpp deleted file mode 100644 index f4541db8b79e..000000000000 --- a/extern/xerces-c/include/xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.hpp +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * $Id$ - */ - -#if !defined(XERCESC_INCLUDE_GUARD_WINSOCKNETACCESSOR_HPP) -#define XERCESC_INCLUDE_GUARD_WINSOCKNETACCESSOR_HPP - - -#include -#include -#include -#include - - -XERCES_CPP_NAMESPACE_BEGIN - -// -// This class is the wrapper for the WinSock library which provides -// support for sockets. Its being used here to add the ability to -// use HTTP URL's as the system id's in the XML decl clauses. -// - -class XMLUTIL_EXPORT WinSockNetAccessor : public XMLNetAccessor -{ -public : - WinSockNetAccessor(); - ~WinSockNetAccessor(); - - virtual BinInputStream* makeNew(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo=0); - virtual const XMLCh* getId() const; - -private : - static const XMLCh fgMyName[]; - - WinSockNetAccessor(const WinSockNetAccessor&); - WinSockNetAccessor& operator=(const WinSockNetAccessor&); - -}; // WinSockNetAccessor - -inline const XMLCh* WinSockNetAccessor::getId() const -{ - return fgMyName; -} - -XERCES_CPP_NAMESPACE_END - - -#endif // WINSOCKNETACCESSOR_HPP diff --git a/extern/xerces-c/lib/xerces-c_3D.lib b/extern/xerces-c/lib/xerces-c_3D.lib deleted file mode 100644 index 581a9073abb8..000000000000 Binary files a/extern/xerces-c/lib/xerces-c_3D.lib and /dev/null differ diff --git a/extern/xerces-c/lib/xerces-c_3_2D.dll b/extern/xerces-c/lib/xerces-c_3_2D.dll deleted file mode 100644 index 97b6fca4b883..000000000000 Binary files a/extern/xerces-c/lib/xerces-c_3_2D.dll and /dev/null differ diff --git a/src/app/seamly2d/seamly2d.pro b/src/app/seamly2d/seamly2d.pro index 6cd99157d90b..1846079c74e1 100644 --- a/src/app/seamly2d/seamly2d.pro +++ b/src/app/seamly2d/seamly2d.pro @@ -206,13 +206,6 @@ win32 { openssl_path += $${PWD}/$$DIR } copyToDestdir($$openssl_path, $$shell_path($${OUT_PWD}/$$DESTDIR)) - - for(DIR, INSTALL_XERCES) { - #add these absolute paths to a variable which - #ends up as 'mkcommands = path1 path2 path3 ...' - openssl_path += $${PWD}/$$DIR - } - copyToDestdir($$openssl_path, $$shell_path($${OUT_PWD}/$$DESTDIR)) } # When the GNU linker sees a library, it discards all symbols that it doesn't need. @@ -337,9 +330,10 @@ win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vpropertyexplorer/$${DE else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vpropertyexplorer/$${DESTDIR}/libvpropertyexplorer.a # xerces library -win32: LIBS += -L$$PWD/../../../extern/xerces-c/lib/ -lxerces-c_3D -macx: LIBS += -L/usr/local/lib -lxerces-c-3.2 -else:unix|win32-g++: LIBS += -lxerces-c-3.2 +macx: LIBS += -L$${PWD}/../../libs/xerces-c/macx/lib -lxerces-c +else:unix: LIBS += -lxerces-c +win32:!win32-g++: LIBS += -L$${PWD}/../../libs/xerces-c/msvc/lib -lxerces-c_3 +win32-g++: LIBS += -L$${PWD}/../../libs/xerces-c/mingw/lib -lxerces-c macx{ APPLE_SIGN_IDENTITY_UNQUOTED = $(APPLE_SIGN_IDENTITY) diff --git a/src/app/seamlyme/seamlyme.pro b/src/app/seamlyme/seamlyme.pro index 9d24ae160bda..868acf185503 100644 --- a/src/app/seamlyme/seamlyme.pro +++ b/src/app/seamlyme/seamlyme.pro @@ -109,13 +109,6 @@ win32 { openssl_path += $${PWD}/$$DIR } copyToDestdir($$openssl_path, $$shell_path($${OUT_PWD}/$$DESTDIR)) - - for(DIR, INSTALL_XERCES) { - #add these absolute paths to a variable which - #ends up as 'mkcommands = path1 path2 path3 ...' - xerces_path += $${PWD}/$$DIR - } - copyToDestdir($$xerces_path, $$shell_path($${OUT_PWD}/$$DESTDIR)) } # Compilation will fail without this files after we added them to this section. @@ -238,9 +231,10 @@ win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vpropertyexplorer/$${DE else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vpropertyexplorer/$${DESTDIR}/libvpropertyexplorer.a # xerces library -win32: LIBS += -L$$PWD/../../../extern/xerces-c/lib/ -lxerces-c_3D -macx: LIBS += -L/usr/local/lib -lxerces-c-3.2 -else:unix|win32-g++: LIBS += -lxerces-c-3.2 +macx: LIBS += -L$${PWD}/../../libs/xerces-c/macx/lib -lxerces-c +else:unix: LIBS += -lxerces-c +win32:!win32-g++: LIBS += -L$${PWD}/../../libs/xerces-c/msvc/lib -lxerces-c_3 +win32-g++: LIBS += -L$${PWD}/../../libs/xerces-c/mingw/lib -lxerces-c macx{ APPLE_SIGN_IDENTITY = $$shell_quote($(APPLE_SIGN_IDENTITY)) diff --git a/src/libs/libs.pri b/src/libs/libs.pri index a82b8e436cbf..4a2c25d9488b 100644 --- a/src/libs/libs.pri +++ b/src/libs/libs.pri @@ -34,8 +34,8 @@ INCLUDEPATH += $${PWD}/vpropertyexplorer #VTools static library INCLUDEPATH += $${PWD}/vtest -#xerces shared library, bundled on windows locally -win32:INCLUDEPATH += $${PWD}/../../extern/xerces-c/include +#xerces static library, vendored for msvc, mingw and mac locally +win32:!win32-g++:INCLUDEPATH += $${PWD}/xerces-c/msvc/include +win32-g++:INCLUDEPATH += $${PWD}/xerces-c/mingw/include +macx:INCLUDEPATH += $${PWD}/xerces-c/macx/include #xerces headers and library on linux via package manager, no extra include path required -#xerces headers and library on mac via brew -macx:INCLUDEPATH += /usr/local/include \ No newline at end of file diff --git a/extern/xerces-c/LICENSE b/src/libs/xerces-c/LICENSE similarity index 100% rename from extern/xerces-c/LICENSE rename to src/libs/xerces-c/LICENSE diff --git a/src/libs/xerces-c/README.md b/src/libs/xerces-c/README.md new file mode 100644 index 000000000000..11ccfc550375 --- /dev/null +++ b/src/libs/xerces-c/README.md @@ -0,0 +1,10 @@ +xerces-c headers and static libs +================================ + +xerces is used in the ifc lib to perform XML schema validation, as that was removed from Qt6. If Qt regains the ability to perform XML schema validation, +this can be removed again and replaced with Qt functionality. Other Qt projects follow a similar approach to use xerces-c for XML schema validation. + +The binaries and headers here are built with https://github.com/FashionFreedom/xerces-c/blob/main/.github/workflows/ci.yml + +The binary releases from https://github.com/FashionFreedom/xerces-c are put under the arch specific folders, stripped from shared libraries and pkgconfig as +we link statically only the small required parts into Seamly2D and SeamlyME. diff --git a/extern/xerces-c/include/xercesc/dom/DOM.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOM.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOM.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOM.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMAttr.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMAttr.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMAttr.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMAttr.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMCDATASection.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMCDATASection.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMCDATASection.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMCDATASection.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMCharacterData.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMCharacterData.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMCharacterData.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMCharacterData.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMComment.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMComment.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMComment.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMComment.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMConfiguration.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMConfiguration.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMConfiguration.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMConfiguration.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMDocument.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMDocument.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMDocument.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMDocument.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMDocumentFragment.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMDocumentFragment.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMDocumentFragment.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMDocumentFragment.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMDocumentRange.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMDocumentRange.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMDocumentRange.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMDocumentRange.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMDocumentTraversal.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMDocumentTraversal.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMDocumentTraversal.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMDocumentTraversal.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMDocumentType.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMDocumentType.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMDocumentType.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMDocumentType.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMElement.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMElement.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMElement.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMElement.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMEntity.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMEntity.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMEntity.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMEntity.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMEntityReference.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMEntityReference.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMEntityReference.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMEntityReference.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMError.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMError.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMError.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMError.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMErrorHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMErrorHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMErrorHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMErrorHandler.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMException.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMException.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMException.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMImplementation.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMImplementation.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMImplementation.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMImplementation.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMImplementationLS.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMImplementationLS.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMImplementationLS.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMImplementationLS.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMImplementationList.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMImplementationList.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMImplementationList.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMImplementationList.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMImplementationRegistry.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMImplementationRegistry.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMImplementationRegistry.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMImplementationRegistry.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMImplementationSource.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMImplementationSource.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMImplementationSource.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMImplementationSource.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMLSException.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMLSException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMLSException.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMLSException.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMLSInput.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMLSInput.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMLSInput.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMLSInput.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMLSOutput.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMLSOutput.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMLSOutput.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMLSOutput.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMLSParser.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMLSParser.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMLSParser.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMLSParser.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMLSParserFilter.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMLSParserFilter.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMLSParserFilter.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMLSParserFilter.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMLSResourceResolver.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMLSResourceResolver.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMLSResourceResolver.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMLSResourceResolver.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMLSSerializer.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMLSSerializer.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMLSSerializer.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMLSSerializer.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMLSSerializerFilter.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMLSSerializerFilter.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMLSSerializerFilter.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMLSSerializerFilter.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMLocator.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMLocator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMLocator.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMLocator.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMMemoryManager.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMMemoryManager.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMMemoryManager.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMMemoryManager.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMNamedNodeMap.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMNamedNodeMap.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMNamedNodeMap.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMNamedNodeMap.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMNode.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMNode.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMNode.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMNode.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMNodeFilter.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMNodeFilter.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMNodeFilter.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMNodeFilter.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMNodeIterator.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMNodeIterator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMNodeIterator.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMNodeIterator.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMNodeList.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMNodeList.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMNodeList.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMNodeList.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMNotation.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMNotation.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMNotation.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMNotation.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMPSVITypeInfo.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMPSVITypeInfo.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMPSVITypeInfo.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMPSVITypeInfo.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMProcessingInstruction.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMProcessingInstruction.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMProcessingInstruction.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMProcessingInstruction.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMRange.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMRange.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMRange.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMRange.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMRangeException.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMRangeException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMRangeException.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMRangeException.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMStringList.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMStringList.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMStringList.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMStringList.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMText.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMText.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMText.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMText.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMTreeWalker.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMTreeWalker.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMTreeWalker.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMTreeWalker.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMTypeInfo.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMTypeInfo.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMTypeInfo.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMTypeInfo.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMUserDataHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMUserDataHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMUserDataHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMUserDataHandler.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMXPathEvaluator.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMXPathEvaluator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMXPathEvaluator.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMXPathEvaluator.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMXPathException.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMXPathException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMXPathException.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMXPathException.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMXPathExpression.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMXPathExpression.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMXPathExpression.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMXPathExpression.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMXPathNSResolver.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMXPathNSResolver.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMXPathNSResolver.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMXPathNSResolver.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMXPathNamespace.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMXPathNamespace.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMXPathNamespace.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMXPathNamespace.hpp diff --git a/extern/xerces-c/include/xercesc/dom/DOMXPathResult.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/DOMXPathResult.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/DOMXPathResult.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/DOMXPathResult.hpp diff --git a/extern/xerces-c/include/xercesc/dom/StDOMNode.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/StDOMNode.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/StDOMNode.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/StDOMNode.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMAttrImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMAttrImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMAttrImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMAttrImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMAttrMapImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMAttrMapImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMAttrMapImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMAttrMapImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMAttrNSImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMAttrNSImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMAttrNSImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMAttrNSImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMCDATASectionImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMCDATASectionImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMCDATASectionImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMCDATASectionImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMCasts.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMCasts.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMCasts.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMCasts.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMCharacterDataImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMCharacterDataImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMCharacterDataImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMCharacterDataImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMChildNode.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMChildNode.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMChildNode.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMChildNode.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMCommentImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMCommentImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMCommentImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMCommentImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMConfigurationImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMConfigurationImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMConfigurationImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMConfigurationImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMDeepNodeListImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMDeepNodeListImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMDeepNodeListImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMDeepNodeListImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMDeepNodeListPool.c b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMDeepNodeListPool.c similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMDeepNodeListPool.c rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMDeepNodeListPool.c diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMDeepNodeListPool.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMDeepNodeListPool.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMDeepNodeListPool.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMDeepNodeListPool.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMDocumentFragmentImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMDocumentFragmentImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMDocumentFragmentImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMDocumentFragmentImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMDocumentImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMDocumentImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMDocumentImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMDocumentImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMDocumentTypeImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMDocumentTypeImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMDocumentTypeImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMDocumentTypeImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMElementImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMElementImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMElementImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMElementImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMElementNSImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMElementNSImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMElementNSImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMElementNSImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMEntityImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMEntityImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMEntityImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMEntityImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMEntityReferenceImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMEntityReferenceImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMEntityReferenceImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMEntityReferenceImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMErrorImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMErrorImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMErrorImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMErrorImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMImplementationImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMImplementationImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMImplementationImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMImplementationImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMImplementationListImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMImplementationListImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMImplementationListImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMImplementationListImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMLSInputImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMLSInputImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMLSInputImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMLSInputImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMLSOutputImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMLSOutputImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMLSOutputImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMLSOutputImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMLSSerializerImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMLSSerializerImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMLSSerializerImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMLSSerializerImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMLocatorImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMLocatorImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMLocatorImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMLocatorImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMNamedNodeMapImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNamedNodeMapImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMNamedNodeMapImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNamedNodeMapImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMNodeBase.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNodeBase.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMNodeBase.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNodeBase.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMNodeIDMap.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNodeIDMap.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMNodeIDMap.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNodeIDMap.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMNodeImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNodeImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMNodeImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNodeImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMNodeIteratorImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNodeIteratorImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMNodeIteratorImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNodeIteratorImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMNodeListImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNodeListImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMNodeListImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNodeListImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMNodeVector.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNodeVector.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMNodeVector.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNodeVector.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMNormalizer.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNormalizer.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMNormalizer.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNormalizer.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMNotationImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNotationImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMNotationImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMNotationImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMParentNode.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMParentNode.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMParentNode.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMParentNode.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMRangeImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMRangeImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMRangeImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMRangeImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMStringListImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMStringListImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMStringListImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMStringListImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMStringPool.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMStringPool.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMStringPool.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMStringPool.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMTextImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMTextImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMTextImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMTextImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMTreeWalkerImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMTreeWalkerImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMTreeWalkerImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMTreeWalkerImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMTypeInfoImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMTypeInfoImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMTypeInfoImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMTypeInfoImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMXPathExpressionImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMXPathExpressionImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMXPathExpressionImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMXPathExpressionImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMXPathNSResolverImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMXPathNSResolverImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMXPathNSResolverImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMXPathNSResolverImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/DOMXPathResultImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMXPathResultImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/DOMXPathResultImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/DOMXPathResultImpl.hpp diff --git a/extern/xerces-c/include/xercesc/dom/impl/XSDElementNSImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/dom/impl/XSDElementNSImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/dom/impl/XSDElementNSImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/dom/impl/XSDElementNSImpl.hpp diff --git a/extern/xerces-c/include/xercesc/framework/BinOutputStream.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/BinOutputStream.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/BinOutputStream.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/BinOutputStream.hpp diff --git a/extern/xerces-c/include/xercesc/framework/LocalFileFormatTarget.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/LocalFileFormatTarget.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/LocalFileFormatTarget.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/LocalFileFormatTarget.hpp diff --git a/extern/xerces-c/include/xercesc/framework/LocalFileInputSource.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/LocalFileInputSource.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/LocalFileInputSource.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/LocalFileInputSource.hpp diff --git a/extern/xerces-c/include/xercesc/framework/MemBufFormatTarget.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/MemBufFormatTarget.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/MemBufFormatTarget.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/MemBufFormatTarget.hpp diff --git a/extern/xerces-c/include/xercesc/framework/MemBufInputSource.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/MemBufInputSource.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/MemBufInputSource.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/MemBufInputSource.hpp diff --git a/extern/xerces-c/include/xercesc/framework/MemoryManager.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/MemoryManager.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/MemoryManager.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/MemoryManager.hpp diff --git a/extern/xerces-c/include/xercesc/framework/StdInInputSource.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/StdInInputSource.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/StdInInputSource.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/StdInInputSource.hpp diff --git a/extern/xerces-c/include/xercesc/framework/StdOutFormatTarget.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/StdOutFormatTarget.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/StdOutFormatTarget.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/StdOutFormatTarget.hpp diff --git a/extern/xerces-c/include/xercesc/framework/URLInputSource.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/URLInputSource.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/URLInputSource.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/URLInputSource.hpp diff --git a/extern/xerces-c/include/xercesc/framework/ValidationContext.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/ValidationContext.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/ValidationContext.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/ValidationContext.hpp diff --git a/extern/xerces-c/include/xercesc/framework/Wrapper4DOMLSInput.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/Wrapper4DOMLSInput.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/Wrapper4DOMLSInput.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/Wrapper4DOMLSInput.hpp diff --git a/extern/xerces-c/include/xercesc/framework/Wrapper4InputSource.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/Wrapper4InputSource.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/Wrapper4InputSource.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/Wrapper4InputSource.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLAttDef.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLAttDef.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLAttDef.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLAttDef.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLAttDefList.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLAttDefList.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLAttDefList.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLAttDefList.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLAttr.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLAttr.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLAttr.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLAttr.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLBuffer.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLBuffer.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLBuffer.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLBuffer.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLBufferMgr.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLBufferMgr.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLBufferMgr.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLBufferMgr.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLContentModel.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLContentModel.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLContentModel.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLContentModel.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLDTDDescription.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLDTDDescription.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLDTDDescription.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLDTDDescription.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLDocumentHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLDocumentHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLDocumentHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLDocumentHandler.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLElementDecl.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLElementDecl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLElementDecl.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLElementDecl.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLEntityDecl.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLEntityDecl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLEntityDecl.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLEntityDecl.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLEntityHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLEntityHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLEntityHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLEntityHandler.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLErrorCodes.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLErrorCodes.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLErrorCodes.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLErrorCodes.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLErrorReporter.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLErrorReporter.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLErrorReporter.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLErrorReporter.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLFormatter.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLFormatter.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLFormatter.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLFormatter.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLGrammarDescription.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLGrammarDescription.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLGrammarDescription.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLGrammarDescription.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLGrammarPool.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLGrammarPool.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLGrammarPool.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLGrammarPool.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLGrammarPoolImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLGrammarPoolImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLGrammarPoolImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLGrammarPoolImpl.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLNotationDecl.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLNotationDecl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLNotationDecl.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLNotationDecl.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLPScanToken.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLPScanToken.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLPScanToken.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLPScanToken.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLRecognizer.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLRecognizer.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLRecognizer.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLRecognizer.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLRefInfo.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLRefInfo.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLRefInfo.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLRefInfo.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLSchemaDescription.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLSchemaDescription.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLSchemaDescription.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLSchemaDescription.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLValidator.hpp diff --git a/extern/xerces-c/include/xercesc/framework/XMLValidityCodes.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/XMLValidityCodes.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/XMLValidityCodes.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/XMLValidityCodes.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/PSVIAttribute.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/PSVIAttribute.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/PSVIAttribute.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/PSVIAttribute.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/PSVIAttributeList.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/PSVIAttributeList.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/PSVIAttributeList.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/PSVIAttributeList.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/PSVIElement.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/PSVIElement.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/PSVIElement.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/PSVIElement.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/PSVIHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/PSVIHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/PSVIHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/PSVIHandler.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/PSVIItem.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/PSVIItem.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/PSVIItem.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/PSVIItem.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSAnnotation.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSAnnotation.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSAnnotation.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSAnnotation.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSAttributeDeclaration.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSAttributeDeclaration.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSAttributeDeclaration.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSAttributeDeclaration.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSAttributeGroupDefinition.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSAttributeGroupDefinition.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSAttributeGroupDefinition.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSAttributeGroupDefinition.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSAttributeUse.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSAttributeUse.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSAttributeUse.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSAttributeUse.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSComplexTypeDefinition.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSComplexTypeDefinition.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSComplexTypeDefinition.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSComplexTypeDefinition.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSConstants.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSConstants.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSConstants.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSConstants.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSElementDeclaration.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSElementDeclaration.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSElementDeclaration.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSElementDeclaration.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSFacet.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSFacet.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSFacet.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSFacet.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSIDCDefinition.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSIDCDefinition.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSIDCDefinition.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSIDCDefinition.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSModel.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSModel.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSModel.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSModel.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSModelGroup.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSModelGroup.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSModelGroup.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSModelGroup.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSModelGroupDefinition.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSModelGroupDefinition.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSModelGroupDefinition.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSModelGroupDefinition.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSMultiValueFacet.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSMultiValueFacet.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSMultiValueFacet.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSMultiValueFacet.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSNamedMap.c b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSNamedMap.c similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSNamedMap.c rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSNamedMap.c diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSNamedMap.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSNamedMap.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSNamedMap.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSNamedMap.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSNamespaceItem.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSNamespaceItem.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSNamespaceItem.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSNamespaceItem.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSNotationDeclaration.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSNotationDeclaration.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSNotationDeclaration.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSNotationDeclaration.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSObject.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSObject.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSObject.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSObject.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSParticle.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSParticle.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSParticle.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSParticle.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSSimpleTypeDefinition.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSSimpleTypeDefinition.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSSimpleTypeDefinition.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSSimpleTypeDefinition.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSTypeDefinition.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSTypeDefinition.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSTypeDefinition.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSTypeDefinition.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSValue.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSValue.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSValue.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSValue.hpp diff --git a/extern/xerces-c/include/xercesc/framework/psvi/XSWildcard.hpp b/src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSWildcard.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/framework/psvi/XSWildcard.hpp rename to src/libs/xerces-c/macx/include/xercesc/framework/psvi/XSWildcard.hpp diff --git a/extern/xerces-c/include/xercesc/internal/BinFileOutputStream.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/BinFileOutputStream.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/BinFileOutputStream.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/BinFileOutputStream.hpp diff --git a/extern/xerces-c/include/xercesc/internal/BinMemOutputStream.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/BinMemOutputStream.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/BinMemOutputStream.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/BinMemOutputStream.hpp diff --git a/extern/xerces-c/include/xercesc/internal/CharTypeTables.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/CharTypeTables.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/CharTypeTables.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/CharTypeTables.hpp diff --git a/extern/xerces-c/include/xercesc/internal/DGXMLScanner.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/DGXMLScanner.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/DGXMLScanner.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/DGXMLScanner.hpp diff --git a/extern/xerces-c/include/xercesc/internal/ElemStack.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/ElemStack.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/ElemStack.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/ElemStack.hpp diff --git a/extern/xerces-c/include/xercesc/internal/EndOfEntityException.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/EndOfEntityException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/EndOfEntityException.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/EndOfEntityException.hpp diff --git a/extern/xerces-c/include/xercesc/internal/IANAEncodings.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/IANAEncodings.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/IANAEncodings.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/IANAEncodings.hpp diff --git a/extern/xerces-c/include/xercesc/internal/IGXMLScanner.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/IGXMLScanner.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/IGXMLScanner.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/IGXMLScanner.hpp diff --git a/extern/xerces-c/include/xercesc/internal/MemoryManagerImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/MemoryManagerImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/MemoryManagerImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/MemoryManagerImpl.hpp diff --git a/extern/xerces-c/include/xercesc/internal/ReaderMgr.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/ReaderMgr.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/ReaderMgr.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/ReaderMgr.hpp diff --git a/extern/xerces-c/include/xercesc/internal/SGXMLScanner.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/SGXMLScanner.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/SGXMLScanner.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/SGXMLScanner.hpp diff --git a/extern/xerces-c/include/xercesc/internal/ValidationContextImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/ValidationContextImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/ValidationContextImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/ValidationContextImpl.hpp diff --git a/extern/xerces-c/include/xercesc/internal/VecAttrListImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/VecAttrListImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/VecAttrListImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/VecAttrListImpl.hpp diff --git a/extern/xerces-c/include/xercesc/internal/VecAttributesImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/VecAttributesImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/VecAttributesImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/VecAttributesImpl.hpp diff --git a/extern/xerces-c/include/xercesc/internal/WFXMLScanner.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/WFXMLScanner.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/WFXMLScanner.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/WFXMLScanner.hpp diff --git a/extern/xerces-c/include/xercesc/internal/XMLInternalErrorHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/XMLInternalErrorHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/XMLInternalErrorHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/XMLInternalErrorHandler.hpp diff --git a/extern/xerces-c/include/xercesc/internal/XMLReader.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/XMLReader.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/XMLReader.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/XMLReader.hpp diff --git a/extern/xerces-c/include/xercesc/internal/XMLScanner.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/XMLScanner.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/XMLScanner.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/XMLScanner.hpp diff --git a/extern/xerces-c/include/xercesc/internal/XMLScannerResolver.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/XMLScannerResolver.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/XMLScannerResolver.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/XMLScannerResolver.hpp diff --git a/extern/xerces-c/include/xercesc/internal/XProtoType.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/XProtoType.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/XProtoType.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/XProtoType.hpp diff --git a/extern/xerces-c/include/xercesc/internal/XSAXMLScanner.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/XSAXMLScanner.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/XSAXMLScanner.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/XSAXMLScanner.hpp diff --git a/extern/xerces-c/include/xercesc/internal/XSObjectFactory.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/XSObjectFactory.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/XSObjectFactory.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/XSObjectFactory.hpp diff --git a/extern/xerces-c/include/xercesc/internal/XSerializable.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/XSerializable.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/XSerializable.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/XSerializable.hpp diff --git a/extern/xerces-c/include/xercesc/internal/XSerializationException.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/XSerializationException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/XSerializationException.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/XSerializationException.hpp diff --git a/extern/xerces-c/include/xercesc/internal/XSerializeEngine.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/XSerializeEngine.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/XSerializeEngine.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/XSerializeEngine.hpp diff --git a/extern/xerces-c/include/xercesc/internal/XTemplateSerializer.hpp b/src/libs/xerces-c/macx/include/xercesc/internal/XTemplateSerializer.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/internal/XTemplateSerializer.hpp rename to src/libs/xerces-c/macx/include/xercesc/internal/XTemplateSerializer.hpp diff --git a/extern/xerces-c/include/xercesc/parsers/AbstractDOMParser.hpp b/src/libs/xerces-c/macx/include/xercesc/parsers/AbstractDOMParser.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/parsers/AbstractDOMParser.hpp rename to src/libs/xerces-c/macx/include/xercesc/parsers/AbstractDOMParser.hpp diff --git a/extern/xerces-c/include/xercesc/parsers/DOMLSParserImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/parsers/DOMLSParserImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/parsers/DOMLSParserImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/parsers/DOMLSParserImpl.hpp diff --git a/extern/xerces-c/include/xercesc/parsers/SAX2XMLFilterImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/parsers/SAX2XMLFilterImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/parsers/SAX2XMLFilterImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/parsers/SAX2XMLFilterImpl.hpp diff --git a/extern/xerces-c/include/xercesc/parsers/SAX2XMLReaderImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/parsers/SAX2XMLReaderImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/parsers/SAX2XMLReaderImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/parsers/SAX2XMLReaderImpl.hpp diff --git a/extern/xerces-c/include/xercesc/parsers/SAXParser.hpp b/src/libs/xerces-c/macx/include/xercesc/parsers/SAXParser.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/parsers/SAXParser.hpp rename to src/libs/xerces-c/macx/include/xercesc/parsers/SAXParser.hpp diff --git a/extern/xerces-c/include/xercesc/parsers/XercesDOMParser.hpp b/src/libs/xerces-c/macx/include/xercesc/parsers/XercesDOMParser.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/parsers/XercesDOMParser.hpp rename to src/libs/xerces-c/macx/include/xercesc/parsers/XercesDOMParser.hpp diff --git a/extern/xerces-c/include/xercesc/sax/AttributeList.hpp b/src/libs/xerces-c/macx/include/xercesc/sax/AttributeList.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax/AttributeList.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax/AttributeList.hpp diff --git a/extern/xerces-c/include/xercesc/sax/DTDHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/sax/DTDHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax/DTDHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax/DTDHandler.hpp diff --git a/extern/xerces-c/include/xercesc/sax/DocumentHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/sax/DocumentHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax/DocumentHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax/DocumentHandler.hpp diff --git a/extern/xerces-c/include/xercesc/sax/EntityResolver.hpp b/src/libs/xerces-c/macx/include/xercesc/sax/EntityResolver.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax/EntityResolver.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax/EntityResolver.hpp diff --git a/extern/xerces-c/include/xercesc/sax/ErrorHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/sax/ErrorHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax/ErrorHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax/ErrorHandler.hpp diff --git a/extern/xerces-c/include/xercesc/sax/HandlerBase.hpp b/src/libs/xerces-c/macx/include/xercesc/sax/HandlerBase.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax/HandlerBase.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax/HandlerBase.hpp diff --git a/extern/xerces-c/include/xercesc/sax/InputSource.hpp b/src/libs/xerces-c/macx/include/xercesc/sax/InputSource.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax/InputSource.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax/InputSource.hpp diff --git a/extern/xerces-c/include/xercesc/sax/Locator.hpp b/src/libs/xerces-c/macx/include/xercesc/sax/Locator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax/Locator.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax/Locator.hpp diff --git a/extern/xerces-c/include/xercesc/sax/Parser.hpp b/src/libs/xerces-c/macx/include/xercesc/sax/Parser.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax/Parser.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax/Parser.hpp diff --git a/extern/xerces-c/include/xercesc/sax/SAXException.hpp b/src/libs/xerces-c/macx/include/xercesc/sax/SAXException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax/SAXException.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax/SAXException.hpp diff --git a/extern/xerces-c/include/xercesc/sax/SAXParseException.hpp b/src/libs/xerces-c/macx/include/xercesc/sax/SAXParseException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax/SAXParseException.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax/SAXParseException.hpp diff --git a/extern/xerces-c/include/xercesc/sax2/Attributes.hpp b/src/libs/xerces-c/macx/include/xercesc/sax2/Attributes.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax2/Attributes.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax2/Attributes.hpp diff --git a/extern/xerces-c/include/xercesc/sax2/ContentHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/sax2/ContentHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax2/ContentHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax2/ContentHandler.hpp diff --git a/extern/xerces-c/include/xercesc/sax2/DeclHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/sax2/DeclHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax2/DeclHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax2/DeclHandler.hpp diff --git a/extern/xerces-c/include/xercesc/sax2/DefaultHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/sax2/DefaultHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax2/DefaultHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax2/DefaultHandler.hpp diff --git a/extern/xerces-c/include/xercesc/sax2/LexicalHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/sax2/LexicalHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax2/LexicalHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax2/LexicalHandler.hpp diff --git a/extern/xerces-c/include/xercesc/sax2/SAX2XMLFilter.hpp b/src/libs/xerces-c/macx/include/xercesc/sax2/SAX2XMLFilter.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax2/SAX2XMLFilter.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax2/SAX2XMLFilter.hpp diff --git a/extern/xerces-c/include/xercesc/sax2/SAX2XMLReader.hpp b/src/libs/xerces-c/macx/include/xercesc/sax2/SAX2XMLReader.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax2/SAX2XMLReader.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax2/SAX2XMLReader.hpp diff --git a/extern/xerces-c/include/xercesc/sax2/XMLReaderFactory.hpp b/src/libs/xerces-c/macx/include/xercesc/sax2/XMLReaderFactory.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/sax2/XMLReaderFactory.hpp rename to src/libs/xerces-c/macx/include/xercesc/sax2/XMLReaderFactory.hpp diff --git a/extern/xerces-c/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp diff --git a/extern/xerces-c/include/xercesc/util/Base64.hpp b/src/libs/xerces-c/macx/include/xercesc/util/Base64.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/Base64.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/Base64.hpp diff --git a/extern/xerces-c/include/xercesc/util/BaseRefVectorOf.c b/src/libs/xerces-c/macx/include/xercesc/util/BaseRefVectorOf.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/BaseRefVectorOf.c rename to src/libs/xerces-c/macx/include/xercesc/util/BaseRefVectorOf.c diff --git a/extern/xerces-c/include/xercesc/util/BaseRefVectorOf.hpp b/src/libs/xerces-c/macx/include/xercesc/util/BaseRefVectorOf.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/BaseRefVectorOf.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/BaseRefVectorOf.hpp diff --git a/extern/xerces-c/include/xercesc/util/BinFileInputStream.hpp b/src/libs/xerces-c/macx/include/xercesc/util/BinFileInputStream.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/BinFileInputStream.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/BinFileInputStream.hpp diff --git a/extern/xerces-c/include/xercesc/util/BinInputStream.hpp b/src/libs/xerces-c/macx/include/xercesc/util/BinInputStream.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/BinInputStream.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/BinInputStream.hpp diff --git a/extern/xerces-c/include/xercesc/util/BinMemInputStream.hpp b/src/libs/xerces-c/macx/include/xercesc/util/BinMemInputStream.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/BinMemInputStream.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/BinMemInputStream.hpp diff --git a/extern/xerces-c/include/xercesc/util/BitOps.hpp b/src/libs/xerces-c/macx/include/xercesc/util/BitOps.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/BitOps.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/BitOps.hpp diff --git a/extern/xerces-c/include/xercesc/util/BitSet.hpp b/src/libs/xerces-c/macx/include/xercesc/util/BitSet.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/BitSet.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/BitSet.hpp diff --git a/extern/xerces-c/include/xercesc/util/CountedPointer.c b/src/libs/xerces-c/macx/include/xercesc/util/CountedPointer.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/CountedPointer.c rename to src/libs/xerces-c/macx/include/xercesc/util/CountedPointer.c diff --git a/extern/xerces-c/include/xercesc/util/CountedPointer.hpp b/src/libs/xerces-c/macx/include/xercesc/util/CountedPointer.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/CountedPointer.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/CountedPointer.hpp diff --git a/extern/xerces-c/include/xercesc/util/DefaultPanicHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/util/DefaultPanicHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/DefaultPanicHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/DefaultPanicHandler.hpp diff --git a/extern/xerces-c/include/xercesc/util/EmptyStackException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/EmptyStackException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/EmptyStackException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/EmptyStackException.hpp diff --git a/extern/xerces-c/include/xercesc/util/EncodingValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/util/EncodingValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/EncodingValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/EncodingValidator.hpp diff --git a/src/libs/xerces-c/macx/include/xercesc/util/FileManagers/PosixFileMgr.hpp b/src/libs/xerces-c/macx/include/xercesc/util/FileManagers/PosixFileMgr.hpp new file mode 100644 index 000000000000..b8c1493e516f --- /dev/null +++ b/src/libs/xerces-c/macx/include/xercesc/util/FileManagers/PosixFileMgr.hpp @@ -0,0 +1,60 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_POSIXFILEMGR_HPP) +#define XERCESC_INCLUDE_GUARD_POSIXFILEMGR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Concrete implementation of XMLFileMgr, implementing +// file access on posix compatible systems. +class PosixFileMgr : public XMLFileMgr +{ + public: + PosixFileMgr(); + virtual ~PosixFileMgr(); + + // File access + virtual FileHandle fileOpen(const XMLCh* path, bool toWrite, MemoryManager* const manager); + virtual FileHandle fileOpen(const char* path, bool toWrite, MemoryManager* const manager); + virtual FileHandle openStdIn(MemoryManager* const manager); + + virtual void fileClose(FileHandle f, MemoryManager* const manager); + virtual void fileReset(FileHandle f, MemoryManager* const manager); + + virtual XMLFilePos curPos(FileHandle f, MemoryManager* const manager); + virtual XMLFilePos fileSize(FileHandle f, MemoryManager* const manager); + + virtual XMLSize_t fileRead(FileHandle f, XMLSize_t byteCount, XMLByte* buffer, MemoryManager* const manager); + virtual void fileWrite(FileHandle f, XMLSize_t byteCount, const XMLByte* buffer, MemoryManager* const manager); + + // Ancillary path handling routines + virtual XMLCh* getFullPath(const XMLCh* const srcPath, MemoryManager* const manager); + virtual XMLCh* getCurrentDirectory(MemoryManager* const manager); + virtual bool isRelative(const XMLCh* const toCheck, MemoryManager* const manager); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/extern/xerces-c/include/xercesc/util/FlagJanitor.c b/src/libs/xerces-c/macx/include/xercesc/util/FlagJanitor.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/FlagJanitor.c rename to src/libs/xerces-c/macx/include/xercesc/util/FlagJanitor.c diff --git a/extern/xerces-c/include/xercesc/util/FlagJanitor.hpp b/src/libs/xerces-c/macx/include/xercesc/util/FlagJanitor.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/FlagJanitor.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/FlagJanitor.hpp diff --git a/extern/xerces-c/include/xercesc/util/Hash2KeysSetOf.c b/src/libs/xerces-c/macx/include/xercesc/util/Hash2KeysSetOf.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/Hash2KeysSetOf.c rename to src/libs/xerces-c/macx/include/xercesc/util/Hash2KeysSetOf.c diff --git a/extern/xerces-c/include/xercesc/util/Hash2KeysSetOf.hpp b/src/libs/xerces-c/macx/include/xercesc/util/Hash2KeysSetOf.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/Hash2KeysSetOf.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/Hash2KeysSetOf.hpp diff --git a/extern/xerces-c/include/xercesc/util/Hashers.hpp b/src/libs/xerces-c/macx/include/xercesc/util/Hashers.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/Hashers.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/Hashers.hpp diff --git a/extern/xerces-c/include/xercesc/util/HexBin.hpp b/src/libs/xerces-c/macx/include/xercesc/util/HexBin.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/HexBin.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/HexBin.hpp diff --git a/extern/xerces-c/include/xercesc/util/IOException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/IOException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/IOException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/IOException.hpp diff --git a/extern/xerces-c/include/xercesc/util/IllegalArgumentException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/IllegalArgumentException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/IllegalArgumentException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/IllegalArgumentException.hpp diff --git a/extern/xerces-c/include/xercesc/util/InvalidCastException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/InvalidCastException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/InvalidCastException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/InvalidCastException.hpp diff --git a/extern/xerces-c/include/xercesc/util/Janitor.c b/src/libs/xerces-c/macx/include/xercesc/util/Janitor.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/Janitor.c rename to src/libs/xerces-c/macx/include/xercesc/util/Janitor.c diff --git a/extern/xerces-c/include/xercesc/util/Janitor.hpp b/src/libs/xerces-c/macx/include/xercesc/util/Janitor.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/Janitor.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/Janitor.hpp diff --git a/extern/xerces-c/include/xercesc/util/KVStringPair.hpp b/src/libs/xerces-c/macx/include/xercesc/util/KVStringPair.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/KVStringPair.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/KVStringPair.hpp diff --git a/extern/xerces-c/include/xercesc/util/KeyRefPair.c b/src/libs/xerces-c/macx/include/xercesc/util/KeyRefPair.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/KeyRefPair.c rename to src/libs/xerces-c/macx/include/xercesc/util/KeyRefPair.c diff --git a/extern/xerces-c/include/xercesc/util/KeyRefPair.hpp b/src/libs/xerces-c/macx/include/xercesc/util/KeyRefPair.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/KeyRefPair.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/KeyRefPair.hpp diff --git a/extern/xerces-c/include/xercesc/util/KeyValuePair.c b/src/libs/xerces-c/macx/include/xercesc/util/KeyValuePair.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/KeyValuePair.c rename to src/libs/xerces-c/macx/include/xercesc/util/KeyValuePair.c diff --git a/extern/xerces-c/include/xercesc/util/KeyValuePair.hpp b/src/libs/xerces-c/macx/include/xercesc/util/KeyValuePair.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/KeyValuePair.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/KeyValuePair.hpp diff --git a/extern/xerces-c/include/xercesc/util/LogicalPath.c b/src/libs/xerces-c/macx/include/xercesc/util/LogicalPath.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/LogicalPath.c rename to src/libs/xerces-c/macx/include/xercesc/util/LogicalPath.c diff --git a/extern/xerces-c/include/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp b/src/libs/xerces-c/macx/include/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp diff --git a/extern/xerces-c/include/xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp b/src/libs/xerces-c/macx/include/xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp diff --git a/extern/xerces-c/include/xercesc/util/MutexManagers/StdMutexMgr.hpp b/src/libs/xerces-c/macx/include/xercesc/util/MutexManagers/StdMutexMgr.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/MutexManagers/StdMutexMgr.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/MutexManagers/StdMutexMgr.hpp diff --git a/extern/xerces-c/include/xercesc/util/Mutexes.hpp b/src/libs/xerces-c/macx/include/xercesc/util/Mutexes.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/Mutexes.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/Mutexes.hpp diff --git a/extern/xerces-c/include/xercesc/util/NameIdPool.c b/src/libs/xerces-c/macx/include/xercesc/util/NameIdPool.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/NameIdPool.c rename to src/libs/xerces-c/macx/include/xercesc/util/NameIdPool.c diff --git a/extern/xerces-c/include/xercesc/util/NameIdPool.hpp b/src/libs/xerces-c/macx/include/xercesc/util/NameIdPool.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/NameIdPool.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/NameIdPool.hpp diff --git a/extern/xerces-c/include/xercesc/util/NoSuchElementException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/NoSuchElementException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/NoSuchElementException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/NoSuchElementException.hpp diff --git a/extern/xerces-c/include/xercesc/util/NullPointerException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/NullPointerException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/NullPointerException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/NullPointerException.hpp diff --git a/extern/xerces-c/include/xercesc/util/NumberFormatException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/NumberFormatException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/NumberFormatException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/NumberFormatException.hpp diff --git a/extern/xerces-c/include/xercesc/util/OutOfMemoryException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/OutOfMemoryException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/OutOfMemoryException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/OutOfMemoryException.hpp diff --git a/extern/xerces-c/include/xercesc/util/PSVIUni.hpp b/src/libs/xerces-c/macx/include/xercesc/util/PSVIUni.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/PSVIUni.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/PSVIUni.hpp diff --git a/extern/xerces-c/include/xercesc/util/PanicHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/util/PanicHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/PanicHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/PanicHandler.hpp diff --git a/extern/xerces-c/include/xercesc/util/ParseException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/ParseException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/ParseException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/ParseException.hpp diff --git a/extern/xerces-c/include/xercesc/util/PlatformUtils.hpp b/src/libs/xerces-c/macx/include/xercesc/util/PlatformUtils.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/PlatformUtils.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/PlatformUtils.hpp diff --git a/extern/xerces-c/include/xercesc/util/QName.hpp b/src/libs/xerces-c/macx/include/xercesc/util/QName.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/QName.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/QName.hpp diff --git a/extern/xerces-c/include/xercesc/util/RefArrayOf.c b/src/libs/xerces-c/macx/include/xercesc/util/RefArrayOf.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/RefArrayOf.c rename to src/libs/xerces-c/macx/include/xercesc/util/RefArrayOf.c diff --git a/extern/xerces-c/include/xercesc/util/RefArrayOf.hpp b/src/libs/xerces-c/macx/include/xercesc/util/RefArrayOf.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/RefArrayOf.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/RefArrayOf.hpp diff --git a/extern/xerces-c/include/xercesc/util/RefArrayVectorOf.c b/src/libs/xerces-c/macx/include/xercesc/util/RefArrayVectorOf.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/RefArrayVectorOf.c rename to src/libs/xerces-c/macx/include/xercesc/util/RefArrayVectorOf.c diff --git a/extern/xerces-c/include/xercesc/util/RefArrayVectorOf.hpp b/src/libs/xerces-c/macx/include/xercesc/util/RefArrayVectorOf.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/RefArrayVectorOf.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/RefArrayVectorOf.hpp diff --git a/extern/xerces-c/include/xercesc/util/RefHash2KeysTableOf.c b/src/libs/xerces-c/macx/include/xercesc/util/RefHash2KeysTableOf.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/RefHash2KeysTableOf.c rename to src/libs/xerces-c/macx/include/xercesc/util/RefHash2KeysTableOf.c diff --git a/extern/xerces-c/include/xercesc/util/RefHash2KeysTableOf.hpp b/src/libs/xerces-c/macx/include/xercesc/util/RefHash2KeysTableOf.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/RefHash2KeysTableOf.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/RefHash2KeysTableOf.hpp diff --git a/extern/xerces-c/include/xercesc/util/RefHash3KeysIdPool.c b/src/libs/xerces-c/macx/include/xercesc/util/RefHash3KeysIdPool.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/RefHash3KeysIdPool.c rename to src/libs/xerces-c/macx/include/xercesc/util/RefHash3KeysIdPool.c diff --git a/extern/xerces-c/include/xercesc/util/RefHash3KeysIdPool.hpp b/src/libs/xerces-c/macx/include/xercesc/util/RefHash3KeysIdPool.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/RefHash3KeysIdPool.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/RefHash3KeysIdPool.hpp diff --git a/extern/xerces-c/include/xercesc/util/RefHashTableOf.c b/src/libs/xerces-c/macx/include/xercesc/util/RefHashTableOf.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/RefHashTableOf.c rename to src/libs/xerces-c/macx/include/xercesc/util/RefHashTableOf.c diff --git a/extern/xerces-c/include/xercesc/util/RefHashTableOf.hpp b/src/libs/xerces-c/macx/include/xercesc/util/RefHashTableOf.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/RefHashTableOf.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/RefHashTableOf.hpp diff --git a/extern/xerces-c/include/xercesc/util/RefStackOf.c b/src/libs/xerces-c/macx/include/xercesc/util/RefStackOf.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/RefStackOf.c rename to src/libs/xerces-c/macx/include/xercesc/util/RefStackOf.c diff --git a/extern/xerces-c/include/xercesc/util/RefStackOf.hpp b/src/libs/xerces-c/macx/include/xercesc/util/RefStackOf.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/RefStackOf.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/RefStackOf.hpp diff --git a/extern/xerces-c/include/xercesc/util/RefVectorOf.c b/src/libs/xerces-c/macx/include/xercesc/util/RefVectorOf.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/RefVectorOf.c rename to src/libs/xerces-c/macx/include/xercesc/util/RefVectorOf.c diff --git a/extern/xerces-c/include/xercesc/util/RefVectorOf.hpp b/src/libs/xerces-c/macx/include/xercesc/util/RefVectorOf.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/RefVectorOf.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/RefVectorOf.hpp diff --git a/extern/xerces-c/include/xercesc/util/RuntimeException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/RuntimeException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/RuntimeException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/RuntimeException.hpp diff --git a/extern/xerces-c/include/xercesc/util/SchemaDateTimeException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/SchemaDateTimeException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/SchemaDateTimeException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/SchemaDateTimeException.hpp diff --git a/extern/xerces-c/include/xercesc/util/SecurityManager.hpp b/src/libs/xerces-c/macx/include/xercesc/util/SecurityManager.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/SecurityManager.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/SecurityManager.hpp diff --git a/extern/xerces-c/include/xercesc/util/StringPool.hpp b/src/libs/xerces-c/macx/include/xercesc/util/StringPool.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/StringPool.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/StringPool.hpp diff --git a/extern/xerces-c/include/xercesc/util/SynchronizedStringPool.hpp b/src/libs/xerces-c/macx/include/xercesc/util/SynchronizedStringPool.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/SynchronizedStringPool.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/SynchronizedStringPool.hpp diff --git a/extern/xerces-c/include/xercesc/util/TransENameMap.c b/src/libs/xerces-c/macx/include/xercesc/util/TransENameMap.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/TransENameMap.c rename to src/libs/xerces-c/macx/include/xercesc/util/TransENameMap.c diff --git a/extern/xerces-c/include/xercesc/util/TransENameMap.hpp b/src/libs/xerces-c/macx/include/xercesc/util/TransENameMap.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/TransENameMap.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/TransENameMap.hpp diff --git a/extern/xerces-c/include/xercesc/util/TransService.hpp b/src/libs/xerces-c/macx/include/xercesc/util/TransService.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/TransService.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/TransService.hpp diff --git a/src/libs/xerces-c/macx/include/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp b/src/libs/xerces-c/macx/include/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp new file mode 100644 index 000000000000..ef4ad44c0c99 --- /dev/null +++ b/src/libs/xerces-c/macx/include/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp @@ -0,0 +1,279 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_MACOSUNICODECONVERTER_HPP) +#define XERCESC_INCLUDE_GUARD_MACOSUNICODECONVERTER_HPP + +#include +#include +#include + +#if defined(__APPLE__) + // Framework includes from ProjectBuilder + #include +#else + // Classic includes otherwise + #include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// +// The transcoding service has to provide a couple of required string +// and character operations, but its most important service is the creation +// of transcoder objects. There are two types of transcoders, which are +// discussed below in the XMLTranscoder class' description. +// +class XMLUTIL_EXPORT MacOSUnicodeConverter : public XMLTransService +{ +public : + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + ~MacOSUnicodeConverter(); + + // ----------------------------------------------------------------------- + // Implementation of the virtual transcoding service API + // ----------------------------------------------------------------------- + virtual int compareIString + ( + const XMLCh* const comp1 + , const XMLCh* const comp2 + ); + + virtual int compareNIString + ( + const XMLCh* const comp1 + , const XMLCh* const comp2 + , const XMLSize_t maxChars + ); + + virtual const XMLCh* getId() const; + + virtual XMLLCPTranscoder* makeNewLCPTranscoder(MemoryManager* manager); + + virtual bool supportsSrcOfs() const; + + virtual void upperCase(XMLCh* const toUpperCase); + virtual void lowerCase(XMLCh* const toLowerCase); + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + MacOSUnicodeConverter(MemoryManager* manager); + + // ----------------------------------------------------------------------- + // Protected virtual methods + // ----------------------------------------------------------------------- + virtual XMLTranscoder* makeNewXMLTranscoder + ( + const XMLCh* const encodingName + , XMLTransService::Codes& resValue + , const XMLSize_t blockSize + , MemoryManager* const manager + ); + virtual XMLTranscoder* makeNewXMLTranscoder + ( + const XMLCh* const encodingName + , XMLTransService::Codes& resValue + , const XMLSize_t blockSize + , TextEncoding textEncoding + , MemoryManager* const manager + ); + + // Sniff for available functionality + static bool IsMacOSUnicodeConverterSupported(void); + + // Copy from a C string to a Str255 + static void CopyCStringToPascal(const char* c, Str255 pas); + +private : + friend class XMLPlatformUtils; + + static const XMLCh fgMyServiceId[]; // Name of the our unicode converter + static const XMLCh fgMacLCPEncodingName[]; // Name of the LCP transcoder we create + + bool fHasUnicodeCollation; // True if unicode collation is available + CollatorRef fCollator; // Our collator + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + MacOSUnicodeConverter(const MacOSUnicodeConverter&); + MacOSUnicodeConverter& operator=(const MacOSUnicodeConverter&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + void ConvertWideToNarrow(const XMLCh* wide, char* narrow, std::size_t maxChars); + + // Figure out what text encoding to use for LCP transcoder + TextEncoding discoverLCPEncoding(); + +}; + + +// +// This type of transcoder is for non-local code page encodings, i.e. +// named encodings. These are used internally by the scanner to internalize +// raw XML into the internal Unicode format, and by writer classes to +// convert that internal Unicode format (which comes out of the parser) +// back out to a format that the receiving client code wants to use. +// +class XMLUTIL_EXPORT MacOSTranscoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + MacOSTranscoder( + const XMLCh* const encodingName, + TECObjectRef textToUnicode, + TECObjectRef unicodeToText, + const XMLSize_t blockSize, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~MacOSTranscoder(); + + + // ----------------------------------------------------------------------- + // The virtual transcoding interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + MacOSTranscoder(const MacOSTranscoder&); + MacOSTranscoder& operator=(const MacOSTranscoder&); + + // ----------------------------------------------------------------------- + // Private members + // ----------------------------------------------------------------------- + TECObjectRef mTextToUnicode; + TECObjectRef mUnicodeToText; +}; + + + +// +// This class is a specialized transcoder that only transcodes between +// the internal XMLCh format and the local code page. It is specialized +// for the very common job of translating data from the client app's +// native code page to the internal format and vice versa. +// +class XMLUTIL_EXPORT MacOSLCPTranscoder : public XMLLCPTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + MacOSLCPTranscoder(XMLTranscoder* const transcoder, MemoryManager* const manager); + ~MacOSLCPTranscoder(); + + + // ----------------------------------------------------------------------- + // The virtual transcoder API + // + // NOTE: All these APIs don't include null terminator characters in + // their parameters. So calcRequiredSize() returns the number + // of actual chars, not including the null. maxBytes and maxChars + // parameters refer to actual chars, not including the null so + // its assumed that the buffer is physically one char or byte + // larger. + // ----------------------------------------------------------------------- + virtual char* transcode(const XMLCh* const toTranscode, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + virtual XMLCh* transcode(const char* const toTranscode, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ----------------------------------------------------------------------- + // DEPRECATED old transcode interface + // ----------------------------------------------------------------------- + virtual XMLSize_t calcRequiredSize(const char* const srcText + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + virtual XMLSize_t calcRequiredSize(const XMLCh* const srcText + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + virtual bool transcode + ( + const char* const toTranscode + , XMLCh* const toFill + , const XMLSize_t maxChars + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual bool transcode + ( + const XMLCh* const toTranscode + , char* const toFill + , const XMLSize_t maxChars + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + MacOSLCPTranscoder(const MacOSLCPTranscoder&); + MacOSLCPTranscoder& operator=(const MacOSLCPTranscoder&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + XMLTranscoder* const mTranscoder; + MemoryManager* const mManager; + XMLMutex mMutex; // Mutex to enable reentrancy of LCP transcoder + }; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/extern/xerces-c/include/xercesc/util/TranscodingException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/TranscodingException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/TranscodingException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/TranscodingException.hpp diff --git a/extern/xerces-c/include/xercesc/util/UTFDataFormatException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/UTFDataFormatException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/UTFDataFormatException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/UTFDataFormatException.hpp diff --git a/extern/xerces-c/include/xercesc/util/UnexpectedEOFException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/UnexpectedEOFException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/UnexpectedEOFException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/UnexpectedEOFException.hpp diff --git a/extern/xerces-c/include/xercesc/util/UnsupportedEncodingException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/UnsupportedEncodingException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/UnsupportedEncodingException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/UnsupportedEncodingException.hpp diff --git a/extern/xerces-c/include/xercesc/util/ValueArrayOf.c b/src/libs/xerces-c/macx/include/xercesc/util/ValueArrayOf.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/ValueArrayOf.c rename to src/libs/xerces-c/macx/include/xercesc/util/ValueArrayOf.c diff --git a/extern/xerces-c/include/xercesc/util/ValueArrayOf.hpp b/src/libs/xerces-c/macx/include/xercesc/util/ValueArrayOf.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/ValueArrayOf.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/ValueArrayOf.hpp diff --git a/extern/xerces-c/include/xercesc/util/ValueHashTableOf.c b/src/libs/xerces-c/macx/include/xercesc/util/ValueHashTableOf.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/ValueHashTableOf.c rename to src/libs/xerces-c/macx/include/xercesc/util/ValueHashTableOf.c diff --git a/extern/xerces-c/include/xercesc/util/ValueHashTableOf.hpp b/src/libs/xerces-c/macx/include/xercesc/util/ValueHashTableOf.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/ValueHashTableOf.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/ValueHashTableOf.hpp diff --git a/extern/xerces-c/include/xercesc/util/ValueStackOf.c b/src/libs/xerces-c/macx/include/xercesc/util/ValueStackOf.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/ValueStackOf.c rename to src/libs/xerces-c/macx/include/xercesc/util/ValueStackOf.c diff --git a/extern/xerces-c/include/xercesc/util/ValueStackOf.hpp b/src/libs/xerces-c/macx/include/xercesc/util/ValueStackOf.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/ValueStackOf.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/ValueStackOf.hpp diff --git a/extern/xerces-c/include/xercesc/util/ValueVectorOf.c b/src/libs/xerces-c/macx/include/xercesc/util/ValueVectorOf.c similarity index 100% rename from extern/xerces-c/include/xercesc/util/ValueVectorOf.c rename to src/libs/xerces-c/macx/include/xercesc/util/ValueVectorOf.c diff --git a/extern/xerces-c/include/xercesc/util/ValueVectorOf.hpp b/src/libs/xerces-c/macx/include/xercesc/util/ValueVectorOf.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/ValueVectorOf.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/ValueVectorOf.hpp diff --git a/extern/xerces-c/include/xercesc/util/XML256TableTranscoder.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XML256TableTranscoder.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XML256TableTranscoder.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XML256TableTranscoder.hpp diff --git a/extern/xerces-c/include/xercesc/util/XML88591Transcoder.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XML88591Transcoder.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XML88591Transcoder.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XML88591Transcoder.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLASCIITranscoder.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLASCIITranscoder.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLASCIITranscoder.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLASCIITranscoder.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLAbstractDoubleFloat.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLAbstractDoubleFloat.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLAbstractDoubleFloat.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLAbstractDoubleFloat.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLBigDecimal.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLBigDecimal.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLBigDecimal.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLBigDecimal.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLBigInteger.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLBigInteger.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLBigInteger.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLBigInteger.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLChTranscoder.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLChTranscoder.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLChTranscoder.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLChTranscoder.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLChar.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLChar.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLChar.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLChar.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLDOMMsg.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLDOMMsg.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLDOMMsg.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLDOMMsg.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLDateTime.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLDateTime.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLDateTime.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLDateTime.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLDouble.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLDouble.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLDouble.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLDouble.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLEBCDICTranscoder.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLEBCDICTranscoder.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLEBCDICTranscoder.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLEBCDICTranscoder.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLEntityResolver.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLEntityResolver.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLEntityResolver.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLEntityResolver.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLEnumerator.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLEnumerator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLEnumerator.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLEnumerator.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLExceptMsgs.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLExceptMsgs.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLExceptMsgs.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLExceptMsgs.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLException.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLException.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLException.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLFileMgr.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLFileMgr.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLFileMgr.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLFileMgr.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLFloat.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLFloat.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLFloat.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLFloat.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLIBM1047Transcoder.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLIBM1047Transcoder.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLIBM1047Transcoder.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLIBM1047Transcoder.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLIBM1140Transcoder.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLIBM1140Transcoder.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLIBM1140Transcoder.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLIBM1140Transcoder.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLInitializer.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLInitializer.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLInitializer.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLInitializer.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLInteger.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLInteger.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLInteger.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLInteger.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLMsgLoader.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLMsgLoader.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLMsgLoader.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLMsgLoader.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLMutexMgr.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLMutexMgr.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLMutexMgr.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLMutexMgr.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLNetAccessor.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLNetAccessor.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLNetAccessor.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLNetAccessor.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLNumber.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLNumber.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLNumber.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLNumber.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLResourceIdentifier.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLResourceIdentifier.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLResourceIdentifier.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLResourceIdentifier.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLString.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLString.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLString.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLString.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLStringTokenizer.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLStringTokenizer.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLStringTokenizer.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLStringTokenizer.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLUCS4Transcoder.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLUCS4Transcoder.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLUCS4Transcoder.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLUCS4Transcoder.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLURL.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLURL.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLURL.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLURL.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLUTF16Transcoder.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLUTF16Transcoder.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLUTF16Transcoder.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLUTF16Transcoder.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLUTF8Transcoder.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLUTF8Transcoder.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLUTF8Transcoder.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLUTF8Transcoder.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLUni.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLUni.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLUni.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLUni.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLUniDefs.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLUniDefs.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLUniDefs.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLUniDefs.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLUri.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLUri.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLUri.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLUri.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMLWin1252Transcoder.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMLWin1252Transcoder.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMLWin1252Transcoder.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMLWin1252Transcoder.hpp diff --git a/extern/xerces-c/include/xercesc/util/XMemory.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XMemory.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XMemory.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XMemory.hpp diff --git a/extern/xerces-c/include/xercesc/util/XercesDefs.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XercesDefs.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XercesDefs.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/XercesDefs.hpp diff --git a/src/libs/xerces-c/macx/include/xercesc/util/XercesVersion.hpp b/src/libs/xerces-c/macx/include/xercesc/util/XercesVersion.hpp new file mode 100644 index 000000000000..48a5907212d9 --- /dev/null +++ b/src/libs/xerces-c/macx/include/xercesc/util/XercesVersion.hpp @@ -0,0 +1,220 @@ +/* src/xercesc/util/XercesVersion.hpp. Generated from XercesVersion.hpp.in by configure. */ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id: XercesVersion.hpp 1824295 2018-02-15 11:17:15Z rleigh $ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XERCESVERSION_HPP) +#define XERCESC_INCLUDE_GUARD_XERCESVERSION_HPP + +// --------------------------------------------------------------------------- +// X E R C E S V E R S I O N H E A D E R D O C U M E N T A T I O N + +/** + * User Documentation for Xerces Version Values: + * + * + * + * Xerces Notes: + * + * Xerces Committers Documentation: + * + * Xerces committers normally only need to modify one or two of the + * following macros: + * + * XERCES_VERSION_MAJOR + * XERCES_VERSION_MINOR + * XERCES_VERSION_REVISION + * + * The integer values of these macros define the Xerces version number. All + * other constants and preprocessor macros are automatically generated from + * these three definitions. + * + * The macro XERCES_GRAMMAR_SERIALIZATION_LEVEL has been added so that during + * development if users are using the latest code they can use the grammar + * serialization/deserialization features. Whenever a change is made to the + * serialization code this macro should be incremented. + * + * Xerces User Documentation: + * + * The following sections in the user documentation have examples based upon + * the following three version input values: + * + * #define XERCES_VERSION_MAJOR 19 + * #define XERCES_VERSION_MINOR 3 + * #define XERCES_VERSION_REVISION 74 + * + * The minor and revision (patch level) numbers have two digits of resolution + * which means that '3' becomes '03' in this example. This policy guarantees + * that when using preprocessor macros, version 19.3.74 will be greater than + * version 1.94.74 since the first will expand to 190374 and the second to + * 19474. + * + * Preprocessor Macros: + * + * _XERCES_VERSION defines the primary preprocessor macro that users will + * introduce into their code to perform conditional compilation where the + * version of Xerces is detected in order to enable or disable version + * specific capabilities. The value of _XERCES_VERSION for the above example + * will be 190374. To use it a user would perform an operation such as the + * following: + * + * #if _XERCES_VERSION >= 190374 + * // code specific to new version of Xerces... + * #else + * // old code here... + * #endif + * + * XERCES_FULLVERSIONSTR is a preprocessor macro that expands to a string + * constant whose value, for the above example, will be "19_3_74". + * + * XERCES_FULLVERSIONDOT is a preprocessor macro that expands to a string + * constant whose value, for the above example, will be "19.3.74". + * + * XERCES_VERSIONSTR is a preprocessor macro that expands to a string + * constant whose value, for the above example, will be "19_3". This + * particular macro is very dangerous if it were to be used for comparing + * version numbers since ordering will not be guaranteed. + * + * Xerces_DLLVersionStr is a preprocessor macro that expands to a string + * constant whose value, for the above example, will be "19_3_74". This + * macro is provided for backwards compatibility to pre-1.7 versions of + * Xerces. + * + * String Constants: + * + * gXercesVersionStr is a global string constant whose value corresponds to + * the value "19_3" for the above example. + * + * gXercesFullVersionStr is a global string constant whose value corresponds + * to the value "19_3_74" for the above example. + * + * Numeric Constants: + * + * gXercesMajVersion is a global integer constant whose value corresponds to + * the major version number. For the above example its value will be 19. + * + * gXercesMinVersion is a global integer constant whose value corresponds to + * the minor version number. For the above example its value will be 3. + * + * gXercesRevision is a global integer constant whose value corresponds to + * the revision (patch) version number. For the above example its value will + * be 74. + * + */ + +// --------------------------------------------------------------------------- +// X E R C E S V E R S I O N S P E C I F I C A T I O N + +/** + * MODIFY THESE NUMERIC VALUES TO COINCIDE WITH XERCES VERSION + * AND DO NOT MODIFY ANYTHING ELSE IN THIS VERSION HEADER FILE + */ + +#define XERCES_VERSION_MAJOR 3 +#define XERCES_VERSION_MINOR 2 +#define XERCES_VERSION_REVISION 4 + +/*** + * + * XERCES_GRAMMAR_SERIALIZATION_LEVEL = 4 SchemaAttDef, SchemaElementDecl serialize fPSVIScope + * XERCES_GRAMMAR_SERIALIZATION_LEVEL = 5 XercesStep serializes the axis as an int + * XERCES_GRAMMAR_SERIALIZATION_LEVEL = 6 added fIsExternal to XMLEntityDecl + * XERCES_GRAMMAR_SERIALIZATION_LEVEL = 7 size of line/column fields has changed + * + ***/ +#define XERCES_GRAMMAR_SERIALIZATION_LEVEL 7 + +/** DO NOT MODIFY BELOW THIS LINE */ + +/** + * MAGIC THAT AUTOMATICALLY GENERATES THE FOLLOWING: + * + * Xerces_DLLVersionStr, gXercesVersionStr, gXercesFullVersionStr, + * gXercesMajVersion, gXercesMinVersion, gXercesRevision + */ + +// --------------------------------------------------------------------------- +// T W O A R G U M E N T C O N C A T E N A T I O N M A C R O S + +// two argument concatenation routines +#define CAT2_SEP_UNDERSCORE(a, b) #a "_" #b +#define CAT2_SEP_PERIOD(a, b) #a "." #b +#define CAT2_SEP_NIL(a, b) #a #b +#define CAT2_RAW_NUMERIC(a, b) a ## b + +// two argument macro invokers +#define INVK_CAT2_SEP_UNDERSCORE(a,b) CAT2_SEP_UNDERSCORE(a,b) +#define INVK_CAT2_SEP_PERIOD(a,b) CAT2_SEP_PERIOD(a,b) +#define INVK_CAT2_STR_SEP_NIL(a,b) CAT2_SEP_NIL(a,b) +#define INVK_CAT2_RAW_NUMERIC(a,b) CAT2_RAW_NUMERIC(a,b) + +// --------------------------------------------------------------------------- +// T H R E E A R G U M E N T C O N C A T E N A T I O N M A C R O S + +// three argument concatenation routines +#define CAT3_SEP_UNDERSCORE(a, b, c) #a "_" #b "_" #c +#define CAT3_SEP_PERIOD(a, b, c) #a "." #b "." #c +#define CAT3_SEP_NIL(a, b, c) #a #b #c +#define CAT3_RAW_NUMERIC(a, b, c) a ## b ## c +#define CAT3_RAW_NUMERIC_SEP_UNDERSCORE(a, b, c) a ## _ ## b ## _ ## c + +// three argument macro invokers +#define INVK_CAT3_SEP_UNDERSCORE(a,b,c) CAT3_SEP_UNDERSCORE(a,b,c) +#define INVK_CAT3_SEP_PERIOD(a,b,c) CAT3_SEP_PERIOD(a,b,c) +#define INVK_CAT3_SEP_NIL(a,b,c) CAT3_SEP_NIL(a,b,c) +#define INVK_CAT3_RAW_NUMERIC(a,b,c) CAT3_RAW_NUMERIC(a,b,c) +#define INVK_CAT3_RAW_NUMERIC_SEP_UNDERSCORE(a,b,c) CAT3_RAW_NUMERIC_SEP_UNDERSCORE(a,b,c) + +// --------------------------------------------------------------------------- +// C A L C U L A T E V E R S I O N - E X P A N D E D F O R M + +#define MULTIPLY(factor,value) factor * value +#define CALC_EXPANDED_FORM(a,b,c) ( MULTIPLY(10000,a) + MULTIPLY(100,b) + MULTIPLY(1,c) ) + +// --------------------------------------------------------------------------- +// X E R C E S V E R S I O N I N F O R M A T I O N + +// Xerces version strings; these particular macros cannot be used for +// conditional compilation as they are not numeric constants + +#define XERCES_FULLVERSIONSTR INVK_CAT3_SEP_UNDERSCORE(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVISION) +#define XERCES_FULLVERSIONDOT INVK_CAT3_SEP_PERIOD(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVISION) +#define XERCES_FULLVERSIONNUM INVK_CAT3_SEP_NIL(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVISION) +#define XERCES_VERSIONSTR INVK_CAT2_SEP_UNDERSCORE(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR) + +// Xerces C++ Namespace string, concatenated with full version string +#define XERCES_PRODUCT xercesc +#define XERCES_CPP_NAMESPACE INVK_CAT3_RAW_NUMERIC_SEP_UNDERSCORE(XERCES_PRODUCT,XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR) + +// original from Xerces header +#define Xerces_DLLVersionStr XERCES_FULLVERSIONSTR + +const char* const gXercesVersionStr = XERCES_VERSIONSTR; +const char* const gXercesFullVersionStr = XERCES_FULLVERSIONSTR; +const unsigned int gXercesMajVersion = XERCES_VERSION_MAJOR; +const unsigned int gXercesMinVersion = XERCES_VERSION_MINOR; +const unsigned int gXercesRevision = XERCES_VERSION_REVISION; + +// Xerces version numeric constants that can be used for conditional +// compilation purposes. + +#define _XERCES_VERSION CALC_EXPANDED_FORM (XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVISION) + +#endif // XERCESVERSION_HPP diff --git a/src/libs/xerces-c/macx/include/xercesc/util/Xerces_autoconf_config.hpp b/src/libs/xerces-c/macx/include/xercesc/util/Xerces_autoconf_config.hpp new file mode 100644 index 000000000000..f702438c24c0 --- /dev/null +++ b/src/libs/xerces-c/macx/include/xercesc/util/Xerces_autoconf_config.hpp @@ -0,0 +1,153 @@ +/* src/xercesc/util/Xerces_autoconf_config.hpp. Generated from Xerces_autoconf_config.hpp.in by configure. */ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +// +// There are two primary xerces configuration header files: +// +// Xerces_autoconf_config.hpp +// +// For configuration of items that must be accessable +// through public headers. This file has limited information +// and carefully works to avoid collision of macro names, etc. +// +// This file is included by XercesDefs.h. In the event +// of a non-configured platform, a similar header specific +// to the platform will be included instead. +// +// config.h +// +// Generalized autoconf header file, with much more +// information, used to supply configuration information +// for use in implementation files. +// +// For autoconf based builds, this header is configured from by the configure +// script from the .in template file of the same name. + + +#ifndef XERCES_AUTOCONFIG_CONFIG_HPP +#define XERCES_AUTOCONFIG_CONFIG_HPP + +// --------------------------------------------------------------------------- +// These defines are set by configure as appropriate for the platform. +// --------------------------------------------------------------------------- + +#define XERCES_AUTOCONF 1 +#define XERCES_HAVE_CSTDINT 1 +#define XERCES_HAVE_STDINT_H 1 +#define XERCES_HAVE_SYS_TYPES_H 1 +#define XERCES_HAVE_INTTYPES_H 1 +/* #undef XERCES_HAVE_INTRIN_H */ +/* #undef XERCES_HAVE_EMMINTRIN_H */ +/* #undef XERCES_INCLUDE_WCHAR_H */ + +#define XERCES_S16BIT_INT int16_t +#define XERCES_S32BIT_INT int32_t +#define XERCES_S64BIT_INT int64_t +#define XERCES_U16BIT_INT uint16_t +#define XERCES_U32BIT_INT uint32_t +#define XERCES_U64BIT_INT uint64_t +#define XERCES_XMLCH_T uint16_t +#define XERCES_SIZE_T size_t +#define XERCES_SSIZE_T ssize_t + +#define XERCES_HAS_CPP_NAMESPACE 1 +#define XERCES_STD_NAMESPACE 1 +#define XERCES_NEW_IOSTREAMS 1 +/* #undef XERCES_NO_NATIVE_BOOL */ +#define XERCES_LSTRSUPPORT 1 + +/* #undef XERCES_HAVE_CPUID_INTRINSIC */ +/* #undef XERCES_HAVE_SSE2_INTRINSIC */ +/* #undef XERCES_HAVE_GETCPUID */ + +#define XERCES_PLATFORM_EXPORT +#define XERCES_PLATFORM_IMPORT +#define XERCES_TEMPLATE_EXTERN extern + +/* #undef XERCES_NO_MATCHING_DELETE_OPERATOR */ + +// --------------------------------------------------------------------------- +// Include standard headers, if available, that we may rely on below. +// --------------------------------------------------------------------------- +#if defined(__cplusplus) && XERCES_HAVE_CSTDINT +# include +#elif XERCES_HAVE_STDINT_H +# if defined(__cplusplus) +# define __STDC_LIMIT_MACROS +# endif +# include +#endif +#if XERCES_HAVE_INTTYPES_H +# include +#endif +#if XERCES_HAVE_SYS_TYPES_H +# include +#endif +#if XERCES_INCLUDE_WCHAR_H +# include +#endif + +// --------------------------------------------------------------------------- +// XMLSize_t is the unsigned integral type. +// --------------------------------------------------------------------------- +typedef XERCES_SIZE_T XMLSize_t; +typedef XERCES_SSIZE_T XMLSSize_t; +#define XERCES_SIZE_MAX SIZE_MAX +#define XERCES_SSIZE_MAX SSIZE_MAX + +// --------------------------------------------------------------------------- +// Define our version of the XML character +// --------------------------------------------------------------------------- +typedef XERCES_XMLCH_T XMLCh; + +// --------------------------------------------------------------------------- +// Define unsigned 16, 32, and 64 bit integers +// --------------------------------------------------------------------------- +typedef XERCES_U16BIT_INT XMLUInt16; +typedef XERCES_U32BIT_INT XMLUInt32; +typedef XERCES_U64BIT_INT XMLUInt64; + +// --------------------------------------------------------------------------- +// Define signed 16, 32, and 64 bit integers +// --------------------------------------------------------------------------- +typedef XERCES_S16BIT_INT XMLInt16; +typedef XERCES_S32BIT_INT XMLInt32; +typedef XERCES_S64BIT_INT XMLInt64; + +// --------------------------------------------------------------------------- +// XMLFilePos is the type used to represent a file position. +// --------------------------------------------------------------------------- +typedef XMLUInt64 XMLFilePos; + +// --------------------------------------------------------------------------- +// XMLFileLoc is the type used to represent a file location (line/column). +// --------------------------------------------------------------------------- +typedef XMLUInt64 XMLFileLoc; + +// --------------------------------------------------------------------------- +// Force on the Xerces debug token if it is on in the build environment +// --------------------------------------------------------------------------- +#if defined(_DEBUG) +#define XERCES_DEBUG +#endif + +#endif diff --git a/extern/xerces-c/include/xercesc/util/regx/ASCIIRangeFactory.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/ASCIIRangeFactory.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/ASCIIRangeFactory.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/ASCIIRangeFactory.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/BMPattern.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/BMPattern.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/BMPattern.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/BMPattern.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/BlockRangeFactory.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/BlockRangeFactory.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/BlockRangeFactory.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/BlockRangeFactory.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/CharToken.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/CharToken.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/CharToken.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/CharToken.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/ClosureToken.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/ClosureToken.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/ClosureToken.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/ClosureToken.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/ConcatToken.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/ConcatToken.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/ConcatToken.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/ConcatToken.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/Match.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/Match.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/Match.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/Match.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/Op.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/Op.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/Op.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/Op.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/OpFactory.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/OpFactory.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/OpFactory.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/OpFactory.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/ParenToken.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/ParenToken.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/ParenToken.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/ParenToken.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/ParserForXMLSchema.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/ParserForXMLSchema.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/ParserForXMLSchema.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/ParserForXMLSchema.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/RangeFactory.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/RangeFactory.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/RangeFactory.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/RangeFactory.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/RangeToken.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/RangeToken.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/RangeToken.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/RangeToken.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/RangeTokenMap.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/RangeTokenMap.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/RangeTokenMap.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/RangeTokenMap.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/RegularExpression.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/RegularExpression.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/RegularExpression.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/RegularExpression.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/RegxDefs.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/RegxDefs.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/RegxDefs.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/RegxDefs.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/RegxParser.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/RegxParser.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/RegxParser.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/RegxParser.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/RegxUtil.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/RegxUtil.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/RegxUtil.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/RegxUtil.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/StringToken.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/StringToken.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/StringToken.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/StringToken.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/Token.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/Token.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/Token.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/Token.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/TokenFactory.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/TokenFactory.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/TokenFactory.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/TokenFactory.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/TokenInc.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/TokenInc.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/TokenInc.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/TokenInc.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/UniCharTable.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/UniCharTable.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/UniCharTable.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/UniCharTable.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/UnicodeRangeFactory.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/UnicodeRangeFactory.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/UnicodeRangeFactory.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/UnicodeRangeFactory.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/UnionToken.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/UnionToken.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/UnionToken.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/UnionToken.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/XMLRangeFactory.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/XMLRangeFactory.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/XMLRangeFactory.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/XMLRangeFactory.hpp diff --git a/extern/xerces-c/include/xercesc/util/regx/XMLUniCharacter.hpp b/src/libs/xerces-c/macx/include/xercesc/util/regx/XMLUniCharacter.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/regx/XMLUniCharacter.hpp rename to src/libs/xerces-c/macx/include/xercesc/util/regx/XMLUniCharacter.hpp diff --git a/extern/xerces-c/include/xercesc/validators/DTD/DTDAttDef.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/DTD/DTDAttDef.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/DTD/DTDAttDef.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/DTD/DTDAttDef.hpp diff --git a/extern/xerces-c/include/xercesc/validators/DTD/DTDAttDefList.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/DTD/DTDAttDefList.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/DTD/DTDAttDefList.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/DTD/DTDAttDefList.hpp diff --git a/extern/xerces-c/include/xercesc/validators/DTD/DTDElementDecl.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/DTD/DTDElementDecl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/DTD/DTDElementDecl.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/DTD/DTDElementDecl.hpp diff --git a/extern/xerces-c/include/xercesc/validators/DTD/DTDEntityDecl.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/DTD/DTDEntityDecl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/DTD/DTDEntityDecl.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/DTD/DTDEntityDecl.hpp diff --git a/extern/xerces-c/include/xercesc/validators/DTD/DTDGrammar.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/DTD/DTDGrammar.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/DTD/DTDGrammar.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/DTD/DTDGrammar.hpp diff --git a/extern/xerces-c/include/xercesc/validators/DTD/DTDScanner.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/DTD/DTDScanner.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/DTD/DTDScanner.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/DTD/DTDScanner.hpp diff --git a/extern/xerces-c/include/xercesc/validators/DTD/DTDValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/DTD/DTDValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/DTD/DTDValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/DTD/DTDValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/DTD/DocTypeHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/DTD/DocTypeHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/DTD/DocTypeHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/DTD/DocTypeHandler.hpp diff --git a/extern/xerces-c/include/xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp diff --git a/extern/xerces-c/include/xercesc/validators/common/AllContentModel.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/common/AllContentModel.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/common/AllContentModel.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/common/AllContentModel.hpp diff --git a/extern/xerces-c/include/xercesc/validators/common/CMAny.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/common/CMAny.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/common/CMAny.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/common/CMAny.hpp diff --git a/extern/xerces-c/include/xercesc/validators/common/CMBinaryOp.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/common/CMBinaryOp.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/common/CMBinaryOp.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/common/CMBinaryOp.hpp diff --git a/extern/xerces-c/include/xercesc/validators/common/CMLeaf.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/common/CMLeaf.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/common/CMLeaf.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/common/CMLeaf.hpp diff --git a/extern/xerces-c/include/xercesc/validators/common/CMNode.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/common/CMNode.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/common/CMNode.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/common/CMNode.hpp diff --git a/extern/xerces-c/include/xercesc/validators/common/CMRepeatingLeaf.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/common/CMRepeatingLeaf.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/common/CMRepeatingLeaf.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/common/CMRepeatingLeaf.hpp diff --git a/extern/xerces-c/include/xercesc/validators/common/CMStateSet.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/common/CMStateSet.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/common/CMStateSet.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/common/CMStateSet.hpp diff --git a/extern/xerces-c/include/xercesc/validators/common/CMUnaryOp.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/common/CMUnaryOp.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/common/CMUnaryOp.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/common/CMUnaryOp.hpp diff --git a/extern/xerces-c/include/xercesc/validators/common/ContentLeafNameTypeVector.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/common/ContentLeafNameTypeVector.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/common/ContentLeafNameTypeVector.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/common/ContentLeafNameTypeVector.hpp diff --git a/extern/xerces-c/include/xercesc/validators/common/ContentSpecNode.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/common/ContentSpecNode.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/common/ContentSpecNode.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/common/ContentSpecNode.hpp diff --git a/extern/xerces-c/include/xercesc/validators/common/DFAContentModel.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/common/DFAContentModel.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/common/DFAContentModel.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/common/DFAContentModel.hpp diff --git a/extern/xerces-c/include/xercesc/validators/common/Grammar.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/common/Grammar.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/common/Grammar.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/common/Grammar.hpp diff --git a/extern/xerces-c/include/xercesc/validators/common/GrammarResolver.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/common/GrammarResolver.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/common/GrammarResolver.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/common/GrammarResolver.hpp diff --git a/extern/xerces-c/include/xercesc/validators/common/MixedContentModel.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/common/MixedContentModel.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/common/MixedContentModel.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/common/MixedContentModel.hpp diff --git a/extern/xerces-c/include/xercesc/validators/common/SimpleContentModel.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/common/SimpleContentModel.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/common/SimpleContentModel.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/common/SimpleContentModel.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/AbstractNumericValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/AbstractNumericValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/AbstractNumericValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/AbstractNumericValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/AbstractStringValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/AbstractStringValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/AbstractStringValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/AbstractStringValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/BooleanDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/BooleanDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/BooleanDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/BooleanDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/DatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/DatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/DatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/DatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/DatatypeValidatorFactory.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/DatatypeValidatorFactory.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/DatatypeValidatorFactory.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/DatatypeValidatorFactory.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/DateDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/DateDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/DateDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/DateDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/DateTimeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/DateTimeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/DateTimeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/DateTimeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/DayDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/DayDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/DayDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/DayDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/DecimalDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/DecimalDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/DecimalDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/DecimalDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/DoubleDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/DoubleDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/DoubleDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/DoubleDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/DurationDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/DurationDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/DurationDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/DurationDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/FloatDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/FloatDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/FloatDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/FloatDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/IDDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/IDDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/IDDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/IDDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/IDREFDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/IDREFDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/IDREFDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/IDREFDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/InvalidDatatypeFacetException.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/InvalidDatatypeFacetException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/InvalidDatatypeFacetException.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/InvalidDatatypeFacetException.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/InvalidDatatypeValueException.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/InvalidDatatypeValueException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/InvalidDatatypeValueException.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/InvalidDatatypeValueException.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/ListDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/ListDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/ListDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/ListDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/MonthDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/MonthDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/MonthDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/MonthDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/NCNameDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/NCNameDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/NCNameDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/NCNameDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/NameDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/NameDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/NameDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/NameDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/QNameDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/QNameDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/QNameDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/QNameDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/StringDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/StringDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/StringDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/StringDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/TimeDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/TimeDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/TimeDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/TimeDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/UnionDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/UnionDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/UnionDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/UnionDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/XMLCanRepGroup.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/XMLCanRepGroup.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/XMLCanRepGroup.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/XMLCanRepGroup.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/YearDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/YearDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/YearDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/YearDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/ComplexTypeInfo.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/ComplexTypeInfo.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/ComplexTypeInfo.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/ComplexTypeInfo.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/GeneralAttributeCheck.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/GeneralAttributeCheck.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/GeneralAttributeCheck.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/GeneralAttributeCheck.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/NamespaceScope.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/NamespaceScope.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/NamespaceScope.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/NamespaceScope.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/PSVIDefs.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/PSVIDefs.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/PSVIDefs.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/PSVIDefs.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/SchemaAttDef.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/SchemaAttDef.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/SchemaAttDef.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/SchemaAttDef.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/SchemaAttDefList.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/SchemaAttDefList.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/SchemaAttDefList.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/SchemaAttDefList.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/SchemaElementDecl.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/SchemaElementDecl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/SchemaElementDecl.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/SchemaElementDecl.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/SchemaGrammar.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/SchemaGrammar.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/SchemaGrammar.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/SchemaGrammar.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/SchemaInfo.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/SchemaInfo.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/SchemaInfo.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/SchemaInfo.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/SchemaSymbols.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/SchemaSymbols.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/SchemaSymbols.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/SchemaSymbols.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/SchemaValidator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/SchemaValidator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/SchemaValidator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/SchemaValidator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/SubstitutionGroupComparator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/SubstitutionGroupComparator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/SubstitutionGroupComparator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/SubstitutionGroupComparator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/TraverseSchema.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/TraverseSchema.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/TraverseSchema.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/TraverseSchema.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/XSDDOMParser.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/XSDDOMParser.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/XSDDOMParser.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/XSDDOMParser.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/XSDErrorReporter.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/XSDErrorReporter.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/XSDErrorReporter.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/XSDErrorReporter.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/XSDLocator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/XSDLocator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/XSDLocator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/XSDLocator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/XUtil.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/XUtil.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/XUtil.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/XUtil.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/XercesAttGroupInfo.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/XercesAttGroupInfo.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/XercesAttGroupInfo.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/XercesAttGroupInfo.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/XercesElementWildcard.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/XercesElementWildcard.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/XercesElementWildcard.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/XercesElementWildcard.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/XercesGroupInfo.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/XercesGroupInfo.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/XercesGroupInfo.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/XercesGroupInfo.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/FieldActivator.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/FieldActivator.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/FieldActivator.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/FieldActivator.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/FieldValueMap.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/FieldValueMap.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/FieldValueMap.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/FieldValueMap.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/IC_Field.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/IC_Field.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/IC_Field.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/IC_Field.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/IC_Key.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/IC_Key.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/IC_Key.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/IC_Key.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/IC_KeyRef.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/IC_KeyRef.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/IC_KeyRef.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/IC_KeyRef.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/IC_Selector.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/IC_Selector.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/IC_Selector.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/IC_Selector.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/IC_Unique.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/IC_Unique.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/IC_Unique.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/IC_Unique.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/IdentityConstraint.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/IdentityConstraint.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/IdentityConstraint.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/IdentityConstraint.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/IdentityConstraintHandler.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/IdentityConstraintHandler.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/IdentityConstraintHandler.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/IdentityConstraintHandler.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/ValueStore.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/ValueStore.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/ValueStore.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/ValueStore.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/ValueStoreCache.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/ValueStoreCache.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/ValueStoreCache.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/ValueStoreCache.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/XPathException.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/XPathException.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/XPathException.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/XPathException.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/XPathMatcher.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/XPathMatcher.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/XPathMatcher.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/XPathMatcher.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/XPathMatcherStack.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/XPathMatcherStack.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/XPathMatcherStack.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/XPathMatcherStack.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/XPathSymbols.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/XPathSymbols.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/XPathSymbols.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/XPathSymbols.hpp diff --git a/extern/xerces-c/include/xercesc/validators/schema/identity/XercesXPath.hpp b/src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/XercesXPath.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/validators/schema/identity/XercesXPath.hpp rename to src/libs/xerces-c/macx/include/xercesc/validators/schema/identity/XercesXPath.hpp diff --git a/extern/xerces-c/include/xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp b/src/libs/xerces-c/macx/include/xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp rename to src/libs/xerces-c/macx/include/xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp diff --git a/extern/xerces-c/include/xercesc/xinclude/XIncludeLocation.hpp b/src/libs/xerces-c/macx/include/xercesc/xinclude/XIncludeLocation.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/xinclude/XIncludeLocation.hpp rename to src/libs/xerces-c/macx/include/xercesc/xinclude/XIncludeLocation.hpp diff --git a/extern/xerces-c/include/xercesc/xinclude/XIncludeUtils.hpp b/src/libs/xerces-c/macx/include/xercesc/xinclude/XIncludeUtils.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/xinclude/XIncludeUtils.hpp rename to src/libs/xerces-c/macx/include/xercesc/xinclude/XIncludeUtils.hpp diff --git a/src/libs/xerces-c/macx/lib/libxerces-c.a b/src/libs/xerces-c/macx/lib/libxerces-c.a new file mode 100644 index 000000000000..091816a62c5e Binary files /dev/null and b/src/libs/xerces-c/macx/lib/libxerces-c.a differ diff --git a/src/libs/xerces-c/macx/lib/libxerces-c.la b/src/libs/xerces-c/macx/lib/libxerces-c.la new file mode 100755 index 000000000000..90c464a0dfac --- /dev/null +++ b/src/libs/xerces-c/macx/lib/libxerces-c.la @@ -0,0 +1,41 @@ +# libxerces-c.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.7 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libxerces-c-3.2.dylib' + +# Names of this library. +library_names='libxerces-c-3.2.dylib libxerces-c.dylib' + +# The name of the static archive. +old_library='libxerces-c.a' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags=' ' + +# Libraries that this one depends upon. +dependency_libs=' -lpthread' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libxerces-c. +current=0 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/usr/local/lib' diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOM.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOM.hpp new file mode 100644 index 000000000000..590033e8a63b --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOM.hpp @@ -0,0 +1,87 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOM_HPP) +#define XERCESC_INCLUDE_GUARD_DOM_HPP + +// +// This is the primary header file for inclusion in application +// programs using the C++ XML Document Object Model API. +// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Introduced in DOM Level 2 +#include +#include +#include +#include +#include +#include +#include + +// Introduced in DOM Level 3 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMAttr.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMAttr.hpp new file mode 100644 index 000000000000..b00caa88a4d2 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMAttr.hpp @@ -0,0 +1,176 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMATTR_HPP) +#define XERCESC_INCLUDE_GUARD_DOMATTR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMElement; +class DOMTypeInfo; + +/** + * The DOMAttr class refers to an attribute of an XML element. + * + * Typically the allowable values for the + * attribute are defined in a documenttype definition. + *

DOMAttr objects inherit the DOMNode interface, but + * since attributes are not actually child nodes of the elements they are associated with, the + * DOM does not consider them part of the document tree. Thus, the + * DOMNode attributes parentNode, + * previousSibling, and nextSibling have a null + * value for DOMAttr objects. The DOM takes the view that + * attributes are properties of elements rather than having a separate + * identity from the elements they are associated with; this should make it + * more efficient to implement such features as default attributes associated + * with all elements of a given type. Furthermore, attribute nodes + * may not be immediate children of a DOMDocumentFragment. However, + * they can be associated with DOMElement nodes contained within a + * DOMDocumentFragment. In short, users of the DOM + * need to be aware that DOMAttr nodes have some things in common + * with other objects inheriting the DOMNode interface, but they + * also are quite distinct. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMAttr: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMAttr() {} + DOMAttr(const DOMAttr &other) : DOMNode(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMAttr & operator = (const DOMAttr &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMAttr() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMAttr interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the name of this attribute. + * @since DOM Level 1 + */ + virtual const XMLCh * getName() const = 0; + + /** + * + * Returns true if the attribute received its value explicitly in the + * XML document, or if a value was assigned programatically with + * the setValue function. Returns false if the attribute value + * came from the default value declared in the document's DTD. + * @since DOM Level 1 + */ + virtual bool getSpecified() const = 0; + + /** + * Returns the value of the attribute. + * + * The value of the attribute is returned as a string. + * Character and general entity references are replaced with their values. + * @since DOM Level 1 + */ + virtual const XMLCh * getValue() const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Sets the value of the attribute. A text node with the unparsed contents + * of the string will be created. + * + * @param value The value of the DOM attribute to be set + * @since DOM Level 1 + */ + virtual void setValue(const XMLCh *value) = 0; + //@} + + /** @name Functions introduced in DOM Level 2. */ + //@{ + /** + * The DOMElement node this attribute is attached to or + * null if this attribute is not in use. + * + * @since DOM Level 2 + */ + virtual DOMElement *getOwnerElement() const = 0; + //@} + + /** @name Functions introduced in DOM Level 3. */ + //@{ + /** + * Returns whether this attribute is known to be of type ID or not. + * When it is and its value is unique, the ownerElement of this attribute + * can be retrieved using getElementById on DOMDocument. + * + * @return bool stating if this DOMAttr is an ID + * @since DOM level 3 + */ + virtual bool isId() const = 0; + + + /** + * Returns the type information associated with this attribute. + * + * @return the DOMTypeInfo associated with this attribute + * @since DOM level 3 + */ + virtual const DOMTypeInfo * getSchemaTypeInfo() const = 0; + + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMCDATASection.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMCDATASection.hpp new file mode 100644 index 000000000000..5975c01a0521 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMCDATASection.hpp @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCDATASECTION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCDATASECTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * CDATA sections are used to escape blocks of text containing characters that + * would otherwise be regarded as markup. The only delimiter that is + * recognized in a CDATA section is the "]]>" string that ends the CDATA + * section. CDATA sections cannot be nested. Their primary purpose is for + * including material such as XML fragments, without needing to escape all + * the delimiters. + *

The data attribute of the DOMText node holds + * the text that is contained by the CDATA section. Note that this may + * contain characters that need to be escaped outside of CDATA sections and + * that, depending on the character encoding ("charset") chosen for + * serialization, it may be impossible to write out some characters as part + * of a CDATA section. + *

The DOMCDATASection interface inherits from the + * DOMCharacterData interface through the DOMText + * interface. Adjacent DOMCDATASection nodes are not merged by use + * of the normalize method of the DOMNode interface. + * Because no markup is recognized within a DOMCDATASection, + * character numeric references cannot be used as an escape mechanism when + * serializing. Therefore, action needs to be taken when serializing a + * DOMCDATASection with a character encoding where some of the + * contained characters cannot be represented. Failure to do so would not + * produce well-formed XML.One potential solution in the serialization + * process is to end the CDATA section before the character, output the + * character using a character reference or entity reference, and open a new + * CDATA section for any further characters in the text node. Note, however, + * that some code conversion libraries at the time of writing do not return + * an error or exception when a character is missing from the encoding, + * making the task of ensuring that data is not corrupted on serialization + * more difficult. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMCDATASection: public DOMText { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMCDATASection() {} + DOMCDATASection(const DOMCDATASection &other) : DOMText(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMCDATASection & operator = (const DOMCDATASection &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMCDATASection() {}; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMCharacterData.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMCharacterData.hpp new file mode 100644 index 000000000000..f79154aae907 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMCharacterData.hpp @@ -0,0 +1,215 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCHARACTERDATA_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCHARACTERDATA_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * The DOMCharacterData interface extends DOMNode with a set of + * attributes and methods for accessing character data in the DOM. For + * clarity this set is defined here rather than on each object that uses + * these attributes and methods. No DOM objects correspond directly to + * DOMCharacterData, though DOMText and others do + * inherit the interface from it. All offsets in this interface + * start from 0. + *

As explained in the DOM spec, text strings in + * the DOM are represented in UTF-16, i.e. as a sequence of 16-bit units. In + * the following, the term 16-bit units is used whenever necessary to + * indicate that indexing on DOMCharacterData is done in 16-bit units. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMCharacterData: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMCharacterData() {} + DOMCharacterData(const DOMCharacterData &other) : DOMNode(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMCharacterData & operator = (const DOMCharacterData &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMCharacterData() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMCharacterData interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the character data of the node that implements this interface. + * + * The DOM implementation may not put arbitrary limits on the amount of data that + * may be stored in a DOMCharacterData node. However, + * implementation limits may mean that the entirety of a node's data may + * not fit into a single XMLCh* String. In such cases, the user + * may call substringData to retrieve the data in + * appropriately sized pieces. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. + * @since DOM Level 1 + */ + virtual const XMLCh * getData() const = 0; + + /** + * Returns the number of characters that are available through data and + * the substringData method below. + * + * This may have the value + * zero, i.e., CharacterData nodes may be empty. + * @since DOM Level 1 + */ + virtual XMLSize_t getLength() const = 0; + + /** + * Extracts a range of data from the node. + * + * @param offset Start offset of substring to extract. + * @param count The number of characters to extract. + * @return The specified substring. If the sum of offset and + * count exceeds the length, then all + * characters to the end of the data are returned. + * @exception DOMException + * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater + * than the number of characters in data, or if the + * specified count is negative. + * @since DOM Level 1 + */ + virtual const XMLCh * substringData(XMLSize_t offset, + XMLSize_t count) const = 0; + + // ----------------------------------------------------------------------- + // String methods + // ----------------------------------------------------------------------- + /** + * Append the string to the end of the character data of the node. + * + * Upon success, data provides access to the concatenation of + * data and the XMLCh* String specified. + * @param arg The XMLCh* String to append. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 1 + */ + virtual void appendData(const XMLCh *arg) = 0; + + /** + * Insert a string at the specified character offset. + * + * @param offset The character offset at which to insert. + * @param arg The XMLCh* String to insert. + * @exception DOMException + * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater + * than the number of characters in data. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 1 + */ + virtual void insertData(XMLSize_t offset, const XMLCh *arg) = 0; + + /** + * Remove a range of characters from the node. + * + * Upon success, + * data and length reflect the change. + * @param offset The offset from which to remove characters. + * @param count The number of characters to delete. If the sum of + * offset and count exceeds length + * then all characters from offset to the end of the data + * are deleted. + * @exception DOMException + * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater + * than the number of characters in data, or if the + * specified count is negative. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 1 + */ + virtual void deleteData(XMLSize_t offset, + XMLSize_t count) = 0; + + /** + * Replace the characters starting at the specified character offset with + * the specified string. + * + * @param offset The offset from which to start replacing. + * @param count The number of characters to replace. If the sum of + * offset and count exceeds length + * , then all characters to the end of the data are replaced (i.e., the + * effect is the same as a remove method call with the same + * range, followed by an append method invocation). + * @param arg The XMLCh* String with which the range must be + * replaced. + * @exception DOMException + * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater + * than the number of characters in data, or if the + * specified count is negative. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 1 + */ + virtual void replaceData(XMLSize_t offset, + XMLSize_t count, + const XMLCh *arg) = 0; + + /** + * Sets the character data of the node that implements this interface. + * + * @param data The XMLCh* String to set. + * @since DOM Level 1 + */ + virtual void setData(const XMLCh *data) = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMComment.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMComment.hpp new file mode 100644 index 000000000000..b0c9b5314e48 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMComment.hpp @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCOMMENT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCOMMENT_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * This interface inherits from CharacterData and represents the + * content of a comment, i.e., all the characters between the starting ' + * <!--' and ending '-->'. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMComment: public DOMCharacterData { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMComment() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMComment(const DOMComment &); + DOMComment & operator = (const DOMComment &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMComment() {}; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMConfiguration.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMConfiguration.hpp new file mode 100644 index 000000000000..bbd88092e406 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMConfiguration.hpp @@ -0,0 +1,454 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCONFIGURATION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCONFIGURATION_HPP + +//------------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------------ + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * The DOMConfiguration interface represents the configuration of + * a document and maintains a table of recognized parameters. + * Using the configuration, it is possible to change + * Document.normalizeDocument behavior, such as replacing + * CDATASection nodes with Text nodes or + * specifying the type of the schema that must be used when the + * validation of the Document is requested. DOMConfiguration + * objects are also used in [DOM Level 3 Load and Save] in + * the DOMLSParser and DOMLSSerializer interfaces. + * + * The DOMConfiguration distinguish two types of parameters: + * boolean (boolean parameters) and DOMUserData + * (parameters). The names used by the DOMConfiguration object are + * defined throughout the DOM Level 3 specifications. Names are + * case-insensitive. To avoid possible conflicts, as a + * convention, names referring to boolean parameters and + * parameters defined outside the DOM specification should be made + * unique. Names are recommended to follow the XML name + * production rule but it is not enforced by the DOM + * implementation. DOM Level 3 Core Implementations are required + * to recognize all boolean parameters and parameters defined in + * this specification. Each boolean parameter state or parameter + * value may then be supported or not by the implementation. Refer + * to their definition to know if a state or a value must be + * supported or not. + * + * Note: Parameters are similar to features and properties used in + * SAX2 [SAX]. + * + * The following list of parameters defined in the DOM: + * + * "error-handler" + * [required] + * A DOMErrorHandler object. If an error is + * encountered in the document, the implementation will call + * back the DOMErrorHandler registered using this + * parameter. + * When called, DOMError.relatedData will contain the + * closest node to where the error occured. If the + * implementation is unable to determine the node where the + * error occurs, DOMError.relatedData will contain the + * Document node. Mutations to the document from + * within an error handler will result in implementation + * dependent behaviour. + * + * "schema-type" + * [optional] + * A DOMString object containing an absolute URI and + * representing the type of the schema language used to + * validate a document against. Note that no lexical + * checking is done on the absolute URI. + * If this parameter is not set, a default value may be + * provided by the implementation, based on the schema + * languages supported and on the schema language used at + * load time. + * + * Note: For XML Schema [XML Schema Part 1], + * applications must use the value + * "http://www.w3.org/2001/XMLSchema". For XML DTD + * [XML 1.0], applications must use the value + * "http://www.w3.org/TR/REC-xml". Other schema languages + * are outside the scope of the W3C and therefore should + * recommend an absolute URI in order to use this method. + * + * "schema-location" + * [optional] + * A DOMString object containing a list of URIs, + * separated by white spaces (characters matching the + * nonterminal production S defined in section 2.3 + * [XML 1.0]), that represents the schemas against + * which validation should occur. The types of schemas + * referenced in this list must match the type specified + * with schema-type, otherwise the behaviour of an + * implementation is undefined. If the schema type is XML + * Schema [XML Schema Part 1], only one of the XML + * Schemas in the list can be with no namespace. + * If validation occurs against a namespace aware schema, + * i.e. XML Schema, and the targetNamespace of a schema + * (specified using this property) matches the + * targetNamespace of a schema occurring in the instance + * document, i.e in schemaLocation attribute, the schema + * specified by the user using this property will be used + * (i.e., in XML Schema the schemaLocation attribute in the + * instance document or on the import element will be + * effectively ignored). + * + * Note: It is illegal to set the schema-location parameter + * if the schema-type parameter value is not set. It is + * strongly recommended that DOMInputSource.baseURI will be + * set, so that an implementation can successfully resolve + * any external entities referenced. + * + * The following list of boolean parameters (features) defined in + * the DOM: + * + * "canonical-form" + * + * true + * [optional] + * Canonicalize the document according to the rules + * specified in [Canonical XML]. Note that this + * is limited to what can be represented in the DOM. + * In particular, there is no way to specify the order + * of the attributes in the DOM. + * + * false + * [required] (default) + * Do not canonicalize the document. + * + * "cdata-sections" + * + * true + * [required] (default) + * Keep CDATASection nodes in the document. + * + * false + * [required] + * Transform CDATASection nodes in the document + * into Text nodes. The new Text node is + * then combined with any adjacent Text node. + * + * "comments" + * + * true + * [required] (default) + * Keep Comment nodes in the document. + * + * false + * [required] + * Discard Comment nodes in the Document. + * + * "datatype-normalization" + * + * true + * [required] + * Exposed normalized values in the tree. + * + * false + * [required] (default) + * Do not perform normalization on the tree. + * + * "discard-default-content" + * + * true + * [required] (default) + * Use whatever information available to the + * implementation (i.e. XML schema, DTD, the specified + * flag on Attr nodes, and so on) to decide what + * attributes and content should be discarded or not. + * Note that the specified flag on Attr nodes in + * itself is not always reliable, it is only reliable + * when it is set to false since the only case where + * it can be set to false is if the attribute was + * created by the implementation. The default content + * won't be removed if an implementation does not have + * any information available. + * + * false + * [required] + * Keep all attributes and all content. + * + * "entities" + * + * true + * [required] + * Keep EntityReference and Entity nodes + * in the document. + * + * false + * [required] (default) + * Remove all EntityReference and Entity + * nodes from the document, putting the entity + * expansions directly in their place. Text + * nodes are into "normal" form. Only + * EntityReference nodes to non-defined entities + * are kept in the document. + * + * "infoset" + * + * true + * [required] + * Only keep in the document the information defined + * in the XML Information Set [XML Information + * set]. + * This forces the following features to false: + * namespace-declarations, validate-if-schema, + * entities, datatype-normalization, cdata-sections. + * This forces the following features to true: + * whitespace-in-element-content, comments, + * namespaces. + * Other features are not changed unless explicitly + * specified in the description of the features. + * Note that querying this feature with getFeature + * returns true only if the individual features + * specified above are appropriately set. + * + * false + * Setting infoset to false has no effect. + * + * "namespaces" + * + * true + * [required] (default) + * Perform the namespace processing as defined in + * [XML Namespaces]. + * + * false + * [optional] + * Do not perform the namespace processing. + * + * "namespace-declarations" + * + * true + * [required] (default) + * Include namespace declaration attributes, specified + * or defaulted from the schema or the DTD, in the + * document. See also the section Declaring + * Namespaces in [XML Namespaces]. + * + * false + * [required] + * Discard all namespace declaration attributes. The + * Namespace prefixes are retained even if this + * feature is set to false. + * + * "normalize-characters" + * + * true + * [optional] + * Perform the W3C Text Normalization of the + * characters [CharModel] in the document. + * + * false + * [required] (default) + * Do not perform character normalization. + * + * "split-cdata-sections" + * + * true + * [required] (default) + * Split CDATA sections containing the CDATA section + * termination marker ']]>'. When a CDATA section is + * split a warning is issued. + * + * false + * [required] + * Signal an error if a CDATASection contains an + * unrepresentable character. + * + * "validate" + * + * true + * [optional] + * Require the validation against a schema (i.e. XML + * schema, DTD, any other type or representation of + * schema) of the document as it is being normalized + * as defined by [XML 1.0]. If validation errors + * are found, or no schema was found, the error + * handler is notified. Note also that normalized + * values will not be exposed to the schema in used + * unless the feature datatype-normalization is true. + * + * Note: validate-if-schema and validate are mutually + * exclusive, setting one of them to true will set the + * other one to false. + * + * false + * [required] (default) + * Only XML 1.0 non-validating processing must be + * done. Note that validation might still happen if + * validate-if-schema is true. + * + * "validate-if-schema" + * + * true + * [optional] + * Enable validation only if a declaration for the + * document element can be found (independently of + * where it is found, i.e. XML schema, DTD, or any + * other type or representation of schema). If + * validation errors are found, the error handler is + * notified. Note also that normalized values will not + * be exposed to the schema in used unless the feature + * datatype-normalization is true. + * + * Note: validate-if-schema and validate are mutually + * exclusive, setting one of them to true will set the + * other one to false. + * + * false + * [required] (default) + * No validation should be performed if the document + * has a schema. Note that validation must still + * happen if validate is true. + * + * "element-content-whitespace" + * + * true + * [required] (default) + * Keep all white spaces in the document. + * + * false + * [optional] + * Discard white space in element content while + * normalizing. The implementation is expected to use + * the isWhitespaceInElementContent flag on Text + * nodes to determine if a text node should be written + * out or not. + * + * The resolutions of entities is done using Document.baseURI. + * However, when the features "LS-Load" or "LS-Save" defined in + * [DOM Level 3 Load and Save] are supported by the DOM + * implementation, the parameter "entity-resolver" can also be + * used on DOMConfiguration objects attached to Document + * nodes. If this parameter is set, + * Document.normalizeDocument will invoke the entity + * resolver instead of using Document.baseURI. + */ +class CDOM_EXPORT DOMConfiguration +{ +protected: + //----------------------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMConfiguration() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMConfiguration(const DOMConfiguration &); + DOMConfiguration & operator = (const DOMConfiguration &); + //@} + +public: + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** Set the value of a parameter. + * @param name The name of the parameter to set. + * @param value The new value or null if the user wishes to unset the + * parameter. While the type of the value parameter is defined as + * DOMUserData, the object type must match the type defined + * by the definition of the parameter. For example, if the parameter is + * "error-handler", the value must be of type DOMErrorHandler + * @exception DOMException (NOT_SUPPORTED_ERR) Raised when the + * parameter name is recognized but the requested value cannot be set. + * @exception DOMException (NOT_FOUND_ERR) Raised when the + * parameter name is not recognized. + * @since DOM level 3 + **/ + virtual void setParameter(const XMLCh* name, const void* value) = 0; + virtual void setParameter(const XMLCh* name, bool value) = 0; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** Return the value of a parameter if known. + * @param name The name of the parameter. + * @return The current object associated with the specified parameter or + * null if no object has been associated or if the parameter is not + * supported. + * @exception DOMException (NOT_FOUND_ERR) Raised when the i + * boolean parameter + * name is not recognized. + * @since DOM level 3 + **/ + virtual const void* getParameter(const XMLCh* name) const = 0; + + + // ----------------------------------------------------------------------- + // Query methods + // ----------------------------------------------------------------------- + + /** Check if setting a parameter to a specific value is supported. + * @param name The name of the parameter to check. + * @param value An object. if null, the returned value is true. + * @return true if the parameter could be successfully set to the specified + * value, or false if the parameter is not recognized or the requested value + * is not supported. This does not change the current value of the parameter + * itself. + * @since DOM level 3 + **/ + virtual bool canSetParameter(const XMLCh* name, const void* value) const = 0; + virtual bool canSetParameter(const XMLCh* name, bool value) const = 0; + + /** + * The list of the parameters supported by this DOMConfiguration object and + * for which at least one value can be set by the application. + * Note that this list can also contain parameter names defined outside this specification. + * + * @return The list of parameters that can be used with setParameter/getParameter + * @since DOM level 3 + **/ + virtual const DOMStringList* getParameterNames() const = 0; + + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMConfiguration() {}; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DOMConfiguration.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMDocument.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMDocument.hpp new file mode 100644 index 000000000000..ae8e65c445b3 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMDocument.hpp @@ -0,0 +1,819 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ +*/ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENT_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMConfiguration; +class DOMDocumentType; +class DOMElement; +class DOMDocumentFragment; +class DOMComment; +class DOMCDATASection; +class DOMProcessingInstruction; +class DOMAttr; +class DOMEntity; +class DOMEntityReference; +class DOMImplementation; +class DOMNodeFilter; +class DOMNodeList; +class DOMNotation; +class DOMText; +class DOMNode; + + +/** + * The DOMDocument interface represents the entire XML + * document. Conceptually, it is the root of the document tree, and provides + * the primary access to the document's data. + *

Since elements, text nodes, comments, processing instructions, etc. + * cannot exist outside the context of a DOMDocument, the + * DOMDocument interface also contains the factory methods needed + * to create these objects. The DOMNode objects created have a + * ownerDocument attribute which associates them with the + * DOMDocument within whose context they were created. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + */ + +class CDOM_EXPORT DOMDocument: public DOMDocumentRange, + public DOMXPathEvaluator, + public DOMDocumentTraversal, + public DOMNode { + + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMDocument() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMDocument(const DOMDocument &); + DOMDocument & operator = (const DOMDocument &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMDocument() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMDocument interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + /** + * Creates an element of the type specified. Note that the instance + * returned implements the DOMElement interface, so attributes + * can be specified directly on the returned object. + *
In addition, if there are known attributes with default values, + * DOMAttr nodes representing them are automatically created + * and attached to the element. + *
To create an element with a qualified name and namespace URI, use + * the createElementNS method. + * @param tagName The name of the element type to instantiate. For XML, + * this is case-sensitive. + * @return A new DOMElement object with the + * nodeName attribute set to tagName, and + * localName, prefix, and + * namespaceURI set to null. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified name contains an + * illegal character. + * @since DOM Level 1 + */ + virtual DOMElement *createElement(const XMLCh *tagName) = 0; + + /** + * Creates an empty DOMDocumentFragment object. + * @return A new DOMDocumentFragment. + * @since DOM Level 1 + */ + virtual DOMDocumentFragment *createDocumentFragment() = 0; + + /** + * Creates a DOMText node given the specified string. + * @param data The data for the node. + * @return The new DOMText object. + * @since DOM Level 1 + */ + virtual DOMText *createTextNode(const XMLCh *data) = 0; + + /** + * Creates a DOMComment node given the specified string. + * @param data The data for the node. + * @return The new DOMComment object. + * @since DOM Level 1 + */ + virtual DOMComment *createComment(const XMLCh *data) = 0; + + /** + * Creates a DOMCDATASection node whose value is the specified + * string. + * @param data The data for the DOMCDATASection contents. + * @return The new DOMCDATASection object. + * @since DOM Level 1 + */ + virtual DOMCDATASection *createCDATASection(const XMLCh *data) = 0; + + /** + * Creates a DOMProcessingInstruction node given the specified + * name and data strings. + * @param target The target part of the processing instruction. + * @param data The data for the node. + * @return The new DOMProcessingInstruction object. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified target contains an + * illegal character. + * @since DOM Level 1 + */ + virtual DOMProcessingInstruction *createProcessingInstruction(const XMLCh *target, + const XMLCh *data) = 0; + + + /** + * Creates an DOMAttr of the given name. Note that the + * DOMAttr instance can then be set on an DOMElement + * using the setAttributeNode method. + *
To create an attribute with a qualified name and namespace URI, use + * the createAttributeNS method. + * @param name The name of the attribute. + * @return A new DOMAttr object with the nodeName + * attribute set to name, and localName, + * prefix, and namespaceURI set to + * null. The value of the attribute is the empty string. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified name contains an + * illegal character. + * @since DOM Level 1 + */ + virtual DOMAttr *createAttribute(const XMLCh *name) = 0; + + + /** + * Creates an DOMEntityReference object. In addition, if the + * referenced entity is known, the child list of the + * DOMEntityReference node is made the same as that of the + * corresponding DOMEntity node.If any descendant of the + * DOMEntity node has an unbound namespace prefix, the + * corresponding descendant of the created DOMEntityReference + * node is also unbound; (its namespaceURI is + * null). The DOM Level 2 does not support any mechanism to + * resolve namespace prefixes. + * @param name The name of the entity to reference. + * @return The new DOMEntityReference object. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified name contains an + * illegal character. + * @since DOM Level 1 + */ + virtual DOMEntityReference *createEntityReference(const XMLCh *name) = 0; + + /** + * The Document Type Declaration (see DOMDocumentType) + * associated with this document. For XML + * documents without a document type declaration this returns + * null. The DOM Level 2 does not support editing the + * Document Type Declaration. docType cannot be altered in + * any way, including through the use of methods inherited from the + * DOMNode interface, such as insertNode or + * removeNode. + * @since DOM Level 1 + */ + virtual DOMDocumentType *getDoctype() const = 0; + + /** + * The DOMImplementation object that handles this document. A + * DOM application may use objects from multiple implementations. + * @since DOM Level 1 + */ + virtual DOMImplementation *getImplementation() const = 0; + + /** + * This is a convenience attribute that allows direct access to the child + * node that is the root element of the document. + * @since DOM Level 1 + */ + virtual DOMElement *getDocumentElement() const = 0; + + /** + * Returns a DOMNodeList of all the DOMElement(s) with a + * given tag name in the order in which they are encountered in a + * preorder traversal of the DOMDocument tree. + * + * The returned node list is "live", in that changes + * to the document tree made after a nodelist was initially + * returned will be immediately reflected in the node list. + * @param tagname The name of the tag to match on. The special value "*" + * matches all tags. + * @return A new DOMNodeList object containing all the matched + * DOMElement(s). + * @since DOM Level 1 + */ + virtual DOMNodeList *getElementsByTagName(const XMLCh *tagname) const = 0; + + //@} + + /** @name Functions introduced in DOM Level 2. */ + //@{ + + /** + * Imports a node from another document to this document. The returned + * node has no parent; (parentNode is null). + * The source node is not altered or removed from the original document; + * this method creates a new copy of the source node. + *
For all nodes, importing a node creates a node object owned by the + * importing document, with attribute values identical to the source + * node's nodeName and nodeType, plus the + * attributes related to namespaces (prefix, + * localName, and namespaceURI). As in the + * cloneNode operation on a DOMNode, the source + * node is not altered. + *
Additional information is copied as appropriate to the + * nodeType, attempting to mirror the behavior expected if + * a fragment of XML source was copied from one document to + * another, recognizing that the two documents may have different DTDs + * in the XML case. The following list describes the specifics for each + * type of node. + *

+ *
ATTRIBUTE_NODE
+ *
The ownerElement attribute + * is set to null and the specified flag is + * set to true on the generated DOMAttr. The + * descendants of the source DOMAttr are recursively imported + * and the resulting nodes reassembled to form the corresponding subtree. + * Note that the deep parameter has no effect on + * DOMAttr nodes; they always carry their children with them + * when imported.
+ *
DOCUMENT_FRAGMENT_NODE
+ *
If the deep option + * was set to true, the descendants of the source element + * are recursively imported and the resulting nodes reassembled to form + * the corresponding subtree. Otherwise, this simply generates an empty + * DOMDocumentFragment.
+ *
DOCUMENT_NODE
+ *
DOMDocument + * nodes cannot be imported.
+ *
DOCUMENT_TYPE_NODE
+ *
DOMDocumentType + * nodes cannot be imported.
+ *
ELEMENT_NODE
+ *
Specified attribute nodes of the + * source element are imported, and the generated DOMAttr + * nodes are attached to the generated DOMElement. Default + * attributes are not copied, though if the document being imported into + * defines default attributes for this element name, those are assigned. + * If the importNode deep parameter was set to + * true, the descendants of the source element are + * recursively imported and the resulting nodes reassembled to form the + * corresponding subtree.
+ *
ENTITY_NODE
+ *
DOMEntity nodes can be + * imported, however in the current release of the DOM the + * DOMDocumentType is readonly. Ability to add these imported + * nodes to a DOMDocumentType will be considered for addition + * to a future release of the DOM.On import, the publicId, + * systemId, and notationName attributes are + * copied. If a deep import is requested, the descendants + * of the the source DOMEntity are recursively imported and + * the resulting nodes reassembled to form the corresponding subtree.
+ *
+ * ENTITY_REFERENCE_NODE
+ *
Only the DOMEntityReference itself is + * copied, even if a deep import is requested, since the + * source and destination documents might have defined the entity + * differently. If the document being imported into provides a + * definition for this entity name, its value is assigned.
+ *
NOTATION_NODE
+ *
+ * DOMNotation nodes can be imported, however in the current + * release of the DOM the DOMDocumentType is readonly. Ability + * to add these imported nodes to a DOMDocumentType will be + * considered for addition to a future release of the DOM.On import, the + * publicId and systemId attributes are copied. + * Note that the deep parameter has no effect on + * DOMNotation nodes since they never have any children.
+ *
+ * PROCESSING_INSTRUCTION_NODE
+ *
The imported node copies its + * target and data values from those of the + * source node.
+ *
TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE
+ *
These three + * types of nodes inheriting from DOMCharacterData copy their + * data and length attributes from those of + * the source node.
+ *
+ * @param importedNode The node to import. + * @param deep If true, recursively import the subtree under + * the specified node; if false, import only the node + * itself, as explained above. This has no effect on DOMAttr + * , DOMEntityReference, and DOMNotation nodes. + * @return The imported node that belongs to this DOMDocument. + * @exception DOMException + * NOT_SUPPORTED_ERR: Raised if the type of node being imported is not + * supported. + * @since DOM Level 2 + */ + virtual DOMNode *importNode(const DOMNode *importedNode, bool deep) = 0; + + /** + * Creates an element of the given qualified name and namespace URI. + * @param namespaceURI The namespace URI of the element to create. + * @param qualifiedName The qualified name of the element type to + * instantiate. + * @return A new DOMElement object with the following + * attributes: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Attribute + * Value
DOMNode.nodeName + * qualifiedName
DOMNode.namespaceURI + * namespaceURI
DOMNode.prefixprefix, extracted + * from qualifiedName, or null if there is + * no prefix
DOMNode.localNamelocal name, extracted from + * qualifiedName
DOMElement.tagName + * qualifiedName
+ * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified qualified name + * contains an illegal character, per the XML 1.0 specification . + *
NAMESPACE_ERR: Raised if the qualifiedName is + * malformed per the Namespaces in XML specification, if the + * qualifiedName has a prefix and the + * namespaceURI is null, or if the + * qualifiedName has a prefix that is "xml" and the + * namespaceURI is different from " + * http://www.w3.org/XML/1998/namespace" . + *
NOT_SUPPORTED_ERR: Always thrown if the current document does not + * support the "XML" feature, since namespaces were + * defined by XML. + * @since DOM Level 2 + */ + virtual DOMElement *createElementNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName) = 0; + + /** + * Creates an attribute of the given qualified name and namespace URI. + * @param namespaceURI The namespace URI of the attribute to create. + * @param qualifiedName The qualified name of the attribute to + * instantiate. + * @return A new DOMAttr object with the following attributes: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Attribute + * Value
DOMNode.nodeNamequalifiedName
+ * DOMNode.namespaceURInamespaceURI
+ * DOMNode.prefixprefix, extracted from + * qualifiedName, or null if there is no + * prefix
DOMNode.localNamelocal name, extracted from + * qualifiedName
DOMAttr.name + * qualifiedName
DOMNode.nodeValuethe empty + * string
+ * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified qualified name + * contains an illegal character, per the XML 1.0 specification . + *
NAMESPACE_ERR: Raised if the qualifiedName is + * malformed per the Namespaces in XML specification, if the + * qualifiedName has a prefix and the + * namespaceURI is null, if the + * qualifiedName has a prefix that is "xml" and the + * namespaceURI is different from " + * http://www.w3.org/XML/1998/namespace", or if the + * qualifiedName, or its prefix, is "xmlns" and the + * namespaceURI is different from " + * http://www.w3.org/2000/xmlns/". + *
NOT_SUPPORTED_ERR: Always thrown if the current document does not + * support the "XML" feature, since namespaces were + * defined by XML. + * @since DOM Level 2 + */ + virtual DOMAttr *createAttributeNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName) = 0; + + /** + * Returns a DOMNodeList of all the DOMElement(s) with a + * given local name and namespace URI in the order in which they are + * encountered in a preorder traversal of the DOMDocument tree. + * @param namespaceURI The namespace URI of the elements to match on. The + * special value "*" matches all namespaces. + * @param localName The local name of the elements to match on. The + * special value "*" matches all local names. + * @return A new DOMNodeList object containing all the matched + * DOMElement(s). + * @since DOM Level 2 + */ + virtual DOMNodeList *getElementsByTagNameNS(const XMLCh *namespaceURI, + const XMLCh *localName) const = 0; + + /** + * Returns the DOMElement whose ID is given by + * elementId. If no such element exists, returns + * null. Behavior is not defined if more than one element + * has this ID. The DOM implementation must have + * information that says which attributes are of type ID. Attributes + * with the name "ID" are not of type ID unless so defined. + * Implementations that do not know whether attributes are of type ID or + * not are expected to return null. + * @param elementId The unique id value for an element. + * @return The matching element. + * @since DOM Level 2 + */ + virtual DOMElement * getElementById(const XMLCh *elementId) const = 0; + //@} + + /** @name Functions introduced in DOM Level 3. */ + //@{ + + /** + * An attribute specifying the encoding used for this document at the time of the parsing. + * This is null when it is not known, such as when the DOMDocument was created in memory. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getInputEncoding() const = 0; + + /** + * An attribute specifying, as part of the XML declaration, the encoding of this document. + * This is null when unspecified or when it is not known, such as when the + * DOMDocument was created in memory. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getXmlEncoding() const = 0; + + /** + * An attribute specifying, as part of the XML declaration, whether this document is standalone. + * This is false when unspecified. + * + * @since DOM Level 3 + */ + virtual bool getXmlStandalone() const = 0; + + /** + * An attribute specifying, as part of the XML declaration, whether this + * document is standalone. + *
This attribute represents the property [standalone] defined in . + * + * @since DOM Level 3 + */ + virtual void setXmlStandalone(bool standalone) = 0; + + /** + * An attribute specifying, as part of the XML declaration, the version + * number of this document. This is null when unspecified. + *
This attribute represents the property [version] defined in . + * + * @since DOM Level 3 + */ + virtual const XMLCh* getXmlVersion() const = 0; + + /** + * An attribute specifying, as part of the XML declaration, the version + * number of this document. This is null when unspecified. + *
This attribute represents the property [version] defined in . + * + * @since DOM Level 3 + */ + virtual void setXmlVersion(const XMLCh* version) = 0; + + /** + * The location of the document or null if undefined. + *
Beware that when the DOMDocument supports the feature + * "HTML" , the href attribute of the HTML BASE element takes precedence + * over this attribute. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getDocumentURI() const = 0; + /** + * The location of the document or null if undefined. + *
Beware that when the DOMDocument supports the feature + * "HTML" , the href attribute of the HTML BASE element takes precedence + * over this attribute. + * + * @since DOM Level 3 + */ + virtual void setDocumentURI(const XMLCh* documentURI) = 0; + + /** + * An attribute specifying whether errors checking is enforced or not. + * When set to false, the implementation is free to not + * test every possible error case normally defined on DOM operations, + * and not raise any DOMException. In case of error, the + * behavior is undefined. This attribute is true by + * defaults. + * + * @since DOM Level 3 + */ + virtual bool getStrictErrorChecking() const = 0; + /** + * An attribute specifying whether errors checking is enforced or not. + * When set to false, the implementation is free to not + * test every possible error case normally defined on DOM operations, + * and not raise any DOMException. In case of error, the + * behavior is undefined. This attribute is true by + * defaults. + * + * @since DOM Level 3 + */ + virtual void setStrictErrorChecking(bool strictErrorChecking) = 0; + + /** + * Rename an existing node. When possible this simply changes the name of + * the given node, otherwise this creates a new node with the specified + * name and replaces the existing node with the new node as described + * below. This only applies to nodes of type ELEMENT_NODE + * and ATTRIBUTE_NODE. + *
When a new node is created, the following operations are performed: + * the new node is created, any registered event listener is registered + * on the new node, any user data attached to the old node is removed + * from that node, the old node is removed from its parent if it has + * one, the children are moved to the new node, if the renamed node is + * an DOMElement its attributes are moved to the new node, the + * new node is inserted at the position the old node used to have in its + * parent's child nodes list if it has one, the user data that was + * attached to the old node is attach to the new node, the user data + * event NODE_RENAMED is fired. + *
When the node being renamed is an DOMAttr that is + * attached to an DOMElement, the node is first removed from + * the DOMElement attributes map. Then, once renamed, either + * by modifying the existing node or creating a new one as described + * above, it is put back. + * + * @param n The node to rename. + * @param namespaceURI The new namespaceURI. + * @param qualifiedName The new qualified name. + * @return The renamed node. This is either the specified node or the new + * node that was created to replace the specified node. + * @exception DOMException + * NOT_SUPPORTED_ERR: Raised when the type of the specified node is + * neither ELEMENT_NODE nor ATTRIBUTE_NODE. + *
WRONG_DOCUMENT_ERR: Raised when the specified node was created + * from a different document than this document. + *
NAMESPACE_ERR: Raised if the qualifiedName is + * malformed per the Namespaces in XML specification, if the + * qualifiedName has a prefix and the + * namespaceURI is null, or if the + * qualifiedName has a prefix that is "xml" and the + * namespaceURI is different from " + * http://www.w3.org/XML/1998/namespace" . Also raised, when the node + * being renamed is an attribute, if the qualifiedName, + * or its prefix, is "xmlns" and the namespaceURI is + * different from "http://www.w3.org/2000/xmlns/". + * @since DOM Level 3 + */ + virtual DOMNode* renameNode(DOMNode* n, const XMLCh* namespaceURI, const XMLCh* qualifiedName) = 0; + + + /** + * Changes the ownerDocument of a node, its children, as well + * as the attached attribute nodes if there are any. If the node has a + * parent it is first removed from its parent child list. This + * effectively allows moving a subtree from one document to another. The + * following list describes the specifics for each type of node. + * + *
+ *
+ * ATTRIBUTE_NODE
+ *
The ownerElement attribute is set to + * null and the specified flag is set to + * true on the adopted DOMAttr. The descendants + * of the source DOMAttr are recursively adopted.
+ *
+ * DOCUMENT_FRAGMENT_NODE
+ *
The descendants of the source node are + * recursively adopted.
+ *
DOCUMENT_NODE
+ *
DOMDocument nodes cannot + * be adopted.
+ *
DOCUMENT_TYPE_NODE
+ *
DOMDocumentType nodes cannot + * be adopted.
+ *
ELEMENT_NODE
+ *
Specified attribute nodes of the source + * element are adopted, and the generated DOMAttr nodes. + * Default attributes are discarded, though if the document being + * adopted into defines default attributes for this element name, those + * are assigned. The descendants of the source element are recursively + * adopted.
+ *
ENTITY_NODE
+ *
DOMEntity nodes cannot be adopted.
+ *
+ * ENTITY_REFERENCE_NODE
+ *
Only the DOMEntityReference node + * itself is adopted, the descendants are discarded, since the source + * and destination documents might have defined the entity differently. + * If the document being imported into provides a definition for this + * entity name, its value is assigned.
+ *
NOTATION_NODE
+ *
DOMNotation + * nodes cannot be adopted.
+ *
PROCESSING_INSTRUCTION_NODE, TEXT_NODE, + * CDATA_SECTION_NODE, COMMENT_NODE
+ *
These nodes can all be adopted. No + * specifics.
+ *
+ * @param source The node to move into this document. + * @return The adopted node, or null if this operation + * fails, such as when the source node comes from a different + * implementation. + * @exception DOMException + * NOT_SUPPORTED_ERR: Raised if the source node is of type + * DOCUMENT, DOCUMENT_TYPE. + *
NO_MODIFICATION_ALLOWED_ERR: Raised when the source node is + * readonly. + * @since DOM Level 3 + */ + virtual DOMNode* adoptNode(DOMNode* source) = 0; + + /** + * This method acts as if the document was going through a save and load + * cycle, putting the document in a "normal" form. The actual result + * depends on the features being set. See DOMConfiguration for + * details. + * + *
Noticeably this method normalizes DOMText nodes, makes + * the document "namespace wellformed", according to the algorithm + * described below in pseudo code, by adding missing namespace + * declaration attributes and adding or changing namespace prefixes, + * updates the replacement tree of DOMEntityReference nodes, + * normalizes attribute values, etc. + *
Mutation events, when supported, are generated to reflect the + * changes occurring on the document. + * Note that this is a partial implementation. Not all the required features are implemented. + * Currently DOMAttr and DOMText nodes are normalized. + * Features to remove DOMComment and DOMCDATASection work. + * @since DOM Level 3 + * + */ + virtual void normalizeDocument() = 0; + + + /** + * The configuration used when DOMDocument::normalizeDocument is invoked. + * + * @return The DOMConfiguration from this DOMDocument + * + * @since DOM Level 3 + */ + virtual DOMConfiguration* getDOMConfig() const = 0; + + //@} + + // ----------------------------------------------------------------------- + // Non-standard extension + // ----------------------------------------------------------------------- + /** @name Non-standard extension */ + //@{ + /** + * Non-standard extension + * + * Create a new entity. + * @param name The name of the entity to instantiate + * + */ + virtual DOMEntity *createEntity(const XMLCh *name) = 0; + + /** + * Non-standard extension + * + * Create a DOMDocumentType node. + * @return A DOMDocumentType that references the newly + * created DOMDocumentType node. + * + */ + virtual DOMDocumentType *createDocumentType(const XMLCh *name) = 0; + + /*** + * Provide default implementation to maintain source code compatibility + ***/ + virtual DOMDocumentType* createDocumentType(const XMLCh *qName, + const XMLCh*, //publicId, + const XMLCh* //systemId + ) + { + return createDocumentType(qName); + } + + /** + * Non-standard extension. + * + * Create a Notation. + * @param name The name of the notation to instantiate + * @return A DOMNotation that references the newly + * created DOMNotation node. + */ + virtual DOMNotation *createNotation(const XMLCh *name) = 0; + + /** + * Non-standard extension. + * + * Creates an element of the given qualified name and + * namespace URI, and also stores line/column number info. + * Used by internally XSDXercesDOMParser during schema traversal. + * + * @see createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName) + */ + virtual DOMElement *createElementNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName, + const XMLFileLoc lineNum, + const XMLFileLoc columnNum) = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMDocumentFragment.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMDocumentFragment.hpp new file mode 100644 index 000000000000..8c5504241963 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMDocumentFragment.hpp @@ -0,0 +1,108 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTFRAGMENT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENTFRAGMENT_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * DOMDocumentFragment is a "lightweight" or "minimal" + * DOMDocument object. + * + * It is very common to want to be able to + * extract a portion of a document's tree or to create a new fragment of a + * document. Imagine implementing a user command like cut or rearranging a + * document by moving fragments around. It is desirable to have an object + * which can hold such fragments and it is quite natural to use a DOMNode for + * this purpose. While it is true that a DOMDocument object could + * fulfill this role, a DOMDocument object can potentially be a + * heavyweight object, depending on the underlying implementation. What is + * really needed for this is a very lightweight object. + * DOMDocumentFragment is such an object. + *

Furthermore, various operations -- such as inserting nodes as children + * of another DOMNode -- may take DOMDocumentFragment + * objects as arguments; this results in all the child nodes of the + * DOMDocumentFragment being moved to the child list of this node. + *

The children of a DOMDocumentFragment node are zero or more + * nodes representing the tops of any sub-trees defining the structure of the + * document. DOMDocumentFragment nodes do not need to be + * well-formed XML documents (although they do need to follow the rules + * imposed upon well-formed XML parsed entities, which can have multiple top + * nodes). For example, a DOMDocumentFragment might have only one + * child and that child node could be a DOMText node. Such a + * structure model represents neither an HTML document nor a well-formed XML + * document. + *

When a DOMDocumentFragment is inserted into a + * DOMDocument (or indeed any other DOMNode that may take + * children) the children of the DOMDocumentFragment and not the + * DOMDocumentFragment itself are inserted into the + * DOMNode. This makes the DOMDocumentFragment very + * useful when the user wishes to create nodes that are siblings; the + * DOMDocumentFragment acts as the parent of these nodes so that the + * user can use the standard methods from the DOMNode interface, + * such as insertBefore() and appendChild(). + * + * @since DOM Level 1 + */ + +class CDOM_EXPORT DOMDocumentFragment: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMDocumentFragment() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMDocumentFragment(const DOMDocumentFragment &); + DOMDocumentFragment & operator = (const DOMDocumentFragment &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMDocumentFragment() {}; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMDocumentRange.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMDocumentRange.hpp new file mode 100644 index 000000000000..cee401075afe --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMDocumentRange.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ +*/ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTRANGE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENTRANGE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMRange; + + +/** + *

See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. + * @since DOM Level 2 + */ +class CDOM_EXPORT DOMDocumentRange { + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMDocumentRange() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMDocumentRange(const DOMDocumentRange &); + DOMDocumentRange & operator = (const DOMDocumentRange &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMDocumentRange() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMDocumentRange interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 2 */ + //@{ + /** + * To create the range consisting of boundary-points and offset of the + * selected contents + * + * @return The initial state of the Range such that both the boundary-points + * are positioned at the beginning of the corresponding DOMDOcument, before + * any content. The range returned can only be used to select content + * associated with this document, or with documentFragments and Attrs for + * which this document is the ownerdocument + * @since DOM Level 2 + */ + virtual DOMRange *createRange() = 0; + + //@} +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMDocumentTraversal.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMDocumentTraversal.hpp new file mode 100644 index 000000000000..b24e59178a68 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMDocumentTraversal.hpp @@ -0,0 +1,155 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ +*/ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTTRAVERSAL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENTTRAVERSAL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNode; +class DOMNodeIterator; +class DOMTreeWalker; + + +/** + * DOMDocumentTraversal contains methods that create + * DOMNodeIterators and DOMTreeWalkers to traverse a + * node and its children in document order (depth first, pre-order + * traversal, which is equivalent to the order in which the start tags occur + * in the text representation of the document). In DOMs which support the + * Traversal feature, DOMDocumentTraversal will be implemented by + * the same objects that implement the DOMDocument interface. + *

See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. + * @since DOM Level 2 + */ +class CDOM_EXPORT DOMDocumentTraversal { + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMDocumentTraversal() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMDocumentTraversal(const DOMDocumentTraversal &); + DOMDocumentTraversal & operator = (const DOMDocumentTraversal &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMDocumentTraversal() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMDocumentRange interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 2 */ + //@{ + /** + * Creates a NodeIterator object. (DOM2) + * + * NodeIterators are used to step through a set of nodes, e.g. the set of nodes in a NodeList, the + * document subtree governed by a particular node, the results of a query, or any other set of nodes. + * The set of nodes to be iterated is determined by the implementation of the NodeIterator. DOM Level 2 + * specifies a single NodeIterator implementation for document-order traversal of a document subtree. + * Instances of these iterators are created by calling DOMDocumentTraversal.createNodeIterator(). + * + * To produce a view of the document that has entity references expanded and does not + * expose the entity reference node itself, use the whatToShow flags to hide the entity + * reference node and set expandEntityReferences to true when creating the iterator. To + * produce a view of the document that has entity reference nodes but no entity expansion, + * use the whatToShow flags to show the entity reference node and set + * expandEntityReferences to false. + * + * @param root The root node of the DOM tree + * @param whatToShow This attribute determines which node types are presented via the iterator. + * @param filter The filter used to screen nodes + * @param entityReferenceExpansion The value of this flag determines whether the children of entity reference nodes are + * visible to the iterator. If false, they will be skipped over. + * @since DOM Level 2 + */ + + virtual DOMNodeIterator *createNodeIterator(DOMNode* root, + DOMNodeFilter::ShowType whatToShow, + DOMNodeFilter* filter, + bool entityReferenceExpansion) = 0; + /** + * Creates a TreeWalker object. (DOM2) + * + * TreeWalker objects are used to navigate a document tree or subtree using the view of the document defined + * by its whatToShow flags and any filters that are defined for the TreeWalker. Any function which performs + * navigation using a TreeWalker will automatically support any view defined by a TreeWalker. + * + * Omitting nodes from the logical view of a subtree can result in a structure that is substantially different from + * the same subtree in the complete, unfiltered document. Nodes that are siblings in the TreeWalker view may + * be children of different, widely separated nodes in the original view. For instance, consider a Filter that skips + * all nodes except for DOMText nodes and the root node of a document. In the logical view that results, all text + * nodes will be siblings and appear as direct children of the root node, no matter how deeply nested the + * structure of the original document. + * + * To produce a view of the document that has entity references expanded + * and does not expose the entity reference node itself, use the whatToShow + * flags to hide the entity reference node and set expandEntityReferences to + * true when creating the TreeWalker. To produce a view of the document + * that has entity reference nodes but no entity expansion, use the + * whatToShow flags to show the entity reference node and set + * expandEntityReferences to false + * + * @param root The root node of the DOM tree + * @param whatToShow This attribute determines which node types are presented via the tree-walker. + * @param filter The filter used to screen nodes + * @param entityReferenceExpansion The value of this flag determines whether the children of entity reference nodes are + * visible to the tree-walker. If false, they will be skipped over. + * @since DOM Level 2 + */ + + virtual DOMTreeWalker *createTreeWalker(DOMNode* root, + DOMNodeFilter::ShowType whatToShow, + DOMNodeFilter* filter, + bool entityReferenceExpansion) = 0; + + //@} +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMDocumentType.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMDocumentType.hpp new file mode 100644 index 000000000000..ae91c2a1eb5e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMDocumentType.hpp @@ -0,0 +1,160 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTTYPE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENTTYPE_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNamedNodeMap; + +/** + * Each DOMDocument has a doctype attribute whose value + * is either null or a DOMDocumentType object. The + * DOMDocumentType interface in the DOM Core provides an interface + * to the list of entities that are defined for the document, and little + * else because the effect of namespaces and the various XML schema efforts + * on DTD representation are not clearly understood as of this writing. + *

The DOM Level 2 doesn't support editing DOMDocumentType nodes. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMDocumentType: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMDocumentType() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMDocumentType(const DOMDocumentType &); + DOMDocumentType & operator = (const DOMDocumentType &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMDocumentType() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMDocumentType interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + /** + * The name of DTD; i.e., the name immediately following the + * DOCTYPE keyword. + * + * @since DOM Level 1 + */ + virtual const XMLCh * getName() const = 0; + + /** + * A DOMNamedNodeMap containing the general entities, both + * external and internal, declared in the DTD. Parameter entities are + * not contained. Duplicates are discarded. For example in: + * <!DOCTYPE
+ * ex SYSTEM "ex.dtd" [ <!ENTITY foo "foo"> <!ENTITY bar
+ * "bar"> <!ENTITY bar "bar2"> <!ENTITY % baz "baz">
+ * ]> <ex/>
+ * the interface provides access to foo + * and the first declaration of bar but not the second + * declaration of bar or baz. Every node in + * this map also implements the DOMEntity interface. + *
The DOM Level 2 does not support editing entities, therefore + * entities cannot be altered in any way. + * + * @since DOM Level 1 + */ + virtual DOMNamedNodeMap *getEntities() const = 0; + + + /** + * A DOMNamedNodeMap containing the notations declared in the + * DTD. Duplicates are discarded. Every node in this map also implements + * the DOMNotation interface. + *
The DOM Level 2 does not support editing notations, therefore + * notations cannot be altered in any way. + * + * @since DOM Level 1 + */ + virtual DOMNamedNodeMap *getNotations() const = 0; + //@} + + /** @name Functions introduced in DOM Level 2. */ + //@{ + /** + * Get the public identifier of the external subset. + * + * @return The public identifier of the external subset. + * @since DOM Level 2 + */ + virtual const XMLCh * getPublicId() const = 0; + + /** + * Get the system identifier of the external subset. + * + * @return The system identifier of the external subset. + * @since DOM Level 2 + */ + virtual const XMLCh * getSystemId() const = 0; + + /** + * The internal subset as a string, or null if there is none. + * This is does not contain the delimiting square brackets.The actual + * content returned depends on how much information is available to the + * implementation. This may vary depending on various parameters, + * including the XML processor used to build the document. + * + * @return The internal subset as a string. + * @since DOM Level 2 + */ + virtual const XMLCh * getInternalSubset() const = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMElement.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMElement.hpp new file mode 100644 index 000000000000..9527fea5610a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMElement.hpp @@ -0,0 +1,528 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMELEMENT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMELEMENT_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMAttr; +class DOMNodeList; +class DOMTypeInfo; + + +/** + * By far the vast majority of objects (apart from text) that authors + * encounter when traversing a document are DOMElement nodes. + * + * Assume the following XML document:<elementExample id="demo"> + * <subelement1/> + * <subelement2><subsubelement/></subelement2> + * </elementExample> + *

When represented using DOM, the top node is an DOMElement node + * for "elementExample", which contains two child DOMElement nodes, + * one for "subelement1" and one for "subelement2". "subelement1" contains no + * child nodes. + *

Elements may have attributes associated with them; since the + * DOMElement interface inherits from DOMNode, the generic + * DOMNode interface method getAttributes may be used + * to retrieve the set of all attributes for an element. There are methods on + * the DOMElement interface to retrieve either an DOMAttr + * object by name or an attribute value by name. In XML, where an attribute + * value may contain entity references, an DOMAttr object should be + * retrieved to examine the possibly fairly complex sub-tree representing the + * attribute value. On the other hand, in HTML, where all attributes have + * simple string values, methods to directly access an attribute value can + * safely be used as a convenience. + * + * @since DOM Level 1 + * + * It also defines the ElementTraversal helper interface defined by http://www.w3.org/TR/2008/REC-ElementTraversal-20081222/ + * + */ + +class CDOM_EXPORT DOMElement: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMElement() {} + DOMElement(const DOMElement &other) : DOMNode(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMElement & operator = (const DOMElement &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMElement() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMElement interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * The name of the element. + * + * For example, in: <elementExample + * id="demo"> ... </elementExample> , tagName has + * the value "elementExample". Note that this is + * case-preserving in XML, as are all of the operations of the DOM. + * @since DOM Level 1 + */ + virtual const XMLCh * getTagName() const = 0; + + /** + * Retrieves an attribute value by name. + * + * @param name The name of the attribute to retrieve. + * @return The DOMAttr value as a string, or the empty string if + * that attribute does not have a specified or default value. + * @since DOM Level 1 + */ + virtual const XMLCh * getAttribute(const XMLCh *name) const = 0; + + /** + * Retrieves an DOMAttr node by name. + * + * @param name The name (nodeName) of the attribute to retrieve. + * @return The DOMAttr node with the specified name (nodeName) or + * null if there is no such attribute. + * @since DOM Level 1 + */ + virtual DOMAttr * getAttributeNode(const XMLCh *name) const = 0; + + /** + * Returns a DOMNodeList of all descendant elements with a given + * tag name, in the order in which they would be encountered in a preorder + * traversal of the DOMElement tree. + * + * @param name The name of the tag to match on. The special value "*" + * matches all tags. + * @return A list of matching DOMElement nodes. + * @since DOM Level 1 + */ + virtual DOMNodeList * getElementsByTagName(const XMLCh *name) const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Adds a new attribute. + * + * If an attribute with that name is already present + * in the element, its value is changed to be that of the value parameter. + * This value is a simple string, it is not parsed as it is being set. So + * any markup (such as syntax to be recognized as an entity reference) is + * treated as literal text, and needs to be appropriately escaped by the + * implementation when it is written out. In order to assign an attribute + * value that contains entity references, the user must create an + * DOMAttr node plus any DOMText and + * DOMEntityReference nodes, build the appropriate subtree, and + * use setAttributeNode to assign it as the value of an + * attribute. + * @param name The name of the attribute to create or alter. + * @param value Value to set in string form. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified name contains an + * illegal character. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 1 + */ + virtual void setAttribute(const XMLCh *name, + const XMLCh *value) = 0; + /** + * Adds a new attribute. + * + * If an attribute with that name (nodeName) is already present + * in the element, it is replaced by the new one. + * @param newAttr The DOMAttr node to add to the attribute list. + * @return If the newAttr attribute replaces an existing + * attribute, the replaced + * DOMAttr node is returned, otherwise null is + * returned. + * @exception DOMException + * WRONG_DOCUMENT_ERR: Raised if newAttr was created from a + * different document than the one that created the element. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + *
INUSE_ATTRIBUTE_ERR: Raised if newAttr is already an + * attribute of another DOMElement object. The DOM user must + * explicitly clone DOMAttr nodes to re-use them in other + * elements. + * @since DOM Level 1 + */ + virtual DOMAttr * setAttributeNode(DOMAttr *newAttr) = 0; + + /** + * Removes the specified attribute node. + * If the removed DOMAttr + * has a default value it is immediately replaced. The replacing attribute + * has the same namespace URI and local name, as well as the original prefix, + * when applicable. + * + * @param oldAttr The DOMAttr node to remove from the attribute + * list. + * @return The DOMAttr node that was removed. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + *
NOT_FOUND_ERR: Raised if oldAttr is not an attribute + * of the element. + * @since DOM Level 1 + */ + virtual DOMAttr * removeAttributeNode(DOMAttr *oldAttr) = 0; + + /** + * Removes an attribute by name. + * + * If the removed attribute + * is known to have a default value, an attribute immediately appears + * containing the default value as well as the corresponding namespace URI, + * local name, and prefix when applicable.
To remove an attribute by local + * name and namespace URI, use the removeAttributeNS method. + * @param name The name of the attribute to remove. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 1 + */ + virtual void removeAttribute(const XMLCh *name) = 0; + //@} + + /** @name Functions introduced in DOM Level 2. */ + //@{ + /** + * Retrieves an attribute value by local name and namespace URI. + * + * @param namespaceURI The namespace URI of + * the attribute to retrieve. + * @param localName The local name of the + * attribute to retrieve. + * @return The DOMAttr value as a string, or an null if + * that attribute does not have a specified or default value. + * @since DOM Level 2 + */ + virtual const XMLCh * getAttributeNS(const XMLCh *namespaceURI, + const XMLCh *localName) const = 0; + + /** + * Adds a new attribute. If an attribute with the same + * local name and namespace URI is already present on the element, its prefix + * is changed to be the prefix part of the qualifiedName, and + * its value is changed to be the value parameter. This value is + * a simple string, it is not parsed as it is being set. So any markup (such + * as syntax to be recognized as an entity reference) is treated as literal + * text, and needs to be appropriately escaped by the implementation when it + * is written out. In order to assign an attribute value that contains entity + * references, the user must create an DOMAttr + * node plus any DOMText and DOMEntityReference + * nodes, build the appropriate subtree, and use + * setAttributeNodeNS or setAttributeNode to assign + * it as the value of an attribute. + * + * @param namespaceURI The namespace URI of + * the attribute to create or alter. + * @param qualifiedName The qualified name of the + * attribute to create or alter. + * @param value The value to set in string form. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an + * illegal character. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + *
+ * NAMESPACE_ERR: Raised if the qualifiedName is + * malformed, if the qualifiedName has a prefix and the + * namespaceURI is null or an empty string, + * if the qualifiedName has a prefix that is "xml" and the + * namespaceURI is different from + * "http://www.w3.org/XML/1998/namespace", if the + * qualifiedName has a prefix that is "xmlns" and the + * namespaceURI is different from + * "http://www.w3.org/2000/xmlns/", or if the + * qualifiedName is "xmlns" and the + * namespaceURI is different from + * "http://www.w3.org/2000/xmlns/". + * @since DOM Level 2 + */ + virtual void setAttributeNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName, const XMLCh *value) = 0; + + /** + * Removes an attribute by local name and namespace URI. If the + * removed attribute has a default value it is immediately replaced. + * The replacing attribute has the same namespace URI and local name, as well as + * the original prefix. + * + * @param namespaceURI The namespace URI of + * the attribute to remove. + * @param localName The local name of the + * attribute to remove. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 2 + */ + virtual void removeAttributeNS(const XMLCh *namespaceURI, + const XMLCh *localName) = 0; + + /** + * Retrieves an DOMAttr node by local name and namespace URI. + * + * @param namespaceURI The namespace URI of + * the attribute to retrieve. + * @param localName The local name of the + * attribute to retrieve. + * @return The DOMAttr node with the specified attribute local + * name and namespace URI or null if there is no such attribute. + * @since DOM Level 2 + */ + virtual DOMAttr * getAttributeNodeNS(const XMLCh *namespaceURI, + const XMLCh *localName) const = 0; + + /** + * Adds a new attribute. + * + * If an attribute with that local name and namespace URI is already present + * in the element, it is replaced by the new one. + * + * @param newAttr The DOMAttr node to add to the attribute list. + * @return If the newAttr attribute replaces an existing + * attribute with the same local name and namespace URI, + * the replaced DOMAttr node is + * returned, otherwise null is returned. + * @exception DOMException + * WRONG_DOCUMENT_ERR: Raised if newAttr was created from a + * different document than the one that created the element. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + *
INUSE_ATTRIBUTE_ERR: Raised if newAttr is already an + * attribute of another DOMElement object. The DOM user must + * explicitly clone DOMAttr nodes to re-use them in other + * elements. + * @since DOM Level 2 + */ + virtual DOMAttr * setAttributeNodeNS(DOMAttr *newAttr) = 0; + + /** + * Returns a DOMNodeList of all the DOMElements + * with a given local name and namespace URI in the order in which they + * would be encountered in a preorder traversal of the + * DOMDocument tree, starting from this node. + * + * @param namespaceURI The namespace URI of + * the elements to match on. The special value "*" matches all + * namespaces. + * @param localName The local name of the + * elements to match on. The special value "*" matches all local names. + * @return A new DOMNodeList object containing all the matched + * DOMElements. + * @since DOM Level 2 + */ + virtual DOMNodeList * getElementsByTagNameNS(const XMLCh *namespaceURI, + const XMLCh *localName) const = 0; + + /** + * Returns true when an attribute with a given name is + * specified on this element or has a default value, false + * otherwise. + * @param name The name of the attribute to look for. + * @return true if an attribute with the given name is + * specified on this element or has a default value, false + * otherwise. + * @since DOM Level 2 + */ + virtual bool hasAttribute(const XMLCh *name) const = 0; + + /** + * Returns true when an attribute with a given local name and + * namespace URI is specified on this element or has a default value, + * false otherwise. HTML-only DOM implementations do not + * need to implement this method. + * @param namespaceURI The namespace URI of the attribute to look for. + * @param localName The local name of the attribute to look for. + * @return true if an attribute with the given local name + * and namespace URI is specified or has a default value on this + * element, false otherwise. + * @since DOM Level 2 + */ + virtual bool hasAttributeNS(const XMLCh *namespaceURI, + const XMLCh *localName) const = 0; + //@} + + /** @name Functions introduced in DOM Level 3 */ + //@{ + + /** + * If the parameter isId is true, this method declares the specified + * attribute to be a user-determined ID attribute. + * This affects the value of DOMAttr::isId and the behavior of + * DOMDocument::getElementById, but does not change any schema that + * may be in use, in particular this does not affect the DOMAttr::getSchemaTypeInfo + * of the specified DOMAttr node. Use the value false for the parameter isId + * to undeclare an attribute for being a user-determined ID attribute. + * To specify an DOMAttr by local name and namespace URI, use the + * setIdAttributeNS method. + * + * @param name The name of the DOMAttr. + * @param isId Whether the attribute is of type ID. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+ * NOT_FOUND_ERR: Raised if the specified node is not an DOMAttr + * of this element. + * + * @since DOM Level 3 + */ + virtual void setIdAttribute(const XMLCh* name, bool isId) = 0; + + + /** + * If the parameter isId is true, this method declares the specified + * attribute to be a user-determined ID attribute. + * This affects the value of DOMAttr::isId and the behavior of + * DOMDocument::getElementById, but does not change any schema that + * may be in use, in particular this does not affect the DOMAttr::getSchemaTypeInfo + * of the specified DOMAttr node. Use the value false for the parameter isId + * to undeclare an attribute for being a user-determined ID attribute. + * + * @param namespaceURI The namespace URI of the DOMAttr. + * @param localName The local name of the DOMAttr. + * @param isId Whether the attribute is of type ID. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+ * NOT_FOUND_ERR: Raised if the specified node is not an DOMAttr of this element. + * + * @since DOM Level 3 + */ + virtual void setIdAttributeNS(const XMLCh* namespaceURI, const XMLCh* localName, bool isId) = 0; + + + + /** + * If the parameter isId is true, this method declares the specified + * attribute to be a user-determined ID attribute. + * This affects the value of DOMAttr::isId and the behavior of + * DOMDocument::getElementById, but does not change any schema that + * may be in use, in particular this does not affect the DOMAttr::getSchemaTypeInfo + * of the specified DOMAttr node. Use the value false for the parameter isId + * to undeclare an attribute for being a user-determined ID attribute. + * + * @param idAttr The DOMAttr node. + * @param isId Whether the attribute is of type ID. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+ * NOT_FOUND_ERR: Raised if the specified node is not an DOMAttr of this element. + * + * @since DOM Level 3 + */ + virtual void setIdAttributeNode(const DOMAttr *idAttr, bool isId) = 0; + + + + /** + * Returns the type information associated with this element. + * + * @return the DOMTypeInfo associated with this element + * @since DOM level 3 + */ + virtual const DOMTypeInfo* getSchemaTypeInfo() const = 0; + + //@} + + // ----------------------------------------------------------------------- + // DOMElementTraversal interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in the ElementTraversal specification (http://www.w3.org/TR/2008/REC-ElementTraversal-20081222/)*/ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * The first child of type DOMElement. + * + * @return The DOMElement object that is the first element node + * among the child nodes of this node, or null if there is none. + */ + virtual DOMElement * getFirstElementChild() const = 0; + + /** + * The last child of type DOMElement. + * + * @return The DOMElement object that is the last element node + * among the child nodes of this node, or null if there is none. + */ + virtual DOMElement * getLastElementChild() const = 0; + + /** + * The previous sibling node of type DOMElement. + * + * @return The DOMElement object that is the previous sibling element node + * in document order, or null if there is none. + */ + virtual DOMElement * getPreviousElementSibling() const = 0; + + /** + * The next sibling node of type DOMElement. + * + * @return The DOMElement object that is the next sibling element node + * in document order, or null if there is none. + */ + virtual DOMElement * getNextElementSibling() const = 0; + + /** + * The number of child nodes that are of type DOMElement. + * + * Note: the count is computed every time this function is invoked + * + * @return The number of DOMElement objects that are direct children + * of this object (nested elements are not counted), or 0 if there is none. + * + */ + virtual XMLSize_t getChildElementCount() const = 0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMEntity.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMEntity.hpp new file mode 100644 index 000000000000..8acea357dae1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMEntity.hpp @@ -0,0 +1,170 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMENTITY_HPP) +#define XERCESC_INCLUDE_GUARD_DOMENTITY_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This interface represents an entity, either parsed or unparsed, in an XML + * document. Note that this models the entity itself not the entity + * declaration. DOMEntity declaration modeling has been left for a + * later Level of the DOM specification. + *

The nodeName attribute that is inherited from + * DOMNode contains the name of the entity. + *

An XML processor may choose to completely expand entities before the + * structure model is passed to the DOM; in this case there will be no + * DOMEntityReference nodes in the document tree. + *

XML does not mandate that a non-validating XML processor read and + * process entity declarations made in the external subset or declared in + * external parameter entities. This means that parsed entities declared in + * the external subset need not be expanded by some classes of applications, + * and that the replacement value of the entity may not be available. When + * the replacement value is available, the corresponding DOMEntity + * node's child list represents the structure of that replacement text. + * Otherwise, the child list is empty. + *

The DOM Level 2 does not support editing DOMEntity nodes; if a + * user wants to make changes to the contents of an DOMEntity, + * every related DOMEntityReference node has to be replaced in the + * structure model by a clone of the DOMEntity's contents, and + * then the desired changes must be made to each of those clones instead. + * DOMEntity nodes and all their descendants are readonly. + *

An DOMEntity node does not have any parent.If the entity + * contains an unbound namespace prefix, the namespaceURI of + * the corresponding node in the DOMEntity node subtree is + * null. The same is true for DOMEntityReference + * nodes that refer to this entity, when they are created using the + * createEntityReference method of the DOMDocument + * interface. The DOM Level 2 does not support any mechanism to resolve + * namespace prefixes. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMEntity: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMEntity() {} + DOMEntity(const DOMEntity &other) : DOMNode(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMEntity & operator = (const DOMEntity &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMEntity() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMEntity interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * The public identifier associated with the entity, if specified. + * + * If the public identifier was not specified, this is null. + * + * @since DOM Level 1 + */ + virtual const XMLCh * getPublicId() const = 0; + + /** + * The system identifier associated with the entity, if specified. + * + * If the system identifier was not specified, this is null. + * + * @since DOM Level 1 + */ + virtual const XMLCh * getSystemId() const = 0; + + /** + * For unparsed entities, the name of the notation for the entity. + * + * For parsed entities, this is null. + * + * @since DOM Level 1 + */ + virtual const XMLCh * getNotationName() const = 0; + //@} + + /** @name Functions introduced in DOM Level 3. */ + //@{ + + /** + * An attribute specifying the encoding used for this entity at the time of parsing, + * when it is an external parsed entity. This is null if it an entity + * from the internal subset or if it is not known. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getInputEncoding() const = 0; + + /** + * An attribute specifying, as part of the text declaration, the encoding + * of this entity, when it is an external parsed entity. This is + * null otherwise. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getXmlEncoding() const = 0; + + /** + * An attribute specifying, as part of the text declaration, the version + * number of this entity, when it is an external parsed entity. This is + * null otherwise. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getXmlVersion() const = 0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMEntityReference.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMEntityReference.hpp new file mode 100644 index 000000000000..c88eb8248a53 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMEntityReference.hpp @@ -0,0 +1,96 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMENTITYREFERENCE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMENTITYREFERENCE_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * DOMEntityReference objects may be inserted into the structure + * model when an entity reference is in the source document, or when the + * user wishes to insert an entity reference. Note that character references + * and references to predefined entities are considered to be expanded by + * the HTML or XML processor so that characters are represented by their + * Unicode equivalent rather than by an entity reference. Moreover, the XML + * processor may completely expand references to entities while building the + * structure model, instead of providing DOMEntityReference + * objects. If it does provide such objects, then for a given + * DOMEntityReference node, it may be that there is no + * DOMEntity node representing the referenced entity. If such an + * DOMEntity exists, then the subtree of the + * DOMEntityReference node is in general a copy of the + * DOMEntity node subtree. However, this may not be true when an + * entity contains an unbound namespace prefix. In such a case, because the + * namespace prefix resolution depends on where the entity reference is, the + * descendants of the DOMEntityReference node may be bound to + * different namespace URIs. + *

As for DOMEntity nodes, DOMEntityReference nodes and + * all their descendants are readonly. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + * + * @since DOM Level 1 + */ + +class CDOM_EXPORT DOMEntityReference: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMEntityReference() {} + DOMEntityReference(const DOMEntityReference &other) : DOMNode(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMEntityReference & operator = (const DOMEntityReference &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMEntityReference() {}; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMError.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMError.hpp new file mode 100644 index 000000000000..a83c985cae38 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMError.hpp @@ -0,0 +1,173 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMERROR_HPP) +#define XERCESC_INCLUDE_GUARD_DOMERROR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMLocator; + + +/** + * DOMError is an interface that describes an error. + * + * @see DOMErrorHandler#handleError + * @since DOM Level 3 + */ + +class CDOM_EXPORT DOMError +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMError() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMError(const DOMError &); + DOMError & operator = (const DOMError &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMError() {}; + //@} + + // ----------------------------------------------------------------------- + // Class types + // ----------------------------------------------------------------------- + /** @name Public constants */ + //@{ + /** + * The severity of the error described by the DOMError. + * + *

DOM_SEVERITY_ERROR: + * The severity of the error described by the DOMError is error. + * A DOM_SEVERITY_ERROR may not cause the processing to stop if the error can + * be recovered, unless DOMErrorHandler::handleError() returns false.

+ * + *

DOM_SEVERITY_FATAL_ERROR + * The severity of the error described by the DOMError is fatal error. + * A DOM_SEVERITY_FATAL_ERROR will cause the normal processing to stop. The return + * value of DOMErrorHandler::handleError() is ignored unless the + * implementation chooses to continue, in which case the behavior becomes undefined.

+ * + *

DOM_SEVERITY_WARNING + * The severity of the error described by the DOMError is warning. + * A DOM_SEVERITY_WARNING will not cause the processing to stop, unless + * DOMErrorHandler::handleError() returns false.

+ * + * @since DOM Level 3 + */ + enum ErrorSeverity + { + DOM_SEVERITY_WARNING = 1, + DOM_SEVERITY_ERROR = 2, + DOM_SEVERITY_FATAL_ERROR = 3 + }; + //@} + + + // ----------------------------------------------------------------------- + // Virtual DOMError interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Get the severity of the error + * + * @see setSeverity + * @since DOM Level 3 + */ + virtual ErrorSeverity getSeverity() const = 0; + + /** + * Get the message describing the error that occured. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getMessage() const = 0; + + /** + * Get the location of the error + * + * @since DOM Level 3 + */ + virtual DOMLocator* getLocation() const = 0; + + /** + * The related platform dependent exception if any. + * + * @since DOM Level 3 + */ + virtual void* getRelatedException() const = 0; + + /** + * A XMLCh* indicating which related data is expected in + * relatedData. Users should refer to the specification of the error + * in order to find its XMLCh* type and relatedData + * definitions if any. + * + * Note: As an example, DOMDocument::normalizeDocument() does generate + * warnings when the "split-cdata-sections" parameter is in use. Therefore, the + * method generates a DOM_SEVERITY_WARNING with type "cdata-sections-splitted" + * and the first DOMCDATASection node in document order resulting from the split + * is returned by the relatedData attribute. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getType() const = 0; + + /** + * The related DOMError::getType dependent data if any. + * + * @since DOM Level 3 + */ + virtual void* getRelatedData() const = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMErrorHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMErrorHandler.hpp new file mode 100644 index 000000000000..70e061ebd9ec --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMErrorHandler.hpp @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMERRORHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMERRORHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMError; + +/** + * Basic interface for DOM error handlers. + * + *

DOMErrorHandler is a callback interface that the DOM implementation + * can call when reporting errors that happens while processing XML data, or + * when doing some other processing (e.g. validating a document).

+ * + *

The application that is using the DOM implementation is expected to + * implement this interface.

+ * + * @see DOMLSParser#getDomConfig + * @since DOM Level 3 + */ + +class CDOM_EXPORT DOMErrorHandler +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMErrorHandler() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMErrorHandler(const DOMErrorHandler &); + DOMErrorHandler & operator = (const DOMErrorHandler &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMErrorHandler() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMErrorHandler interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * This method is called on the error handler when an error occurs. + * If an exception is thrown from this method, it is considered to be equivalent of returning true. + * + * @param domError The error object that describes the error, this object + * may be reused by the DOM implementation across multiple + * calls to the handleError method. + * @return If the handleError method returns true the DOM + * implementation should continue as if the error didn't happen + * when possible, if the method returns false then the + * DOM implementation should stop the current processing when + * possible. + * + * @since DOM Level 3 + */ + virtual bool handleError(const DOMError& domError) = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMException.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMException.hpp new file mode 100644 index 000000000000..29dc152759d1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMException.hpp @@ -0,0 +1,257 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * DOM operations only raise exceptions in "exceptional" circumstances, i.e., + * when an operation is impossible to perform (either for logical reasons, + * because data is lost, or because the implementation has become unstable). + * In general, DOM methods return specific error values in ordinary + * processing situations, such as out-of-bound errors when using + * DOMNodeList. + *

Implementations should raise other exceptions under other circumstances. + * For example, implementations should raise an implementation-dependent + * exception if a null argument is passed. + *

Some languages and object systems do not support the concept of + * exceptions. For such systems, error conditions may be indicated using + * native error reporting mechanisms. For some bindings, for example, + * methods may return error codes similar to those listed in the + * corresponding method descriptions. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + * @since DOM Level 1 + */ + +class MemoryManager; + +class CDOM_EXPORT DOMException { +public: + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * ExceptionCode + * + *

INDEX_SIZE_ERR: + * If index or size is negative, or greater than the allowed value.

+ * + *

DOMSTRING_SIZE_ERR: + * If the specified range of text does not fit into a DOMString.

+ * + *

HIERARCHY_REQUEST_ERR: + * If any node is inserted somewhere it doesn't belong.

+ * + *

WRONG_DOCUMENT_ERR: + * If a node is used in a different document than the one that created it + * (that doesn't support it).

+ * + *

INVALID_CHARACTER_ERR: + * If an invalid or illegal character is specified, such as in a name. See + * production 2 in the XML specification for the definition of a legal + * character, and production 5 for the definition of a legal name + * character.

+ * + *

NO_DATA_ALLOWED_ERR: + * If data is specified for a node which does not support data.

+ * + *

NO_MODIFICATION_ALLOWED_ERR: + * If an attempt is made to modify an object where modifications are not + * allowed.

+ * + *

NOT_FOUND_ERR: + * If an attempt is made to reference a node in a context where it does + * not exist.

+ * + *

NOT_SUPPORTED_ERR: + * If the implementation does not support the requested type of object or + * operation.

+ * + *

INUSE_ATTRIBUTE_ERR: + * If an attempt is made to add an attribute that is already in use + * elsewhere.

+ * + * The above are since DOM Level 1 + * @since DOM Level 1 + * + *

INVALID_STATE_ERR: + * If an attempt is made to use an object that is not, or is no longer, + * usable.

+ * + *

SYNTAX_ERR: + * If an invalid or illegal string is specified.

+ * + *

INVALID_MODIFICATION_ERR: + * If an attempt is made to modify the type of the underlying object.

+ * + *

NAMESPACE_ERR: + * If an attempt is made to create or change an object in a way which is + * incorrect with regard to namespaces.

+ * + *

INVALID_ACCESS_ERR: + * If a parameter or an operation is not supported by the underlying + * object. + * + * The above are since DOM Level 2 + * @since DOM Level 2 + * + *

VALIDATION_ERR: + * If a call to a method such as insertBefore or + * removeChild would make the Node invalid + * with respect to "partial validity", this exception would be raised + * and the operation would not be done. + * + *

TYPE_MISMATCH_ERR: + * If the type of an object is incompatible with the expected type of + * the parameter associated to the object, this exception would be raised. + * + * The above is since DOM Level 3 + * @since DOM Level 3 + */ + enum ExceptionCode { + INDEX_SIZE_ERR = 1, + DOMSTRING_SIZE_ERR = 2, + HIERARCHY_REQUEST_ERR = 3, + WRONG_DOCUMENT_ERR = 4, + INVALID_CHARACTER_ERR = 5, + NO_DATA_ALLOWED_ERR = 6, + NO_MODIFICATION_ALLOWED_ERR = 7, + NOT_FOUND_ERR = 8, + NOT_SUPPORTED_ERR = 9, + INUSE_ATTRIBUTE_ERR = 10, + INVALID_STATE_ERR = 11, + SYNTAX_ERR = 12, + INVALID_MODIFICATION_ERR = 13, + NAMESPACE_ERR = 14, + INVALID_ACCESS_ERR = 15, + VALIDATION_ERR = 16, + TYPE_MISMATCH_ERR = 17 + }; + //@} + +public: + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + /** + * Default constructor for DOMException. + * + */ + DOMException(); + + /** + * Constructor which takes an error code and an optional message code. + * + * @param code The error code which indicates the exception + * @param messageCode The string containing the error message + * @param memoryManager The memory manager used to (de)allocate memory + */ + DOMException(short code, + short messageCode = 0, + MemoryManager* const memoryManager = XMLPlatformUtils::fgMemoryManager); + + /** + * Copy constructor. + * + * @param other The object to be copied. + */ + DOMException(const DOMException &other); + + //@} + + // ----------------------------------------------------------------------- + // Destructors + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + /** + * Destructor for DOMException. + * + */ + virtual ~DOMException(); + //@} + + +public: + // ----------------------------------------------------------------------- + // Getter + // ----------------------------------------------------------------------- + inline const XMLCh* getMessage() const; + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public variables */ + //@{ + /** + * A code value, from the set defined by the ExceptionCode enum, + * indicating the type of error that occured. + */ + short code; + + /** + * A string value. Applications may use this field to hold an error + * message. The field value is not set by the DOM implementation, + * meaning that the string will be empty when an exception is first + * thrown. + */ + const XMLCh *msg; + //@} + +protected: + MemoryManager* fMemoryManager; + +private: + + /** + * A boolean value. + * If the message is provided by the applications, it is not + * adopted. + * If the message is resolved by the DOM implementation, it is + * owned. + */ + bool fMsgOwned; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMException & operator = (const DOMException &); +}; + +inline const XMLCh* DOMException::getMessage() const +{ + return msg; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMImplementation.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMImplementation.hpp new file mode 100644 index 000000000000..e03ee6932022 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMImplementation.hpp @@ -0,0 +1,249 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATION_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMDocument; +class DOMDocumentType; + +/** + * The DOMImplementation interface provides a number of methods + * for performing operations that are independent of any particular instance + * of the document object model. + */ + +class CDOM_EXPORT DOMImplementation : public DOMImplementationLS +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMImplementation() {}; // no plain constructor + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMImplementation(const DOMImplementation &); // no copy constructor. + DOMImplementation & operator = (const DOMImplementation &); // No Assignment + //@} + + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMImplementation() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMImplementation interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + /** + * Test if the DOM implementation implements a specific feature. + * @param feature The name of the feature to test (case-insensitive). The + * values used by DOM features are defined throughout the DOM Level 2 + * specifications and listed in the section. The name must be an XML + * name. To avoid possible conflicts, as a convention, names referring + * to features defined outside the DOM specification should be made + * unique. + * @param version This is the version number of the feature to test. In + * Level 2, the string can be either "2.0" or "1.0". If the version is + * not specified, supporting any version of the feature causes the + * method to return true. + * @return true if the feature is implemented in the + * specified version, false otherwise. + * @since DOM Level 1 + */ + virtual bool hasFeature(const XMLCh *feature, const XMLCh *version) const = 0; + //@} + + // ----------------------------------------------------------------------- + // Functions introduced in DOM Level 2 + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 2 */ + //@{ + /** + * Creates an empty DOMDocumentType node. Entity declarations + * and notations are not made available. Entity reference expansions and + * default attribute additions do not occur. It is expected that a + * future version of the DOM will provide a way for populating a + * DOMDocumentType. + * @param qualifiedName The qualified name of the document type to be + * created. + * @param publicId The external subset public identifier. + * @param systemId The external subset system identifier. + * @return A new DOMDocumentType node with + * ownerDocument set to null. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified qualified name + * contains an illegal character. + *
NAMESPACE_ERR: Raised if the qualifiedName is + * malformed. + *
NOT_SUPPORTED_ERR: May be raised by DOM implementations which do + * not support the "XML" feature, if they choose not to + * support this method. Other features introduced in the future, by + * the DOM WG or in extensions defined by other groups, may also + * demand support for this method; please consult the definition of + * the feature to see if it requires this method. + * @since DOM Level 2 + */ + virtual DOMDocumentType *createDocumentType(const XMLCh *qualifiedName, + const XMLCh *publicId, + const XMLCh *systemId) = 0; + + /** + * Creates a DOMDocument object of the specified type with its document + * element. + * @param namespaceURI The namespace URI of the document element to + * create. + * @param qualifiedName The qualified name of the document element to be + * created. + * @param doctype The type of document to be created or null. + * When doctype is not null, its + * ownerDocument attribute is set to the document + * being created. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @return A new DOMDocument object. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified qualified name + * contains an illegal character. + *
NAMESPACE_ERR: Raised if the qualifiedName is + * malformed, if the qualifiedName has a prefix and the + * namespaceURI is null, or if the + * qualifiedName has a prefix that is "xml" and the + * namespaceURI is different from " + * http://www.w3.org/XML/1998/namespace" , or if the DOM + * implementation does not support the "XML" feature but + * a non-null namespace URI was provided, since namespaces were + * defined by XML. + *
WRONG_DOCUMENT_ERR: Raised if doctype has already + * been used with a different document or was created from a different + * implementation. + *
NOT_SUPPORTED_ERR: May be raised by DOM implementations which do + * not support the "XML" feature, if they choose not to support this + * method. Other features introduced in the future, by the DOM WG or + * in extensions defined by other groups, may also demand support for + * this method; please consult the definition of the feature to see if + * it requires this method. + * @since DOM Level 2 + */ + + virtual DOMDocument *createDocument(const XMLCh *namespaceURI, + const XMLCh *qualifiedName, + DOMDocumentType *doctype, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + //@} + // ----------------------------------------------------------------------- + // Functions introduced in DOM Level 3 + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * This method returns a specialized object which implements the specialized APIs + * of the specified feature and version, as specified in DOM Features. + * This method also allow the implementation to provide specialized objects which + * do not support the DOMImplementation interface. + * + * @param feature The name of the feature requested (case-insensitive). + * Note that any plus sign "+" prepended to the name of the feature will + * be ignored since it is not significant in the context of this method. + * @param version This is the version number of the feature to test. + * @return Returns an object which implements the specialized APIs of the specified + * feature and version, if any, or null if there is no object which implements + * interfaces associated with that feature. + * @since DOM Level 3 + */ + virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const = 0; + + //@} + + // ----------------------------------------------------------------------- + // Non-standard extension + // ----------------------------------------------------------------------- + /** @name Non-standard extension */ + //@{ + /** + * Non-standard extension + * + * Create a completely empty document that has neither a root element or a doctype node. + */ + virtual DOMDocument *createDocument(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + /** + * Non-standard extension + * + * Factory method for getting a DOMImplementation object. + * The DOM implementation retains ownership of the returned object. + * Application code should NOT delete it. + */ + static DOMImplementation *getImplementation(); + + /** + * Non-standard extension + * + * Load the default error text message for DOMException. + * @param msgToLoad The DOM ExceptionCode id to be processed + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @return true if the message is successfully loaded + */ + static bool loadDOMExceptionMsg + ( + const short msgToLoad + , XMLCh* const toFill + , const XMLSize_t maxChars + ); + + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMImplementationLS.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMImplementationLS.hpp new file mode 100644 index 000000000000..9687c667b5b2 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMImplementationLS.hpp @@ -0,0 +1,183 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLS_HPP) +#define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLS_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMLSParser; +class DOMLSSerializer; +class DOMLSInput; +class DOMLSOutput; +class MemoryManager; +class XMLGrammarPool; + +/** + *

DOMImplementationLS contains the factory methods for + * creating Load and Save objects.

+ * + *

An object that implements DOMImplementationLS is obtained by doing a + * binding specific cast from DOMImplementation to DOMImplementationLS. + * Implementations supporting the Load and Save feature must implement the + * DOMImplementationLS interface on whatever object implements the + * DOMImplementation interface.

+ * + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMImplementationLS +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMImplementationLS() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMImplementationLS(const DOMImplementationLS &); + DOMImplementationLS & operator = (const DOMImplementationLS &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMImplementationLS() {}; + //@} + + // ----------------------------------------------------------------------- + // Public constants + // ----------------------------------------------------------------------- + /** @name Public constants */ + //@{ + /** + * Create a synchronous or an asynchronous DOMLSParser. + * @see createLSParser(const DOMImplementationLSMode mode, const XMLCh* const schemaType) + * @since DOM Level 3 + * + */ + enum DOMImplementationLSMode + { + MODE_SYNCHRONOUS = 1, + MODE_ASYNCHRONOUS = 2 + }; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMImplementationLS interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Factory create methods + // ----------------------------------------------------------------------- + /** + * Create a new DOMLSParser. The newly constructed parser may then be configured + * by means of its DOMConfiguration object, and used to parse documents by + * means of its parse method. + * + * @param mode The mode argument is either MODE_SYNCHRONOUS + * or MODE_ASYNCHRONOUS, if mode is MODE_SYNCHRONOUS + * then the DOMLSParser that is created will operate in synchronous + * mode, if it's MODE_ASYNCHRONOUS then the DOMLSParser + * that is created will operate in asynchronous mode. + * @param schemaType An absolute URI representing the type of the schema + * language used during the load of a DOMDocument using the newly + * created DOMLSParser. Note that no lexical checking is done on + * the absolute URI. In order to create a DOMLSParser for any kind + * of schema types (i.e. the DOMLSParser will be free to use any + * schema found), use the value NULL. + * Note: For W3C XML Schema [XML Schema Part 1], applications must use + * the value "http://www.w3.org/2001/XMLSchema". For XML DTD [XML 1.0], + * applications must use the value "http://www.w3.org/TR/REC-xml". + * Other Schema languages are outside the scope of the W3C and therefore should + * recommend an absolute URI in order to use this method. + * @param manager Pointer to the memory manager to be used to allocate objects. + * @param gramPool The collection of cached grammars. + * @return The newly created DOMLSParser object. This + * DOMLSParser is either synchronous or asynchronous depending + * on the value of the mode argument. + * @exception DOMException NOT_SUPPORTED_ERR: Raised if the requested mode + * or schema type is not supported. + * + * @see DOMLSParser + * @since DOM Level 3 + */ + virtual DOMLSParser* createLSParser(const DOMImplementationLSMode mode, + const XMLCh* const schemaType, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager, + XMLGrammarPool* const gramPool = 0) = 0; + + + /** + * Create a new DOMLSSerializer. DOMLSSerializer is used to serialize a DOM tree + * back into an XML document. + * + * @return The newly created DOMLSSerializer object. + * + * @see DOMLSSerializer + * @since DOM Level 3 + */ + virtual DOMLSSerializer* createLSSerializer(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + /** + * Create a new "empty" DOMLSInput. + * + * @return The newly created DOMLSInput object. + * + * @see DOMLSInput + * @since DOM Level 3 + */ + virtual DOMLSInput* createLSInput(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + /** + * Create a new "empty" LSOutput. + * + * @return The newly created LSOutput object. + * + * @see LSOutput + * @since DOM Level 3 + */ + virtual DOMLSOutput* createLSOutput(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + //@} +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMImplementationList.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMImplementationList.hpp new file mode 100644 index 000000000000..449ba48d41ce --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMImplementationList.hpp @@ -0,0 +1,124 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLIST_HPP) +#define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLIST_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMImplementation; + + +/** + * The DOMImplementationList interface provides the abstraction of an ordered + * collection of DOM implementations, without defining or constraining how this collection + * is implemented. The items in the DOMImplementationList are accessible via + * an integral index, starting from 0. + */ + +class CDOM_EXPORT DOMImplementationList { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMImplementationList() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMImplementationList(const DOMImplementationList &); + DOMImplementationList & operator = (const DOMImplementationList &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMImplementationList() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMImplementationList interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the index item in the collection. + * + * If index is greater than or equal to the number of DOMImplementation in + * the list, this returns null. + * + * @param index Index into the collection. + * @return The DOMImplementation at the indexth position in the + * DOMImplementationList, or null if that is not a valid + * index. + * @since DOM Level 3 + */ + virtual DOMImplementation *item(XMLSize_t index) const = 0; + + /** + * Returns the number of DOMImplementation in the list. + * + * The range of valid child node indices is 0 to length-1 inclusive. + * @since DOM Level 3 + */ + virtual XMLSize_t getLength() const = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this list is no longer in use + * and that the implementation may relinquish any resources associated with it and + * its associated children. + * + * Access to a released object will lead to unexpected result. + * + */ + virtual void release() = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMImplementationRegistry.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMImplementationRegistry.hpp new file mode 100644 index 000000000000..91ce67a6b0af --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMImplementationRegistry.hpp @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONREGISTRY_HPP) +#define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONREGISTRY_HPP + + /** + * This class holds the list of registered DOMImplementations. Implementation + * or application can register DOMImplementationSource to the registry, and + * then can query DOMImplementation based on a list of requested features. + * + *

This provides an application with an implementation independent starting + * point. + * + * @see DOMImplementation + * @see DOMImplementationList + * @see DOMImplementationSource + * @since DOM Level 3 + */ + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMImplementation; +class DOMImplementationSource; +class DOMImplementationList; + +class CDOM_EXPORT DOMImplementationRegistry +{ +public: + // ----------------------------------------------------------------------- + // Static DOMImplementationRegistry interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * Return the first registered implementation that has the desired features, + * or null if none is found. + * + * @param features A string that specifies which features are required. + * This is a space separated list in which each feature is + * specified by its name optionally followed by a space + * and a version number. + * This is something like: "XML 1.0 Traversal 2.0" + * @return An implementation that has the desired features, or + * null if this source has none. + * @since DOM Level 3 + */ + static DOMImplementation* getDOMImplementation(const XMLCh* features); + + /** + * Return the list of registered implementation that have the desired features. + * + * @param features A string that specifies which features are required. + * This is a space separated list in which each feature is + * specified by its name optionally followed by a space + * and a version number. + * This is something like: "XML 1.0 Traversal 2.0" + * @return A DOMImplementationList object that contains the DOMImplementation + * that have the desired features + * @since DOM Level 3 + */ + static DOMImplementationList* getDOMImplementationList(const XMLCh* features); + + /** + * Register an implementation. + * + * @param source A DOMImplementation Source object to be added to the registry. + * The registry does NOT adopt the source object. Users still own it. + * @since DOM Level 3 + */ + static void addSource(DOMImplementationSource* source); + //@} + +private: + DOMImplementationRegistry(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMImplementationSource.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMImplementationSource.hpp new file mode 100644 index 000000000000..7afc03afbf7a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMImplementationSource.hpp @@ -0,0 +1,112 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONSOURCE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONSOURCE_HPP + + /** + * This interface permits a DOM implementer to supply one or more + * implementations, based upon requested features and versions. Each implemented + * DOMImplementationSource object is listed in the + * binding-specific list of available sources so that its + * DOMImplementation objects are made available. + * + * @since DOM Level 3 + */ +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMImplementation; +class DOMImplementationList; + +class CDOM_EXPORT DOMImplementationSource +{ +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMImplementationSource() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMImplementationSource(const DOMImplementationSource &); + DOMImplementationSource & operator = (const DOMImplementationSource &); + //@} + + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMImplementationSource() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMImplementationSource interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * A method to request the first DOM implementation that supports the specified features. + * + * @param features A string that specifies which features are required. + * This is a space separated list in which each feature is specified + * by its name optionally followed by a space and a version number. + * This is something like: "XML 1.0 Traversal 2.0" + * @return An implementation that has the desired features, or + * null if this source has none. + * @since DOM Level 3 + */ + virtual DOMImplementation* getDOMImplementation(const XMLCh* features) const = 0; + + /** + * A method to request a list of DOM implementations that support the specified features and versions, + * + * @param features A string that specifies which features are required. + * This is a space separated list in which each feature is specified + * by its name optionally followed by a space and a version number. + * This is something like: "XML 1.0 Traversal 2.0" + * @return A list of DOM implementations that support the desired features + * @since DOM Level 3 + */ + virtual DOMImplementationList* getDOMImplementationList(const XMLCh* features) const = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSException.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSException.hpp new file mode 100644 index 000000000000..862c02b2331f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSException.hpp @@ -0,0 +1,123 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSEXCEPTION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * Parser or write operations may throw an LSException if the processing is stopped. + * The processing can be stopped due to a DOMError with a severity of + * DOMError::DOM_SEVERITY_FATAL_ERROR or a non recovered DOMError::DOM_SEVERITY_ERROR, + * or if DOMErrorHandler::handleError() returned false. + *

Note: As suggested in the definition of the constants in the DOMError + * interface, a DOM implementation may choose to continue after a fatal error, but the + * resulting DOM tree is then implementation dependent. + *

See also the + * Document Object Model (DOM) Level 3 Load and Save Specification. + * @since DOM Level 3 + */ + +class MemoryManager; + +class CDOM_EXPORT DOMLSException : public DOMException { +public: + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Contants */ + //@{ + /** + * ExceptionCode + * + *

PARSE_ERR: + * If an attempt was made to load a document, or an XML Fragment, using DOMLSParser + * and the processing has been stopped.

+ * + *

SERIALIZE_ERR: + * If an attempt was made to serialize a Node using LSSerializer and the processing + * has been stopped.

+ * + * @since DOM Level 3 + */ + enum LSExceptionCode { + PARSE_ERR = 81, + SERIALIZE_ERR = 82 + }; + //@} + + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + /** + * Default constructor for DOMLSException. + * + */ + DOMLSException(); + + /** + * Constructor which takes an error code and a message. + * + * @param code The error code which indicates the exception + * @param messageCode The string containing the error message + * @param memoryManager The memory manager used to (de)allocate memory + */ + DOMLSException(short code, + short messageCode, + MemoryManager* const memoryManager); + + /** + * Copy constructor. + * + * @param other The object to be copied. + */ + DOMLSException(const DOMLSException &other); + + //@} + + // ----------------------------------------------------------------------- + // Destructors + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + /** + * Destructor for DOMLSException. + * + */ + virtual ~DOMLSException(); + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMLSException & operator = (const DOMLSException &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSInput.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSInput.hpp new file mode 100644 index 000000000000..1a6ebc82a9f8 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSInput.hpp @@ -0,0 +1,274 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSINPUT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSINPUT_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class InputSource; + + +/** + * This interface represents a single input source for an XML entity. + * + *

This interface allows an application to encapsulate information about + * an input source in a single object, which may include a public identifier, + * a system identifier, a byte stream (possibly with a specified encoding), + * and/or a character stream.

+ * + *

There are two places that the application will deliver this input source + * to the parser: as the argument to the parse method, or as the return value + * of the DOMLSResourceResolver.resolveResource method.

+ * + *

The DOMLSParser will use the DOMLSInput object to determine how to + * read XML input. If there is a character stream available, the parser will + * read that stream directly; if not, the parser will use a byte stream, if + * available; if neither a character stream nor a byte stream is available, + * the parser will attempt to open a URI connection to the resource identified + * by the system identifier.

+ * + *

A DOMLSInput object belongs to the application: the parser shall + * never modify it in any way (it may modify a copy if necessary).

+ * + * @see DOMLSParser#parse + * @see DOMLSResourceResolver#resolveResource + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMLSInput +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLSInput() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLSInput(const DOMLSInput &); + DOMLSInput & operator = (const DOMLSInput &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLSInput() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMLSInput interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * String data to parse. If provided, this will always be treated as a sequence of 16-bit units (UTF-16 encoded characters). + * It is not a requirement to have an XML declaration when using stringData. If an XML declaration is present, the value of + * the encoding attribute will be ignored. + * + */ + virtual const XMLCh* getStringData() const = 0; + + /** + * Returns the byte stream for this input source. + * + * @see InputSource + */ + virtual InputSource* getByteStream() const = 0; + + /** + * An input source can be set to force the parser to assume a particular + * encoding for the data that input source reprsents, via the setEncoding() + * method. This method returns name of the encoding that is to be forced. + * If the encoding has never been forced, it returns a null pointer. + * + * @return The forced encoding, or null if none was supplied. + * @see #setEncoding + * @since DOM Level 3 + */ + virtual const XMLCh* getEncoding() const = 0; + + + /** + * Get the public identifier for this input source. + * + * @return The public identifier, or null if none was supplied. + * @see #setPublicId + * @since DOM Level 3 + */ + virtual const XMLCh* getPublicId() const = 0; + + + /** + * Get the system identifier for this input source. + * + *

If the system ID is a URL, it will be fully resolved.

+ * + * @return The system identifier. + * @see #setSystemId + * @since DOM Level 3 + */ + virtual const XMLCh* getSystemId() const = 0; + + + /** + * Get the base URI to be used for resolving relative URIs to absolute + * URIs. If the baseURI is itself a relative URI, the behavior is + * implementation dependent. + * + * @return The base URI. + * @see #setBaseURI + * @since DOM Level 3 + */ + virtual const XMLCh* getBaseURI() const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + // ----------------------------------------------------------------------- + /** + * Sets the UTF-16 string for this input source. + * + */ + virtual void setStringData(const XMLCh* data) = 0; + + /** + * Sets the byte stream for this input source. + * + * @see BinInputStream + */ + virtual void setByteStream(InputSource* stream) = 0; + + /** + * Set the encoding which will be required for use with the XML text read + * via a stream opened by this input source. + * + *

This is usually not set, allowing the encoding to be sensed in the + * usual XML way. However, in some cases, the encoding in the file is known + * to be incorrect because of intermediate transcoding, for instance + * encapsulation within a MIME document. + * + * @param encodingStr The name of the encoding to force. + * @since DOM Level 3 + */ + virtual void setEncoding(const XMLCh* const encodingStr) = 0; + + + /** + * Set the public identifier for this input source. + * + *

The public identifier is always optional: if the application writer + * includes one, it will be provided as part of the location information.

+ * + * @param publicId The public identifier as a string. + * @see #getPublicId + * @since DOM Level 3 + */ + virtual void setPublicId(const XMLCh* const publicId) = 0; + + /** + * Set the system identifier for this input source. + * + *

The system id is always required. The public id may be used to map + * to another system id, but the system id must always be present as a fall + * back.

+ * + *

If the system ID is a URL, it must be fully resolved.

+ * + * @param systemId The system identifier as a string. + * @see #getSystemId + * @since DOM Level 3 + */ + virtual void setSystemId(const XMLCh* const systemId) = 0; + + /** + * Set the base URI to be used for resolving relative URIs to absolute + * URIs. If the baseURI is itself a relative URI, the behavior is + * implementation dependent. + * + * @param baseURI The base URI. + * @see #getBaseURI + * @since DOM Level 3 + */ + virtual void setBaseURI(const XMLCh* const baseURI) = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + + /** + * Indicates if the parser should issue fatal error if this input source + * is not found. If set to false, the parser issue warning message instead. + * + * @param flag True if the parser should issue fatal error if this input source is not found. + * If set to false, the parser issue warning message instead. (Default: true) + * + * @see #getIssueFatalErrorIfNotFound + */ + virtual void setIssueFatalErrorIfNotFound(bool flag) = 0; + + + /** + * Get the flag that indicates if the parser should issue fatal error if this input source + * is not found. + * + * @return True if the parser should issue fatal error if this input source is not found. + * False if the parser issue warning message instead. + * @see #setIssueFatalErrorIfNotFound + */ + virtual bool getIssueFatalErrorIfNotFound() const = 0; + + /** + * Called to indicate that this DOMLSInput is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSOutput.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSOutput.hpp new file mode 100644 index 000000000000..b59a6c0b5041 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSOutput.hpp @@ -0,0 +1,169 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSOUTPUT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSOUTPUT_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class XMLFormatTarget; + + +/** + * This interface represents an output destination for data. + * + * @see XMLFormatTarget + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMLSOutput +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLSOutput() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLSOutput(const DOMLSOutput &); + DOMLSOutput & operator = (const DOMLSOutput &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLSOutput() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMLSOutput interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the byte stream for this input source. + * + * @see InputSource + */ + virtual XMLFormatTarget* getByteStream() const = 0; + + /** + * An input source can be set to force the parser to assume a particular + * encoding for the data that input source reprsents, via the setEncoding() + * method. This method returns name of the encoding that is to be forced. + * If the encoding has never been forced, it returns a null pointer. + * + * @return The forced encoding, or null if none was supplied. + * @see #setEncoding + * @since DOM Level 3 + */ + virtual const XMLCh* getEncoding() const = 0; + + /** + * Get the system identifier for this input source. + * + *

If the system ID is a URL, it will be fully resolved.

+ * + * @return The system identifier. + * @see #setSystemId + * @since DOM Level 3 + */ + virtual const XMLCh* getSystemId() const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Sets the byte stream for this input source. + * + * @see BinInputStream + */ + virtual void setByteStream(XMLFormatTarget* stream) = 0; + + /** + * Set the encoding which will be required for use with the XML text read + * via a stream opened by this input source. + * + *

This is usually not set, allowing the encoding to be sensed in the + * usual XML way. However, in some cases, the encoding in the file is known + * to be incorrect because of intermediate transcoding, for instance + * encapsulation within a MIME document. + * + * @param encodingStr The name of the encoding to force. + * @since DOM Level 3 + */ + virtual void setEncoding(const XMLCh* const encodingStr) = 0; + + /** + * Set the system identifier for this input source. + * + *

The system id is always required. The public id may be used to map + * to another system id, but the system id must always be present as a fall + * back.

+ * + *

If the system ID is a URL, it must be fully resolved.

+ * + * @param systemId The system identifier as a string. + * @see #getSystemId + * @since DOM Level 3 + */ + virtual void setSystemId(const XMLCh* const systemId) = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this DOMLSOutput is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSParser.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSParser.hpp new file mode 100644 index 000000000000..dabdffcd82b8 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSParser.hpp @@ -0,0 +1,766 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + * + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSPARSER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSPARSER_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMErrorHandler; +class DOMLSInput; +class DOMNode; +class DOMDocument; + +/** + * DOMLSParser provides an API for parsing XML documents and building the + * corresponding DOM document tree. A DOMLSParser instance is obtained from + * the DOMImplementationLS interface by invoking its createLSParser method. + * + * @since DOM Level 3 + * + */ +class CDOM_EXPORT DOMLSParser +{ +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLSParser() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLSParser(const DOMLSParser &); + DOMLSParser & operator = (const DOMLSParser &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLSParser() {}; + //@} + + // ----------------------------------------------------------------------- + // Class types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * A set of possible actions for the parseWithContext method. + * + *

ACTION_APPEND_AS_CHILDREN: + * Append the result of the parse operation as children of the context node. + * For this action to work, the context node must be a DOMElement + * or a DOMDocumentFragment.

+ * + *

ACTION_INSERT_AFTER: + * Insert the result of the parse operation as the immediately following sibling + * of the context node. For this action to work the context node's parent must + * be a DOMElement or a DOMDocumentFragment.

+ * + *

ACTION_INSERT_BEFORE: + * Insert the result of the parse operation as the immediately preceding sibling + * of the context node. For this action to work the context node's parent must + * be a DOMElement or a DOMDocumentFragment.

+ * + *

ACTION_REPLACE: + * Replace the context node with the result of the parse operation. For this + * action to work, the context node must have a parent, and the parent must be + * a DOMElement or a DOMDocumentFragment.

+ * + *

ACTION_REPLACE_CHILDREN: + * Replace all the children of the context node with the result of the parse + * operation. For this action to work, the context node must be a DOMElement, + * a DOMDocument, or a DOMDocumentFragment.

+ * + * @see parseWithContext(...) + * @since DOM Level 3 + */ + enum ActionType + { + ACTION_APPEND_AS_CHILDREN = 1, + ACTION_REPLACE_CHILDREN = 2, + ACTION_INSERT_BEFORE = 3, + ACTION_INSERT_AFTER = 4, + ACTION_REPLACE = 5 + }; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMLSParser interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** + * Get a pointer to the DOMConfiguration object used when parsing + * an input source. + * This DOMConfiguration is specific to the parse operation. + * No parameter values from this DOMConfiguration object are passed + * automatically to the DOMConfiguration object on the + * DOMDocument that is created, or used, by the parse operation. + * The DOM application is responsible for passing any needed parameter values + * from this DOMConfiguration object to the DOMConfiguration + * object referenced by the DOMDocument object. + * + * In addition to the parameters recognized in on the DOMConfiguration + * interface defined in [DOM Level 3 Core], the DOMConfiguration objects + * for DOMLSParser add or modify the following parameters: + * + * "charset-overrides-xml-encoding" + * true [optional] (default) + * If a higher level protocol such as HTTP [IETF RFC 2616] provides an + * indication of the character encoding of the input stream being processed, + * that will override any encoding specified in the XML declaration or the + * Text declaration (see also section 4.3.3, "Character Encoding in Entities", + * in [XML 1.0]). Explicitly setting an encoding in the DOMLSInput + * overrides any encoding from the protocol. + * false [required] + * The parser ignores any character set encoding information from higher-level + * protocols. + * + * "disallow-doctype" + * true + * Throw a fatal "doctype-not-allowed" error if a doctype node is found while + * parsing the document. This is useful when dealing with things like SOAP + * envelopes where doctype nodes are not allowed. + * false (default) + * Allow doctype nodes in the document. + * + * "ignore-unknown-character-denormalizations" + * true [required] (default) + * If, while verifying full normalization when [XML 1.1] is supported, a + * processor encounters characters for which it cannot determine the normalization + * properties, then the processor will ignore any possible denormalizations + * caused by these characters. + * This parameter is ignored for [XML 1.0]. + * false [optional] + * Report an fatal "unknown-character-denormalization" error if a character + * is encountered for which the processor cannot determine the normalization + * properties. + * + * "infoset" + * See the definition of DOMConfiguration for a description of this parameter. + * Unlike in [DOM Level 3 Core], this parameter will default to true for DOMLSParser. + * + * "namespaces" + * true [required] (default) + * Perform the namespace processing as defined in [XML Namespaces] and + * [XML Namespaces 1.1]. + * false [optional] + * Do not perform the namespace processing. + * + * "resource-resolver" [required] + * A pointer to a DOMLSResourceResolver object, or NULL. If the value of this parameter + * is not null when an external resource (such as an external XML entity or an XML schema + * location) is encountered, the implementation will request that the DOMLSResourceResolver + * referenced in this parameter resolves the resource. + * + * "supported-media-types-only" + * true [optional] + * Check that the media type of the parsed resource is a supported media type. If + * an unsupported media type is encountered, a fatal error of type "unsupported-media-type" + * will be raised. The media types defined in [IETF RFC 3023] must always be accepted. + * false [required] (default) + * Accept any media type. + * + * "validate" + * See the definition of DOMConfiguration for a description of this parameter. + * Unlike in [DOM Level 3 Core], the processing of the internal subset is always accomplished, even + * if this parameter is set to false. + * + * "validate-if-schema" + * See the definition of DOMConfiguration for a description of this parameter. + * Unlike in [DOM Level 3 Core], the processing of the internal subset is always accomplished, even + * if this parameter is set to false. + * + * "well-formed" + * See the definition of DOMConfiguration for a description of this parameter. + * Unlike in [DOM Level 3 Core], this parameter cannot be set to false. + * + * In addition to these, Xerces adds these non standard parameters: + * + * "http://apache.org/xml/properties/entity-resolver" + * A pointer to a XMLEntityResolver object, or NULL. If the value of this parameter + * is not null when an external resource (such as an external XML entity or an XML schema + * location) is encountered, the implementation will request that the XMLEntityResolver + * referenced in this parameter resolves the resource. + * + * "http://apache.org/xml/properties/schema/external-schemaLocation" + * A string holding a set of [namespaceUri schemaLocation] entries that will be treated as + * the content of the attribute xsi:schemaLocation of the root element + * + * "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation" + * A string holding the schemaLocation for the empty namespace URI that will be treated as + * the content of the attribute xsi:noNamespaceSchemaLocation of the root element + * + * "http://apache.org/xml/properties/security-manager" + * A pointer to a SecurityManager object that will control how many entity references will be + * expanded during parsing + * + * "http://apache.org/xml/properties/scannerName" + * A string holding the type of scanner used while parsing. The valid names are: + *
    + *
  • IGXMLScanner: the default one, capable of both XMLSchema and DTD validation
  • + *
  • SGXMLScanner: a scanner that can only perform XMLSchema validation
  • + *
  • DGXMLScanner: a scanner that can only perform DTD validation
  • + *
  • WFXMLScanner: a scanner that cannot perform any type validation, only well-formedness
  • + *
+ * + * "http://apache.org/xml/properties/parser-use-DOMDocument-from-Implementation" + * A string holding the capabilities of the DOM implementation to be used to create the DOMDocument + * resulting from the parse operation. For instance, "LS" or "Core" + * + * "http://apache.org/xml/features/validation/schema" + * true + * Enable XMLSchema validation (note that also namespace processing should be enabled) + * false (default) + * Don't perform XMLSchema validation + * + * "http://apache.org/xml/features/validation/schema-full-checking" + * true + * Turn on full XMLSchema checking (e.g. Unique Particle Attribution) + * false (default) + * Don't perform full XMLSchema checking + * + * "http://apache.org/xml/features/validating/load-schema" + * true (default) + * Allow the parser to load schemas that are not in the grammar pool + * false + * Schemas that are not in the grammar pool are ignored + * + * "http://apache.org/xml/features/dom/user-adopts-DOMDocument" + * true + * The DOMDocument objects returned by parse will be owned by the caller + * false (default) + * The DOMDocument objects returned by parse will be owned by this DOMLSParser + * and deleted when released + * + * "http://apache.org/xml/features/nonvalidating/load-external-dtd" + * true (default) + * Allow the parser to load external DTDs + * false + * References to external DTDs will be ignored + * + * "http://apache.org/xml/features/continue-after-fatal-error" + * true + * Parsing should try to continue even if a fatal error has been triggered, trying to generate a DOM tree + * from a non well-formed XML + * false (default) + * Violation of XML rules will abort parsing + * + * "http://apache.org/xml/features/validation-error-as-fatal" + * true + * Validation errors are treated as fatal errors, and abort parsing (unless "continue-after-fatal-error" + * has been specified) + * false (default) + * Validation errors are normal errors + * + * "http://apache.org/xml/features/validation/cache-grammarFromParse" + * true + * XMLSchemas referenced by an XML file are cached in order to be reused by other parse operations + * false (default) + * XMLSchemas loaded during a parse operation will be discarded before the next one + * + * "http://apache.org/xml/features/validation/use-cachedGrammarInParse" + * true + * During this parse operation, reuse the XMLSchemas found in the cache + * false (default) + * Don't reuse the XMLSchemas found in the cache + * + * "http://apache.org/xml/features/calculate-src-ofs" + * true + * During parsing update the position in the source stream + * false (default) + * Don't waste time computing the position in the source stream + * + * "http://apache.org/xml/features/standard-uri-conformant" + * true + * Require that every URL being resolved is made of valid URL characters only + * false (default) + * Allow invalid URL characters in URL (e.g. spaces) + * + * "http://apache.org/xml/features/dom-has-psvi-info" + * true + * Add schema informations to DOMElement and DOMAttr nodes in the output DOM tree + * false (default) + * Don't store schema informations in the output DOM tree + * + * "http://apache.org/xml/features/generate-synthetic-annotations" + * true + * Create annotation objects in the representation of the loaded XMLSchemas + * false (default) + * Discard annotations found in the loaded XMLSchemas + * + * "http://apache.org/xml/features/validate-annotations" + * true + * Check that annotations are valid according to their XMLSchema definition + * false (default) + * Don't validate annotations + * + * "http://apache.org/xml/features/validation/identity-constraint-checking" + * true (default) + * Enforce identity constraints specified in the XMLSchema + * false + * Don't enforce identity constraints + * + * "http://apache.org/xml/features/validation/ignoreCachedDTD" + * true + * Don't reuse DTDs found in the cache, even if use-cachedGrammarInParse is true + * false (default) + * Reuse DTDs found in the cache, if use-cachedGrammarInParse is true + * + * "http://apache.org/xml/features/schema/ignore-annotations" + * true + * Don't process annotations found in an XMLSchema + * false (default) + * Process the annotations found in an XMLSchema + * + * "http://apache.org/xml/features/disable-default-entity-resolution" + * true + * Entities will be resolved only by a resolver installed by the user + * false (default) + * If the entity resolver has not been installed, or it refuses to resolve the given entity, the + * parser will try to locate it himself + * + * "http://apache.org/xml/features/validation/schema/skip-dtd-validation" + * true + * If XMLSchema validation is true, DTD validation will not be performed + * false (default) + * If a DTD is found, it will be used to validate the XML + * + * @return The pointer to the configuration object. + * @since DOM Level 3 + */ + virtual DOMConfiguration* getDomConfig() = 0; + + /** + * Get a const pointer to the application filter + * + * This method returns the installed application filter. If no filter + * has been installed, then it will be a zero pointer. + * + * @return A const pointer to the installed application filter + * @since DOM Level 3 + */ + virtual const DOMLSParserFilter* getFilter() const = 0; + + /** + * Return whether the parser is asynchronous + * + * @return true if the DOMLSParser is asynchronous, + * false if it is synchronous + * @since DOM Level 3 + */ + virtual bool getAsync() const = 0; + + /** + * Return whether the parser is busy parsing + * + * @return true if the DOMLSParser is currently busy + * loading a document, otherwise false. + * @since DOM Level 3 + */ + virtual bool getBusy() const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Set the application filter + * + * When the application provides a filter, the parser will call out to + * the filter at the completion of the construction of each DOMElement + * node. The filter implementation can choose to remove the element from the + * document being constructed or to terminate the parse early. + * The filter is invoked after the operations requested by the DOMConfiguration + * parameters have been applied. For example, if "validate" is set to true, + * the validation is done before invoking the filter. + * + * Any previously set filter is merely dropped, since the parser + * does not own them. + * + * @param filter A const pointer to the user supplied application + * filter. + * + * @see #getFilter + * @since DOM Level 3 + */ + virtual void setFilter(DOMLSParserFilter* const filter) = 0; + + // ----------------------------------------------------------------------- + // Parsing methods + // ----------------------------------------------------------------------- + /** + * Parse an XML document from a resource identified by a DOMLSInput. + * + * The parser owns the returned DOMDocument. It will be deleted + * when the parser is released. + * + * @param source The DOMLSInput from which the source of the document + * is to be read. + * @return If the DOMLSParser is a synchronous DOMLSParser + * the newly created and populated DOMDocument is returned. + * If the DOMLSParser is asynchronous then NULL + * is returned since the document object may not yet be constructed when + * this method returns. + * @exception DOMException INVALID_STATE_ERR: Raised if the DOMLSParser::busy + * attribute is true. + * @exception DOMLSException PARSE_ERR: Starting from Xerces-C++ 4.0.0 this exception is + * raised if the DOMLSParser was unable + * to load the XML document. DOM applications should + * attach a DOMErrorHandler using the + * parameter "error-handler" if they wish to get details + * on the error. + * + * @see DOMLSInput#DOMLSInput + * @see DOMConfiguration + * @see resetDocumentPool + * @since DOM Level 3 + */ + virtual DOMDocument* parse(const DOMLSInput* source) = 0; + + /** + * Parse an XML document from a location identified by a URI reference [IETF RFC 2396]. + * If the URI contains a fragment identifier (see section 4.1 in [IETF RFC 2396]), + * the behavior is not defined by this specification, future versions of this + * specification may define the behavior. + * + * The parser owns the returned DOMDocument. It will be deleted + * when the parser is released. + * + * @param uri The location of the XML document to be read (in Unicode) + * @return If the DOMLSParser is a synchronous DOMLSParser + * the newly created and populated DOMDocument is returned. + * If the DOMLSParser is asynchronous then NULL + * is returned since the document object is not yet parsed when this method returns. + * @exception DOMException INVALID_STATE_ERR: Raised if the DOMLSParser::busy + * attribute is true. + * @exception DOMLSException PARSE_ERR: Starting from Xerces-C++ 4.0.0 this exception is + * raised if the DOMLSParser was unable + * to load the XML document. DOM applications should + * attach a DOMErrorHandler using the + * parameter "error-handler" if they wish to get details + * on the error. + * + * @see #parse(DOMLSInput,...) + * @see resetDocumentPool + * @since DOM Level 3 + */ + virtual DOMDocument* parseURI(const XMLCh* const uri) = 0; + + /** + * Parse an XML document from a location identified by a URI reference [IETF RFC 2396]. + * If the URI contains a fragment identifier (see section 4.1 in [IETF RFC 2396]), + * the behavior is not defined by this specification, future versions of this + * specification may define the behavior. + * + * The parser owns the returned DOMDocument. It will be deleted + * when the parser is released. + * + * @param uri The location of the XML document to be read (in the local code page) + * @return If the DOMLSParser is a synchronous DOMLSParser + * the newly created and populated DOMDocument is returned. + * If the DOMLSParser is asynchronous then NULL + * is returned since the document object is not yet parsed when this method returns. + * @exception DOMException INVALID_STATE_ERR: Raised if the DOMLSParser::busy + * attribute is true. + * @exception DOMLSException PARSE_ERR: Starting from Xerces-C++ 4.0.0 this exception is + * raised if the DOMLSParser was unable + * to load the XML document. DOM applications should + * attach a DOMErrorHandler using the + * parameter "error-handler" if they wish to get details + * on the error. + * + * @see #parse(DOMLSInput,...) + * @see resetDocumentPool + * @since DOM Level 3 + */ + virtual DOMDocument* parseURI(const char* const uri) = 0; + + /** + * Parse an XML fragment from a resource identified by a DOMLSInput + * and insert the content into an existing document at the position specified + * with the context and action arguments. When parsing the input stream, the + * context node (or its parent, depending on where the result will be inserted) + * is used for resolving unbound namespace prefixes. The context node's + * ownerDocument node (or the node itself if the node of type + * DOCUMENT_NODE) is used to resolve default attributes and entity + * references. + * As the new data is inserted into the document, at least one mutation event + * is fired per new immediate child or sibling of the context node. + * If the context node is a DOMDocument node and the action is + * ACTION_REPLACE_CHILDREN, then the document that is passed as + * the context node will be changed such that its xmlEncoding, + * documentURI, xmlVersion, inputEncoding, + * xmlStandalone, and all other such attributes are set to what they + * would be set to if the input source was parsed using DOMLSParser::parse(). + * This method is always synchronous, even if the DOMLSParser is + * asynchronous (DOMLSParser::getAsync() returns true). + * If an error occurs while parsing, the caller is notified through the ErrorHandler + * instance associated with the "error-handler" parameter of the DOMConfiguration. + * When calling parseWithContext, the values of the following configuration + * parameters will be ignored and their default values will always be used instead: + * "validate", + * "validate-if-schema" + * "element-content-whitespace". + * Other parameters will be treated normally, and the parser is expected to call + * the DOMLSParserFilter just as if a whole document was parsed. + * + * @param source The DOMLSInput from which the source document is + * to be read. The source document must be an XML fragment, i.e. + * anything except a complete XML document (except in the case where + * the context node of type DOCUMENT_NODE, and the action is + * ACTION_REPLACE_CHILDREN), a DOCTYPE + * (internal subset), entity declaration(s), notation declaration(s), + * or XML or text declaration(s). + * @param contextNode The node that is used as the context for the data that is being + * parsed. This node must be a DOMDocument node, a + * DOMDocumentFragment node, or a node of a type that + * is allowed as a child of an DOMElement node, e.g. + * it cannot be an DOMAttribute node. + * @param action This parameter describes which action should be taken between the new + * set of nodes being inserted and the existing children of the context node. + * The set of possible actions is defined in ACTION_TYPES above. + * @return Return the node that is the result of the parse operation. If the result is more + * than one top-level node, the first one is returned. + * + * @exception DOMException + * HIERARCHY_REQUEST_ERR: Raised if the content cannot replace, be inserted before, after, + * or as a child of the context node (see also DOMNode::insertBefore + * or DOMNode::replaceChild in [DOM Level 3 Core]). + * NOT_SUPPORTED_ERR: Raised if the DOMLSParser doesn't support this method, + * or if the context node is of type DOMDocument and the DOM + * implementation doesn't support the replacement of the DOMDocumentType + * child or DOMElement child. + * NO_MODIFICATION_ALLOWED_ERR: Raised if the context node is a read only node and the content + * is being appended to its child list, or if the parent node of + * the context node is read only node and the content is being + * inserted in its child list. + * INVALID_STATE_ERR: Raised if the DOMLSParser::getBusy() returns true. + * + * @exception DOMLSException PARSE_ERR: Raised if the DOMLSParser was unable to load + * the XML fragment. DOM applications should attach a + * DOMErrorHandler using the parameter "error-handler" + * if they wish to get details on the error. + * @since DOM Level 3 + */ + virtual DOMNode* parseWithContext(const DOMLSInput* source, DOMNode* contextNode, const ActionType action) = 0; + + /** + * Abort the loading of the document that is currently being loaded by the DOMLSParser. + * If the DOMLSParser is currently not busy, a call to this method does nothing. + * + * Note: invoking this method will remove the installed DOMLSParserFilter filter + * + * @since DOM Level 3 + */ + virtual void abort() = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this DOMLSParser is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + + /** Reset the documents vector pool and release all the associated memory + * back to the system. + * + * When parsing a document using a DOM parser, all memory allocated + * for a DOM tree is associated to the DOM document. + * + * If you do multiple parse using the same DOM parser instance, then + * multiple DOM documents will be generated and saved in a vector pool. + * All these documents (and thus all the allocated memory) + * won't be deleted until the parser instance is destroyed. + * + * If you don't need these DOM documents anymore and don't want to + * destroy the DOM parser instance at this moment, then you can call this method + * to reset the document vector pool and release all the allocated memory + * back to the system. + * + * It is an error to call this method if you are in the middle of a + * parse (e.g. in the mid of a progressive parse). + * + * @exception IOException An exception from the parser if this function + * is called when a parse is in progress. + * + */ + virtual void resetDocumentPool() = 0; + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via an input source + * object. + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the DOMLSInput parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * @param source A const reference to the DOMLSInput object which + * points to the schema grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no chaching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * + * @see DOMLSInput#DOMLSInput + */ + virtual Grammar* loadGrammar(const DOMLSInput* source, + const Grammar::GrammarType grammarType, + const bool toCache = false) = 0; + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag is + * enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML grammar file to be + * preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no chaching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const XMLCh* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false) = 0; + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag is + * enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * @param systemId A const char pointer to a native string which contains + * the path to the XML grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no chaching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const char* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false) = 0; + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param nameSpaceKey Namespace key + * @return Grammar associated with the Namespace key. + */ + virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey) const = 0; + + /** + * Retrieve the grammar where the root element is declared. + * + * @return Grammar where root element declared + */ + virtual Grammar* getRootGrammar() const = 0; + + /** + * Returns the string corresponding to a URI id from the URI string pool. + * + * @param uriId id of the string in the URI string pool. + * @return URI string corresponding to the URI id. + */ + virtual const XMLCh* getURIText(unsigned int uriId) const = 0; + + /** + * Clear the cached grammar pool + */ + virtual void resetCachedGrammarPool() = 0; + + /** + * Returns the current src offset within the input source. + * + * @return offset within the input source + */ + virtual XMLFilePos getSrcOffset() const = 0; + + //@} + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSParserFilter.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSParserFilter.hpp new file mode 100644 index 000000000000..f72c83b02c1f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSParserFilter.hpp @@ -0,0 +1,164 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSPARSERFILTER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSPARSERFILTER_HPP + + /** + * + * DOMLSParserFilter.hpp: interface for the DOMLSParserFilter class. + * + * DOMLSParserFilter provide applications the ability to examine nodes + * as they are being created during the parse process. + * + * DOMLSParserFilter lets the application decide what nodes should be + * in the output DOM tree or not. + * + * @since DOM Level 3 + */ + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMElement; +class DOMNode; + +class CDOM_EXPORT DOMLSParserFilter { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLSParserFilter() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLSParserFilter(const DOMLSParserFilter &); + DOMLSParserFilter & operator = (const DOMLSParserFilter &); + //@} + + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLSParserFilter() {}; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Contants */ + //@{ + /** + * Constants returned by acceptNode. + * + *

FILTER_ACCEPT: + * Accept the node.

+ * + *

FILTER_REJECT: + * Reject the node and its children.

+ * + *

FILTER_SKIP: + * Skip this single node. The children of this node will still be considered.

+ * + *

FILTER_INTERRUPT: + * Interrupt the normal processing of the document.

+ * + * @since DOM Level 3 + */ + enum FilterAction {FILTER_ACCEPT = 1, + FILTER_REJECT = 2, + FILTER_SKIP = 3, + FILTER_INTERRUPT = 4}; + + // ----------------------------------------------------------------------- + // Virtual DOMLSParserFilter interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * This method will be called by the parser at the completion of the parsing of each node. + * The node and all of its descendants will exist and be complete. The parent node will also exist, + * although it may be incomplete, i.e. it may have additional children that have not yet been parsed. + * Attribute nodes are never passed to this function. + * From within this method, the new node may be freely modified - children may be added or removed, + * text nodes modified, etc. The state of the rest of the document outside this node is not defined, + * and the affect of any attempt to navigate to, or to modify any other part of the document is undefined. + * For validating parsers, the checks are made on the original document, before any modification by the + * filter. No validity checks are made on any document modifications made by the filter. + * If this new node is rejected, the parser might reuse the new node and any of its descendants. + * + * @param node The newly constructed element. At the time this method is called, the element is complete - + * it has all of its children (and their children, recursively) and attributes, and is attached + * as a child to its parent. + * @return One of the FilterAction enum + */ + virtual FilterAction acceptNode(DOMNode* node) = 0; + + /** + * The parser will call this method after each DOMElement start tag has been scanned, + * but before the remainder of the DOMElement is processed. The intent is to allow the element, + * including any children, to be efficiently skipped. Note that only element nodes are passed to the + * startElement function. + * The element node passed to startElement for filtering will include all of the attributes, but none + * of the children nodes. The DOMElement may not yet be in place in the document being + * constructed (it may not have a parent node.) + * A startElement filter function may access or change the attributes for the DOMElement. + * Changing namespace declarations will have no effect on namespace resolution by the parser. + * + * @param node The newly encountered element. At the time this method is called, the element is incomplete - + * it will have its attributes, but no children. + * @return One of the FilterAction enum + */ + virtual FilterAction startElement(DOMElement* node) = 0; + + /** + * Tells the DOMLSParser what types of nodes to show to the method DOMLSParserFilter::acceptNode. + * If a node is not shown to the filter using this attribute, it is automatically included in the DOM document being built. + * See DOMNodeFilter for definition of the constants. The constants SHOW_ATTRIBUTE, SHOW_DOCUMENT, + * SHOW_DOCUMENT_TYPE, SHOW_NOTATION, SHOW_ENTITY, and SHOW_DOCUMENT_FRAGMENT are meaningless here. + * Those nodes will never be passed to DOMLSParserFilter::acceptNode. + * + * @return The constants of what types of nodes to show. + * @since DOM Level 3 + */ + virtual DOMNodeFilter::ShowType getWhatToShow() const = 0; + + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSResourceResolver.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSResourceResolver.hpp new file mode 100644 index 000000000000..e2d740c38b05 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSResourceResolver.hpp @@ -0,0 +1,143 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSRESOURCERESOLVER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSRESOURCERESOLVER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMLSInput; + +/** + * DOMLSResourceResolver provides a way for applications to redirect references + * to external entities. + * + *

Applications needing to implement customized handling for external + * entities must implement this interface and register their implementation + * by setting the entityResolver attribute of the DOMLSParser.

+ * + *

The DOMLSParser will then allow the application to intercept any + * external entities (including the external DTD subset and external parameter + * entities) before including them.

+ * + *

Many DOM applications will not need to implement this interface, but it + * will be especially useful for applications that build XML documents from + * databases or other specialized input sources, or for applications that use + * URNs.

+ * + * @see DOMLSParser#getDomConfig + * @see DOMLSInput#DOMLSInput + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMLSResourceResolver +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLSResourceResolver() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLSResourceResolver(const DOMLSResourceResolver &); + DOMLSResourceResolver & operator = (const DOMLSResourceResolver &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLSResourceResolver() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMLSResourceResolver interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * Allow the application to resolve external resources. + * + * The DOMLSParser will call this method before opening any external resource, + * including the external DTD subset, external entities referenced within the DTD, and + * external entities referenced within the document element (however, the top-level + * document entity is not passed to this method). The application may then request that + * the DOMLSParser resolve the external resource itself, that it use an + * alternative URI, or that it use an entirely different input source. + * + * Application writers can use this method to redirect external system identifiers to + * secure and/or local URI, to look up public identifiers in a catalogue, or to read + * an entity from a database or other input source (including, for example, a dialog box). + * + * The returned DOMLSInput is owned by the DOMLSParser which is + * responsible to clean up the memory. + * + * @param resourceType The type of the resource being resolved. For XML [XML 1.0] resources + * (i.e. entities), applications must use the value "http://www.w3.org/TR/REC-xml". + * For XML Schema [XML Schema Part 1], applications must use the value + * "http://www.w3.org/2001/XMLSchema". Other types of resources are outside + * the scope of this specification and therefore should recommend an absolute + * URI in order to use this method. + * @param namespaceUri The namespace of the resource being resolved, e.g. the target namespace + * of the XML Schema [XML Schema Part 1] when resolving XML Schema resources. + * @param publicId The public identifier of the external entity being referenced, or null + * if no public identifier was supplied or if the resource is not an entity. + * @param systemId The system identifier, a URI reference [IETF RFC 2396], of the external + * resource being referenced, or null if no system identifier was supplied. + * @param baseURI The absolute base URI of the resource being parsed, or null if + * there is no base URI. + * @return A DOMLSInput object describing the new input source, + * or null to request that the parser open a regular + * URI connection to the resource. + * The returned DOMLSInput is owned by the DOMLSParser which is + * responsible to clean up the memory. + * @see DOMLSInput#DOMLSInput + * @since DOM Level 3 + */ + virtual DOMLSInput* resolveResource( const XMLCh* const resourceType + , const XMLCh* const namespaceUri + , const XMLCh* const publicId + , const XMLCh* const systemId + , const XMLCh* const baseURI) = 0; + + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSSerializer.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSSerializer.hpp new file mode 100644 index 000000000000..8bb4ff71e1f4 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSSerializer.hpp @@ -0,0 +1,547 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSSERIALIZER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSSERIALIZER_HPP + +/** + * + * DOMLSSerializer provides an API for serializing (writing) a DOM document out in + * an XML document. The XML data is written to an output stream, the type of + * which depends on the specific language bindings in use. During + * serialization of XML data, namespace fixup is done when possible. + *

DOMLSSerializer accepts any node type for serialization. For + * nodes of type Document or Entity, well formed + * XML will be created if possible. The serialized output for these node + * types is either as a Document or an External Entity, respectively, and is + * acceptable input for an XML parser. For all other types of nodes the + * serialized form is not specified, but should be something useful to a + * human for debugging or diagnostic purposes. Note: rigorously designing an + * external (source) form for stand-alone node types that don't already have + * one defined in seems a bit much to take on here. + *

Within a Document or Entity being serialized, Nodes are processed as + * follows Documents are written including an XML declaration and a DTD + * subset, if one exists in the DOM. Writing a document node serializes the + * entire document. Entity nodes, when written directly by + * write defined in the DOMLSSerializer interface, + * output the entity expansion but no namespace fixup is done. The resulting + * output will be valid as an external entity. Entity References nodes are + * serializes as an entity reference of the form + * "&entityName;") in the output. Child nodes (the + * expansion) of the entity reference are ignored. CDATA sections + * containing content characters that can not be represented in the + * specified output encoding are handled according to the + * "split-cdata-sections" feature.If the feature is true, CDATA + * sections are split, and the unrepresentable characters are serialized as + * numeric character references in ordinary content. The exact position and + * number of splits is not specified. If the feature is false, + * unrepresentable characters in a CDATA section are reported as errors. The + * error is not recoverable - there is no mechanism for supplying + * alternative characters and continuing with the serialization. All other + * node types (DOMElement, DOMText, etc.) are serialized to their corresponding + * XML source form. + *

Within the character data of a document (outside of markup), any + * characters that cannot be represented directly are replaced with + * character references. Occurrences of '<' and '&' are replaced by + * the predefined entities &lt; and &amp. The other predefined + * entities (&gt, &apos, etc.) are not used; these characters can be + * included directly. Any character that can not be represented directly in + * the output character encoding is serialized as a numeric character + * reference. + *

Attributes not containing quotes are serialized in quotes. Attributes + * containing quotes but no apostrophes are serialized in apostrophes + * (single quotes). Attributes containing both forms of quotes are + * serialized in quotes, with quotes within the value represented by the + * predefined entity &quot;. Any character that can not be represented + * directly in the output character encoding is serialized as a numeric + * character reference. + *

Within markup, but outside of attributes, any occurrence of a character + * that cannot be represented in the output character encoding is reported + * as an error. An example would be serializing the element + * <LaCañada/> with the encoding="us-ascii". + *

When requested by setting the normalize-characters feature + * on DOMLSSerializer, all data to be serialized, both markup and + * character data, is W3C Text normalized according to the rules defined in + * . The W3C Text normalization process affects only the data as it is being + * written; it does not alter the DOM's view of the document after + * serialization has completed. + *

Namespaces are fixed up during serialization, the serialization process + * will verify that namespace declarations, namespace prefixes and the + * namespace URIs associated with Elements and Attributes are consistent. If + * inconsistencies are found, the serialized form of the document will be + * altered to remove them. The algorithm used for doing the namespace fixup + * while seralizing a document is a combination of the algorithms used for + * lookupNamespaceURI and lookupPrefix. previous paragraph to be + * defined closer here. + *

Any changes made affect only the namespace prefixes and declarations + * appearing in the serialized data. The DOM's view of the document is not + * altered by the serialization operation, and does not reflect any changes + * made to namespace declarations or prefixes in the serialized output. + *

While serializing a document the serializer will write out + * non-specified values (such as attributes whose specified is + * false) if the output-default-values feature is + * set to true. If the output-default-values flag + * is set to false and the use-abstract-schema + * feature is set to true the abstract schema will be used to + * determine if a value is specified or not, if + * use-abstract-schema is not set the specified + * flag on attribute nodes is used to determine if attribute values should + * be written out. + *

Ref to Core spec (1.1.9, XML namespaces, 5th paragraph) entity ref + * description about warning about unbound entity refs. Entity refs are + * always serialized as &foo;, also mention this in the load part of + * this spec. + *

When serializing a document the DOMLSSerializer checks to see if the document + * element in the document is a DOM Level 1 element or a DOM Level 2 (or + * higher) element (this check is done by looking at the localName of the + * root element). If the root element is a DOM Level 1 element then the + * DOMLSSerializer will issue an error if a DOM Level 2 (or higher) element is + * found while serializing. Likewise if the document element is a DOM Level + * 2 (or higher) element and the DOMLSSerializer sees a DOM Level 1 element an + * error is issued. Mixing DOM Level 1 elements with DOM Level 2 (or higher) + * is not supported. + *

DOMLSSerializers have a number of named features that can be + * queried or set. The name of DOMLSSerializer features must be valid + * XML names. Implementation specific features (extensions) should choose an + * implementation dependent prefix to avoid name collisions. + *

Here is a list of properties that must be recognized by all + * implementations. + *

+ *
"normalize-characters"
+ *
+ *
+ *
true
+ *
[ + * optional] (default) Perform the W3C Text Normalization of the characters + * in document as they are written out. Only the characters being written + * are (potentially) altered. The DOM document itself is unchanged.
+ *
+ * false
+ *
[required] do not perform character normalization.
+ *
+ *
+ * "split-cdata-sections"
+ *
+ *
+ *
true
+ *
[required] (default) + * Split CDATA sections containing the CDATA section termination marker + * ']]>' or characters that can not be represented in the output + * encoding, and output the characters using numeric character references. + * If a CDATA section is split a warning is issued.
+ *
false
+ *
[ + * required] Signal an error if a CDATASection contains an + * unrepresentable character.
+ *
+ *
"validation"
+ *
+ *
+ *
true
+ *
[ + * optional] Use the abstract schema to validate the document as it is being + * serialized. If validation errors are found the error handler is notified + * about the error. Setting this state will also set the feature + * use-abstract-schema to true.
+ *
false
+ *
[ + * required] (default) Don't validate the document as it is being + * serialized.
+ *
+ *
"expand-entity-references"
+ *
+ *
+ *
true
+ *
[ + * optional] Expand EntityReference nodes when serializing.
+ *
+ * false
+ *
[required] (default) Serialize all + * EntityReference nodes as XML entity references.
+ *
+ *
+ * "whitespace-in-element-content"
+ *
+ *
+ *
true
+ *
[required] ( + * default) Output all white spaces in the document.
+ *
false
+ *
[ + * optional] Only output white space that is not within element content. The + * implementation is expected to use the + * isWhitespaceInElementContent flag on Text nodes + * to determine if a text node should be written out or not.
+ *
+ *
+ * "discard-default-content"
+ *
+ *
+ *
true
+ *
[required] (default + * ) Use whatever information available to the implementation (i.e. XML + * schema, DTD, the specified flag on Attr nodes, + * and so on) to decide what attributes and content should be serialized or + * not. Note that the specified flag on Attr nodes + * in itself is not always reliable, it is only reliable when it is set to + * false since the only case where it can be set to + * false is if the attribute was created by a Level 1 + * implementation.
+ *
false
+ *
[required] Output all attributes and + * all content.
+ *
+ *
"format-canonical"
+ *
+ *
+ *
true
+ *
[optional] + * This formatting writes the document according to the rules specified in . + * Setting this feature to true will set the feature "format-pretty-print" + * to false.
+ *
false
+ *
[required] (default) Don't canonicalize the + * output.
+ *
+ *
"format-pretty-print"
+ *
+ *
+ *
true
+ *
[optional] + * Formatting the output by adding whitespace to produce a pretty-printed, + * indented, human-readable form. The exact form of the transformations is + * not specified by this specification. Setting this feature to true will + * set the feature "format-canonical" to false.
+ *
false
+ *
[required] + * (default) Don't pretty-print the result.
+ *
+ *
"http://apache.org/xml/features/dom/byte-order-mark"
+ *
+ *
+ *
false
+ *
[optional] + * (default) Setting this feature to true will output the correct BOM for the specified + * encoding.
+ *
true
+ *
[required] + * Don't generate a BOM.
+ *
+ *
"http://apache.org/xml/features/pretty-print/space-first-level-elements"
+ *
+ *
+ *
true
+ *
[optional] + * (default) Setting this feature to true will add an extra line feed between the elements + * that are children of the document root.
+ *
false
+ *
[required] + * Don't add the extra line feed.
+ *
+ *
+ *

See also the Document Object Model (DOM) Level 3 Load and Save Specification. + * + * @since DOM Level 3 + */ + + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMLSOutput; + +class CDOM_EXPORT DOMLSSerializer +{ +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLSSerializer() {}; + //@} +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLSSerializer(const DOMLSSerializer &); + DOMLSSerializer & operator = (const DOMLSSerializer &); + //@} + + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLSSerializer() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMLSSerializer interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Feature methods + // ----------------------------------------------------------------------- + /** + * The DOMConfiguration object used by the LSSerializer when serializing a DOM node. + * + * In addition to the parameters recognized in on the DOMConfiguration + * interface defined in [DOM Level 3 Core], the DOMConfiguration objects + * for DOMLSSerializer add or modify the following parameters: + * + * "canonical-form" + * true [optional] + * Writes the document according to the rules specified in [Canonical XML]. In addition to + * the behavior described in "canonical-form" [DOM Level 3 Core], setting this parameter to + * true will set the parameters "format-pretty-print", "discard-default-content", and + * "xml-declaration", to false. Setting one of those parameters to true will set this + * parameter to false. Serializing an XML 1.1 document when "canonical-form" is true will + * generate a fatal error. + * false [required] (default) + * Do not canonicalize the output. + * + * "discard-default-content" + * true [required] (default) + * Use the DOMAttr::getSpecified attribute to decide what attributes should be discarded. + * Note that some implementations might use whatever information available to the implementation + * (i.e. XML schema, DTD, the DOMAttr::getSpecified attribute, and so on) to determine what + * attributes and content to discard if this parameter is set to true. + * false [required] + * Keep all attributes and all content. + * + * "format-pretty-print" + * true [optional] + * Formatting the output by adding whitespace to produce a pretty-printed, indented, + * human-readable form. The exact form of the transformations is not specified by this specification. + * Pretty-printing changes the content of the document and may affect the validity of the document, + * validating implementations should preserve validity. + * false [required] (default) + * Don't pretty-print the result. + * + * "ignore-unknown-character-denormalizations" + * true [required] (default) + * If, while verifying full normalization when [XML 1.1] is supported, a character is encountered + * for which the normalization properties cannot be determined, then raise a "unknown-character-denormalization" + * warning (instead of raising an error, if this parameter is not set) and ignore any possible + * denormalizations caused by these characters. + * false [optional] + * Report a fatal error if a character is encountered for which the processor cannot determine the + * normalization properties. + * + * "normalize-characters" + * This parameter is equivalent to the one defined by DOMConfiguration in [DOM Level 3 Core]. + * Unlike in the Core, the default value for this parameter is true. While DOM implementations are not + * required to support fully normalizing the characters in the document according to appendix E of [XML 1.1], + * this parameter must be activated by default if supported. + * + * "xml-declaration" + * true [required] (default) + * If a DOMDocument, DOMElement, or DOMEntity node is serialized, the XML declaration, or text declaration, + * should be included. The version (DOMDocument::xmlVersion if the document is a Level 3 document and the + * version is non-null, otherwise use the value "1.0"), and the output encoding (see DOMLSSerializer::write + * for details on how to find the output encoding) are specified in the serialized XML declaration. + * false [required] + * Do not serialize the XML and text declarations. Report a "xml-declaration-needed" warning if this will + * cause problems (i.e. the serialized data is of an XML version other than [XML 1.0], or an encoding would + * be needed to be able to re-parse the serialized data). + * + * "error-handler" + * Contains a DOMErrorHandler object. If an error is encountered in the document, the implementation will call back + * the DOMErrorHandler registered using this parameter. The implementation may provide a default DOMErrorHandler + * object. When called, DOMError::relatedData will contain the closest node to where the error occurred. + * If the implementation is unable to determine the node where the error occurs, DOMError::relatedData will contain + * the DOMDocument node. Mutations to the document from within an error handler will result in implementation + * dependent behavior. + * + * @return The pointer to the configuration object. + * @since DOM Level 3 + */ + virtual DOMConfiguration* getDomConfig() = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * The end-of-line sequence of characters to be used in the XML being + * written out. The only permitted values are these: + *

+ *
null
+ *
+ * Use a default end-of-line sequence. DOM implementations should choose + * the default to match the usual convention for text files in the + * environment being used. Implementations must choose a default + * sequence that matches one of those allowed by 2.11 "End-of-Line + * Handling". However, Xerces-C++ always uses LF when this + * property is set to null since otherwise automatic + * translation of LF to CR-LF on Windows for text files would + * result in such files containing CR-CR-LF. If you need Windows-style + * end of line sequences in your output, consider writing to a file + * opened in text mode or explicitly set this property to CR-LF.
+ *
CR
+ *
The carriage-return character (\#xD).
+ *
CR-LF
+ *
The + * carriage-return and line-feed characters (\#xD \#xA).
+ *
LF
+ *
The line-feed + * character (\#xA).
+ *
+ *
The default value for this attribute is null. + * + * @param newLine The end-of-line sequence of characters to be used. + * @see getNewLine + * @since DOM Level 3 + */ + virtual void setNewLine(const XMLCh* const newLine) = 0; + + /** + * When the application provides a filter, the serializer will call out + * to the filter before serializing each Node. Attribute nodes are never + * passed to the filter. The filter implementation can choose to remove + * the node from the stream or to terminate the serialization early. + * + * @param filter The writer filter to be used. + * @see getFilter + * @since DOM Level 3 + */ + virtual void setFilter(DOMLSSerializerFilter *filter) = 0; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Return the end-of-line sequence of characters to be used in the XML being + * written out. + * + * @return The end-of-line sequence of characters to be used. + * @see setNewLine + * @since DOM Level 3 + */ + virtual const XMLCh* getNewLine() const = 0; + + /** + * Return the WriterFilter used. + * + * @return The writer filter used. + * @see setFilter + * @since DOM Level 3 + */ + virtual DOMLSSerializerFilter* getFilter() const = 0; + + // ----------------------------------------------------------------------- + // Write methods + // ----------------------------------------------------------------------- + /** + * Write out the specified node as described above in the description of + * DOMLSSerializer. Writing a Document or Entity node produces a + * serialized form that is well formed XML. Writing other node types + * produces a fragment of text in a form that is not fully defined by + * this document, but that should be useful to a human for debugging or + * diagnostic purposes. + * + * @param nodeToWrite The Document or Entity node to + * be written. For other node types, something sensible should be + * written, but the exact serialized form is not specified. + * @param destination The destination for the data to be written. + * @return Returns true if node was + * successfully serialized and false in case a failure + * occured and the failure wasn't canceled by the error handler. + * @since DOM Level 3 + */ + virtual bool write(const DOMNode* nodeToWrite, + DOMLSOutput* const destination) = 0; + + /** + * Write out the specified node as described above in the description of + * DOMLSSerializer. Writing a Document or Entity node produces a + * serialized form that is well formed XML. Writing other node types + * produces a fragment of text in a form that is not fully defined by + * this document, but that should be useful to a human for debugging or + * diagnostic purposes. + * + * @param nodeToWrite The Document or Entity node to + * be written. For other node types, something sensible should be + * written, but the exact serialized form is not specified. + * @param uri The destination for the data to be written. + * @return Returns true if node was + * successfully serialized and false in case a failure + * occured and the failure wasn't canceled by the error handler. + * @since DOM Level 3 + */ + virtual bool writeToURI(const DOMNode* nodeToWrite, + const XMLCh* uri) = 0; + /** + * Serialize the specified node as described above in the description of + * DOMLSSerializer. The result of serializing the node is + * returned as a string. Writing a Document or Entity node produces a + * serialized form that is well formed XML. Writing other node types + * produces a fragment of text in a form that is not fully defined by + * this document, but that should be useful to a human for debugging or + * diagnostic purposes. + * + * @param nodeToWrite The node to be written. + * @param manager The memory manager to be used to allocate the result string. + * If NULL is used, the memory manager used to construct the serializer will + * be used. + * @return Returns the serialized data, or null in case a + * failure occured and the failure wasn't canceled by the error + * handler. The returned string is always in UTF-16. + * The encoding information available in DOMLSSerializer is ignored in writeToString(). + * @since DOM Level 3 + */ + virtual XMLCh* writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL) = 0; + + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this Writer is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} + + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSSerializerFilter.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSSerializerFilter.hpp new file mode 100644 index 000000000000..12b048c4cd6f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLSSerializerFilter.hpp @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSSERIALIZERFILTER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSSERIALIZERFILTER_HPP + +/** + * + * DOMLSSerializerFilter.hpp: interface for the DOMLSSerializerFilter class. + * + * DOMLSSerializerFilter provide applications the ability to examine nodes + * as they are being serialized. + * + * DOMLSSerializerFilter lets the application decide what nodes should be + * serialized or not. + * + * The DOMDocument, DOMDocumentType, DOMNotation, and DOMEntity nodes are not passed + * to the filter. + * + * @since DOM Level 3 + */ + + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMLSSerializerFilter : public DOMNodeFilter { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLSSerializerFilter() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLSSerializerFilter(const DOMLSSerializerFilter &); + DOMLSSerializerFilter & operator = (const DOMLSSerializerFilter &); + //@} + + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLSSerializerFilter() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMLSSerializerFilter interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * Interface from DOMNodeFilter, + * to be implemented by implementation (derived class) + */ + virtual FilterAction acceptNode(const DOMNode* node) const = 0; + + /** + * Tells the DOMLSSerializer what types of nodes to show to the filter. + * See DOMNodeFilter for definition of the constants. + * The constant SHOW_ATTRIBUTE is meaningless here, attribute nodes will + * never be passed to a DOMLSSerializerFilter. + * + * @return The constants of what types of nodes to show. + * @since DOM Level 3 + */ + virtual ShowType getWhatToShow() const =0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLocator.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLocator.hpp new file mode 100644 index 000000000000..18b3c6a0a153 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMLocator.hpp @@ -0,0 +1,135 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLOCATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLOCATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNode; + + +/** + * DOMLocator is an interface that describes a location. (e.g. where an error + * occured). + * + * @see DOMError#DOMError + * @since DOM Level 3 + */ + +class CDOM_EXPORT DOMLocator +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLocator() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLocator(const DOMLocator &); + DOMLocator & operator = (const DOMLocator &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLocator() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMLocator interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Get the line number where the error occured, or 0 if there is + * no line number available. + * + * @since DOM Level 3 + */ + virtual XMLFileLoc getLineNumber() const = 0; + + /** + * Get the column number where the error occured, or 0 if there + * is no column number available. + * + * @since DOM Level 3 + */ + virtual XMLFileLoc getColumnNumber() const = 0; + + /** + * Get the byte offset into the input source, or ~(XMLFilePos(0)) if + * there is no byte offset available. + * + * @since DOM Level 3 + */ + virtual XMLFilePos getByteOffset() const = 0; + + /** + * Get the UTF-16 offset into the input source, or ~(XMLFilePos(0)) if + * there is no UTF-16 offset available. + * + * @since DOM Level 3 + */ + virtual XMLFilePos getUtf16Offset() const = 0; + + /** + * Get the DOMNode where the error occured, or null if there + * is no node available. + * + * @since DOM Level 3 + */ + virtual DOMNode* getRelatedNode() const = 0; + + /** + * Get the URI where the error occured, or null if there is no + * URI available. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getURI() const = 0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMMemoryManager.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMMemoryManager.hpp new file mode 100644 index 000000000000..c1dd83cc7a4d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMMemoryManager.hpp @@ -0,0 +1,160 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMMEMORYMANAGER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMMEMORYMANAGER_HPP + +//------------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------------ + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * The DOMMemoryManager interface exposes the memory allocation-related + * functionalities of a DOMDocument + */ + +class CDOM_EXPORT DOMMemoryManager +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMMemoryManager() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMMemoryManager(const DOMMemoryManager &); + DOMMemoryManager & operator = (const DOMMemoryManager &); + //@} + +public: + + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMMemoryManager() {}; + //@} + + // ----------------------------------------------------------------------- + // data types + // ----------------------------------------------------------------------- + enum NodeObjectType { + ATTR_OBJECT = 0, + ATTR_NS_OBJECT = 1, + CDATA_SECTION_OBJECT = 2, + COMMENT_OBJECT = 3, + DOCUMENT_FRAGMENT_OBJECT = 4, + DOCUMENT_TYPE_OBJECT = 5, + ELEMENT_OBJECT = 6, + ELEMENT_NS_OBJECT = 7, + ENTITY_OBJECT = 8, + ENTITY_REFERENCE_OBJECT = 9, + NOTATION_OBJECT = 10, + PROCESSING_INSTRUCTION_OBJECT = 11, + TEXT_OBJECT = 12 + }; + + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the size of the chunks of memory allocated by the memory manager + * + * @return the dimension of the chunks of memory allocated by the memory manager + */ + virtual XMLSize_t getMemoryAllocationBlockSize() const = 0; + + //@} + + //@{ + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Set the size of the chunks of memory allocated by the memory manager + * + * @param size the new size of the chunks; it must be greater than 4KB + */ + virtual void setMemoryAllocationBlockSize(XMLSize_t size) = 0; + //@} + + //@{ + // ----------------------------------------------------------------------- + // Operations + // ----------------------------------------------------------------------- + /** + * Allocate a memory block of the requested size from the managed pool + * + * @param amount the size of the new memory block + * + * @return the pointer to the newly allocated block + */ + virtual void* allocate(XMLSize_t amount) = 0; + + /** + * Allocate a memory block of the requested size from the managed pool of DOM objects + * + * @param amount the size of the new memory block + * @param type the type of the DOM object that will be stored in the block + * + * @return the pointer to the newly allocated block + */ + virtual void* allocate(XMLSize_t amount, DOMMemoryManager::NodeObjectType type) = 0; + + /** + * Release a DOM object and place its memory back in the pool + * + * @param object the pointer to the DOM node + * @param type the type of the DOM object + */ + virtual void release(DOMNode* object, DOMMemoryManager::NodeObjectType type) = 0; + + /** + * Allocate a memory block from the mnaged pool and copy the provided string + * + * @param src the string to be copied + * + * @return the pointer to the newly allocated block + */ + virtual XMLCh* cloneString(const XMLCh *src) = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DOMMemoryManager.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNamedNodeMap.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNamedNodeMap.hpp new file mode 100644 index 000000000000..b13d188cb086 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNamedNodeMap.hpp @@ -0,0 +1,245 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNAMEDNODEMAP_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNAMEDNODEMAP_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNode; + +/** + * DOMNamedNodeMaps are used to + * represent collections of nodes that can be accessed by name. + * + * Note that DOMNamedNodeMap does not inherit from DOMNodeList; + * DOMNamedNodeMaps are not maintained in any particular order. + * Nodes contained in a DOMNamedNodeMap may + * also be accessed by an ordinal index, but this is simply to allow + * convenient enumeration of the contents, and + * does not imply that the DOM specifies an order to these Nodes. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMNamedNodeMap { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMNamedNodeMap() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMNamedNodeMap(const DOMNamedNodeMap &); + DOMNamedNodeMap & operator = (const DOMNamedNodeMap &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMNamedNodeMap() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMNamedNodeMap interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Adds a node using its nodeName attribute. + * + *
As the nodeName attribute is used to derive the name + * which the node must be stored under, multiple nodes of certain types + * (those that have a "special" string value) cannot be stored as the names + * would clash. This is seen as preferable to allowing nodes to be aliased. + * @param arg A node to store in a named node map. The node will later be + * accessible using the value of the nodeName attribute of + * the node. If a node with that name is already present in the map, it + * is replaced by the new one. + * @return If the new DOMNode replaces an existing node the + * replaced DOMNode is returned, + * otherwise null is returned. + * @exception DOMException + * WRONG_DOCUMENT_ERR: Raised if arg was created from a + * different document than the one that created the + * DOMNamedNodeMap. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this + * DOMNamedNodeMap is readonly. + *
INUSE_ATTRIBUTE_ERR: Raised if arg is an + * DOMAttr that is already an attribute of another + * DOMElement object. The DOM user must explicitly clone + * DOMAttr nodes to re-use them in other elements. + * @since DOM Level 1 + */ + virtual DOMNode *setNamedItem(DOMNode *arg) = 0; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the indexth item in the map. + * + * If index + * is greater than or equal to the number of nodes in the map, this returns + * null. + * @param index Index into the map. + * @return The node at the indexth position in the + * DOMNamedNodeMap, or null if that is not a valid + * index. + * @since DOM Level 1 + */ + virtual DOMNode *item(XMLSize_t index) const = 0; + + /** + * Retrieves a node specified by name. + * + * @param name The nodeName of a node to retrieve. + * @return A DOMNode (of any type) with the specified nodeName, or + * null if it does not identify any node in + * the map. + * @since DOM Level 1 + */ + virtual DOMNode *getNamedItem(const XMLCh *name) const = 0; + + /** + * The number of nodes in the map. + * + * The range of valid child node indices is + * 0 to length-1 inclusive. + * @since DOM Level 1 + */ + virtual XMLSize_t getLength() const = 0; + + // ----------------------------------------------------------------------- + // Node methods + // ----------------------------------------------------------------------- + /** + * Removes a node specified by name. + * + * If the removed node is an + * DOMAttr with a default value it is immediately replaced. + * @param name The nodeName of a node to remove. + * @return The node removed from the map if a node with such a name exists. + * @exception DOMException + * NOT_FOUND_ERR: Raised if there is no node named name in + * the map. + *
+ * NO_MODIFICATION_ALLOWED_ERR: Raised if this DOMNamedNodeMap + * is readonly. + * @since DOM Level 1 + */ + virtual DOMNode *removeNamedItem(const XMLCh *name) = 0; + //@} + + /** @name Functions introduced in DOM Level 2 */ + //@{ + /** + * Retrieves a node specified by local name and namespace URI. + * + * @param namespaceURI The namespace URI of + * the node to retrieve. + * @param localName The local name of the node to retrieve. + * @return A DOMNode (of any type) with the specified + * local name and namespace URI, or null if they do not + * identify any node in the map. + * @since DOM Level 2 + */ + virtual DOMNode *getNamedItemNS(const XMLCh *namespaceURI, + const XMLCh *localName) const = 0; + + /** + * Adds a node using its namespaceURI and localName. + * + * @param arg A node to store in a named node map. The node will later be + * accessible using the value of the namespaceURI and + * localName attribute of the node. If a node with those + * namespace URI and local name is already present in the map, it is + * replaced by the new one. + * @return If the new DOMNode replaces an existing node the + * replaced DOMNode is returned, + * otherwise null is returned. + * @exception DOMException + * WRONG_DOCUMENT_ERR: Raised if arg was created from a + * different document than the one that created the + * DOMNamedNodeMap. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this + * DOMNamedNodeMap is readonly. + *
INUSE_ATTRIBUTE_ERR: Raised if arg is an + * DOMAttr that is already an attribute of another + * DOMElement object. The DOM user must explicitly clone + * DOMAttr nodes to re-use them in other elements. + * @since DOM Level 2 + */ + virtual DOMNode *setNamedItemNS(DOMNode *arg) = 0; + + /** + * Removes a node specified by local name and namespace URI. + * + * @param namespaceURI The namespace URI of + * the node to remove. + * @param localName The local name of the + * node to remove. When this DOMNamedNodeMap contains the + * attributes attached to an element, as returned by the attributes + * attribute of the DOMNode interface, if the removed + * attribute is known to have a default value, an attribute + * immediately appears containing the default value + * as well as the corresponding namespace URI, local name, and prefix. + * @return The node removed from the map if a node with such a local name + * and namespace URI exists. + * @exception DOMException + * NOT_FOUND_ERR: Raised if there is no node named name in + * the map. + *
+ * NO_MODIFICATION_ALLOWED_ERR: Raised if this DOMNamedNodeMap + * is readonly. + * @since DOM Level 2 + */ + virtual DOMNode *removeNamedItemNS(const XMLCh *namespaceURI, + const XMLCh *localName) = 0; + //@} + +}; + +#define GetDOMNamedNodeMapMemoryManager GET_INDIRECT_MM(fOwnerNode) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNode.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNode.hpp new file mode 100644 index 000000000000..49d45f228f9a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNode.hpp @@ -0,0 +1,925 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMDocument; +class DOMNamedNodeMap; +class DOMNodeList; +class DOMUserDataHandler; + +/** + * The DOMNode interface is the primary datatype for the entire + * Document Object Model. It represents a single node in the document tree. + * While all objects implementing the DOMNode interface expose + * methods for dealing with children, not all objects implementing the + * DOMNode interface may have children. For example, + * DOMText nodes may not have children, and adding children to + * such nodes results in a DOMException being raised. + *

The attributes nodeName, nodeValue and + * attributes are included as a mechanism to get at node + * information without casting down to the specific derived interface. In + * cases where there is no obvious mapping of these attributes for a + * specific nodeType (e.g., nodeValue for an + * DOMElement or attributes for a DOMComment + * ), this returns null. Note that the specialized interfaces + * may contain additional and more convenient mechanisms to get and set the + * relevant information. + *

The values of nodeName, + * nodeValue, and attributes vary according to the + * node type as follows: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
InterfacenodeNamenodeValueattributes
DOMAttrname of attributevalue of attributenull
DOMCDATASection"\#cdata-section"content of the CDATA Sectionnull
DOMComment"\#comment"content of the commentnull
DOMDocument"\#document"nullnull
DOMDocumentFragment"\#document-fragment"nullnull
DOMDocumentTypedocument type namenullnull
DOMElementtag namenullNamedNodeMap
DOMEntityentity namenullnull
DOMEntityReferencename of entity referencednullnull
DOMNotationnotation namenullnull
DOMProcessingInstructiontargetentire content excluding the targetnull
DOMText"\#text"content of the text nodenull
+ *

See also the Document Object Model (DOM) Level 2 Core Specification. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMNode() {} + DOMNode(const DOMNode &) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMNode & operator = (const DOMNode &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMNode() {}; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * NodeType + * + * @since DOM Level 1 + */ + enum NodeType { + ELEMENT_NODE = 1, + ATTRIBUTE_NODE = 2, + TEXT_NODE = 3, + CDATA_SECTION_NODE = 4, + ENTITY_REFERENCE_NODE = 5, + ENTITY_NODE = 6, + PROCESSING_INSTRUCTION_NODE = 7, + COMMENT_NODE = 8, + DOCUMENT_NODE = 9, + DOCUMENT_TYPE_NODE = 10, + DOCUMENT_FRAGMENT_NODE = 11, + NOTATION_NODE = 12 + }; + + /** + * DocumentPosition: + * + *

DOCUMENT_POSITION_CONTAINED_BY: + * The node is contained by the reference node. A node which is contained is always following, too.

+ *

DOCUMENT_POSITION_CONTAINS: + * The node contains the reference node. A node which contains is always preceding, too.

+ *

DOCUMENT_POSITION_DISCONNECTED: + * The two nodes are disconnected. Order between disconnected nodes is always implementation-specific.

+ *

DOCUMENT_POSITION_FOLLOWING: + * The node follows the reference node.

+ *

DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: + * The determination of preceding versus following is implementation-specific.

+ *

DOCUMENT_POSITION_PRECEDING: + * The second node precedes the reference node.

+ * + * @since DOM Level 3 + */ + enum DocumentPosition { + DOCUMENT_POSITION_DISCONNECTED = 0x01, + DOCUMENT_POSITION_PRECEDING = 0x02, + DOCUMENT_POSITION_FOLLOWING = 0x04, + DOCUMENT_POSITION_CONTAINS = 0x08, + DOCUMENT_POSITION_CONTAINED_BY = 0x10, + DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20 + }; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMNode interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * The name of this node, depending on its type; see the table above. + * @since DOM Level 1 + */ + virtual const XMLCh * getNodeName() const = 0; + + /** + * Gets the value of this node, depending on its type. + * + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. + * @since DOM Level 1 + */ + virtual const XMLCh * getNodeValue() const = 0; + + /** + * An enum value representing the type of the underlying object. + * @since DOM Level 1 + */ + virtual NodeType getNodeType() const = 0; + + /** + * Gets the parent of this node. + * + * All nodes, except DOMDocument, + * DOMDocumentFragment, and DOMAttr may have a parent. + * However, if a node has just been created and not yet added to the tree, + * or if it has been removed from the tree, a null DOMNode + * is returned. + * @since DOM Level 1 + */ + virtual DOMNode *getParentNode() const = 0; + + /** + * Gets a DOMNodeList that contains all children of this node. + * + * If there + * are no children, this is a DOMNodeList containing no nodes. + * The content of the returned DOMNodeList is "live" in the sense + * that, for instance, changes to the children of the node object that + * it was created from are immediately reflected in the nodes returned by + * the DOMNodeList accessors; it is not a static snapshot of the + * content of the node. This is true for every DOMNodeList, + * including the ones returned by the getElementsByTagName + * method. + * @since DOM Level 1 + */ + virtual DOMNodeList *getChildNodes() const = 0; + /** + * Gets the first child of this node. + * + * If there is no such node, this returns null. + * @since DOM Level 1 + */ + virtual DOMNode *getFirstChild() const = 0; + + /** + * Gets the last child of this node. + * + * If there is no such node, this returns null. + * @since DOM Level 1 + */ + virtual DOMNode *getLastChild() const = 0; + + /** + * Gets the node immediately preceding this node. + * + * If there is no such node, this returns null. + * @since DOM Level 1 + */ + virtual DOMNode *getPreviousSibling() const = 0; + + /** + * Gets the node immediately following this node. + * + * If there is no such node, this returns null. + * @since DOM Level 1 + */ + virtual DOMNode *getNextSibling() const = 0; + + /** + * Gets a DOMNamedNodeMap containing the attributes of this node (if it + * is an DOMElement) or null otherwise. + * @since DOM Level 1 + */ + virtual DOMNamedNodeMap *getAttributes() const = 0; + + /** + * Gets the DOMDocument object associated with this node. + * + * This is also + * the DOMDocument object used to create new nodes. When this + * node is a DOMDocument or a DOMDocumentType + * which is not used with any DOMDocument yet, this is + * null. + * + * @since DOM Level 1 + */ + virtual DOMDocument *getOwnerDocument() const = 0; + + // ----------------------------------------------------------------------- + // Node methods + // ----------------------------------------------------------------------- + /** + * Returns a duplicate of this node. + * + * This function serves as a generic copy constructor for nodes. + * + * The duplicate node has no parent ( + * parentNode returns null.). + *
Cloning an DOMElement copies all attributes and their + * values, including those generated by the XML processor to represent + * defaulted attributes, but this method does not copy any text it contains + * unless it is a deep clone, since the text is contained in a child + * DOMText node. Cloning any other type of node simply returns a + * copy of this node. + * @param deep If true, recursively clone the subtree under the + * specified node; if false, clone only the node itself (and + * its attributes, if it is an DOMElement). + * @return The duplicate node. + * @since DOM Level 1 + */ + virtual DOMNode * cloneNode(bool deep) const = 0; + + /** + * Inserts the node newChild before the existing child node + * refChild. + * + * If refChild is null, + * insert newChild at the end of the list of children. + *
If newChild is a DOMDocumentFragment object, + * all of its children are inserted, in the same order, before + * refChild. If the newChild is already in the + * tree, it is first removed. Note that a DOMNode that + * has never been assigned to refer to an actual node is == null. + * @param newChild The node to insert. + * @param refChild The reference node, i.e., the node before which the new + * node must be inserted. + * @return The node being inserted. + * @exception DOMException + * HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not + * allow children of the type of the newChild node, or if + * the node to insert is one of this node's ancestors. + *
WRONG_DOCUMENT_ERR: Raised if newChild was created + * from a different document than the one that created this node. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being + * inserted is readonly. + *
NOT_FOUND_ERR: Raised if refChild is not a child of + * this node. + * @since DOM Level 1 + */ + virtual DOMNode *insertBefore(DOMNode *newChild, + DOMNode *refChild) = 0; + + + /** + * Replaces the child node oldChild with newChild + * in the list of children, and returns the oldChild node. + * + * If newChild is a DOMDocumentFragment object, + * oldChild is replaced by all of the DOMDocumentFragment + * children, which are inserted in the same order. + * + * If the newChild is already in the tree, it is first removed. + * @param newChild The new node to put in the child list. + * @param oldChild The node being replaced in the list. + * @return The node replaced. + * @exception DOMException + * HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not + * allow children of the type of the newChild node, or it + * the node to put in is one of this node's ancestors. + *
WRONG_DOCUMENT_ERR: Raised if newChild was created + * from a different document than the one that created this node. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the new node is readonly. + *
NOT_FOUND_ERR: Raised if oldChild is not a child of + * this node. + * @since DOM Level 1 + */ + virtual DOMNode *replaceChild(DOMNode *newChild, + DOMNode *oldChild) = 0; + /** + * Removes the child node indicated by oldChild from the list + * of children, and returns it. + * + * @param oldChild The node being removed. + * @return The node removed. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + *
NOT_FOUND_ERR: Raised if oldChild is not a child of + * this node. + * @since DOM Level 1 + */ + virtual DOMNode *removeChild(DOMNode *oldChild) = 0; + + /** + * Adds the node newChild to the end of the list of children of + * this node. + * + * If the newChild is already in the tree, it is + * first removed. + * @param newChild The node to add.If it is a DOMDocumentFragment + * object, the entire contents of the document fragment are moved into + * the child list of this node + * @return The node added. + * @exception DOMException + * HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not + * allow children of the type of the newChild node, or if + * the node to append is one of this node's ancestors. + *
WRONG_DOCUMENT_ERR: Raised if newChild was created + * from a different document than the one that created this node. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being + * appended is readonly. + * @since DOM Level 1 + */ + virtual DOMNode *appendChild(DOMNode *newChild) = 0; + + // ----------------------------------------------------------------------- + // Query methods + // ----------------------------------------------------------------------- + /** + * This is a convenience method to allow easy determination of whether a + * node has any children. + * + * @return true if the node has any children, + * false if the node has no children. + * @since DOM Level 1 + */ + virtual bool hasChildNodes() const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Sets the value of the node. + * + * Any node which can have a nodeValue will + * also accept requests to set it to a string. The exact response to + * this varies from node to node -- Attribute, for example, stores + * its values in its children and has to replace them with a new Text + * holding the replacement value. + * + * For most types of Node, value is null and attempting to set it + * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will + * also be thrown if the node is read-only. + * @see #getNodeValue + * @since DOM Level 1 + */ + virtual void setNodeValue(const XMLCh *nodeValue) = 0; + //@} + + /** @name Functions introduced in DOM Level 2. */ + //@{ + /** + * Puts all DOMText + * nodes in the full depth of the sub-tree underneath this DOMNode, + * including attribute nodes, into a "normal" form where only markup (e.g., + * tags, comments, processing instructions, CDATA sections, and entity + * references) separates DOMText + * nodes, i.e., there are neither adjacent DOMText + * nodes nor empty DOMText + * nodes. This can be used to ensure that the DOM view of a document is the + * same as if it were saved and re-loaded, and is useful when operations + * (such as XPointer lookups) that depend on a particular document tree + * structure are to be used. + *

Note: In cases where the document contains DOMCDATASections, + * the normalize operation alone may not be sufficient, since XPointers do + * not differentiate between DOMText + * nodes and DOMCDATASection + * nodes.

+ * + * @since DOM Level 2 + */ + virtual void normalize() = 0; + + /** + * Tests whether the DOM implementation implements a specific + * feature and that feature is supported by this node. + * + * @param feature The string of the feature to test. This is the same + * name as what can be passed to the method hasFeature on + * DOMImplementation. + * @param version This is the version number of the feature to test. In + * Level 2, version 1, this is the string "2.0". If the version is not + * specified, supporting any version of the feature will cause the + * method to return true. + * @return Returns true if the specified feature is supported + * on this node, false otherwise. + * @since DOM Level 2 + */ + virtual bool isSupported(const XMLCh *feature, + const XMLCh *version) const = 0; + + /** + * Get the namespace URI of + * this node, or null if it is unspecified. + *

+ * This is not a computed value that is the result of a namespace lookup + * based on an examination of the namespace declarations in scope. It is + * merely the namespace URI given at creation time. + *

+ * For nodes of any type other than ELEMENT_NODE and + * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, + * such as createElement from the DOMDocument + * interface, this is always null. + * + * @since DOM Level 2 + */ + virtual const XMLCh * getNamespaceURI() const = 0; + + /** + * Get the namespace prefix + * of this node, or null if it is unspecified. + * + * @since DOM Level 2 + */ + virtual const XMLCh * getPrefix() const = 0; + + /** + * Returns the local part of the qualified name of this node. + *

+ * For nodes created with a DOM Level 1 method, such as + * createElement from the DOMDocument interface, + * it is null. + * + * @since DOM Level 2 + */ + virtual const XMLCh * getLocalName() const = 0; + + /** + * Set the namespace prefix of this node. + *

+ * Note that setting this attribute, when permitted, changes + * the nodeName attribute, which holds the qualified + * name, as well as the tagName and name + * attributes of the DOMElement and DOMAttr + * interfaces, when applicable. + *

+ * Note also that changing the prefix of an + * attribute, that is known to have a default value, does not make a new + * attribute with the default value and the original prefix appear, since the + * namespaceURI and localName do not change. + * + * + * @param prefix The prefix of this node. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified prefix contains + * an illegal character. + *
+ * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + *
+ * NAMESPACE_ERR: Raised if the specified prefix is + * malformed, if the namespaceURI of this node is + * null, if the specified prefix is "xml" and the + * namespaceURI of this node is different from + * "http://www.w3.org/XML/1998/namespace", if this node is an attribute + * and the specified prefix is "xmlns" and the + * namespaceURI of this node is different from + * "http://www.w3.org/2000/xmlns/", or if this node is an attribute and + * the qualifiedName of this node is "xmlns". + * @since DOM Level 2 + */ + virtual void setPrefix(const XMLCh * prefix) = 0; + + /** + * Returns whether this node (if it is an element) has any attributes. + * @return true if this node has any attributes, + * false otherwise. + * @since DOM Level 2 + */ + virtual bool hasAttributes() const = 0; + //@} + + /** @name Functions introduced in DOM Level 3. */ + //@{ + /** + * Returns whether this node is the same node as the given one. + *
This method provides a way to determine whether two + * DOMNode references returned by the implementation reference + * the same object. When two DOMNode references are references + * to the same object, even if through a proxy, the references may be + * used completely interchangeably, such that all attributes have the + * same values and calling the same DOM method on either reference + * always has exactly the same effect. + * + * @param other The node to test against. + * @return Returns true if the nodes are the same, + * false otherwise. + * @since DOM Level 3 + */ + virtual bool isSameNode(const DOMNode* other) const = 0; + + /** + * Tests whether two nodes are equal. + *
This method tests for equality of nodes, not sameness (i.e., + * whether the two nodes are pointers to the same object) which can be + * tested with DOMNode::isSameNode. All nodes that are the same + * will also be equal, though the reverse may not be true. + *
Two nodes are equal if and only if the following conditions are + * satisfied: The two nodes are of the same type.The following string + * attributes are equal: nodeName, localName, + * namespaceURI, prefix, nodeValue + * , baseURI. This is: they are both null, or + * they have the same length and are character for character identical. + * The attributes DOMNamedNodeMaps are equal. + * This is: they are both null, or they have the same + * length and for each node that exists in one map there is a node that + * exists in the other map and is equal, although not necessarily at the + * same index.The childNodes DOMNodeLists are + * equal. This is: they are both null, or they have the + * same length and contain equal nodes at the same index. This is true + * for DOMAttr nodes as for any other type of node. Note that + * normalization can affect equality; to avoid this, nodes should be + * normalized before being compared. + *
For two DOMDocumentType nodes to be equal, the following + * conditions must also be satisfied: The following string attributes + * are equal: publicId, systemId, + * internalSubset.The entities + * DOMNamedNodeMaps are equal.The notations + * DOMNamedNodeMaps are equal. + *
On the other hand, the following do not affect equality: the + * ownerDocument attribute, the specified + * attribute for DOMAttr nodes, the + * isWhitespaceInElementContent attribute for + * DOMText nodes, as well as any user data or event listeners + * registered on the nodes. + * + * @param arg The node to compare equality with. + * @return If the nodes, and possibly subtrees are equal, + * true otherwise false. + * @since DOM Level 3 + */ + virtual bool isEqualNode(const DOMNode* arg) const = 0; + + + /** + * Associate an object to a key on this node. The object can later be + * retrieved from this node by calling getUserData with the + * same key. + * + * Deletion of the user data remains the responsibility of the + * application program; it will not be automatically deleted when + * the nodes themselves are reclaimed. + * + * Both the parameter data and the returned object are + * void pointer, it is applications' responsibility to keep track of + * their original type. Casting them to the wrong type may result + * unexpected behavior. + * + * @param key The key to associate the object to. + * @param data The object to associate to the given key, or + * null to remove any existing association to that key. + * @param handler The handler to associate to that key, or + * null. + * @return Returns the void* object previously associated to + * the given key on this node, or null if there was none. + * @see #getUserData + * + * @since DOM Level 3 + */ + virtual void* setUserData(const XMLCh* key, + void* data, + DOMUserDataHandler* handler) = 0; + + /** + * Retrieves the object associated to a key on a this node. The object + * must first have been set to this node by calling + * setUserData with the same key. + * + * @param key The key the object is associated to. + * @return Returns the void* associated to the given key + * on this node, or null if there was none. + * @see #setUserData + * @since DOM Level 3 + */ + virtual void* getUserData(const XMLCh* key) const = 0; + + + /** + * The absolute base URI of this node or null if undefined. + * This value is computed according to . However, when the + * DOMDocument supports the feature "HTML" , the base URI is + * computed using first the value of the href attribute of the HTML BASE + * element if any, and the value of the documentURI + * attribute from the DOMDocument interface otherwise. + * + *
When the node is an DOMElement, a DOMDocument + * or a a DOMProcessingInstruction, this attribute represents + * the properties [base URI] defined in . When the node is a + * DOMNotation, an DOMEntity, or an + * DOMEntityReference, this attribute represents the + * properties [declaration base URI]. + * @since DOM Level 3 + */ + virtual const XMLCh* getBaseURI() const = 0; + + /** + * Compares the reference node, i.e. the node on which this method is being called, + * with a node, i.e. the one passed as a parameter, with regard to their position + * in the document and according to the document order. + * + * @param other The node to compare against this node. + * @return Returns how the given node is positioned relatively to this + * node. + * @since DOM Level 3 + */ + virtual short compareDocumentPosition(const DOMNode* other) const = 0; + + /** + * WARNING: This method is known to be buggy and does + * not produce accurate results under a variety of conditions. + * + *
This attribute returns the text content of this node and its + * descendants. No serialization is performed, the returned string + * does not contain any markup. No whitespace normalization is + * performed and the returned string does not contain the white + * spaces in element content. + * + *
The string returned is made of the text content of this node + * depending on its type, as defined below: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Node typeContent
+ * ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, + * DOCUMENT_FRAGMENT_NODEconcatenation of the textContent + * attribute value of every child node, excluding COMMENT_NODE and + * PROCESSING_INSTRUCTION_NODE nodes
ATTRIBUTE_NODE, TEXT_NODE, + * CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE + * nodeValue
DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE + * null
+ * @exception DOMException + * DOMSTRING_SIZE_ERR: Raised when it would return more characters than + * fit in a DOMString variable on the implementation + * platform. + * @see #setTextContent + * @since DOM Level 3 + */ + virtual const XMLCh* getTextContent() const = 0; + + /** + * This attribute removes any possible children this node may have and, if the + * new string is not empty or null, replaced by a single DOMText + * node containing the string this attribute is set to. No parsing is + * performed, the input string is taken as pure textual content. + * + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. + * @see #getTextContent + * @since DOM Level 3 + */ + virtual void setTextContent(const XMLCh* textContent) = 0; + + /** + * Look up the prefix associated to the given namespace URI, starting from this node. + * The default namespace declarations are ignored by this method. + * + * @param namespaceURI The namespace URI to look for. + * @return Returns an associated namespace prefix if found, + * null if none is found. If more + * than one prefix are associated to the namespace prefix, the + * returned namespace prefix is implementation dependent. + * @since DOM Level 3 + */ + virtual const XMLCh* lookupPrefix(const XMLCh* namespaceURI) const = 0; + + /** + * This method checks if the specified namespaceURI is the + * default namespace or not. + * + * @param namespaceURI The namespace URI to look for. + * @return true if the specified namespaceURI + * is the default namespace, false otherwise. + * @since DOM Level 3 + */ + virtual bool isDefaultNamespace(const XMLCh* namespaceURI) const = 0; + + /** + * Look up the namespace URI associated to the given prefix, starting from + * this node. + * + * @param prefix The prefix to look for. If this parameter is + * null, the method will return the default namespace URI + * if any. + * @return Returns the associated namespace URI or null if + * none is found. + * @since DOM Level 3 + */ + virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const = 0; + + /** + * This method makes available a DOMNode's specialized interface + * + * @param feature The name of the feature requested (case-insensitive). + * @param version The version of the feature requested. + * @return Returns an alternate DOMNode which implements the + * specialized APIs of the specified feature, if any, or + * null if there is no alternate DOMNode which + * implements interfaces associated with that feature. Any alternate + * DOMNode returned by this method must delegate to the + * primary core DOMNode and not return results inconsistent + * with the primary core DOMNode such as key, + * attributes, childNodes, etc. + * @since DOM Level 3 + */ + virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this Node (and its associated children) is no longer in use + * and that the implementation may relinquish any resources associated with it and + * its associated children. + * + * If this is a document, any nodes it owns (created by DOMDocument::createXXXX()) + * are also released. + * + * Access to a released object will lead to unexpected result. + * + * @exception DOMException + * INVALID_ACCESS_ERR: Raised if this Node has a parent and thus should not be released yet. + */ + virtual void release() = 0; + //@} +#if defined(XML_DOMREFCOUNT_EXPERIMENTAL) + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * This is custom function which can be implemented by classes deriving + * from DOMNode for implementing reference counting on DOMNodes. Any + * implementation which has memory management model which involves + * disposing of nodes immediately after being used can override this + * function to do that job. + */ + virtual void decRefCount() {} + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * This is custom function which can be implemented by classes deriving + * from DOMNode for implementing reference counting on DOMNodes. + */ + virtual void incRefCount() {} + //@} +#endif +}; + +/*** + * Utilities macros for getting memory manager within DOM +***/ +#define GET_OWNER_DOCUMENT(ptr) \ + ((DOMDocumentImpl*)(ptr->getOwnerDocument())) + +#define GET_DIRECT_MM(ptr) \ + (ptr ? ((DOMDocumentImpl*)ptr)->getMemoryManager() : XMLPlatformUtils::fgMemoryManager) + +#define GET_INDIRECT_MM(ptr) \ + (!ptr ? XMLPlatformUtils::fgMemoryManager : \ + GET_OWNER_DOCUMENT(ptr) ? GET_OWNER_DOCUMENT(ptr)->getMemoryManager() : \ + XMLPlatformUtils::fgMemoryManager) + +/*** + * For DOMNode and its derivatives +***/ +#define GetDOMNodeMemoryManager GET_INDIRECT_MM(this) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNodeFilter.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNodeFilter.hpp new file mode 100644 index 000000000000..0373affef371 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNodeFilter.hpp @@ -0,0 +1,221 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODEFILTER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODEFILTER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * Filters are objects that know how to "filter out" nodes. If a + * DOMNodeIterator or DOMTreeWalker is given a + * DOMNodeFilter, it applies the filter before it returns the next + * node. If the filter says to accept the node, the traversal logic returns + * it; otherwise, traversal looks for the next node and pretends that the + * node that was rejected was not there. + *

The DOM does not provide any filters. DOMNodeFilter is just an + * interface that users can implement to provide their own filters. + *

DOMNodeFilters do not need to know how to traverse from node + * to node, nor do they need to know anything about the data structure that + * is being traversed. This makes it very easy to write filters, since the + * only thing they have to know how to do is evaluate a single node. One + * filter may be used with a number of different kinds of traversals, + * encouraging code reuse. + *

See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. + * @since DOM Level 2 + */ + +class CDOM_EXPORT DOMNodeFilter +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMNodeFilter() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMNodeFilter(const DOMNodeFilter &); + DOMNodeFilter & operator = (const DOMNodeFilter &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMNodeFilter() {}; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * Constants returned by acceptNode. + * + *

FILTER_ACCEPT: + * Accept the node. Navigation methods defined for + * DOMNodeIterator or DOMTreeWalker will return this + * node.

+ * + *

FILTER_REJECT: + * Reject the node. Navigation methods defined for + * DOMNodeIterator or DOMTreeWalker will not return + * this node. For DOMTreeWalker, the children of this node + * will also be rejected. DOMNodeIterators treat this as a + * synonym for FILTER_SKIP.

+ * + *

FILTER_SKIP: + * Skip this single node. Navigation methods defined for + * DOMNodeIterator or DOMTreeWalker will not return + * this node. For both DOMNodeIterator and + * DOMTreeWalker, the children of this node will still be + * considered.

+ * + * @since DOM Level 2 + */ + enum FilterAction {FILTER_ACCEPT = 1, + FILTER_REJECT = 2, + FILTER_SKIP = 3}; + + /** + * Constants for whatToShow + * + *

SHOW_ALL: + * Show all DOMNode(s).

+ * + *

SHOW_ELEMENT: + * Show DOMElement nodes.

+ * + *

SHOW_ATTRIBUTE: + * Show DOMAttr nodes. This is meaningful only when creating an + * DOMNodeIterator or DOMTreeWalker with an + * attribute node as its root; in this case, it means that + * the attribute node will appear in the first position of the iteration + * or traversal. Since attributes are never children of other nodes, + * they do not appear when traversing over the document tree.

+ * + *

SHOW_TEXT: + * Show DOMText nodes.

+ * + *

SHOW_CDATA_SECTION: + * Show DOMCDATASection nodes.

+ * + *

SHOW_ENTITY_REFERENCE: + * Show DOMEntityReference nodes.

+ * + *

SHOW_ENTITY: + * Show DOMEntity nodes. This is meaningful only when creating + * an DOMNodeIterator or DOMTreeWalker with an + * DOMEntity node as its root; in this case, it + * means that the DOMEntity node will appear in the first + * position of the traversal. Since entities are not part of the + * document tree, they do not appear when traversing over the document + * tree.

+ * + *

SHOW_PROCESSING_INSTRUCTION: + * Show DOMProcessingInstruction nodes.

+ * + *

SHOW_COMMENT: + * Show DOMComment nodes.

+ * + *

SHOW_DOCUMENT: + * Show DOMDocument nodes.

+ * + *

SHOW_DOCUMENT_TYPE: + * Show DOMDocumentType nodes.

+ * + *

SHOW_DOCUMENT_FRAGMENT: + * Show DOMDocumentFragment nodes.

+ * + *

SHOW_NOTATION: + * Show DOMNotation nodes. This is meaningful only when creating + * an DOMNodeIterator or DOMTreeWalker with a + * DOMNotation node as its root; in this case, it + * means that the DOMNotation node will appear in the first + * position of the traversal. Since notations are not part of the + * document tree, they do not appear when traversing over the document + * tree.

+ * + * @since DOM Level 2 + */ + enum ShowTypeMasks { + SHOW_ALL = 0x0000FFFF, + SHOW_ELEMENT = 0x00000001, + SHOW_ATTRIBUTE = 0x00000002, + SHOW_TEXT = 0x00000004, + SHOW_CDATA_SECTION = 0x00000008, + SHOW_ENTITY_REFERENCE = 0x00000010, + SHOW_ENTITY = 0x00000020, + SHOW_PROCESSING_INSTRUCTION = 0x00000040, + SHOW_COMMENT = 0x00000080, + SHOW_DOCUMENT = 0x00000100, + SHOW_DOCUMENT_TYPE = 0x00000200, + SHOW_DOCUMENT_FRAGMENT = 0x00000400, + SHOW_NOTATION = 0x00000800 + }; + + typedef unsigned long ShowType; + + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMNodeFilter interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 2 */ + //@{ + /** + * Test whether a specified node is visible in the logical view of a + * DOMTreeWalker or DOMNodeIterator. This function + * will be called by the implementation of DOMTreeWalker and + * DOMNodeIterator; it is not normally called directly from + * user code. (Though you could do so if you wanted to use the same + * filter to guide your own application logic.) + * @param node The node to check to see if it passes the filter or not. + * @return A constant to determine whether the node is accepted, + * rejected, or skipped, as defined above. + * @since DOM Level 2 + */ + virtual FilterAction acceptNode (const DOMNode* node) const =0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNodeIterator.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNodeIterator.hpp new file mode 100644 index 000000000000..cc08e72366bd --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNodeIterator.hpp @@ -0,0 +1,196 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODEITERATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODEITERATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * DOMNodeIterators are used to step through a set of nodes, e.g. + * the set of nodes in a DOMNodeList, the document subtree + * governed by a particular DOMNode, the results of a query, or + * any other set of nodes. The set of nodes to be iterated is determined by + * the implementation of the DOMNodeIterator. DOM Level 2 + * specifies a single DOMNodeIterator implementation for + * document-order traversal of a document subtree. Instances of these + * DOMNodeIterators are created by calling + * DOMDocumentTraversal.createNodeIterator(). + *

See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. + * @since DOM Level 2 + */ +class CDOM_EXPORT DOMNodeIterator +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMNodeIterator() {} + DOMNodeIterator(const DOMNodeIterator &) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMNodeIterator & operator = (const DOMNodeIterator &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMNodeIterator() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMNodeFilter interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 2 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * The root node of the DOMNodeIterator, as specified + * when it was created. + * @since DOM Level 2 + */ + virtual DOMNode* getRoot() = 0; + /** + * Return which node types are presented via the iterator. + * This attribute determines which node types are presented via the + * DOMNodeIterator. The available set of constants is defined + * in the DOMNodeFilter interface. Nodes not accepted by + * whatToShow will be skipped, but their children may still + * be considered. Note that this skip takes precedence over the filter, + * if any. + * @since DOM Level 2 + * + */ + virtual DOMNodeFilter::ShowType getWhatToShow() = 0; + + /** + * The DOMNodeFilter used to screen nodes. + * + * @since DOM Level 2 + */ + virtual DOMNodeFilter* getFilter() = 0; + + /** + * Return the expandEntityReferences flag. + * The value of this flag determines whether the children of entity + * reference nodes are visible to the DOMNodeIterator. If + * false, these children and their descendants will be rejected. Note + * that this rejection takes precedence over whatToShow and + * the filter. Also note that this is currently the only situation where + * DOMNodeIterators may reject a complete subtree rather than + * skipping individual nodes. + *
+ *
To produce a view of the document that has entity references + * expanded and does not expose the entity reference node itself, use + * the whatToShow flags to hide the entity reference node + * and set expandEntityReferences to true when creating the + * DOMNodeIterator. To produce a view of the document that has + * entity reference nodes but no entity expansion, use the + * whatToShow flags to show the entity reference node and + * set expandEntityReferences to false. + * + * @since DOM Level 2 + */ + virtual bool getExpandEntityReferences() = 0; + + // ----------------------------------------------------------------------- + // Query methods + // ----------------------------------------------------------------------- + /** + * Returns the next node in the set and advances the position of the + * DOMNodeIterator in the set. After a + * DOMNodeIterator is created, the first call to + * nextNode() returns the first node in the set. + * @return The next DOMNode in the set being iterated over, or + * null if there are no more members in that set. + * @exception DOMException + * INVALID_STATE_ERR: Raised if this method is called after the + * detach method was invoked. + * @since DOM Level 2 + */ + virtual DOMNode* nextNode() = 0; + + /** + * Returns the previous node in the set and moves the position of the + * DOMNodeIterator backwards in the set. + * @return The previous DOMNode in the set being iterated over, + * or null if there are no more members in that set. + * @exception DOMException + * INVALID_STATE_ERR: Raised if this method is called after the + * detach method was invoked. + * @since DOM Level 2 + */ + virtual DOMNode* previousNode() = 0; + + /** + * Detaches the DOMNodeIterator from the set which it iterated + * over, releasing any computational resources and placing the + * DOMNodeIterator in the INVALID state. After + * detach has been invoked, calls to nextNode + * or previousNode will raise the exception + * INVALID_STATE_ERR. + * @since DOM Level 2 + */ + virtual void detach() = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this NodeIterator is no longer in use + * and that the implementation may relinquish any resources associated with it. + * (release() will call detach() where appropriate) + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} +}; + +#define GetDOMNodeIteratorMemoryManager GET_DIRECT_MM(fDocument) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNodeList.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNodeList.hpp new file mode 100644 index 000000000000..52249cfcb128 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNodeList.hpp @@ -0,0 +1,112 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODELIST_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODELIST_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNode; + + +/** + * The DOMNodeList interface provides the abstraction of an ordered + * collection of nodes. DOMNodeLists are created by DOMDocument::getElementsByTagName(), + * DOMNode::getChildNodes(), + * + *

The items in the DOMNodeList are accessible via an integral + * index, starting from 0. + * + * DOMNodeLists are "live", in that any changes to the document tree are immediately + * reflected in any DOMNodeLists that may have been created for that tree. + */ + +class CDOM_EXPORT DOMNodeList { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMNodeList() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMNodeList(const DOMNodeList &); + DOMNodeList & operator = (const DOMNodeList &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMNodeList() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMNodeList interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the index item in the collection. + * + * If index is greater than or equal to the number of nodes in + * the list, this returns null. + * + * @param index Index into the collection. + * @return The node at the indexth position in the + * DOMNodeList, or null if that is not a valid + * index. + * @since DOM Level 1 + */ + virtual DOMNode *item(XMLSize_t index) const = 0; + + /** + * Returns the number of nodes in the list. + * + * The range of valid child node indices is 0 to length-1 inclusive. + * @since DOM Level 1 + */ + virtual XMLSize_t getLength() const = 0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNotation.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNotation.hpp new file mode 100644 index 000000000000..26811b39ac4f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMNotation.hpp @@ -0,0 +1,114 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNOTATION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNOTATION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * This interface represents a notation declared in the DTD. A notation either + * declares, by name, the format of an unparsed entity (see section 4.7 of + * the XML 1.0 specification), or is used for formal declaration of + * Processing Instruction targets (see section 2.6 of the XML 1.0 + * specification). The nodeName attribute inherited from + * DOMNode is set to the declared name of the notation. + *

The DOM Level 1 does not support editing DOMNotation nodes; + * they are therefore readonly. + *

A DOMNotation node does not have any parent. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMNotation: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMNotation() {} + DOMNotation(const DOMNotation &other) : DOMNode(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMNotation & operator = (const DOMNotation &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMNotation() {}; + //@} + + + // ----------------------------------------------------------------------- + // Virtual DOMNotation interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Get the public identifier of this notation. + * + * If the public identifier was not + * specified, this is null. + * @return Returns the public identifier of the notation + * @since DOM Level 1 + */ + virtual const XMLCh *getPublicId() const = 0; + + /** + * Get the system identifier of this notation. + * + * If the system identifier was not + * specified, this is null. + * @return Returns the system identifier of the notation + * @since DOM Level 1 + */ + virtual const XMLCh *getSystemId() const = 0; + + + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMPSVITypeInfo.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMPSVITypeInfo.hpp new file mode 100644 index 000000000000..8ccd1fbe8e60 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMPSVITypeInfo.hpp @@ -0,0 +1,118 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMPSVITYPEINFO_HPP) +#define XERCESC_INCLUDE_GUARD_DOMPSVITYPEINFO_HPP + +//------------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------------ +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * The DOMPSVITypeInfo interface represent the PSVI info used by + * DOMElement or DOMAttr nodes, specified in the + * schemas associated with the document. + */ +class CDOM_EXPORT DOMPSVITypeInfo +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMPSVITypeInfo() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMPSVITypeInfo(const DOMPSVITypeInfo &); + DOMPSVITypeInfo & operator = (const DOMPSVITypeInfo &); + //@} + +public: + + enum PSVIProperty + { + PSVI_Validity + , PSVI_Validation_Attempted + , PSVI_Type_Definition_Type + , PSVI_Type_Definition_Name + , PSVI_Type_Definition_Namespace + , PSVI_Type_Definition_Anonymous + , PSVI_Nil + , PSVI_Member_Type_Definition_Name + , PSVI_Member_Type_Definition_Namespace + , PSVI_Member_Type_Definition_Anonymous + , PSVI_Schema_Default + , PSVI_Schema_Normalized_Value + , PSVI_Schema_Specified + }; + + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMPSVITypeInfo() {}; + //@} + + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the string value of the specified PSVI property associated to a + * DOMElement or DOMAttr, or null if not available. + * + * + * @return the string value of the specified PSVI property associated to a + * DOMElement or DOMAttr, or null if not available. + */ + virtual const XMLCh* getStringProperty(PSVIProperty prop) const = 0; + + /** + * Returns the numeric value of the specified PSVI property associated to a + * DOMElement or DOMAttr, or null if not available. + * + * + * @return the numeric value of the specified PSVI property associated to a + * DOMElement or DOMAttr, or null if not available. + */ + virtual int getNumericProperty(PSVIProperty prop) const = 0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DOMPSVITypeInfo.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMProcessingInstruction.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMProcessingInstruction.hpp new file mode 100644 index 000000000000..fe89606d9143 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMProcessingInstruction.hpp @@ -0,0 +1,121 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMPROCESSINGINSTRUCTION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMPROCESSINGINSTRUCTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * The DOMProcessingInstruction interface represents a "processing + * instruction", used in XML as a way to keep processor-specific information + * in the text of the document. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMProcessingInstruction: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMProcessingInstruction() {} + DOMProcessingInstruction(const DOMProcessingInstruction &other) : DOMNode(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMProcessingInstruction & operator = (const DOMProcessingInstruction &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMProcessingInstruction() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMProcessingInstruction interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * The target of this processing instruction. + * + * XML defines this as being the + * first token following the markup that begins the processing instruction. + * + * @since DOM Level 1 + */ + virtual const XMLCh * getTarget() const = 0; + + /** + * The content of this processing instruction. + * + * This is from the first non + * white space character after the target to the character immediately + * preceding the ?>. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. + * @since DOM Level 1 + */ + virtual const XMLCh * getData() const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Sets the content of this processing instruction. + * + * This is from the first non + * white space character after the target to the character immediately + * preceding the ?>. + * @param data The string containing the processing instruction + * @since DOM Level 1 + */ + virtual void setData(const XMLCh * data) = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMRange.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMRange.hpp new file mode 100644 index 000000000000..3aec0de9397f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMRange.hpp @@ -0,0 +1,530 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMRANGE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMRANGE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMNode; +class DOMDocumentFragment; + +/** + *

See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. + * @since DOM Level 2 + */ +class CDOM_EXPORT DOMRange { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMRange() {} + DOMRange(const DOMRange &) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMRange & operator = (const DOMRange &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMRange() {}; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * Constants CompareHow. + * + *

START_TO_START: + * Compare start boundary-point of sourceRange to start + * boundary-point of Range on which compareBoundaryPoints + * is invoked.

+ * + *

START_TO_END: + * Compare start boundary-point of sourceRange to end + * boundary-point of Range on which compareBoundaryPoints + * is invoked.

+ * + *

END_TO_END: + * Compare end boundary-point of sourceRange to end + * boundary-point of Range on which compareBoundaryPoints + * is invoked.

+ * + *

END_TO_START: + * Compare end boundary-point of sourceRange to start + * boundary-point of Range on which compareBoundaryPoints + * is invoked.

+ * + * @since DOM Level 2 + */ + enum CompareHow { + START_TO_START = 0, + START_TO_END = 1, + END_TO_END = 2, + END_TO_START = 3 + }; + + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMRange interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 2 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * DOMNode within which the Range begins + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual DOMNode* getStartContainer() const = 0; + + /** + * Offset within the starting node of the Range. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual XMLSize_t getStartOffset() const = 0; + + /** + * DOMNode within which the Range ends + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual DOMNode* getEndContainer() const = 0; + + /** + * Offset within the ending node of the Range. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual XMLSize_t getEndOffset() const = 0; + + /** + * TRUE if the Range is collapsed + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual bool getCollapsed() const = 0; + + /** + * The deepest common ancestor container of the Range's two + * boundary-points. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual const DOMNode* getCommonAncestorContainer() const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Sets the attributes describing the start of the Range. + * @param refNode The refNode value. This parameter must be + * different from null. + * @param offset The startOffset value. + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if refNode or an ancestor + * of refNode is an DOMEntity, DOMNotation, or DOMDocumentType + * node. + * @exception DOMException + * INDEX_SIZE_ERR: Raised if offset is negative or greater + * than the number of child units in refNode. Child units + * are 16-bit units if refNode is a type of DOMCharacterData + * node (e.g., a DOMText or DOMComment node) or a DOMProcessingInstruction + * node. Child units are Nodes in all other cases. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void setStart(const DOMNode *refNode, XMLSize_t offset) = 0; + + /** + * Sets the attributes describing the end of a Range. + * @param refNode The refNode value. This parameter must be + * different from null. + * @param offset The endOffset value. + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if refNode or an ancestor + * of refNode is an DOMEntity, DOMNotation, or DOMDocumentType + * node. + * @exception DOMException + * INDEX_SIZE_ERR: Raised if offset is negative or greater + * than the number of child units in refNode. Child units + * are 16-bit units if refNode is a type of DOMCharacterData + * node (e.g., a DOMText or DOMComment node) or a DOMProcessingInstruction + * node. Child units are Nodes in all other cases. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void setEnd(const DOMNode *refNode, XMLSize_t offset) = 0; + + /** + * Sets the start position to be before a node + * @param refNode Range starts before refNode + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if the root container of + * refNode is not an DOMAttr, DOMDocument, or DOMDocumentFragment + * node or if refNode is a DOMDocument, DOMDocumentFragment, + * DOMAttr, DOMEntity, or DOMNotation node. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void setStartBefore(const DOMNode *refNode) = 0; + + /** + * Sets the start position to be after a node + * @param refNode Range starts after refNode + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if the root container of + * refNode is not an DOMAttr, DOMDocument, or DOMDocumentFragment + * node or if refNode is a DOMDocument, DOMDocumentFragment, + * DOMAttr, DOMEntity, or DOMNotation node. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void setStartAfter(const DOMNode *refNode) = 0; + + /** + * Sets the end position to be before a node. + * @param refNode Range ends before refNode + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if the root container of + * refNode is not an DOMAttr, DOMDocument, or DOMDocumentFragment + * node or if refNode is a DOMDocument, DOMDocumentFragment, + * DOMAttr, DOMEntity, or DOMNotation node. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void setEndBefore(const DOMNode *refNode) = 0; + + /** + * Sets the end of a Range to be after a node + * @param refNode Range ends after refNode. + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if the root container of + * refNode is not a DOMAttr, DOMDocument or DOMDocumentFragment + * node or if refNode is a DOMDocument, DOMDocumentFragment, + * DOMAttr, DOMEntity, or DOMNotation node. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void setEndAfter(const DOMNode *refNode) = 0; + + // ----------------------------------------------------------------------- + // Misc methods + // ----------------------------------------------------------------------- + /** + * Collapse a Range onto one of its boundary-points + * @param toStart If TRUE, collapses the Range onto its start; if FALSE, + * collapses it onto its end. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual void collapse(bool toStart) = 0; + + /** + * Select a node and its contents + * @param refNode The node to select. + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if an ancestor of refNode + * is an DOMEntity, DOMNotation or DOMDocumentType node or if + * refNode is a DOMDocument, DOMDocumentFragment, DOMAttr, DOMEntity, + * or DOMNotation node. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void selectNode(const DOMNode *refNode) = 0; + + /** + * Select the contents within a node + * @param refNode DOMNode to select from + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if refNode or an ancestor + * of refNode is an DOMEntity, DOMNotation or DOMDocumentType node. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void selectNodeContents(const DOMNode *refNode) = 0; + + /** + * Compare the boundary-points of two Ranges in a document. + * @param how A code representing the type of comparison, as defined + * above. + * @param sourceRange The Range on which this current + * Range is compared to. + * @return -1, 0 or 1 depending on whether the corresponding + * boundary-point of the Range is respectively before, equal to, or + * after the corresponding boundary-point of sourceRange. + * @exception DOMException + * WRONG_DOCUMENT_ERR: Raised if the two Ranges are not in the same + * DOMDocument or DOMDocumentFragment. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + * + * @since DOM Level 2 + */ + virtual short compareBoundaryPoints(CompareHow how, const DOMRange* sourceRange) const = 0; + + /** + * Removes the contents of a Range from the containing document or + * document fragment without returning a reference to the removed + * content. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of + * the Range is read-only or any of the nodes that contain any of the + * content of the Range are read-only. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + * + * @since DOM Level 2 + */ + virtual void deleteContents() = 0; + + /** + * Moves the contents of a Range from the containing document or document + * fragment to a new DOMDocumentFragment. + * @return A DOMDocumentFragment containing the extracted contents. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of + * the Range is read-only or any of the nodes which contain any of the + * content of the Range are read-only. + *
HIERARCHY_REQUEST_ERR: Raised if a DOMDocumentType node would be + * extracted into the new DOMDocumentFragment. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + * + * @since DOM Level 2 + */ + virtual DOMDocumentFragment* extractContents() = 0; + + /** + * Duplicates the contents of a Range + * @return A DOMDocumentFragment that contains content equivalent to this + * Range. + * @exception DOMException + * HIERARCHY_REQUEST_ERR: Raised if a DOMDocumentType node would be + * extracted into the new DOMDocumentFragment. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + * + * @since DOM Level 2 + */ + virtual DOMDocumentFragment* cloneContents() const = 0; + + /** + * Inserts a node into the DOMDocument or DOMDocumentFragment at the start of + * the Range. If the container is a DOMText node, this will be split at the + * start of the Range (as if the DOMText node's splitText method was + * performed at the insertion point) and the insertion will occur + * between the two resulting DOMText nodes. Adjacent DOMText nodes will not be + * automatically merged. If the node to be inserted is a + * DOMDocumentFragment node, the children will be inserted rather than the + * DOMDocumentFragment node itself. + * @param newNode The node to insert at the start of the Range + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of the + * start of the Range is read-only. + *
WRONG_DOCUMENT_ERR: Raised if newNode and the + * container of the start of the Range were not created from the same + * document. + *
HIERARCHY_REQUEST_ERR: Raised if the container of the start of + * the Range is of a type that does not allow children of the type of + * newNode or if newNode is an ancestor of + * the container. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if newNode is an DOMAttr, + * DOMEntity, DOMNotation, or DOMDocument node. + * + * @since DOM Level 2 + */ + virtual void insertNode(DOMNode *newNode) = 0; + + /** + * Reparents the contents of the Range to the given node and inserts the + * node at the position of the start of the Range. + * @param newParent The node to surround the contents with. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of + * either boundary-point of the Range is read-only. + *
WRONG_DOCUMENT_ERR: Raised if newParent and the + * container of the start of the Range were not created from the same + * document. + *
HIERARCHY_REQUEST_ERR: Raised if the container of the start of + * the Range is of a type that does not allow children of the type of + * newParent or if newParent is an ancestor + * of the container or if node would end up with a child + * node of a type not allowed by the type of node. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + * @exception DOMRangeException + * BAD_BOUNDARYPOINTS_ERR: Raised if the Range partially selects a + * non-text node. + *
INVALID_NODE_TYPE_ERR: Raised if node is an DOMAttr, + * DOMEntity, DOMDocumentType, DOMNotation, DOMDocument, or DOMDocumentFragment node. + * + * @since DOM Level 2 + */ + virtual void surroundContents(DOMNode *newParent) = 0; + + /** + * Produces a new Range whose boundary-points are equal to the + * boundary-points of the Range. + * @return The duplicated Range. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual DOMRange* cloneRange() const = 0; + + /** + * Returns the contents of a Range as a string. This string contains only + * the data characters, not any markup. + * @return The contents of the Range. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual const XMLCh* toString() const = 0; + + /** + * Called to indicate that the Range is no longer in use and that the + * implementation may relinquish any resources associated with this + * Range. Subsequent calls to any methods or attribute getters on this + * Range will result in a DOMException being thrown with an + * error code of INVALID_STATE_ERR. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual void detach() = 0; + + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this Range is no longer in use + * and that the implementation may relinquish any resources associated with it. + * (release() will call detach() where appropriate) + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMRangeException.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMRangeException.hpp new file mode 100644 index 000000000000..34eb34241901 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMRangeException.hpp @@ -0,0 +1,114 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMRANGEEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMRANGEEXCEPTION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Range operations may throw a DOMRangeException as specified in + * their method descriptions. + *

See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. + * @since DOM Level 2 + */ + +class CDOM_EXPORT DOMRangeException : public DOMException { +public: + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * Enumerators for DOM Range Exceptions + * + *

BAD_BOUNDARYPOINTS_ERR: + * If the boundary-points of a Range do not meet specific requirements.

+ * + *

INVALID_NODE_TYPE_ERR: + * If the container of an boundary-point of a Range is being set to either + * a node of an invalid type or a node with an ancestor of an invalid + * type.

+ * + * @since DOM Level 2 + */ + enum RangeExceptionCode { + BAD_BOUNDARYPOINTS_ERR = 111, + INVALID_NODE_TYPE_ERR = 112 + }; + //@} + +public: + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + /** + * Default constructor for DOMRangeException. + * + */ + DOMRangeException(); + + /** + * Constructor which takes an error code and a message. + * + * @param code The error code which indicates the exception + * @param messageCode The string containing the error message + * @param memoryManager The memory manager used to (de)allocate memory + */ + DOMRangeException(short code, + short messageCode, + MemoryManager* const memoryManager); + + /** + * Copy constructor. + * + * @param other The object to be copied. + */ + DOMRangeException(const DOMRangeException &other); + //@} + + // ----------------------------------------------------------------------- + // Destructors + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + /** + * Destructor for DOMRangeException. + * + */ + virtual ~DOMRangeException(); + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMRangeException & operator = (const DOMRangeException &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMStringList.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMStringList.hpp new file mode 100644 index 000000000000..c0ac42169df4 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMStringList.hpp @@ -0,0 +1,131 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMSTRINGLIST_HPP) +#define XERCESC_INCLUDE_GUARD_DOMSTRINGLIST_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * The DOMStringList interface provides the abstraction of an ordered + * collection of strings, without defining or constraining how this collection + * is implemented. The items in the DOMStringList are accessible via + * an integral index, starting from 0. + */ + +class CDOM_EXPORT DOMStringList { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMStringList() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMStringList(const DOMStringList &); + DOMStringList & operator = (const DOMStringList &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMStringList() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMStringList interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the index item in the collection. + * + * If index is greater than or equal to the number of strings in + * the list, this returns null. + * + * @param index Index into the collection. + * @return The string at the indexth position in the + * DOMStringList, or null if that is not a valid + * index. + * @since DOM Level 3 + */ + virtual const XMLCh *item(XMLSize_t index) const = 0; + + /** + * Returns the number of strings in the list. + * + * The range of valid child node indices is 0 to length-1 inclusive. + * + * @since DOM Level 3 + */ + virtual XMLSize_t getLength() const = 0; + + /** + * Test if a string is part of this DOMStringList + * + * @return true if the string has been found, false otherwise. + * + * @since DOM Level 3 + */ + virtual bool contains(const XMLCh*) const = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this list is no longer in use + * and that the implementation may relinquish any resources associated with it and + * its associated children. + * + * Access to a released object will lead to unexpected result. + * + */ + virtual void release() = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMText.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMText.hpp new file mode 100644 index 000000000000..ab5a0b18067a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMText.hpp @@ -0,0 +1,182 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMTEXT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMTEXT_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * The DOMText interface inherits from DOMCharacterData + * and represents the textual content (termed character data in XML) of an + * DOMElement or DOMAttr. If there is no markup inside + * an element's content, the text is contained in a single object + * implementing the DOMText interface that is the only child of + * the element. If there is markup, it is parsed into the information items + * (elements, comments, etc.) and DOMText nodes that form the list + * of children of the element. + *

When a document is first made available via the DOM, there is only one + * DOMText node for each block of text. Users may create adjacent + * DOMText nodes that represent the contents of a given element + * without any intervening markup, but should be aware that there is no way + * to represent the separations between these nodes in XML or HTML, so they + * will not (in general) persist between DOM editing sessions. The + * normalize() method on DOMNode merges any such + * adjacent DOMText objects into a single node for each block of + * text. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + */ +class CDOM_EXPORT DOMText: public DOMCharacterData { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMText() {} + DOMText(const DOMText &other) : DOMCharacterData(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMText & operator = (const DOMText &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMText() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMText interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + /** + * Breaks this node into two nodes at the specified offset, + * keeping both in the tree as siblings. After being split, this node + * will contain all the content up to the offset point. A + * new node of the same type, which contains all the content at and + * after the offset point, is returned. If the original + * node had a parent node, the new node is inserted as the next sibling + * of the original node. When the offset is equal to the + * length of this node, the new node has no data. + * @param offset The 16-bit unit offset at which to split, starting from + * 0. + * @return The new node, of the same type as this node. + * @exception DOMException + * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater + * than the number of 16-bit units in data. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 1 + */ + virtual DOMText *splitText(XMLSize_t offset) = 0; + //@} + + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * Returns whether this text node contains element content whitespace, + * often abusively called "ignorable whitespace". The text node is determined + * to contain whitespace in element content during the load of the document + * or if validation occurs while using DOMDocument::normalizeDocument(). + * + * @since DOM Level 3 + */ + virtual bool getIsElementContentWhitespace() const = 0; + + /** + * Returns all text of DOMText nodes logically-adjacent text + * nodes to this node, concatenated in document order. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getWholeText() const = 0; + + /** + * Substitutes the a specified text for the text of the current node and + * all logically-adjacent text nodes. + * + *
This method returns the node in the hierarchy which received the + * replacement text, which is null if the text was empty or is the + * current node if the current node is not read-only or otherwise is a + * new node of the same type as the current node inserted at the site of + * the replacement. All logically-adjacent text nodes are removed + * including the current node unless it was the recipient of the + * replacement text. + *
Where the nodes to be removed are read-only descendants of an + * DOMEntityReference, the DOMEntityReference must + * be removed instead of the read-only nodes. If any + * DOMEntityReference to be removed has descendants that are + * not DOMEntityReference, DOMText, or + * DOMCDATASection nodes, the replaceWholeText + * method must fail before performing any modification of the document, + * raising a DOMException with the code + * NO_MODIFICATION_ALLOWED_ERR. + * + * @param content The content of the replacing DOMText node. + * @return The DOMText node created with the specified content. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if one of the DOMText + * nodes being replaced is readonly. + * @since DOM Level 3 + */ + virtual DOMText* replaceWholeText(const XMLCh* content) = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard extension + // ----------------------------------------------------------------------- + /** @name Non-standard extension */ + //@{ + /** + * Non-standard extension + * + * Return true if this node contains ignorable whitespaces only. + * @return True if this node contains ignorable whitespaces only. + */ + virtual bool isIgnorableWhitespace() const = 0; + //@} + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMTreeWalker.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMTreeWalker.hpp new file mode 100644 index 000000000000..bd8ce4bb776b --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMTreeWalker.hpp @@ -0,0 +1,276 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMTREEWALKER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMTREEWALKER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * DOMTreeWalker objects are used to navigate a document tree or + * subtree using the view of the document defined by their + * whatToShow flags and filter (if any). Any function which + * performs navigation using a DOMTreeWalker will automatically + * support any view defined by a DOMTreeWalker. + *

Omitting nodes from the logical view of a subtree can result in a + * structure that is substantially different from the same subtree in the + * complete, unfiltered document. Nodes that are siblings in the + * DOMTreeWalker view may be children of different, widely + * separated nodes in the original view. For instance, consider a + * DOMNodeFilter that skips all nodes except for DOMText nodes and + * the root node of a document. In the logical view that results, all text + * nodes will be siblings and appear as direct children of the root node, no + * matter how deeply nested the structure of the original document. + *

See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. + * + * @since DOM Level 2 + */ +class CDOM_EXPORT DOMTreeWalker { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMTreeWalker() {} + DOMTreeWalker(const DOMTreeWalker &) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMTreeWalker & operator = (const DOMTreeWalker &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMTreeWalker() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMTreeWalker interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 2 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** + * The root node of the DOMTreeWalker, as specified + * when it was created. + * + * @since DOM Level 2 + */ + virtual DOMNode* getRoot() = 0; + /** + * This attribute determines which node types are presented via the + * DOMTreeWalker. The available set of constants is defined in + * the DOMNodeFilter interface. Nodes not accepted by + * whatToShow will be skipped, but their children may still + * be considered. Note that this skip takes precedence over the filter, + * if any. + * + * @since DOM Level 2 + */ + virtual DOMNodeFilter::ShowType getWhatToShow()= 0; + + /** + * Return The filter used to screen nodes. + * + * @since DOM Level 2 + */ + virtual DOMNodeFilter* getFilter()= 0; + + /** + * The value of this flag determines whether the children of entity + * reference nodes are visible to the DOMTreeWalker. If false, + * these children and their descendants will be rejected. Note that + * this rejection takes precedence over whatToShow and the + * filter, if any. + *
To produce a view of the document that has entity references + * expanded and does not expose the entity reference node itself, use + * the whatToShow flags to hide the entity reference node + * and set expandEntityReferences to true when creating the + * DOMTreeWalker. To produce a view of the document that has + * entity reference nodes but no entity expansion, use the + * whatToShow flags to show the entity reference node and + * set expandEntityReferences to false. + * + * @since DOM Level 2 + */ + virtual bool getExpandEntityReferences()= 0; + + /** + * Return the node at which the DOMTreeWalker is currently positioned. + * + * @since DOM Level 2 + */ + virtual DOMNode* getCurrentNode()= 0; + + // ----------------------------------------------------------------------- + // Query methods + // ----------------------------------------------------------------------- + /** + * Moves to and returns the closest visible ancestor node of the current + * node. If the search for parentNode attempts to step + * upward from the DOMTreeWalker's root node, or + * if it fails to find a visible ancestor node, this method retains the + * current position and returns null. + * @return The new parent node, or null if the current node + * has no parent in the DOMTreeWalker's logical view. + * + * @since DOM Level 2 + */ + virtual DOMNode* parentNode()= 0; + + /** + * Moves the DOMTreeWalker to the first visible child of the + * current node, and returns the new node. If the current node has no + * visible children, returns null, and retains the current + * node. + * @return The new node, or null if the current node has no + * visible children in the DOMTreeWalker's logical view. + * + * @since DOM Level 2 + */ + virtual DOMNode* firstChild()= 0; + + /** + * Moves the DOMTreeWalker to the last visible child of the + * current node, and returns the new node. If the current node has no + * visible children, returns null, and retains the current + * node. + * @return The new node, or null if the current node has no + * children in the DOMTreeWalker's logical view. + * + * @since DOM Level 2 + */ + virtual DOMNode* lastChild()= 0; + + /** + * Moves the DOMTreeWalker to the previous sibling of the + * current node, and returns the new node. If the current node has no + * visible previous sibling, returns null, and retains the + * current node. + * @return The new node, or null if the current node has no + * previous sibling. in the DOMTreeWalker's logical view. + * + * @since DOM Level 2 + */ + virtual DOMNode* previousSibling()= 0; + + /** + * Moves the DOMTreeWalker to the next sibling of the current + * node, and returns the new node. If the current node has no visible + * next sibling, returns null, and retains the current node. + * @return The new node, or null if the current node has no + * next sibling. in the DOMTreeWalker's logical view. + * + * @since DOM Level 2 + */ + virtual DOMNode* nextSibling()= 0; + + /** + * Moves the DOMTreeWalker to the previous visible node in + * document order relative to the current node, and returns the new + * node. If the current node has no previous node, or if the search for + * previousNode attempts to step upward from the + * DOMTreeWalker's root node, returns + * null, and retains the current node. + * @return The new node, or null if the current node has no + * previous node in the DOMTreeWalker's logical view. + * + * @since DOM Level 2 + */ + virtual DOMNode* previousNode()= 0; + + /** + * Moves the DOMTreeWalker to the next visible node in document + * order relative to the current node, and returns the new node. If the + * current node has no next node, or if the search for nextNode attempts + * to step upward from the DOMTreeWalker's root + * node, returns null, and retains the current node. + * @return The new node, or null if the current node has no + * next node in the DOMTreeWalker's logical view. + * + * @since DOM Level 2 + */ + virtual DOMNode* nextNode()= 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * The node at which the DOMTreeWalker is currently positioned. + *
Alterations to the DOM tree may cause the current node to no longer + * be accepted by the DOMTreeWalker's associated filter. + * currentNode may also be explicitly set to any node, + * whether or not it is within the subtree specified by the + * root node or would be accepted by the filter and + * whatToShow flags. Further traversal occurs relative to + * currentNode even if it is not part of the current view, + * by applying the filters in the requested direction; if no traversal + * is possible, currentNode is not changed. + * @exception DOMException + * NOT_SUPPORTED_ERR: Raised if an attempt is made to set + * currentNode to null. + * + * @since DOM Level 2 + */ + virtual void setCurrentNode(DOMNode* currentNode)= 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this TreeWalker is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} +}; + +#define GetDOMTreeWalkerMemoryManager GET_INDIRECT_MM(fCurrentNode) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMTypeInfo.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMTypeInfo.hpp new file mode 100644 index 000000000000..4e22b8d5347a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMTypeInfo.hpp @@ -0,0 +1,196 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMTYPEINFO_HPP) +#define XERCESC_INCLUDE_GUARD_DOMTYPEINFO_HPP + +//------------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------------ +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * The DOMTypeInfo interface represent a type used by + * DOMElement or DOMAttr nodes, specified in the + * schemas associated with the document. The type is a pair of a namespace URI + * and name properties, and depends on the document's schema. + */ +class CDOM_EXPORT DOMTypeInfo +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMTypeInfo() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMTypeInfo(const DOMTypeInfo &); + DOMTypeInfo & operator = (const DOMTypeInfo &); + //@} + +public: + + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMTypeInfo() {}; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Contants */ + //@{ + /** + * These are the available values for the derivationMethod parameter used by the + * method DOMTypeInfo::isDerivedFrom(). It is a set of possible types + * of derivation, and the values represent bit positions. If a bit in the derivationMethod + * parameter is set to 1, the corresponding type of derivation will be taken into account + * when evaluating the derivation between the reference type definition and the other type + * definition. When using the isDerivedFrom method, combining all of them in the + * derivationMethod parameter is equivalent to invoking the method for each of them separately + * and combining the results with the OR boolean function. This specification only defines + * the type of derivation for XML Schema. + * + * In addition to the types of derivation listed below, please note that: + * - any type derives from xsd:anyType. + * - any simple type derives from xsd:anySimpleType by restriction. + * - any complex type does not derive from xsd:anySimpleType by restriction. + * + *

DERIVATION_EXTENSION: + * If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the + * derivation by extension. The reference type definition is derived by extension from the other + * type definition if the other type definition can be reached recursively following the + * {base type definition} property from the reference type definition, and at least one of the + * derivation methods involved is an extension.

+ * + *

DERIVATION_LIST: + * If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the list. + * The reference type definition is derived by list from the other type definition if there exists + * two type definitions T1 and T2 such as the reference type definition is derived from T1 by + * DERIVATION_RESTRICTION or DERIVATION_EXTENSION, T2 is derived from the other type definition by + * DERIVATION_RESTRICTION, T1 has {variety} list, and T2 is the {item type definition}. Note that + * T1 could be the same as the reference type definition, and T2 could be the same as the other + * type definition.

+ * + *

DERIVATION_RESTRICTION: + * If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the + * derivation by restriction if complex types are involved, or a restriction if simple types are + * involved. + * The reference type definition is derived by restriction from the other type definition if the + * other type definition is the same as the reference type definition, or if the other type definition + * can be reached recursively following the {base type definition} property from the reference type + * definition, and all the derivation methods involved are restriction.

+ * + *

DERIVATION_UNION: + * If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the union + * if simple types are involved. + * The reference type definition is derived by union from the other type definition if there exists + * two type definitions T1 and T2 such as the reference type definition is derived from T1 by + * DERIVATION_RESTRICTION or DERIVATION_EXTENSION, T2 is derived from the other type definition by + * DERIVATION_RESTRICTION, T1 has {variety} union, and one of the {member type definitions} is T2. + * Note that T1 could be the same as the reference type definition, and T2 could be the same as the + * other type definition.

+ * + * @since DOM Level 3 + * + */ + enum DerivationMethods { + DERIVATION_RESTRICTION = 0x001, + DERIVATION_EXTENSION = 0x002, + DERIVATION_UNION = 0x004, + DERIVATION_LIST = 0x008 + }; + //@} + + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns The name of a type declared for the associated DOMElement + * or DOMAttr, or null if unknown. + * + * @return The name of a type declared for the associated DOMElement + * or DOMAttribute, or null if unknown. + * @since DOM level 3 + */ + virtual const XMLCh* getTypeName() const = 0; + + /** + * The namespace of the type declared for the associated DOMElement + * or DOMAttr or null if the DOMElement does not have + * declaration or if no namespace information is available. + * + * @return The namespace of the type declared for the associated DOMElement + * or DOMAttr or null if the DOMElement does not have + * declaration or if no namespace information is available. + * @since DOM level 3 + */ + virtual const XMLCh* getTypeNamespace() const = 0; + //@} + + //@{ + /** + * This method returns if there is a derivation between the reference type definition, + * i.e. the DOMTypeInfo on which the method is being called, and the other type definition, + * i.e. the one passed as parameters. + * + * @param typeNamespaceArg The namespace of the other type definition. + * @param typeNameArg The name of the other type definition. + * @param derivationMethod The type of derivation and conditions applied between two types, + * as described in the list of constants provided in this interface. + * @return If the document's schema is a DTD or no schema is associated with the document, + * this method will always return false. + * If the document's schema is an XML Schema, the method will true if the reference + * type definition is derived from the other type definition according to the derivation + * parameter. If the value of the parameter is 0 (no bit is set to 1 for the + * derivationMethod parameter), the method will return true if the other type definition + * can be reached by recursing any combination of {base type definition}, + * {item type definition}, or {member type definitions} from the reference type definition. + * @since DOM level 3 + */ + virtual bool isDerivedFrom(const XMLCh* typeNamespaceArg, + const XMLCh* typeNameArg, + DerivationMethods derivationMethod) const = 0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DOMTypeInfo.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMUserDataHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMUserDataHandler.hpp new file mode 100644 index 000000000000..8487f2905aa2 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMUserDataHandler.hpp @@ -0,0 +1,140 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMUSERDATAHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMUSERDATAHANDLER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * When associating an object to a key on a node using setUserData + * the application can provide a handler that gets called when the node the + * object is associated to is being cloned or imported. This can be used by + * the application to implement various behaviors regarding the data it + * associates to the DOM nodes. This interface defines that handler. + * + *

See also the Document Object Model (DOM) Level 3 Core Specification. + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMUserDataHandler { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMUserDataHandler() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMUserDataHandler(const DOMUserDataHandler &); + DOMUserDataHandler & operator = (const DOMUserDataHandler &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMUserDataHandler() {}; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * Operation Type + * + *

NODE_CLONED: + * The node is cloned.

+ * + *

NODE_IMPORTED + * The node is imported.

+ * + *

NODE_DELETED + * The node is deleted.

+ * + *

NODE_RENAMED + * The node is renamed. + * + *

NODE_ADOPTED + * The node is adopted. + * + * @since DOM Level 3 + */ + enum DOMOperationType { + NODE_CLONED = 1, + NODE_IMPORTED = 2, + NODE_DELETED = 3, + NODE_RENAMED = 4, + NODE_ADOPTED = 5 + }; + //@} + + + // ----------------------------------------------------------------------- + // Virtual DOMUserDataHandler interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * This method is called whenever the node for which this handler is + * registered is imported or cloned. + * + * @param operation Specifies the type of operation that is being + * performed on the node. + * @param key Specifies the key for which this handler is being called. + * @param data Specifies the data for which this handler is being called. + * @param src Specifies the node being cloned, adopted, imported, or renamed. + * This is null when the node is being deleted. + * @param dst Specifies the node newly created if any, or null. + * + * @since DOM Level 3 + */ + virtual void handle(DOMOperationType operation, + const XMLCh* const key, + void* data, + const DOMNode* src, + DOMNode* dst) = 0; + + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathEvaluator.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathEvaluator.hpp new file mode 100644 index 000000000000..84d8eb2a4d12 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathEvaluator.hpp @@ -0,0 +1,180 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHEVALUATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHEVALUATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMXPathNSResolver; +class DOMXPathExpression; +class DOMNode; + +/** + * The evaluation of XPath expressions is provided by DOMXPathEvaluator. + * In a DOM implementation which supports the XPath feature, the DOMXPathEvaluator + * interface will be implemented on the same object which implements the Document interface permitting + * it to be obtained by casting or by using the DOM Level 3 getFeature method. In this case the + * implementation obtained from the Document supports the XPath DOM module and is compatible + * with the XPath 1.0 specification. + * Evaluation of expressions with specialized extension functions or variables may not + * work in all implementations and is, therefore, not portable. XPathEvaluator implementations + * may be available from other sources that could provide specific support for specialized extension + * functions or variables as would be defined by other specifications. + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathEvaluator +{ + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMXPathEvaluator() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMXPathEvaluator(const DOMXPathEvaluator &); + DOMXPathEvaluator& operator = (const DOMXPathEvaluator&); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMXPathEvaluator() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMXPathEvaluator interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + + /** + * Creates a parsed XPath expression with resolved namespaces. This is useful + * when an expression will be reused in an application since it makes it + * possible to compile the expression string into a more efficient internal + * form and preresolve all namespace prefixes which occur within the expression. + * @param expression of type XMLCh - The XPath expression string to be parsed. + * @param resolver of type XPathNSResolver - The resolver permits + * translation of all prefixes, including the xml namespace prefix, within the XPath expression + * into appropriate namespace URIs. If this is specified as null, any namespace + * prefix within the expression will result in DOMException being thrown with the + * code NAMESPACE_ERR. + * @return DOMXPathExpression The compiled form of the XPath expression. + * @exception DOMXPathException + * INVALID_EXPRESSION_ERR: Raised if the expression is not legal according to the + * rules of the DOMXPathEvaluator. + * @exception DOMException + * NAMESPACE_ERR: Raised if the expression contains namespace prefixes which cannot + * be resolved by the specified XPathNSResolver. + * @since DOM Level 3 + */ + virtual DOMXPathExpression* createExpression(const XMLCh *expression, + const DOMXPathNSResolver *resolver) = 0; + + + /** Adapts any DOM node to resolve namespaces so that an XPath expression can be + * easily evaluated relative to the context of the node where it appeared within + * the document. This adapter works like the DOM Level 3 method lookupNamespaceURI + * on nodes in resolving the namespaceURI from a given prefix using the current + * information available in the node's hierarchy at the time lookupNamespaceURI + * is called. also correctly resolving the implicit xml prefix. + * @param nodeResolver of type DOMNode The node to be used as a context + * for namespace resolution. If this parameter is null, an unpopulated + * DOMXPathNSResolver is returned, which can be populated using the + * Xerces-C extension DOMXPathNSResolver::addNamespaceBinding(). + * @return DOMXPathNSResolver The object which resolves namespaces + * with respect to the definitions in scope for the specified node. + */ + virtual DOMXPathNSResolver* createNSResolver(const DOMNode *nodeResolver) = 0; + + + /** + * Evaluates an XPath expression string and returns a result of the specified + * type if possible. + * @param expression of type XMLCh The XPath expression string to be parsed + * and evaluated. + * @param contextNode of type DOMNode The context is context node + * for the evaluation + * of this XPath expression. If the DOMXPathEvaluator was obtained by + * casting the DOMDocument then this must be owned by the same + * document and must be a DOMDocument, DOMElement, + * DOMAttribute, DOMText, DOMCDATASection, + * DOMComment, DOMProcessingInstruction, or + * XPathNamespace node. If the context node is a DOMText or + * a DOMCDATASection, then the context is interpreted as the whole + * logical text node as seen by XPath, unless the node is empty in which case it + * may not serve as the XPath context. + * @param resolver of type XPathNSResolver The resolver permits + * translation of all prefixes, including the xml namespace prefix, within + * the XPath expression into appropriate namespace URIs. If this is specified + * as null, any namespace prefix within the expression will result in + * DOMException being thrown with the code NAMESPACE_ERR. + * @param type - If a specific type is specified, then + * the result will be returned as the corresponding type. This must be one + * of the codes of the DOMXPathResult interface. + * @param result of type DOMXPathResult* - The result specifies a specific result object + * which may be reused and returned by this method. If this is specified as + * null or the implementation does not reuse the specified result, a new result + * object will be constructed and returned. + * @return DOMXPathResult* The result of the evaluation of the XPath expression. + * @exception DOMXPathException + * INVALID_EXPRESSION_ERR: Raised if the expression is not legal + * according to the rules of the DOMXPathEvaluator + * TYPE_ERR: Raised if the result cannot be converted to return the specified type. + * @exception DOMException + * NAMESPACE_ERR: Raised if the expression contains namespace prefixes + * which cannot be resolved by the specified XPathNSResolver. + * WRONG_DOCUMENT_ERR: The DOMNode is from a document that is not supported + * by this DOMXPathEvaluator. + * NOT_SUPPORTED_ERR: The DOMNode is not a type permitted as an XPath context + * node or the request type is not permitted by this DOMXPathEvaluator. + */ + virtual DOMXPathResult* evaluate(const XMLCh *expression, + const DOMNode *contextNode, + const DOMXPathNSResolver *resolver, + DOMXPathResult::ResultType type, + DOMXPathResult* result) = 0; + + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathException.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathException.hpp new file mode 100644 index 000000000000..b276353cb84b --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathException.hpp @@ -0,0 +1,105 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHEXCEPTION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathException : public DOMException +{ +public: + //@{ + /** + * ExceptionCode + *
INVALID_EXPRESSION_ERR The expression has a syntax error or otherwise + * is not a legal expression according to the rules of the specific + * DOMXPathEvaluator or contains specialized extension functions + * or variables not supported by this implementation. + *
TYPE_ERR The expression cannot be converted to return the specified type. + *
NO_RESULT_ERROR There is no current result in the result object. + */ + enum ExceptionCode { + INVALID_EXPRESSION_ERR = 51, + TYPE_ERR = 52, + NO_RESULT_ERROR = 53 + }; + //@} + +public: + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + /** + * Default constructor for DOMXPathException. + * + */ + DOMXPathException(); + + /** + * Constructor which takes an error code and a message. + * + * @param code The error code which indicates the exception + * @param messageCode The string containing the error message + * @param memoryManager The memory manager used to (de)allocate memory + */ + DOMXPathException(short code, + short messageCode = 0, + MemoryManager* const memoryManager = XMLPlatformUtils::fgMemoryManager); + + /** + * Copy constructor. + * + * @param other The object to be copied. + */ + DOMXPathException(const DOMXPathException &other); + + //@} + + // ----------------------------------------------------------------------- + // Destructors + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + /** + * Destructor for DOMXPathException. + * + */ + virtual ~DOMXPathException(); + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMXPathException& operator = (const DOMXPathException&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathExpression.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathExpression.hpp new file mode 100644 index 000000000000..9ffd1440fa3c --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathExpression.hpp @@ -0,0 +1,129 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHEXPRESSION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHEXPRESSION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMNode; + +/** + * The DOMXPathExpression interface represents a parsed and resolved XPath expression. + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathExpression +{ + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMXPathExpression() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMXPathExpression(const DOMXPathExpression &); + DOMXPathExpression& operator = (const DOMXPathExpression&); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMXPathExpression() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMXPathExpression interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + + /** + * Evaluates this XPath expression and returns a result. + * @param contextNode of type DOMNode The context is context + * node for the evaluation of this XPath expression. + * If the XPathEvaluator was obtained by casting the Document then this must + * be owned by the same document and must be a DOMDocument, DOMElement, + * DOMAttribute, DOMText, DOMCDATASection, + * DOMComment, DOMProcessingInstruction, or + * XPathNamespace. If the context node is a DOMText or a + * DOMCDATASection, then the context is interpreted as the whole logical + * text node as seen by XPath, unless the node is empty in which case it may not + * serve as the XPath context. + * @param type If a specific type is specified, then the result + * will be coerced to return the specified type relying on XPath conversions and fail + * if the desired coercion is not possible. This must be one of the type codes of DOMXPathResult. + * @param result of type DOMXPathResult* The result specifies a specific result object which + * may be reused and returned by this method. If this is specified as nullor the + * implementation does not reuse the specified result, a new result object will be constructed + * and returned. + * @return DOMXPathResult* The result of the evaluation of the XPath expression. + * @exception DOMXPathException + * TYPE_ERR: Raised if the result cannot be converted to return the specified type. + * @exception DOMException + * WRONG_DOCUMENT_ERR: The DOMNode is from a document that is not supported by + * the XPathEvaluator that created this DOMXPathExpression. + * NOT_SUPPORTED_ERR: The DOMNode is not a type permitted as an XPath context node or the + * request type is not permitted by this DOMXPathExpression. + */ + + virtual DOMXPathResult* evaluate(const DOMNode *contextNode, + DOMXPathResult::ResultType type, + DOMXPathResult* result) const = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this DOMXPathExpression is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathNSResolver.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathNSResolver.hpp new file mode 100644 index 000000000000..d486661211af --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathNSResolver.hpp @@ -0,0 +1,130 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHNSRESOLVER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHNSRESOLVER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN +/** + * The DOMXPathNSResolver interface permit prefix strings + * in the expression to be properly bound to namespaceURI strings. + * DOMXPathEvaluator can construct an implementation of + * DOMXPathNSResolver from a node, or the interface may be + * implemented by any application. + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathNSResolver +{ + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMXPathNSResolver() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMXPathNSResolver(const DOMXPathNSResolver &); + DOMXPathNSResolver& operator = (const DOMXPathNSResolver&); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMXPathNSResolver() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMDocument interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + + /** Look up the namespace URI associated to the given namespace prefix. + * + * @param prefix of type XMLCh - The prefix to look for. An empty or + * null string denotes the default namespace. + * @return the associated namespace URI or null if none is found. + */ + virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const = 0; + //@} + + + // ----------------------------------------------------------------------- + // Non-standard extension + // ----------------------------------------------------------------------- + /** @name Non-standard extension */ + //@{ + + /** + * Non-standard extension + * + * XPath2 implementations require a reverse lookup in the static context. + * Look up the prefix associated with the namespace URI + * @param URI of type XMLCh - The namespace to look for. + * @return the associated prefix which can be an empty string if this + * is a default namespace or null if none is found. + */ + virtual const XMLCh* lookupPrefix(const XMLCh* URI) const = 0; + + /** + * Non-standard extension + * + * Associate the given namespace prefix to the namespace URI. + * @param prefix of type XMLCh - The namespace prefix to bind. An empty + * or null string denotes the default namespace. + * @param uri of type XMLCh - The associated namespace URI. If this + * argument is null or an empty string then the existing binding for this + * prefix is removed. + */ + virtual void addNamespaceBinding(const XMLCh* prefix, const XMLCh* uri) = 0; + + /** + * Called to indicate that this object (and its associated children) is no longer in use + * and that the implementation may relinquish any resources associated with it and + * its associated children. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathNamespace.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathNamespace.hpp new file mode 100644 index 000000000000..81f634f4fea6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathNamespace.hpp @@ -0,0 +1,115 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHNAMESPACE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHNAMESPACE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMElement; + +/** + * The DOMXPathNamespace interface is returned by DOMXPathResult + * interfaces to represent the XPath namespace node type that DOM lacks. There is no + * public constructor for this node type. Attempts to place it into a hierarchy or a + * NamedNodeMap result in a DOMException with the code HIERARCHY_REQUEST_ERR. This node + * is read only, so methods or setting of attributes that would mutate the node result + * in a DOMException with the code NO_MODIFICATION_ALLOWED_ERR. + * The core specification describes attributes of the DOMNode interface that + * are different for different node types but does not describe XPATH_NAMESPACE_NODE, + * so here is a description of those attributes for this node type. All attributes of + * DOMNode not described in this section have a null or false value. + * ownerDocument matches the ownerDocument of the ownerElement even if the element is later adopted. + * nodeName is always the string "#namespace". + * prefix is the prefix of the namespace represented by the node. + * localName is the same as prefix. + * nodeType is equal to XPATH_NAMESPACE_NODE. + * namespaceURI is the namespace URI of the namespace represented by the node. + * nodeValue is the same as namespaceURI. + * adoptNode, cloneNode, and importNode fail on this node type by raising a DOMException with the code NOT_SUPPORTED_ERR. + * Note: In future versions of the XPath specification, the definition of a namespace node may + * be changed incompatibly, in which case incompatible changes to field values may be required to + * implement versions beyond XPath 1.0. + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathNamespace : public DOMNode +{ + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMXPathNamespace() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMXPathNamespace(const DOMXPathNamespace &); + DOMXPathNamespace& operator = (const DOMXPathNamespace&); + //@} + +public: + + + enum XPathNodeType { + XPATH_NAMESPACE_NODE = 13 + }; + + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMXPathNamespace() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMXPathNamespace interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * The DOMElement on which the namespace was in scope when + * it was requested. This does not change on a returned namespace node + * even if the document changes such that the namespace goes out of + * scope on that element and this node is no longer found there by XPath. + * @since DOM Level 3 + */ + virtual DOMElement *getOwnerElement() const = 0; + + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathResult.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathResult.hpp new file mode 100644 index 000000000000..bc584b622566 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/DOMXPathResult.hpp @@ -0,0 +1,351 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHRESULT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHRESULT_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMXPathNSResolver; +class DOMXPathExpression; +class DOMTypeInfo; +class DOMNode; + +/** + * The DOMXPathResult interface represents the result of the + * evaluation of an XPath 1.0 or XPath 2.0 expression within the context + * of a particular node. Since evaluation of an XPath expression can result + * in various result types, this object makes it possible to discover and + * manipulate the type and value of the result. + * + * Note that some function signatures were changed compared to the + * DOM Level 3 in order to accommodate XPath 2.0. + * + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathResult +{ + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMXPathResult() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMXPathResult(const DOMXPathResult &); + DOMXPathResult& operator = (const DOMXPathResult&); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMXPathResult() {}; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + *

ANY_TYPE + *
[XPath 1.0] This code does not represent a specific type. An evaluation of an XPath + * expression will never produce this type. If this type is requested, then + * the evaluation returns whatever type naturally results from evaluation + * of the expression. + * If the natural result is a node set when ANY_TYPE was requested, then + * UNORDERED_NODE_ITERATOR_TYPE is always the resulting type. Any other + * representation of a node set must be explicitly requested. + *

ANY_UNORDERED_NODE_TYPE + *
[XPath 1.0] The result is a node set as defined by XPath 1.0 and will be accessed + * as a single node, which may be null if the node set is empty. Document + * modification does not invalidate the node, but may mean that the result + * node no longer corresponds to the current document. This is a convenience + * that permits optimization since the implementation can stop once any node + * in the resulting set has been found. + * If there is more than one node in the actual result, the single node + * returned might not be the first in document order. + *

BOOLEAN_TYPE + *
[XPath 1.0] The result is a boolean as defined by XPath 1.0. Document modification + * does not invalidate the boolean, but may mean that reevaluation would not + * yield the same boolean. + *

FIRST_ORDERED_NODE_TYPE + *
[XPath 1.0] The result is a node set as defined by XPath 1.0 and will be accessed + * as a single node, which may be null if the node set is empty. Document + * modification does not invalidate the node, but may mean that the result + * node no longer corresponds to the current document. This is a convenience + * that permits optimization since the implementation can stop once the first + * node in document order of the resulting set has been found. + * If there are more than one node in the actual result, the single node + * returned will be the first in document order. + *

NUMBER_TYPE + *
[XPath 1.0] The result is a number as defined by XPath 1.0. Document modification does + * not invalidate the number, but may mean that reevaluation would not yield the + * same number. + *

ORDERED_NODE_ITERATOR_TYPE + *
[XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed + * iteratively, which will produce document-ordered nodes. Document modification + * invalidates the iteration. + *

ORDERED_NODE_SNAPSHOT_TYPE + *
[XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed as a + * snapshot list of nodes that will be in original document order. Document + * modification does not invalidate the snapshot but may mean that reevaluation would + * not yield the same snapshot and nodes in the snapshot may have been altered, moved, + * or removed from the document. + *

STRING_TYPE + *
[XPath 1.0] The result is a string as defined by XPath 1.0. Document modification does not + * invalidate the string, but may mean that the string no longer corresponds to the + * current document. + *

UNORDERED_NODE_ITERATOR_TYPE + *
[XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed iteratively, + * which may not produce nodes in a particular order. Document modification invalidates the iteration. + * This is the default type returned if the result is a node set and ANY_TYPE is requested. + *

UNORDERED_NODE_SNAPSHOT_TYPE + *
[XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed as a + * snapshot list of nodes that may not be in a particular order. Document modification + * does not invalidate the snapshot but may mean that reevaluation would not yield the same + * snapshot and nodes in the snapshot may have been altered, moved, or removed from the document. + *

FIRST_RESULT_TYPE + *
[XPath 2.0] The result is a sequence as defined by XPath 2.0 and will be accessed + * as a single current value or there will be no current value if the sequence + * is empty. Document modification does not invalidate the value, but may mean + * that the result no longer corresponds to the current document. This is a + * convenience that permits optimization since the implementation can stop once + * the first item in the resulting sequence has been found. If there is more + * than one item in the actual result, the single item returned might not be + * the first in document order. + *

ITERATOR_RESULT_TYPE + *
[XPath 2.0] The result is a sequence as defined by XPath 2.0 that will be accessed + * iteratively. Document modification invalidates the iteration. + *

SNAPSHOT_RESULT_TYPE + *
[XPath 2.0] The result is a sequence as defined by XPath 2.0 that will be accessed + * as a snapshot list of values. Document modification does not invalidate the + * snapshot but may mean that reevaluation would not yield the same snapshot + * and any items in the snapshot may have been altered, moved, or removed from + * the document. + */ + enum ResultType { + /* XPath 1.0 */ + ANY_TYPE = 0, + NUMBER_TYPE = 1, + STRING_TYPE = 2, + BOOLEAN_TYPE = 3, + UNORDERED_NODE_ITERATOR_TYPE = 4, + ORDERED_NODE_ITERATOR_TYPE = 5, + UNORDERED_NODE_SNAPSHOT_TYPE = 6, + ORDERED_NODE_SNAPSHOT_TYPE = 7, + ANY_UNORDERED_NODE_TYPE = 8, + FIRST_ORDERED_NODE_TYPE = 9, + /* XPath 2.0 */ + FIRST_RESULT_TYPE = 100, + ITERATOR_RESULT_TYPE = 101, + SNAPSHOT_RESULT_TYPE = 102 + }; + //@} + + + // ----------------------------------------------------------------------- + // Virtual DOMXPathResult interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + + /** + * Returns the result type of this result + * @return ResultType + * A code representing the type of this result, as defined by the type constants. + */ + virtual ResultType getResultType() const = 0; + + /** + * Returns the DOM type info of the current result node or value + * (XPath 2 only). + * @return typeInfo of type TypeInfo, readonly + */ + virtual const DOMTypeInfo *getTypeInfo() const = 0; + + /** + * Returns true if the result has a current result and the value is a + * node (XPath 2 only). This function is necessary to distinguish + * between a string value and a node of type string as returned by + * the getTypeInfo() function. + * @return isNode of type boolean, readonly + */ + virtual bool isNode() const = 0; + + /** + * Returns the boolean value of this result + * @return booleanValue of type boolean + * The value of this boolean result. + * @exception DOMXPathException + * TYPE_ERR: raised if ResultType is not BOOLEAN_TYPE (XPath 1.0) or + * if current result cannot be properly converted to boolean (XPath 2.0). + *
+ * NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0). + */ + virtual bool getBooleanValue() const = 0; + + /** + * Returns the integer value of this result (XPath 2 only). + * @return integerValue of type int + * The value of this integer result. + * @exception DOMXPathException + * TYPE_ERR: raised if current result cannot be properly converted to + * int (XPath 2.0). + *
+ * NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0). + */ + virtual int getIntegerValue() const = 0; + + /** + * Returns the number value of this result + * @return numberValue + * The value of this number result. If the native double type of the DOM + * binding does not directly support the exact IEEE 754 result of the XPath + * expression, then it is up to the definition of the binding to specify how + * the XPath number is converted to the native binding number. + * @exception DOMXPathException + * TYPE_ERR: raised if ResultType is not NUMBER_TYPE (XPath 1.0) or + * if current result cannot be properly converted to double (XPath 2.0). + *
+ * NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0). + */ + virtual double getNumberValue() const = 0; + + /** + * Returns the string value of this result + * @return stringValue + * The value of this string result. + * @exception DOMXPathException + * TYPE_ERR: raised if ResultType is not STRING_TYPE (XPath 1.0) or + * if current result cannot be properly converted to string (XPath 2.0). + *
+ * NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0). + */ + virtual const XMLCh* getStringValue() const = 0; + + /** + * Returns the node value of this result + * @return nodeValue + * The value of this node result, which may be null. + * @exception DOMXPathException + * TYPE_ERR: raised if ResultType is not ANY_UNORDERED_NODE_TYPE, + * FIRST_ORDERED_NODE_TYPE, UNORDERED_NODE_ITERATOR_TYPE, + * ORDERED_NODE_ITERATOR_TYPE, UNORDERED_NODE_SNAPSHOT_TYPE, or + * ORDERED_NODE_SNAPSHOT_TYPE (XPath 1.0) or if current result is + * not a node (XPath 2.0). + *
+ * NO_RESULT_ERROR: raised if there is no current result in the result + * object. + */ + virtual DOMNode* getNodeValue() const = 0; + + /** + * Iterates and returns true if the current result is the next item from the + * sequence or false if there are no more items. + * @return boolean True if the current result is the next item from the sequence + * or false if there are no more items. + * @exception XPathException + * TYPE_ERR: raised if ResultType is not UNORDERED_NODE_ITERATOR_TYPE or + * ORDERED_NODE_ITERATOR_TYPE (XPath 1.0) or if ResultType is not + * ITERATOR_RESULT_TYPE (XPath 2.0). + * @exception DOMException + * INVALID_STATE_ERR: The document has been mutated since the result was returned. + */ + virtual bool iterateNext() = 0; + + /** + * Signifies that the iterator has become invalid. + * @return invalidIteratorState + * True if ResultType is UNORDERED_NODE_ITERATOR_TYPE or + * ORDERED_NODE_ITERATOR_TYPE (XPath 1.0) or ITERATOR_RESULT_TYPE (XPath 2.0) + * and the document has been modified since this result was returned. + * @exception XPathException + * TYPE_ERR: raised if ResultType is not UNORDERED_NODE_ITERATOR_TYPE or + * ORDERED_NODE_ITERATOR_TYPE (XPath 1.0) or if ResultType is not + * ITERATOR_RESULT_TYPE (XPath 2.0). + */ + virtual bool getInvalidIteratorState() const = 0; + + /** + * Sets the current result to the indexth item in the snapshot collection. If + * index is greater than or equal to the number of items in the list, this method + * returns false. Unlike the iterator result, the snapshot does not become + * invalid, but may not correspond to the current document if it is mutated. + * @param index of type XMLSize_t - Index into the snapshot collection. + * @return boolean True if the current result is the next item from the sequence + * or false if there are no more items. + * @exception XPathException + * TYPE_ERR: raised if ResultType is not UNORDERED_NODE_SNAPSHOT_TYPE or + * ORDERED_NODE_SNAPSHOT_TYPE (XPath 1.0) or if ResultType is not + * SNAPSHOT_RESULT_TYPE (XPath 2.0). + */ + virtual bool snapshotItem(XMLSize_t index) = 0; + + /** + * The number of items in the result snapshot. Valid values for snapshotItem + * indices are 0 to snapshotLength-1 inclusive. + * @return snapshotLength of type XMLSize_t + * @exception XPathException + * TYPE_ERR: raised if ResultType is not UNORDERED_NODE_SNAPSHOT_TYPE or + * ORDERED_NODE_SNAPSHOT_TYPE (XPath 1.0) or if ResultType is not + * SNAPSHOT_RESULT_TYPE (XPath 2.0). + */ + virtual XMLSize_t getSnapshotLength() const = 0; + + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this DOMXPathResult is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/StDOMNode.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/StDOMNode.hpp new file mode 100644 index 000000000000..49cec3af6d3a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/StDOMNode.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_STDOMNODE_HPP) +#define XERCESC_INCLUDE_GUARD_STDOMNODE_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/* This class is a smart pointer implementation over DOMNode interface and +** classes derived from it. It takes care of reference counting automatically. +** Reference counting is optional so use of this class is experimental. +*/ +template class StDOMNode { + T* m_node; + + static inline void INCREFCOUNT(T *x) { if (x != (T*)0) x->incRefCount(); } + static inline void DECREFCOUNT(T *x) { if (x != (T*)0) x->decRefCount(); } + +public: + inline StDOMNode(T* node = (T*)0) : m_node(node) { INCREFCOUNT(m_node); } + inline StDOMNode(const StDOMNode& stNode) : m_node(stNode.m_node) { INCREFCOUNT(m_node); } + inline ~StDOMNode() { DECREFCOUNT(m_node); } + + inline T* operator= (T *node) + { + if (m_node != node) { + DECREFCOUNT(m_node); + m_node = node; + INCREFCOUNT(m_node); + } + return (m_node); + } + + inline bool operator!= (T* node) const { return (m_node != node); } + inline bool operator== (T* node) const { return (m_node == node); } + + inline T& operator* () { return (*m_node); } + inline const T& operator* () const { return (*m_node); } + inline T* operator-> () const { return (m_node); } + inline operator T*() const { return (m_node); } + inline void ClearNode() { operator=((T*)(0)); } +}; + +#if defined(XML_DOMREFCOUNT_EXPERIMENTAL) + typedef StDOMNode DOMNodeSPtr; +#else + typedef DOMNode* DOMNodeSPtr; +#endif + +/* StDOMNode is a smart pointer implementation over DOMNode interface and +** classes derived from it. It takes care of reference counting automatically. +** Reference counting is optional so use of this class is experimental. +*/ +#if defined(XML_DOMREFCOUNT_EXPERIMENTAL) + typedef StDOMNode DOMAttrSPtr; +#else + typedef DOMAttr* DOMAttrSPtr; +#endif + +/* StDOMNode is a smart pointer implementation over DOMNode interface and +** classes derived from it. It takes care of reference counting automatically. +** Reference counting is optional so use of this class is experimental. +*/ +#if defined(XML_DOMREFCOUNT_EXPERIMENTAL) + typedef StDOMNode DOMElementSPtr; +#else + typedef DOMElement* DOMElementSPtr; +#endif + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMAttrImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMAttrImpl.hpp new file mode 100644 index 000000000000..8c6a5ae7ba89 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMAttrImpl.hpp @@ -0,0 +1,142 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMATTRIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMATTRIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#include +#include "DOMNodeBase.hpp" +#include "DOMParentNode.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMDocumentImpl.hpp" +#include +#include +#include "DOMNodeIDMap.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMElementImpl; +class DOMTypeInfoImpl; + +class CDOM_EXPORT DOMAttrImpl: public DOMAttr, public HasDOMNodeImpl, public HasDOMParentImpl { + +public: + DOMNodeImpl fNode; + DOMParentNode fParent; + const XMLCh *fName; + +protected: + const DOMTypeInfoImpl *fSchemaType; + +public: + DOMAttrImpl(DOMDocument *ownerDocument, const XMLCh *aName); + DOMAttrImpl(const DOMAttrImpl &other, bool deep=false); + virtual ~DOMAttrImpl(); + +public: + // Add all functions that are pure virtual in DOMNODE + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMPARENTIMPL_DECL; + +public: + virtual const XMLCh * getName() const; + virtual bool getSpecified() const; + virtual const XMLCh * getValue() const; + virtual void setSpecified(bool arg); + virtual void setValue(const XMLCh * value); + virtual DOMElement * getOwnerElement() const; + virtual bool isId() const; + virtual const DOMTypeInfo* getSchemaTypeInfo() const; + + void setOwnerElement(DOMElement *ownerElem); //internal use only + + // helper function for DOM Level 3 renameNode + virtual DOMNode* rename(const XMLCh* namespaceURI, const XMLCh* name); + + //helper function for DOM Level 3 TypeInfo + virtual void setSchemaTypeInfo(const DOMTypeInfoImpl* typeInfo); + + // helper method that sets this attr to an idnode and places it into the document map + virtual void addAttrToIDNodeMap(); + + // helper to remove this attr from from the id map if it is in there + virtual void removeAttrFromIDNodeMap(); + +public: + // Set attribute value fast. Assumptions: + // + // - node is not read-only + // - no ID management is performed + // - this attribute does not have a value + // + virtual void setValueFast (const XMLCh * value); + +protected: + void getTextValue(DOMNode* node, XMLBuffer& buf) const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMAttrImpl& operator=(const DOMAttrImpl&); +}; + +inline void DOMAttrImpl::removeAttrFromIDNodeMap() +{ + if (fNode.isIdAttr()) { + ((DOMDocumentImpl *)fParent.fOwnerDocument)->getNodeIDMap()->remove(this); + fNode.isIdAttr(false); + } +} + +inline void DOMAttrImpl::addAttrToIDNodeMap() +{ + if (fNode.isIdAttr()) + return; + + fNode.isIdAttr(true); + + // REVIST For now, we don't worry about what happens if the new + // name conflicts as per setValue + DOMDocumentImpl *doc = (DOMDocumentImpl *)(fParent.fOwnerDocument); + + if (doc->fNodeIDMap == 0) + doc->fNodeIDMap = new (doc) DOMNodeIDMap(500, doc); + + doc->getNodeIDMap()->add(this); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMAttrMapImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMAttrMapImpl.hpp new file mode 100644 index 000000000000..eeebf402303a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMAttrMapImpl.hpp @@ -0,0 +1,125 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMATTRMAPIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMATTRMAPIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMNode; +class DOMNodeVector; + +class CDOM_EXPORT DOMAttrMapImpl : public DOMNamedNodeMap +{ +protected: + DOMNodeVector* fNodes; + DOMNode* fOwnerNode; // the node this map belongs to + bool attrDefaults; + + virtual void cloneContent(const DOMAttrMapImpl *srcmap); + + bool readOnly(); // revisit. Look at owner node read-only. + +public: + DOMAttrMapImpl(DOMNode *ownerNod); + + // revisit. This "copy" constructor is used for cloning an Element with Attributes, + // and for setting up default attributes. It's probably not right + // for one or the other or both. + DOMAttrMapImpl(DOMNode *ownerNod, const DOMAttrMapImpl *defaults); + DOMAttrMapImpl(); + + virtual ~DOMAttrMapImpl(); + virtual DOMAttrMapImpl *cloneAttrMap(DOMNode *ownerNode); + virtual bool hasDefaults(); + virtual void hasDefaults(bool value); + virtual int findNamePoint(const XMLCh *name) const; + virtual int findNamePoint(const XMLCh *namespaceURI, + const XMLCh *localName) const; + virtual DOMNode* removeNamedItemAt(XMLSize_t index); + virtual void setReadOnly(bool readOnly, bool deep); + + + virtual XMLSize_t getLength() const; + virtual DOMNode* item(XMLSize_t index) const; + + virtual DOMNode* getNamedItem(const XMLCh *name) const; + virtual DOMNode* setNamedItem(DOMNode *arg); + virtual DOMNode* removeNamedItem(const XMLCh *name); + + virtual DOMNode* getNamedItemNS(const XMLCh *namespaceURI, + const XMLCh *localName) const; + virtual DOMNode* setNamedItemNS(DOMNode *arg); + virtual DOMNode* removeNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName); + + // Fast versions of the above functions which bypass validity checks. + // It also assumes that fNode is not 0 (call reserve) and that there + // is no previous node with this name. These are used in parsing. + // + void setNamedItemFast(DOMNode *arg); + void setNamedItemNSFast(DOMNode *arg); + + // Tries to reserve space for the specified number of elements. + // Currently only works on newly-created instances (fNodes == 0). + // + void reserve (XMLSize_t); + + void reconcileDefaultAttributes(const DOMAttrMapImpl* defaults); + void moveSpecifiedAttributes(DOMAttrMapImpl* srcmap); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMAttrMapImpl(const DOMAttrMapImpl &); + DOMAttrMapImpl & operator = (const DOMAttrMapImpl &); +}; + +// --------------------------------------------------------------------------- +// DOMAttrMapImpl: Getters & Setters +// --------------------------------------------------------------------------- + +inline bool DOMAttrMapImpl::hasDefaults() +{ + return attrDefaults; +} + +inline void DOMAttrMapImpl::hasDefaults(bool value) +{ + attrDefaults = value; +} + +XERCES_CPP_NAMESPACE_END + + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMAttrNSImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMAttrNSImpl.hpp new file mode 100644 index 000000000000..c6122673fa32 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMAttrNSImpl.hpp @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMATTRNSIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMATTRNSIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include "DOMAttrImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMAttrNSImpl: public DOMAttrImpl { +protected: + //Introduced in DOM Level 2 + const XMLCh * fNamespaceURI; //namespace URI of this node + const XMLCh * fLocalName; //local part of qualified name + const XMLCh * fPrefix; // prefix part of qualified name + // revisit - can return local part + // by pointing into the qualified (L1) name. + +public: + DOMAttrNSImpl(DOMDocument *ownerDoc, const XMLCh *name); + DOMAttrNSImpl(DOMDocument *ownerDoc, //DOM Level 2 + const XMLCh *namespaceURI, const XMLCh *qualifiedName); + DOMAttrNSImpl(const DOMAttrNSImpl &other, bool deep=false); + + // Fast construction without any checks for name validity. Used in + // parsing. Note that if prefix is not specified and localName is + // 'xmlns', this constructor expects proper namespaceURI. + // + DOMAttrNSImpl(DOMDocument *ownerDoc, + const XMLCh *namespaceURI, + const XMLCh *prefix, // Null or empty - no prefix. + const XMLCh *localName, + const XMLCh *qualifiedName); + + virtual DOMNode * cloneNode(bool deep) const; + //Introduced in DOM Level 2 + virtual const XMLCh * getNamespaceURI() const; + virtual const XMLCh * getPrefix() const; + virtual const XMLCh * getLocalName() const; + virtual void setPrefix(const XMLCh *prefix); + virtual void release(); + + // helper function for DOM Level 3 renameNode + virtual DOMNode* rename(const XMLCh* namespaceURI, const XMLCh* name); + void setName(const XMLCh* namespaceURI, const XMLCh* name); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMAttrNSImpl & operator = (const DOMAttrNSImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMCDATASectionImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMCDATASectionImpl.hpp new file mode 100644 index 000000000000..d141deb27f78 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMCDATASectionImpl.hpp @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCDATASECTIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCDATASECTIONIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#include +#include +#include "DOMNodeBase.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMChildNode.hpp" +#include "DOMParentNode.hpp" +#include "DOMCharacterDataImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMCDATASectionImpl: public DOMCDATASection, public HasDOMNodeImpl, public HasDOMChildImpl { +protected: + DOMNodeImpl fNode; + DOMChildNode fChild; + DOMCharacterDataImpl fCharacterData; + + +public: + DOMCDATASectionImpl(DOMDocument *ownerDoc, const XMLCh* data); + DOMCDATASectionImpl(DOMDocument *ownerDoc, const XMLCh* data, XMLSize_t n); + DOMCDATASectionImpl(const DOMCDATASectionImpl &other, bool deep = false); + + virtual ~DOMCDATASectionImpl(); + + // Functions inherited from TEXT + virtual DOMText* splitText(XMLSize_t offset); + // DOM Level 3 + virtual bool getIsElementContentWhitespace() const; + virtual const XMLCh* getWholeText() const; + virtual DOMText* replaceWholeText(const XMLCh* content); + + // non-standard extension + virtual bool isIgnorableWhitespace() const; + + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMCHILDIMPL_DECL; + +public: + // Functions introduced by DOMCharacterData + virtual const XMLCh* getData() const; + virtual XMLSize_t getLength() const; + virtual const XMLCh* substringData(XMLSize_t offset, + XMLSize_t count) const; + virtual void appendData(const XMLCh *arg); + virtual void insertData(XMLSize_t offset, const XMLCh *arg); + virtual void deleteData(XMLSize_t offset, + XMLSize_t count); + virtual void replaceData(XMLSize_t offset, + XMLSize_t count, + const XMLCh *arg); + virtual void setData(const XMLCh *data); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMCDATASectionImpl & operator = (const DOMCDATASectionImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMCasts.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMCasts.hpp new file mode 100644 index 000000000000..7d99dae293ae --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMCasts.hpp @@ -0,0 +1,109 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCASTS_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCASTS_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +// +// Define inline casting functions to convert from +// (DOMNode*) to the embedded instances of DOMNodeImpl, +// DOMParentNode, and DOMChildNode. +// +// Each type of embedded object corresponds to a HasXXX virtual +// interface class that a given DOM implementation class will +// support to expose its embedded object(s) to other implementation +// classes. +// +// This replaces the previous implementation that relied upon unsafe +// casts and member offsets that rely on unspecified behavior in C++, +// with a hopefully small cost in memory and performance. +// + +#include +#include "DOMNodeBase.hpp" +#include "DOMElementImpl.hpp" +#include "DOMTextImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +static inline const DOMNodeImpl *castToNodeImpl(const DOMNode *p) +{ + const HasDOMNodeImpl* pE = dynamic_cast(p); + if (!pE || !pE->getNodeImpl()) { + throw DOMException(DOMException::INVALID_STATE_ERR, 0, XMLPlatformUtils::fgMemoryManager); + } + return pE->getNodeImpl(); +} + +static inline DOMNodeImpl *castToNodeImpl(DOMNode *p) +{ + HasDOMNodeImpl *pE = dynamic_cast(p); + if (!pE || !pE->getNodeImpl()) { + throw DOMException(DOMException::INVALID_STATE_ERR, 0, XMLPlatformUtils::fgMemoryManager); + } + return pE->getNodeImpl(); +} + +static inline const DOMParentNode *castToParentImpl(const DOMNode *p) { + const HasDOMParentImpl *pE = dynamic_cast(p); + if (!pE || !pE->getParentNodeImpl()) { + throw DOMException(DOMException::INVALID_STATE_ERR, 0, XMLPlatformUtils::fgMemoryManager); + } + return pE->getParentNodeImpl(); +} + +static inline DOMParentNode *castToParentImpl(DOMNode *p) { + HasDOMParentImpl *pE = dynamic_cast(p); + if (!pE || !pE->getParentNodeImpl()) { + throw DOMException(DOMException::INVALID_STATE_ERR, 0, XMLPlatformUtils::fgMemoryManager); + } + return pE->getParentNodeImpl(); +} + +static inline const DOMChildNode *castToChildImpl(const DOMNode *p) { + const HasDOMChildImpl *pE = dynamic_cast(p); + if (!pE || !pE->getChildNodeImpl()) { + throw DOMException(DOMException::INVALID_STATE_ERR, 0, XMLPlatformUtils::fgMemoryManager); + } + return pE->getChildNodeImpl(); +} + +static inline DOMChildNode *castToChildImpl(DOMNode *p) { + HasDOMChildImpl *pE = dynamic_cast(p); + if (!pE || !pE->getChildNodeImpl()) { + throw DOMException(DOMException::INVALID_STATE_ERR, 0, XMLPlatformUtils::fgMemoryManager); + } + return pE->getChildNodeImpl(); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMCharacterDataImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMCharacterDataImpl.hpp new file mode 100644 index 000000000000..55c94956f0ba --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMCharacterDataImpl.hpp @@ -0,0 +1,90 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCHARACTERDATAIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCHARACTERDATAIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNode; +class DOMDocument; +class DOMDocumentImpl; +class DOMBuffer; + +// Instances of DOMCharacterDataImpl appear as members of node types +// that implement the DOMCharacterData interfaces. +// Operations in those classes are delegated to this class. +// +class CDOM_EXPORT DOMCharacterDataImpl +{ +public: + DOMBuffer* fDataBuf; + // for the buffer bid + DOMDocumentImpl* fDoc; + +public: + DOMCharacterDataImpl(DOMDocument *doc, const XMLCh *dat); + DOMCharacterDataImpl(DOMDocument *doc, const XMLCh* data, XMLSize_t n); + DOMCharacterDataImpl(const DOMCharacterDataImpl &other); + ~DOMCharacterDataImpl(); + const XMLCh * getNodeValue() const; + void setNodeValue(const XMLCh * value); + void appendData(const DOMNode *node, const XMLCh *data); + void appendData(const DOMNode *node, const XMLCh *data, XMLSize_t n); + void appendDataFast(const DOMNode *node, const XMLCh *data, XMLSize_t n); + void deleteData(const DOMNode *node, XMLSize_t offset, XMLSize_t count); + const XMLCh* getData() const; + XMLSize_t getLength() const; + void insertData(const DOMNode *node, XMLSize_t offset, const XMLCh * data); + void replaceData(const DOMNode *node, XMLSize_t offset, XMLSize_t count, const XMLCh * data); + void setData(const DOMNode *node, const XMLCh * arg); + void setNodeValue(const DOMNode *node, const XMLCh *value); + + + const XMLCh* substringData(const DOMNode *node, XMLSize_t offset, XMLSize_t count) const; + void releaseBuffer(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMCharacterDataImpl & operator = (const DOMCharacterDataImpl &); +}; + +#define GetDOMCharacterDataImplMemoryManager GET_DIRECT_MM(fDoc) + +XERCES_CPP_NAMESPACE_END + + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMChildNode.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMChildNode.hpp new file mode 100644 index 000000000000..5cacbf023dc1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMChildNode.hpp @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCHILDNODE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCHILDNODE_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +/** + * ChildNode adds to NodeImpl the capability of being a child, this is having + * siblings. + **/ + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMDocument; +class DOMNode; + + +class CDOM_EXPORT DOMChildNode { + +public: + DOMNode *previousSibling; + DOMNode *nextSibling; + + DOMChildNode(); + DOMChildNode(const DOMChildNode &other); + ~DOMChildNode(); + + DOMNode * getNextSibling() const; + DOMNode * getParentNode(const DOMNode *thisNode) const; + DOMNode * getPreviousSibling(const DOMNode *thisNode) const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMChildNode & operator = (const DOMChildNode &); +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMCommentImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMCommentImpl.hpp new file mode 100644 index 000000000000..45c6eedcc209 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMCommentImpl.hpp @@ -0,0 +1,89 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCOMMENTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCOMMENTIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#include +#include + +#include "DOMNodeBase.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMChildNode.hpp" +#include "DOMCharacterDataImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMCommentImpl: public DOMComment, public HasDOMNodeImpl, public HasDOMChildImpl { +public: + DOMNodeImpl fNode; + DOMChildNode fChild; + DOMCharacterDataImpl fCharacterData; + +public: + DOMCommentImpl(DOMDocument *, const XMLCh *); + DOMCommentImpl(const DOMCommentImpl &other, bool deep); + virtual ~DOMCommentImpl(); + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMCHILDIMPL_DECL; + +public: + // Functions from DOMCharacterData + virtual void appendData(const XMLCh *data); + virtual void deleteData(XMLSize_t offset, XMLSize_t count); + virtual const XMLCh * getData() const; + virtual XMLSize_t getLength() const; + virtual void insertData(XMLSize_t offset, const XMLCh * data); + virtual void replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh * data); + virtual void setData(const XMLCh * arg); + virtual const XMLCh * substringData(XMLSize_t offset, XMLSize_t count) const; + + // Non standard extension for the range to work + DOMComment* splitText(XMLSize_t offset); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMCommentImpl & operator = (const DOMCommentImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMConfigurationImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMConfigurationImpl.hpp new file mode 100644 index 000000000000..91033a1524dd --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMConfigurationImpl.hpp @@ -0,0 +1,150 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCONFIGURATIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCONFIGURATIONIMPL_HPP + +//------------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------------ +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMDocumentImpl; +class DOMStringListImpl; + +class CDOM_EXPORT DOMConfigurationImpl : public DOMConfiguration +{ +private: + //unimplemented + DOMConfigurationImpl(const DOMConfiguration &); + DOMConfigurationImpl & operator = (const DOMConfiguration &); + + +public: + + //----------------------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------------------- + DOMConfigurationImpl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~DOMConfigurationImpl(); + + enum DOMConfigurationFeature { + FEATURE_CANONICAL_FORM = 0x0001, + FEATURE_CDATA_SECTIONS = 0x0002, + FEATURE_COMMENTS = 0x0004, + FEATURE_DATATYPE_NORMALIZATION = 0x0008, + FEATURE_DISCARD_DEFAULT_CONTENT = 0x0010, + FEATURE_ENTITIES = 0x0020, + FEATURE_INFOSET = 0x0040, + FEATURE_NAMESPACES = 0x0080, + FEATURE_NAMESPACE_DECLARATIONS = 0x0100, + FEATURE_NORMALIZE_CHARACTERS = 0x0200, + FEATURE_SPLIT_CDATA_SECTIONS = 0x0400, + FEATURE_VALIDATE = 0x0800, + FEATURE_VALIDATE_IF_SCHEMA = 0x1000, + FEATURE_ELEMENT_CONTENT_WHITESPACE = 0x2000 + }; + + unsigned short featureValues; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + virtual void setParameter(const XMLCh* name, const void* value); + virtual void setParameter(const XMLCh* name, bool value); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + virtual const void* getParameter(const XMLCh* name) const; + + + // ----------------------------------------------------------------------- + // Query methods + // ----------------------------------------------------------------------- + + virtual bool canSetParameter(const XMLCh* name, const void* value) const; + virtual bool canSetParameter(const XMLCh* name, bool value) const; + + virtual const DOMStringList* getParameterNames() const; + + // --------------------------------------------------------------------------- + // Impl specific methods + // --------------------------------------------------------------------------- + + /* specific get and set methods for non-boolean parameters + * */ + + DOMErrorHandler* getErrorHandler() const; + + const XMLCh* getSchemaType() const; + + const XMLCh* getSchemaLocation() const; + + void setErrorHandler(DOMErrorHandler *erHandler); + + void setSchemaType(const XMLCh* st); + + void setSchemaLocation(const XMLCh* sl); + + // The default values for the boolean parameters + // from CANONICAL_FORM to ELEMENT_CONTENT_WHITESPACE + // 10010110010110 = 0x2596 + static const unsigned short fDEFAULT_VALUES; + + +protected: + // implements a simple map between the name and its enum value + DOMConfigurationFeature getFeatureFlag(const XMLCh* name) const; + + // the error handler + DOMErrorHandler* fErrorHandler; + + // the schema type + const XMLCh* fSchemaType; + + // the schema location + const XMLCh* fSchemaLocation; + + // the list of supported parameters + DOMStringListImpl* fSupportedParameters; + + MemoryManager* fMemoryManager; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DOMConfigurationImpl.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDeepNodeListImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDeepNodeListImpl.hpp new file mode 100644 index 000000000000..9b040dadc962 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDeepNodeListImpl.hpp @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDEEPNODELISTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDEEPNODELISTIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNode; + + +class CDOM_EXPORT DOMDeepNodeListImpl: public DOMNodeList { +protected: + const DOMNode* fRootNode; + const XMLCh* fTagName; + bool fMatchAll; + int fChanges; + DOMNode* fCurrentNode; + XMLSize_t fCurrentIndexPlus1; + + //DOM Level 2 + const XMLCh* fNamespaceURI; + bool fMatchAllURI; + bool fMatchURIandTagname; //match both namespaceURI and tagName + +public: + DOMDeepNodeListImpl(const DOMNode *rootNode, const XMLCh *tagName); + DOMDeepNodeListImpl(const DOMNode *rootNode, //DOM Level 2 + const XMLCh *namespaceURI, + const XMLCh *localName); + virtual ~DOMDeepNodeListImpl(); + virtual XMLSize_t getLength() const; + virtual DOMNode* item(XMLSize_t index) const; + DOMNode* cacheItem(XMLSize_t index); + +protected: + DOMNode* nextMatchingElementAfter(DOMNode *current); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMDeepNodeListImpl(const DOMDeepNodeListImpl &); + DOMDeepNodeListImpl & operator = (const DOMDeepNodeListImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDeepNodeListPool.c b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDeepNodeListPool.c new file mode 100644 index 000000000000..7b3521d53de1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDeepNodeListPool.c @@ -0,0 +1,428 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#include +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + + +// --------------------------------------------------------------------------- +// DOMDeepNodeListPool: Constructors and Destructor +// --------------------------------------------------------------------------- +template +DOMDeepNodeListPool::DOMDeepNodeListPool( const XMLSize_t modulus + , const bool adoptElems + , const XMLSize_t initSize) : + fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) + , fMemoryManager(XMLPlatformUtils::fgMemoryManager) +{ + initialize(modulus); + + // + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + + fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*));//new TVal*[fIdPtrsCount]; + fIdPtrs[0] = 0; +} + +template +DOMDeepNodeListPool::DOMDeepNodeListPool( const XMLSize_t modulus + , const bool adoptElems + , const THasher& hasher + , const XMLSize_t initSize) : + fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) + , fMemoryManager(XMLPlatformUtils::fgMemoryManager) + , fHasher(hasher) +{ + initialize(modulus); + + // + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + + fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*));//new TVal*[fIdPtrsCount]; + fIdPtrs[0] = 0; +} + +template +DOMDeepNodeListPool::DOMDeepNodeListPool( const XMLSize_t modulus + , const XMLSize_t initSize) : + fAdoptedElems(true) + , fBucketList(0) + , fHashModulus(modulus) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) + , fMemoryManager(XMLPlatformUtils::fgMemoryManager) +{ + initialize(modulus); + + // + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + + fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*));//new TVal*[fIdPtrsCount]; + fIdPtrs[0] = 0; +} + +template +void DOMDeepNodeListPool::initialize(const XMLSize_t modulus) +{ + if (modulus == 0) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); + + // Allocate the bucket list and zero them + fBucketList = (DOMDeepNodeListPoolTableBucketElem**) + fMemoryManager->allocate + ( + fHashModulus * sizeof(DOMDeepNodeListPoolTableBucketElem*) + );//new DOMDeepNodeListPoolTableBucketElem*[fHashModulus]; + for (XMLSize_t index = 0; index < fHashModulus; index++) + fBucketList[index] = 0; +} + +template +DOMDeepNodeListPool::~DOMDeepNodeListPool() +{ + removeAll(); + + // Then delete the bucket list & hasher & id pointers list + fMemoryManager->deallocate(fIdPtrs);//delete [] fIdPtrs; + fMemoryManager->deallocate(fBucketList);//delete [] fBucketList; +} + + +// --------------------------------------------------------------------------- +// DOMDeepNodeListPool: Element management +// --------------------------------------------------------------------------- +template +bool DOMDeepNodeListPool::isEmpty() const +{ + // Just check the bucket list for non-empty elements + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + if (fBucketList[buckInd] != 0) + return false; + } + return true; +} + +template +bool DOMDeepNodeListPool::containsKey( const void* const key1 + , const XMLCh* const key2 + , const XMLCh* const key3) const +{ + XMLSize_t hashVal; + const DOMDeepNodeListPoolTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); + return (findIt != 0); +} + +template +void DOMDeepNodeListPool::removeAll() +{ + if (fIdCounter == 0) return; + + // Clean up the buckets first + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + // Get the bucket list head for this entry + DOMDeepNodeListPoolTableBucketElem* curElem = fBucketList[buckInd]; + DOMDeepNodeListPoolTableBucketElem* nextElem; + while (curElem) + { + // Save the next element before we hose this one + nextElem = curElem->fNext; + + // If we adopted the data, then delete it too + // (Note: the userdata hash table instance has data type of void *. + // This will generate compiler warnings here on some platforms, but they + // can be ignored since fAdoptedElements is false. + if (fAdoptedElems) + delete curElem->fData; + + // Then delete the current element and move forward + fMemoryManager->deallocate(curElem->fKey2);//delete [] curElem->fKey2; + fMemoryManager->deallocate(curElem->fKey3);//delete [] curElem->fKey3; + + delete curElem; + curElem = nextElem; + } + + // Clean out this entry + fBucketList[buckInd] = 0; + } + + // Reset the id counter + fIdCounter = 0; +} + +template +void DOMDeepNodeListPool::cleanup() +{ + removeAll(); + + // Then delete the bucket list & hasher & id pointers list + fMemoryManager->deallocate(fIdPtrs);//delete [] fIdPtrs; + fMemoryManager->deallocate(fBucketList);//delete [] fBucketList; +} + + + +// --------------------------------------------------------------------------- +// DOMDeepNodeListPool: Getters +// --------------------------------------------------------------------------- +template +TVal* +DOMDeepNodeListPool::getByKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3) +{ + XMLSize_t hashVal; + DOMDeepNodeListPoolTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); + if (!findIt) + return 0; + return findIt->fData; +} + +template +const TVal* +DOMDeepNodeListPool::getByKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3) const +{ + XMLSize_t hashVal; + const DOMDeepNodeListPoolTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); + if (!findIt) + return 0; + return findIt->fData; +} + +template +TVal* +DOMDeepNodeListPool::getById(const XMLSize_t elemId) +{ + // If its either zero or beyond our current id, its an error + if (!elemId || (elemId > fIdCounter)) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); + + return fIdPtrs[elemId]; +} + +template +const TVal* +DOMDeepNodeListPool::getById(const XMLSize_t elemId) const +{ + // If its either zero or beyond our current id, its an error + if (!elemId || (elemId > fIdCounter)) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); + + return fIdPtrs[elemId]; +} + +// --------------------------------------------------------------------------- +// DOMDeepNodeListPool: Putters +// --------------------------------------------------------------------------- +template +XMLSize_t +DOMDeepNodeListPool::put(void* key1, XMLCh* key2, XMLCh* key3, TVal* const valueToAdopt) +{ + // First see if the key exists already + XMLSize_t hashVal; + DOMDeepNodeListPoolTableBucketElem* newBucket = findBucketElem(key1, key2, key3, hashVal); + + // + // If so,then update its value. If not, then we need to add it to + // the right bucket + // + if (newBucket) + { + if (fAdoptedElems) + delete newBucket->fData; + + fMemoryManager->deallocate(newBucket->fKey2);//delete[] newBucket->fKey2; + fMemoryManager->deallocate(newBucket->fKey3);//delete[] newBucket->fKey3; + + newBucket->fData = valueToAdopt; + newBucket->fKey1 = key1; + newBucket->fKey2 = XMLString::replicate(key2, fMemoryManager); + newBucket->fKey3 = XMLString::replicate(key3, fMemoryManager); + } + else + { + // Revisit: the gcc compiler 2.95.x is generating an + // internal compiler error message. So we use the default + // memory manager for now. +#if defined (XML_GCC_VERSION) && (XML_GCC_VERSION < 29600) + newBucket = new DOMDeepNodeListPoolTableBucketElem + ( + key1 + , key2 + , key3 + , valueToAdopt + , fBucketList[hashVal] + , fMemoryManager + ); +#else + newBucket = new (fMemoryManager) DOMDeepNodeListPoolTableBucketElem + ( + key1 + , key2 + , key3 + , valueToAdopt + , fBucketList[hashVal] + , fMemoryManager + ); +#endif + fBucketList[hashVal] = newBucket; + } + + // + // Give this new one the next available id and add to the pointer list. + // Expand the list if that is now required. + // + if (fIdCounter + 1 == fIdPtrsCount) + { + // Create a new count 1.5 times larger and allocate a new array + XMLSize_t newCount = (XMLSize_t)(fIdPtrsCount * 1.5); + TVal** newArray = (TVal**) fMemoryManager->allocate + ( + newCount * sizeof(TVal*) + );//new TVal*[newCount]; + + // Copy over the old contents to the new array + memcpy(newArray, fIdPtrs, fIdPtrsCount * sizeof(TVal*)); + + // Ok, toss the old array and store the new data + fMemoryManager->deallocate(fIdPtrs); //delete [] fIdPtrs; + fIdPtrs = newArray; + fIdPtrsCount = newCount; + } + const XMLSize_t retId = ++fIdCounter; + fIdPtrs[retId] = valueToAdopt; + + // Return the id that we gave to this element + return retId; +} + +// --------------------------------------------------------------------------- +// DOMDeepNodeListPool: Private methods +// --------------------------------------------------------------------------- +template +DOMDeepNodeListPoolTableBucketElem* DOMDeepNodeListPool:: +findBucketElem(const void* const key1, const XMLCh* const key2, const XMLCh* const key3, XMLSize_t& hashVal) +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + DOMDeepNodeListPoolTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + //key2 and key3 are XMLCh*, compareString takes null pointer vs zero len string the same + //but we need them to be treated as different keys in this case + if (fHasher.equals(key1, curElem->fKey1) && (XMLString::equals(key2, curElem->fKey2)) && (XMLString::equals(key3, curElem->fKey3))) { + if (!key2 || !curElem->fKey2) { + if (key2 || curElem->fKey2) { + curElem = curElem->fNext; + continue; + } + } + if (!key3 || !curElem->fKey3) { + if (key3 || curElem->fKey3) { + curElem = curElem->fNext; + continue; + } + } + + return curElem; + } + + curElem = curElem->fNext; + } + return 0; +} + +template +const DOMDeepNodeListPoolTableBucketElem* DOMDeepNodeListPool:: +findBucketElem(const void* const key1, const XMLCh* const key2, const XMLCh* const key3, XMLSize_t& hashVal) const +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + const DOMDeepNodeListPoolTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + //key2 and key3 are XMLCh*, compareString takes null pointer vs zero len string the same + //but we need them to be treated as different keys in this case + if (fHasher.equals(key1, curElem->fKey1) && (XMLString::equals(key2, curElem->fKey2)) && (XMLString::equals(key3, curElem->fKey3))) { + if (!key2 || !curElem->fKey2) { + if (key2 || curElem->fKey2) { + curElem = curElem->fNext; + continue; + } + } + if (!key3 || !curElem->fKey3) { + if (key3 || curElem->fKey3) { + curElem = curElem->fNext; + continue; + } + } + return curElem; + } + + curElem = curElem->fNext; + } + return 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDeepNodeListPool.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDeepNodeListPool.hpp new file mode 100644 index 000000000000..5eecc36e13b3 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDeepNodeListPool.hpp @@ -0,0 +1,200 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDEEPNODELISTPOOL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDEEPNODELISTPOOL_HPP + + +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This should really be a nested class, but some of the compilers we +// have to support cannot deal with that! +// +template +struct DOMDeepNodeListPoolTableBucketElem : public XMemory +{ + DOMDeepNodeListPoolTableBucketElem + ( + void* key1 + , XMLCh* key2 + , XMLCh* key3 + , TVal* const value + , DOMDeepNodeListPoolTableBucketElem* next + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) : + fData(value) + , fNext(next) + , fKey1(key1) + , fKey2(0) + , fKey3(0) + { + if (key2) + fKey2 = XMLString::replicate(key2, manager); + + if (key3) + fKey3 = XMLString::replicate(key3, manager); + } + + TVal* fData; + DOMDeepNodeListPoolTableBucketElem* fNext; + void* fKey1; + XMLCh* fKey2; + XMLCh* fKey3; + + ~DOMDeepNodeListPoolTableBucketElem() {}; +}; + + +template +class DOMDeepNodeListPool +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DOMDeepNodeListPool + ( + const XMLSize_t modulus + , const XMLSize_t initSize = 128 + ); + + DOMDeepNodeListPool + ( + const XMLSize_t modulus + , const bool adoptElems + , const XMLSize_t initSize = 128 + ); + + DOMDeepNodeListPool + ( + const XMLSize_t modulus + , const bool adoptElems + , const THasher& hasher + , const XMLSize_t initSize = 128 + ); + + ~DOMDeepNodeListPool(); + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + bool isEmpty() const; + bool containsKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3) const; + void removeAll(); + void cleanup(); + + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + TVal* getByKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3); + const TVal* getByKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3) const; + + TVal* getById(const XMLSize_t elemId); + const TVal* getById(const XMLSize_t elemId) const; + + // ----------------------------------------------------------------------- + // Putters + // ----------------------------------------------------------------------- + XMLSize_t put(void* key1, XMLCh* key2, XMLCh* key3, TVal* const valueToAdopt); + +private: + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + DOMDeepNodeListPoolTableBucketElem* findBucketElem(const void* const key1, const XMLCh* const key2, const XMLCh* const key3, XMLSize_t& hashVal); + const DOMDeepNodeListPoolTableBucketElem* findBucketElem(const void* const key1, const XMLCh* const key2, const XMLCh* const key3, XMLSize_t& hashVal) const; + void initialize(const XMLSize_t modulus); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMDeepNodeListPool(const DOMDeepNodeListPool &); + DOMDeepNodeListPool & operator = (const DOMDeepNodeListPool &); + + // ----------------------------------------------------------------------- + // Data members + // + // fAdoptedElems + // Indicates whether the values added are adopted or just referenced. + // If adopted, then they are deleted when they are removed from the + // hash table. + // + // fBucketList + // This is the array that contains the heads of all of the list + // buckets, one for each possible hash value. + // + // fHashModulus + // The modulus used for this hash table, to hash the keys. This is + // also the number of elements in the bucket list. + // + // fHash + // The hasher for the key1 data type. + // + // fIdPtrs + // fIdPtrsCount + // This is the array of pointers to the bucket elements in order of + // their assigned ids. So taking id N and referencing this array + // gives you the element with that id. The count field indicates + // the current size of this list. When fIdCounter+1 reaches this + // value the list must be expanded. + // + // fIdCounter + // This is used to give out unique ids to added elements. It starts + // at zero (which means empty), and is bumped up for each newly added + // element. So the first element is 1, the next is 2, etc... This + // means that this value is set to the top index of the fIdPtrs array. + // ----------------------------------------------------------------------- + bool fAdoptedElems; + DOMDeepNodeListPoolTableBucketElem** fBucketList; + XMLSize_t fHashModulus; + TVal** fIdPtrs; + XMLSize_t fIdPtrsCount; + XMLSize_t fIdCounter; + MemoryManager* fMemoryManager; + THasher fHasher; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDocumentFragmentImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDocumentFragmentImpl.hpp new file mode 100644 index 000000000000..dfdd626efddb --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDocumentFragmentImpl.hpp @@ -0,0 +1,75 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTFRAGMENTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENTFRAGMENTIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include +#include "DOMNodeBase.hpp" +#include "DOMParentNode.hpp" +#include "DOMNodeImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMDocumentFragmentImpl: public DOMDocumentFragment, + public HasDOMNodeImpl, public HasDOMParentImpl { +protected: + DOMNodeImpl fNode; + DOMParentNode fParent; + +protected: + DOMDocumentFragmentImpl(DOMDocument *); + DOMDocumentFragmentImpl(const DOMDocumentFragmentImpl &other, bool deep); + friend class DOMDocumentImpl; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMDocumentFragmentImpl & operator = (const DOMDocumentFragmentImpl &); + +public: + virtual ~DOMDocumentFragmentImpl(); + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMPARENTIMPL_DECL; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDocumentImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDocumentImpl.hpp new file mode 100644 index 000000000000..c748e0ad0dad --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDocumentImpl.hpp @@ -0,0 +1,518 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENTIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "DOMNodeBase.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMStringPool.hpp" +#include "DOMParentNode.hpp" +#include "DOMDeepNodeListPool.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMAttrImpl; +class DOMCDATASectionImpl; +class DOMCommentImpl; +class DOMConfiguration; +class DOMDeepNodeListImpl; +class DOMDocumentFragmentImpl; +class DOMDocumentTypeImpl; +class DOMElementImpl; +class DOMEntityImpl; +class DOMEntityReferenceImpl; +class DOMNotationImpl; +class DOMProcessingInstructionImpl; +class DOMTextImpl; +class DOMNodeIteratorImpl; +class DOMNormalizer; +class DOMTreeWalkerImpl; +class DOMNodeFilter; +class DOMNodeFilterImpl; +class DOMImplementation; +class DOMNodeIDMap; +class DOMRangeImpl; +class DOMBuffer; +class MemoryManager; +class XPathNSResolver; +class XPathExpression; + +typedef RefVectorOf Ranges; +typedef RefVectorOf NodeIterators; +typedef KeyRefPair DOMUserDataRecord; +typedef RefStackOf DOMNodePtr; + +class CDOM_EXPORT DOMDocumentImpl: public XMemory, public DOMMemoryManager, public DOMDocument, + public HasDOMNodeImpl, public HasDOMParentImpl { +public: + // ----------------------------------------------------------------------- + // data + // ----------------------------------------------------------------------- + DOMNodeImpl fNode; // Implements common node functionality. + DOMParentNode fParent; // Implements common parent node functionality + DOMNodeIDMap* fNodeIDMap; // for use by GetElementsById(). + +public: + DOMDocumentImpl(DOMImplementation* domImpl, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + DOMDocumentImpl(const XMLCh* namespaceURI, //DOM Level 2 + const XMLCh* qualifiedName, + DOMDocumentType* doctype, + DOMImplementation* domImpl, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~DOMDocumentImpl(); + + void setDocumentType(DOMDocumentType *doctype); + +public: + // Add all functions that are pure virtual in DOMNODE + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMPARENTIMPL_DECL; + +public: + // Add all functions that are pure virtual in DOMDocument + virtual DOMAttr* createAttribute(const XMLCh *name); + virtual DOMCDATASection* createCDATASection(const XMLCh *data); + virtual DOMComment* createComment(const XMLCh *data); + virtual DOMDocumentFragment* createDocumentFragment(); + virtual DOMDocumentType* createDocumentType(const XMLCh *name); + virtual DOMDocumentType* createDocumentType(const XMLCh *qName, + const XMLCh *publicId, + const XMLCh *systemId); + virtual DOMElement* createElement(const XMLCh * tagName); + virtual DOMElement* createElementNoCheck(const XMLCh *tagName); + virtual DOMEntity* createEntity(const XMLCh * name); + virtual DOMEntityReference* createEntityReference(const XMLCh * name); + virtual DOMNotation* createNotation(const XMLCh * name); + virtual DOMProcessingInstruction* createProcessingInstruction(const XMLCh * target, const XMLCh * data); + virtual DOMText* createTextNode(const XMLCh * data); + virtual DOMDocumentType* getDoctype() const; + virtual DOMElement* getDocumentElement() const; + virtual DOMNodeList* getElementsByTagName(const XMLCh * tagname) const; + virtual DOMImplementation* getImplementation() const; + bool isXMLName(const XMLCh * s); + virtual DOMNodeIterator* createNodeIterator(DOMNode *root, + DOMNodeFilter::ShowType whatToShow, + DOMNodeFilter* filter, + bool entityReferenceExpansion); + virtual DOMTreeWalker* createTreeWalker(DOMNode *root, + DOMNodeFilter::ShowType whatToShow, + DOMNodeFilter* filter, + bool entityReferenceExpansion); + + + virtual DOMRange* createRange(); + virtual Ranges* getRanges() const; //non-standard api + virtual NodeIterators* getNodeIterators() const; //non-standard api + virtual void removeRange(DOMRangeImpl* range); //non-standard api + virtual void removeNodeIterator(DOMNodeIteratorImpl* nodeIterator); //non-standard api + + virtual DOMXPathExpression* createExpression(const XMLCh *expression, + const DOMXPathNSResolver *resolver); + virtual DOMXPathNSResolver* createNSResolver(const DOMNode *nodeResolver); + virtual DOMXPathResult* evaluate(const XMLCh *expression, + const DOMNode *contextNode, + const DOMXPathNSResolver *resolver, + DOMXPathResult::ResultType type, + DOMXPathResult* result); + + + // Extension to be called by the Parser + DOMEntityReference* createEntityReferenceByParser(const XMLCh * name); + + // Add all functions that are pure virtual in DOMMemoryManager + virtual XMLSize_t getMemoryAllocationBlockSize() const; + virtual void setMemoryAllocationBlockSize(XMLSize_t size); + virtual void* allocate(XMLSize_t amount); + virtual void* allocate(XMLSize_t amount, DOMMemoryManager::NodeObjectType type); + // try to remove the block from the list of allocated memory + virtual void release(void* oldBuffer); + virtual void release(DOMNode* object, DOMMemoryManager::NodeObjectType type); + virtual XMLCh* cloneString(const XMLCh *src); + + // + // Functions to keep track of document mutations, so that node list chached + // information can be invalidated. One global changes counter per document. + // + virtual void changed(); + virtual int changes() const; + + /** + * Sets whether the DOM implementation performs error checking + * upon operations. Turning off error checking only affects + * the following DOM checks: + *

    + *
  • Checking strings to make sure that all characters are + * legal XML characters + *
  • Hierarchy checking such as allowed children, checks for + * cycles, etc. + *
+ *

+ * Turning off error checking does not turn off the + * following checks: + *

    + *
  • Read only checks + *
  • Checks related to DOM events + *
+ */ + inline void setErrorChecking(bool check) { + errorChecking = check; + } + + /** + * Returns true if the DOM implementation performs error checking. + */ + inline bool getErrorChecking() const { + return errorChecking; + } + + //Introduced in DOM Level 2 + virtual DOMNode* importNode(const DOMNode *source, bool deep); + virtual DOMElement* createElementNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName); + virtual DOMElement* createElementNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName, + const XMLFileLoc lineNo, + const XMLFileLoc columnNo); + virtual DOMAttr* createAttributeNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName); + virtual DOMNodeList* getElementsByTagNameNS(const XMLCh *namespaceURI, + const XMLCh *localName) const; + virtual DOMElement* getElementById(const XMLCh *elementId) const; + + //Introduced in DOM Level 3 + virtual const XMLCh* getInputEncoding() const; + virtual const XMLCh* getXmlEncoding() const; + virtual bool getXmlStandalone() const; + virtual void setXmlStandalone(bool standalone); + virtual const XMLCh* getXmlVersion() const; + virtual void setXmlVersion(const XMLCh* version); + virtual const XMLCh* getDocumentURI() const; + virtual void setDocumentURI(const XMLCh* documentURI); + virtual bool getStrictErrorChecking() const; + virtual void setStrictErrorChecking(bool strictErrorChecking); + virtual DOMNode* adoptNode(DOMNode* source); + virtual void normalizeDocument(); + virtual DOMConfiguration* getDOMConfig() const; + + void setInputEncoding(const XMLCh* actualEncoding); + void setXmlEncoding(const XMLCh* encoding); + // helper functions to prevent storing userdata pointers on every node. + void* setUserData(DOMNodeImpl* n, + const XMLCh* key, + void* data, + DOMUserDataHandler* handler); + void* getUserData(const DOMNodeImpl* n, + const XMLCh* key) const; + void callUserDataHandlers(const DOMNodeImpl* n, + DOMUserDataHandler::DOMOperationType operation, + const DOMNode* src, + DOMNode* dst) const; + void transferUserData(DOMNodeImpl* n1, DOMNodeImpl* n2); + + DOMNode* renameNode(DOMNode* n, + const XMLCh* namespaceURI, + const XMLCh* name); + + //Return the index > 0 of ':' in the given qualified name qName="prefix:localName". + //Return 0 if there is no ':', or -1 if qName is malformed such as ":abcd". + static int indexofQualifiedName(const XMLCh * qName); + static bool isKidOK(const DOMNode *parent, const DOMNode *child); + + inline DOMNodeIDMap* getNodeIDMap() {return fNodeIDMap;}; + + + // + // Memory Management Functions. All memory is allocated by and owned by + // a document, and is not recovered until the + // document itself is deleted. + // + const XMLCh* getPooledString(const XMLCh*); + const XMLCh* getPooledNString(const XMLCh*, XMLSize_t); + void deleteHeap(); + void releaseDocNotifyUserData(DOMNode* object); + void releaseBuffer(DOMBuffer* buffer); + DOMBuffer* popBuffer(XMLSize_t nMinSize); + MemoryManager* getMemoryManager() const; + + // Factory methods for getting/creating node lists. + // Because nothing is ever deleted, the implementation caches and recycles + // previously used instances of DOMDeepNodeList + // + DOMNodeList* getDeepNodeList(const DOMNode *rootNode, const XMLCh *tagName); + DOMNodeList* getDeepNodeList(const DOMNode *rootNode, //DOM Level 2 + const XMLCh *namespaceURI, + const XMLCh *localName); + +protected: + //Internal helper functions + virtual DOMNode* importNode(const DOMNode *source, bool deep, bool cloningNode); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMDocumentImpl(const DOMDocumentImpl &); + DOMDocumentImpl & operator = (const DOMDocumentImpl &); + +protected: + // ----------------------------------------------------------------------- + // data + // ----------------------------------------------------------------------- + // New data introduced in DOM Level 3 + const XMLCh* fInputEncoding; + const XMLCh* fXmlEncoding; + bool fXmlStandalone; + const XMLCh* fXmlVersion; + const XMLCh* fDocumentURI; + DOMConfiguration* fDOMConfiguration; + + XMLStringPool fUserDataTableKeys; + RefHash2KeysTableOf* fUserDataTable; + + + // Per-Document heap Variables. + // The heap consists of one or more biggish blocks which are + // sub-allocated for individual allocations of nodes, strings, etc. + // The big blocks form a linked list, allowing them to be located for deletion. + // + // There is no provision for deleting suballocated blocks, other than + // deleting the entire heap when the document is deleted. + // + // There is no header on individual sub-allocated blocks. + // The header on big blocks consists only of a single back pointer to + // the previously allocated big block (our linked list of big blocks) + // + // + // revisit - this heap should be encapsulated into its own + // class, rather than hanging naked on Document. + // + void* fCurrentBlock; + void* fCurrentSingletonBlock; + char* fFreePtr; + XMLSize_t fFreeBytesRemaining, + fHeapAllocSize; + + // To recycle the DOMNode pointer + RefArrayOf* fRecycleNodePtr; + + // To recycle DOMBuffer pointer + RefStackOf* fRecycleBufferPtr; + + // Pool of DOMNodeList for getElementsByTagName + DOMDeepNodeListPool* fNodeListPool; + + // Other data + DOMDocumentType* fDocType; + DOMElement* fDocElement; + + DOMStringPoolEntry** fNameTable; + XMLSize_t fNameTableSize; + + DOMNormalizer* fNormalizer; + Ranges* fRanges; + NodeIterators* fNodeIterators; + MemoryManager* fMemoryManager; // configurable memory manager + DOMImplementation* fDOMImplementation; + + int fChanges; + bool errorChecking; // Bypass error checking. + +}; + +inline MemoryManager* DOMDocumentImpl::getMemoryManager() const +{ + return fMemoryManager; +} + +inline const XMLCh* DOMDocumentImpl::getPooledString(const XMLCh *in) +{ + if (in == 0) + return 0; + XMLSize_t n = XMLString::stringLen(in); + + DOMStringPoolEntry **pspe; + DOMStringPoolEntry *spe; + + XMLSize_t inHash = XMLString::hash(in, fNameTableSize); + pspe = &fNameTable[inHash]; + while (*pspe != 0) + { + if ((*pspe)->fLength == n && XMLString::equals((*pspe)->fString, in)) + return (*pspe)->fString; + pspe = &((*pspe)->fNext); + } + + // This string hasn't been seen before. Add it to the pool. + // + + // Compute size to allocate. Note that there's 1 char of string + // declared in the struct, so we don't need to add one again to + // account for the trailing null. + // + XMLSize_t sizeToAllocate = sizeof(DOMStringPoolEntry) + n*sizeof(XMLCh); + *pspe = spe = (DOMStringPoolEntry *)allocate(sizeToAllocate); + spe->fLength = n; + spe->fNext = 0; + XMLString::copyString((XMLCh*)spe->fString, in); + + return spe->fString; +} + +inline const XMLCh* DOMDocumentImpl::getPooledNString(const XMLCh *in, XMLSize_t n) +{ + if (in == 0) + return 0; + + DOMStringPoolEntry **pspe; + DOMStringPoolEntry *spe; + + XMLSize_t inHash = XMLString::hashN(in, n, fNameTableSize); + pspe = &fNameTable[inHash]; + while (*pspe != 0) + { + if ((*pspe)->fLength == n && XMLString::equalsN((*pspe)->fString, in, n)) + return (*pspe)->fString; + pspe = &((*pspe)->fNext); + } + + // This string hasn't been seen before. Add it to the pool. + // + + // Compute size to allocate. Note that there's 1 char of string + // declared in the struct, so we don't need to add one again to + // account for the trailing null. + // + XMLSize_t sizeToAllocate = sizeof(DOMStringPoolEntry) + n*sizeof(XMLCh); + *pspe = spe = (DOMStringPoolEntry *)allocate(sizeToAllocate); + spe->fLength = n; + spe->fNext = 0; + XMLString::copyNString((XMLCh*)spe->fString, in, n); + + return spe->fString; +} + +inline int DOMDocumentImpl::indexofQualifiedName(const XMLCh* name) +{ + int i = 0; + int colon = -1; + int colon_count = 0; + for (; *name != 0; ++i, ++name) + { + if (*name == chColon) + { + ++colon_count; + colon = i; + } + } + + if (i == 0 || colon == 0 || colon == (i - 1) || colon_count > 1) + return -1; + + return colon != -1 ? colon : 0; +} + +XERCES_CPP_NAMESPACE_END + +// --------------------------------------------------------------------------- +// +// Operator new. Global overloaded version, lets any object be allocated on +// the heap owned by a document. +// +// --------------------------------------------------------------------------- +inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl *doc, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType type) +{ + void *p = doc->allocate(amt, type); + return p; +} + +inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType type) +{ + XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager* mgr=(XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager*)doc->getFeature(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercescInterfaceDOMMemoryManager,0); + void* p=0; + if(mgr) + p = mgr->allocate(amt, type); + return p; +} + +inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl *doc) +{ + void* p = doc->allocate(amt); + return p; +} + +inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc) +{ + XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager* mgr=(XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager*)doc->getFeature(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercescInterfaceDOMMemoryManager,0); + void* p=0; + if(mgr) + p = mgr->allocate(amt); + return p; +} + +// --------------------------------------------------------------------------- +// For DOM: +// Bypass compiler warning: +// no matching operator delete found; memory will not be freed if initialization throws an exception +// --------------------------------------------------------------------------- +#if !defined(XERCES_NO_MATCHING_DELETE_OPERATOR) +inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl * /*doc*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType /*type*/) +{ + return; +} +inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * /*doc*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType /*type*/) +{ + return; +} + +inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl * /*doc*/) +{ + return; +} +inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * /*doc*/) +{ + return; +} +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDocumentTypeImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDocumentTypeImpl.hpp new file mode 100644 index 000000000000..3c3ba497605e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMDocumentTypeImpl.hpp @@ -0,0 +1,114 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTTYPEIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENTTYPEIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + + +#include +#include +#include "DOMNodeBase.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMChildNode.hpp" +#include "DOMParentNode.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNamedNodeMapImpl; + +class CDOM_EXPORT DOMDocumentTypeImpl: public DOMDocumentType, + public HasDOMNodeImpl, public HasDOMParentImpl, public HasDOMChildImpl { +protected: + DOMNodeImpl fNode; + DOMParentNode fParent; + DOMChildNode fChild; + + const XMLCh * fName; + DOMNamedNodeMapImpl* fEntities; + DOMNamedNodeMapImpl* fNotations; + DOMNamedNodeMapImpl* fElements; + const XMLCh * fPublicId; + const XMLCh * fSystemId; + const XMLCh * fInternalSubset; + + bool fIntSubsetReading; + bool fIsCreatedFromHeap; + + virtual void setPublicId(const XMLCh * value); + virtual void setSystemId(const XMLCh * value); + virtual void setInternalSubset(const XMLCh *value); + bool isIntSubsetReading() const; + + friend class AbstractDOMParser; + friend class DOMDocumentImpl; + +public: + DOMDocumentTypeImpl(DOMDocument *, const XMLCh *, bool); + DOMDocumentTypeImpl(DOMDocument *, + const XMLCh *qualifiedName, //DOM Level 2 + const XMLCh *publicId, const XMLCh *systemId, bool); + DOMDocumentTypeImpl(const DOMDocumentTypeImpl &other, bool heap, bool deep=false); + virtual ~DOMDocumentTypeImpl(); + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMPARENTIMPL_DECL; + DOMCHILDIMPL_DECL; + +public: + virtual void setOwnerDocument(DOMDocument *doc); + virtual DOMNamedNodeMap * getEntities() const; + virtual const XMLCh * getName() const; + virtual DOMNamedNodeMap * getNotations() const; + virtual DOMNamedNodeMap * getElements() const; + virtual void setReadOnly(bool readOnly, bool deep); + + //Introduced in DOM Level 2 + + virtual const XMLCh * getPublicId() const; + virtual const XMLCh * getSystemId() const; + virtual const XMLCh * getInternalSubset() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMDocumentTypeImpl & operator = (const DOMDocumentTypeImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMElementImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMElementImpl.hpp new file mode 100644 index 000000000000..e4eb193ec06e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMElementImpl.hpp @@ -0,0 +1,150 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMELEMENTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMELEMENTIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#include +#include +#include + +#include "DOMNodeBase.hpp" +#include "DOMChildNode.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMParentNode.hpp" + +#include "DOMAttrMapImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMTypeInfo; +class DOMNodeList; +class DOMAttrMapImpl; +class DOMDocument; + + + + +class CDOM_EXPORT DOMElementImpl: public DOMElement, + public HasDOMNodeImpl, public HasDOMParentImpl, public HasDOMChildImpl { +public: + DOMNodeImpl fNode; + DOMParentNode fParent; + DOMChildNode fChild; + DOMAttrMapImpl *fAttributes; + DOMAttrMapImpl *fDefaultAttributes; + const XMLCh *fName; + +public: + DOMElementImpl(DOMDocument *ownerDoc, const XMLCh *name); + + DOMElementImpl(const DOMElementImpl &other, bool deep=false); + virtual ~DOMElementImpl(); + +public: + // Declare functions from DOMNode. They all must be implemented by this class + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMPARENTIMPL_DECL; + DOMCHILDIMPL_DECL; + +public: + // Functions introduced on Element... + virtual const XMLCh* getAttribute(const XMLCh *name) const; + virtual DOMAttr* getAttributeNode(const XMLCh *name) const; + virtual DOMNodeList* getElementsByTagName(const XMLCh *tagname) const; + virtual const XMLCh* getTagName() const; + virtual void removeAttribute(const XMLCh *name); + virtual DOMAttr* removeAttributeNode(DOMAttr * oldAttr); + virtual void setAttribute(const XMLCh *name, const XMLCh *value); + virtual DOMAttr* setAttributeNode(DOMAttr *newAttr); + virtual void setReadOnly(bool readOnly, bool deep); + + //Introduced in DOM Level 2 + virtual const XMLCh* getAttributeNS(const XMLCh *namespaceURI, + const XMLCh *localName) const; + virtual void setAttributeNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName, + const XMLCh *value); + virtual void removeAttributeNS(const XMLCh *namespaceURI, + const XMLCh *localName); + virtual DOMAttr* getAttributeNodeNS(const XMLCh *namespaceURI, + const XMLCh *localName) const; + virtual DOMAttr* setAttributeNodeNS(DOMAttr *newAttr); + virtual DOMNodeList* getElementsByTagNameNS(const XMLCh *namespaceURI, + const XMLCh *localName) const; + virtual bool hasAttribute(const XMLCh *name) const; + virtual bool hasAttributeNS(const XMLCh *namespaceURI, + const XMLCh *localName) const; + + //Introduced in DOM level 3 + virtual void setIdAttribute(const XMLCh* name, bool isId); + virtual void setIdAttributeNS(const XMLCh* namespaceURI, const XMLCh* localName, bool isId); + virtual void setIdAttributeNode(const DOMAttr *idAttr, bool isId); + virtual const DOMTypeInfo * getSchemaTypeInfo() const; + + // for handling of default attribute + virtual DOMAttr* setDefaultAttributeNode(DOMAttr *newAttr); + virtual DOMAttr* setDefaultAttributeNodeNS(DOMAttr *newAttr); + virtual DOMAttrMapImpl* getDefaultAttributes() const; + + // helper function for DOM Level 3 renameNode + virtual DOMNode* rename(const XMLCh* namespaceURI, const XMLCh* name); + + // DOMElementTraversal + virtual DOMElement * getFirstElementChild() const; + virtual DOMElement * getLastElementChild() const; + virtual DOMElement * getPreviousElementSibling() const; + virtual DOMElement * getNextElementSibling() const; + virtual XMLSize_t getChildElementCount() const; + +protected: + // default attribute helper functions + virtual void setupDefaultAttributes(); + + // helper function for DOMElementTraversal methods + DOMElement* getFirstElementChild(const DOMNode* n) const; + DOMElement* getLastElementChild(const DOMNode* n) const; + DOMNode* getNextLogicalSibling(const DOMNode* n) const; + DOMNode* getPreviousLogicalSibling(const DOMNode* n) const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMElementImpl & operator = (const DOMElementImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMElementNSImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMElementNSImpl.hpp new file mode 100644 index 000000000000..8e552880f499 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMElementNSImpl.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMELEMENTNSIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMELEMENTNSIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#include "DOMElementImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMTypeInfoImpl; + +class CDOM_EXPORT DOMElementNSImpl: public DOMElementImpl { +protected: + //Introduced in DOM Level 2 + const XMLCh * fNamespaceURI; //namespace URI of this node + const XMLCh * fLocalName; //local part of qualified name + const XMLCh * fPrefix; + const DOMTypeInfoImpl *fSchemaType; + +public: + DOMElementNSImpl(DOMDocument *ownerDoc, const XMLCh *name); + DOMElementNSImpl(DOMDocument *ownerDoc, //DOM Level 2 + const XMLCh *namespaceURI, + const XMLCh *qualifiedName); + DOMElementNSImpl(const DOMElementNSImpl &other, bool deep=false); + + // Fast construction without any checks for name validity. Used in + // parsing. + // + DOMElementNSImpl(DOMDocument *ownerDoc, + const XMLCh *namespaceURI, + const XMLCh *prefix, // Null or empty - no prefix. + const XMLCh *localName, + const XMLCh *qualifiedName); + + virtual DOMNode * cloneNode(bool deep) const; + virtual bool isSupported(const XMLCh *feature, const XMLCh *version) const; + virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const; + + //Introduced in DOM Level 2 + virtual const XMLCh *getNamespaceURI() const; + virtual const XMLCh *getPrefix() const; + virtual const XMLCh *getLocalName() const; + virtual void setPrefix(const XMLCh *prefix); + virtual void release(); + + //Introduced in DOM Level 3 + virtual const DOMTypeInfo * getSchemaTypeInfo() const; + + // helper function for DOM Level 3 renameNode + virtual DOMNode* rename(const XMLCh* namespaceURI, const XMLCh* name); + void setName(const XMLCh* namespaceURI, const XMLCh* name); + + //helper function for DOM Level 3 TypeInfo + virtual void setSchemaTypeInfo(const DOMTypeInfoImpl* typeInfo); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMElementNSImpl & operator = (const DOMElementNSImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMEntityImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMEntityImpl.hpp new file mode 100644 index 000000000000..0c50ecbc4c7d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMEntityImpl.hpp @@ -0,0 +1,112 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMENTITYIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMENTITYIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include "DOMNodeBase.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMParentNode.hpp" +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMEntityReference; + +class CDOM_EXPORT DOMEntityImpl: public DOMEntity, public HasDOMNodeImpl, public HasDOMParentImpl { +protected: + DOMNodeImpl fNode; + DOMParentNode fParent; + + const XMLCh * fName; + const XMLCh * fPublicId; + const XMLCh * fSystemId; + const XMLCh * fNotationName; + DOMEntityReference* fRefEntity; + + // New data introduced in DOM Level 3 + const XMLCh* fInputEncoding; + const XMLCh* fXmlEncoding; + const XMLCh* fXmlVersion; + const XMLCh* fBaseURI; + bool fEntityRefNodeCloned; + + // helper function + void cloneEntityRefTree() const; + + friend class XercesDOMParser; + +public: + DOMEntityImpl(DOMDocument *doc, const XMLCh *eName); + DOMEntityImpl(const DOMEntityImpl &other, bool deep=false); + virtual ~DOMEntityImpl(); + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMPARENTIMPL_DECL; + +public: + virtual const XMLCh * getPublicId() const; + virtual const XMLCh * getSystemId() const; + virtual const XMLCh * getNotationName() const; + virtual void setNotationName(const XMLCh *arg); + virtual void setPublicId(const XMLCh *arg); + virtual void setSystemId(const XMLCh *arg); + + //DOM Level 2 additions. Non standard functions + virtual void setEntityRef(DOMEntityReference *); + virtual DOMEntityReference* getEntityRef() const; + + //Introduced in DOM Level 3 + virtual const XMLCh* getInputEncoding() const; + virtual const XMLCh* getXmlEncoding() const; + virtual const XMLCh* getXmlVersion() const; + virtual void setBaseURI(const XMLCh *arg); + + void setInputEncoding(const XMLCh* actualEncoding); + void setXmlEncoding(const XMLCh* encoding); + void setXmlVersion(const XMLCh* version); +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMEntityImpl & operator = (const DOMEntityImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMEntityReferenceImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMEntityReferenceImpl.hpp new file mode 100644 index 000000000000..4afc436c67ea --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMEntityReferenceImpl.hpp @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMENTITYREFERENCEIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMENTITYREFERENCEIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include +#include "DOMNodeBase.hpp" +#include "DOMParentNode.hpp" +#include "DOMChildNode.hpp" +#include "DOMNodeImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMEntityReferenceImpl: public DOMEntityReference, + public HasDOMNodeImpl, public HasDOMParentImpl, public HasDOMChildImpl +{ +protected: + DOMNodeImpl fNode; + DOMParentNode fParent; + DOMChildNode fChild; + + const XMLCh *fName; + const XMLCh *fBaseURI; + + friend class XercesDOMParser; + +public: + DOMEntityReferenceImpl(DOMDocument *ownerDoc, const XMLCh *entityName); + DOMEntityReferenceImpl(DOMDocument *ownerDoc, const XMLCh *entityName, bool cloneChild); + DOMEntityReferenceImpl(const DOMEntityReferenceImpl &other, bool deep=false); + virtual ~DOMEntityReferenceImpl(); + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMPARENTIMPL_DECL; + DOMCHILDIMPL_DECL; + +public: + virtual void setReadOnly(bool readOnly,bool deep); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMEntityReferenceImpl & operator = (const DOMEntityReferenceImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMErrorImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMErrorImpl.hpp new file mode 100644 index 000000000000..1a83a4c7a013 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMErrorImpl.hpp @@ -0,0 +1,188 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMERRORIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMERRORIMPL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * Introduced in DOM Level 3 + * Implementation of a DOMError interface. + * + * @see DOMError#DOMError + */ + +class CDOM_EXPORT DOMErrorImpl : public DOMError +{ +public: + /** @name Constructors and Destructor */ + //@{ + + /** Constructors */ + DOMErrorImpl(const ErrorSeverity severity); + + DOMErrorImpl + ( + const ErrorSeverity severity + , const XMLCh* const message + , DOMLocator* const location + ); + + DOMErrorImpl + ( + const ErrorSeverity severity + , const XMLCh* type + , const XMLCh* message + , void* relatedData + ); + + /** Desctructor */ + virtual ~DOMErrorImpl(); + + //@} + + // DOMError interface + virtual ErrorSeverity getSeverity() const; + virtual const XMLCh* getMessage() const; + virtual DOMLocator* getLocation() const; + virtual void* getRelatedException() const; + virtual const XMLCh* getType() const; + virtual void* getRelatedData() const; + + // Setters + void setSeverity(const ErrorSeverity severity); + void setMessage(const XMLCh* const message); + void setLocation(DOMLocator* const location); + void setAdoptLocation(const bool value); + void setRelatedException(void* exc) const; + void setType(const XMLCh* type); + void setRelatedData(void* relatedData); + +private: + /* Unimplemented constructors and operators */ + + /* Copy constructor */ + DOMErrorImpl(const DOMErrorImpl&); + + /* Assignment operator */ + DOMErrorImpl& operator=(const DOMErrorImpl&); + +protected: + // ----------------------------------------------------------------------- + // Private data members + // + // fAdoptLocation + // Indicates whether we own the DOMLocator object or not. + // + // fSeverity + // The type of the error. + // + // fMessage + // The error message. + // + // fLocation + // The location info of the error. + // + // fType + // The type of the error. + // + // fRelatedData + // The data related to this error. + // + // ----------------------------------------------------------------------- + bool fAdoptLocation; + ErrorSeverity fSeverity; + const XMLCh* fMessage; + DOMLocator* fLocation; + const XMLCh* fType; + void* fRelatedData; +}; + +// --------------------------------------------------------------------------- +// DOMErrorImpl: Getter methods +// --------------------------------------------------------------------------- +inline DOMError::ErrorSeverity DOMErrorImpl::getSeverity() const +{ + return fSeverity; +} + +inline const XMLCh* DOMErrorImpl::getMessage() const +{ + return fMessage; +} + +inline DOMLocator* DOMErrorImpl::getLocation() const +{ + return fLocation; +} + +inline void* DOMErrorImpl::getRelatedException() const +{ + return 0; +} + +inline const XMLCh* DOMErrorImpl::getType() const +{ + return fType; +} + +inline void* DOMErrorImpl::getRelatedData() const +{ + return fRelatedData; +} + +// --------------------------------------------------------------------------- +// DOMErrorImpl: Setter methods +// --------------------------------------------------------------------------- +inline void DOMErrorImpl::setSeverity(const ErrorSeverity severity) +{ + fSeverity = severity; +} + +inline void DOMErrorImpl::setMessage(const XMLCh* const message) +{ + fMessage = message; +} + +inline void DOMErrorImpl::setAdoptLocation(const bool value) +{ + fAdoptLocation = value; +} + +inline void DOMErrorImpl::setType(const XMLCh* type) +{ + fType = type; +} + +inline void DOMErrorImpl::setRelatedData(void* relatedData) +{ + fRelatedData = relatedData; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMImplementationImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMImplementationImpl.hpp new file mode 100644 index 000000000000..f1ae178ff434 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMImplementationImpl.hpp @@ -0,0 +1,102 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLMsgLoader; + +class CDOM_EXPORT DOMImplementationImpl: public XMemory, + public DOMImplementation, + public DOMImplementationSource +{ +private: + DOMImplementationImpl(const DOMImplementationImpl &); + DOMImplementationImpl & operator = (const DOMImplementationImpl &); + friend class XMLInitializer; + +protected: + DOMImplementationImpl() {}; + +public: + virtual ~DOMImplementationImpl() {}; + static DOMImplementationImpl* getDOMImplementationImpl(); + static XMLMsgLoader* getMsgLoader4DOM(); + + // ------------------------------------------------------------ + // DOMImplementation Virtual interface + // ------------------------------------------------------------ + virtual bool hasFeature(const XMLCh * feature, const XMLCh * version) const; + + // Introduced in DOM Level 2 + virtual DOMDocumentType* createDocumentType(const XMLCh *qualifiedName, + const XMLCh * publicId, + const XMLCh *systemId); + virtual DOMDocument* createDocument(const XMLCh *namespaceURI, + const XMLCh *qualifiedName, + DOMDocumentType *doctype, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // DOM Level 3 + virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const; + + // Non-standard extension + virtual DOMDocument* createDocument(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ------------------------------------------------------------ + // DOMImplementationLS Virtual interface + // ------------------------------------------------------------ + // Introduced in DOM Level 3 + virtual DOMLSParser* createLSParser(const DOMImplementationLSMode mode, + const XMLCh* const schemaType, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager, + XMLGrammarPool* const gramPool = 0); + virtual DOMLSSerializer* createLSSerializer(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual DOMLSInput* createLSInput(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual DOMLSOutput* createLSOutput(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ------------------------------------------------------------ + // DOMImplementationSource Virtual interface + // ------------------------------------------------------------ + virtual DOMImplementation* getDOMImplementation(const XMLCh* features) const; + virtual DOMImplementationList* getDOMImplementationList(const XMLCh* features) const; + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMImplementationListImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMImplementationListImpl.hpp new file mode 100644 index 000000000000..5142a2a6fa88 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMImplementationListImpl.hpp @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLISTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLISTIMPL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMImplementation; + +class CDOM_EXPORT DOMImplementationListImpl: public DOMImplementationList +{ +protected: + RefVectorOf *fList; + +private: + // Unused, and unimplemented constructors, operators, etc. + DOMImplementationListImpl(const DOMImplementationListImpl & other); + DOMImplementationListImpl & operator = (const DOMImplementationListImpl & other); + +public: + DOMImplementationListImpl(); + void add(DOMImplementation* impl); + + virtual ~DOMImplementationListImpl(); + virtual DOMImplementation * item(XMLSize_t index) const; + virtual XMLSize_t getLength() const; + virtual void release(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMLSInputImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMLSInputImpl.hpp new file mode 100644 index 000000000000..759480942dcb --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMLSInputImpl.hpp @@ -0,0 +1,134 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSINPUTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSINPUTIMPL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class CDOM_EXPORT DOMLSInputImpl : public XMemory, public DOMLSInput +{ + +public: + + DOMLSInputImpl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~DOMLSInputImpl(); + + virtual const XMLCh* getStringData() const; + virtual InputSource* getByteStream() const; + virtual const XMLCh* getEncoding() const; + virtual const XMLCh* getPublicId() const; + virtual const XMLCh* getSystemId() const; + virtual const XMLCh* getBaseURI() const; + + virtual void setStringData(const XMLCh* data); + virtual void setByteStream(InputSource* stream); + virtual void setEncoding(const XMLCh* const encodingStr); + virtual void setPublicId(const XMLCh* const publicId); + virtual void setSystemId(const XMLCh* const systemId); + virtual void setBaseURI(const XMLCh* const baseURI); + + virtual void setIssueFatalErrorIfNotFound(bool flag); + virtual bool getIssueFatalErrorIfNotFound() const; + virtual void release(); + + +private: + /** unimplemented copy ctor and assignment operator */ + DOMLSInputImpl(const DOMLSInputImpl&); + DOMLSInputImpl & operator = (const DOMLSInputImpl&); + +protected: + // ----------------------------------------------------------------------- + // Private data members + // + // fStringData + // We don't own it + // + // fByteStream + // We don't own it + // + // fEncoding + // We own it + // + // fPublicId + // We own it + // + // fSystemId + // We own it + // + // fBaseURI + // We own it + // + // ----------------------------------------------------------------------- + + const XMLCh *fStringData; + InputSource *fByteStream; + XMLCh *fEncoding; + XMLCh *fPublicId; + XMLCh *fSystemId; + XMLCh *fBaseURI; + bool fIssueFatalErrorIfNotFound; + MemoryManager* fMemoryManager; +}; + +inline const XMLCh* DOMLSInputImpl::getStringData() const +{ + return fStringData; +} + +inline InputSource* DOMLSInputImpl::getByteStream() const +{ + return fByteStream; +} + +inline const XMLCh* DOMLSInputImpl::getEncoding() const +{ + return fEncoding; +} + +inline const XMLCh* DOMLSInputImpl::getPublicId() const +{ + return fPublicId; +} + +inline const XMLCh* DOMLSInputImpl::getSystemId() const +{ + return fSystemId; +} + +inline const XMLCh* DOMLSInputImpl::getBaseURI() const +{ + return fBaseURI; +} + +inline bool DOMLSInputImpl::getIssueFatalErrorIfNotFound() const +{ + return fIssueFatalErrorIfNotFound; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMLSOutputImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMLSOutputImpl.hpp new file mode 100644 index 000000000000..523e90c0b356 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMLSOutputImpl.hpp @@ -0,0 +1,92 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSOUTPUTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSOUTPUTIMPL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class CDOM_EXPORT DOMLSOutputImpl : public XMemory, public DOMLSOutput +{ + +public: + + DOMLSOutputImpl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~DOMLSOutputImpl(); + + virtual XMLFormatTarget* getByteStream() const; + virtual const XMLCh* getEncoding() const; + virtual const XMLCh* getSystemId() const; + + virtual void setByteStream(XMLFormatTarget* stream); + virtual void setEncoding(const XMLCh* const encodingStr); + virtual void setSystemId(const XMLCh* const systemId); + + virtual void release(); + +private: + + /** unimplemented copy ctor and assignment operator */ + DOMLSOutputImpl(const DOMLSOutputImpl&); + DOMLSOutputImpl & operator = (const DOMLSOutputImpl&); + +protected: + // ----------------------------------------------------------------------- + // Private data members + // + // fByteStream + // We don't own it + // + // fEncoding + // We own it + // + // fSystemId + // We own it + // + // ----------------------------------------------------------------------- + + XMLFormatTarget *fByteStream; + XMLCh *fEncoding; + XMLCh *fSystemId; + MemoryManager* fMemoryManager; +}; + +inline XMLFormatTarget* DOMLSOutputImpl::getByteStream() const +{ + return fByteStream; +} + +inline const XMLCh* DOMLSOutputImpl::getEncoding() const +{ + return fEncoding; +} + +inline const XMLCh* DOMLSOutputImpl::getSystemId() const +{ + return fSystemId; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMLSSerializerImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMLSSerializerImpl.hpp new file mode 100644 index 000000000000..af115fda5937 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMLSSerializerImpl.hpp @@ -0,0 +1,234 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSSERIALIZERMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSSERIALIZERMPL_HPP + +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMStringListImpl; + +class CDOM_EXPORT DOMLSSerializerImpl : public XMemory, + public DOMLSSerializer, + public DOMConfiguration +{ + +public: + + /** @name Constructor and Destructor */ + //@{ + + /** + * Constructor. + */ + DOMLSSerializerImpl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Destructor. + */ + ~DOMLSSerializerImpl(); + //@} + + /** @name Implementation of DOMLSSerializer interface */ + //@{ + + virtual DOMConfiguration* getDomConfig(); + + virtual void setNewLine(const XMLCh* const newLine); + virtual const XMLCh* getNewLine() const; + + virtual void setFilter(DOMLSSerializerFilter *filter); + virtual DOMLSSerializerFilter* getFilter() const; + + virtual bool write(const DOMNode* nodeToWrite, + DOMLSOutput* const destination); + virtual bool writeToURI(const DOMNode* nodeToWrite, + const XMLCh* uri); + /** + * The caller is responsible for the release of the returned string + */ + virtual XMLCh* writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL); + virtual void release(); + + //@} + + /** @name Implementation of DOMConfiguration interface */ + //@{ + virtual void setParameter(const XMLCh* name, const void* value); + virtual void setParameter(const XMLCh* name, bool value); + virtual const void* getParameter(const XMLCh* name) const; + virtual bool canSetParameter(const XMLCh* name, const void* value) const; + virtual bool canSetParameter(const XMLCh* name, bool value) const; + virtual const DOMStringList* getParameterNames() const; + //@} + +private: + + /** unimplemented copy ctor and assignment operator */ + DOMLSSerializerImpl(const DOMLSSerializerImpl&); + DOMLSSerializerImpl & operator = (const DOMLSSerializerImpl&); + +protected: + /** helper **/ + void processNode(const DOMNode* const); + + void procCdataSection(const XMLCh* const nodeValue + , const DOMNode* const nodeToWrite); + + void procUnrepCharInCdataSection(const XMLCh* const nodeValue + , const DOMNode* const nodeToWrite); + +protected: + /** + * Overidden by derived classes to extend the abilities of the standard writer + * always returns false in the default implementation + * @return true if the method deals with nodeToWrite + */ + virtual bool customNodeSerialize(const DOMNode* const nodeToWrite, int level); + + DOMNodeFilter::FilterAction checkFilter(const DOMNode* const) const; + + bool checkFeature(const XMLCh* const featName + , bool state + , int& featureId) const; + + bool reportError(const DOMNode* const errorNode + , DOMError::ErrorSeverity errorType + , const XMLCh* const errorMsg); + bool reportError(const DOMNode* const errorNode + , DOMError::ErrorSeverity errorType + , XMLDOMMsg::Codes toEmit); + + bool canSetFeature(const int featureId + , bool val) const; + void setFeature(const int featureId + , bool val); + bool getFeature(const int featureId) const; + + void printNewLine(); + void setURCharRef(); + bool isDefaultNamespacePrefixDeclared() const; + bool isNamespaceBindingActive(const XMLCh* prefix, const XMLCh* uri) const; + void ensureValidString(const DOMNode* nodeToWrite, const XMLCh* string); + + + void printIndent(unsigned int level); + //does the actual work for processNode while keeping track of the level + void processNode(const DOMNode* const nodeToWrite, int level); + + void processBOM(); + + // ----------------------------------------------------------------------- + // Private data members + // + // fFeatures + // + // fNewLine + // own it + // + // fErrorHandler + // don't own it + // + // fFilter + // don't own it + // + // fDocumentVersion + // The XML Version of the document to be serialized. + // + // fSupportedParameters + // A list of the parameters that can be set, including the ones + // specific of Xerces + // + // fEncodingUsed (session var) + // the actual encoding used in write(), + // it does not own any data(memory). + // + // fNewLineUsed (session var) + // the actual "end of line" sequence used in write(), + // it does not own any data(memory). + // + // fFormatter (session var) + // the formatter used in write() + // + // fErrorCount + // the count of error encountered in the serialization, + // which neither the error handler, nor the serializer itself, + // treat as fatal. And the serializer will return true/false + // based on this value. + // + // fCurrentLine + // the current line. Used to track the line number the current + // node begins on + // + // ----------------------------------------------------------------------- + + int fFeatures; + XMLCh *fNewLine; + DOMErrorHandler *fErrorHandler; + DOMLSSerializerFilter *fFilter; + const XMLCh *fDocumentVersion; + DOMStringListImpl *fSupportedParameters; + + //session vars + const XMLCh *fEncodingUsed; + const XMLCh *fNewLineUsed; + XMLFormatter *fFormatter; + int fErrorCount; + int fCurrentLine; + bool fLineFeedInTextNodePrinted; + unsigned int fLastWhiteSpaceInTextNode; + bool fIsXml11; + + RefVectorOf< RefHashTableOf >* fNamespaceStack; + MemoryManager* fMemoryManager; +}; + +inline DOMConfiguration* DOMLSSerializerImpl::getDomConfig() +{ + return this; +} + +inline void DOMLSSerializerImpl::setFeature(const int featureId + , bool val) +{ + (val)? fFeatures |= (1<setUnRepFlags(XMLFormatter::UnRep_CharRef); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMLocatorImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMLocatorImpl.hpp new file mode 100644 index 000000000000..235bab5cf933 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMLocatorImpl.hpp @@ -0,0 +1,187 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLOCATORIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLOCATORIMPL_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Introduced in DOM Level 3 + * + * Implementation of a DOMLocator interface. + * + * @see DOMLocator#DOMLocator + */ + +class CDOM_EXPORT DOMLocatorImpl : public DOMLocator +{ +public: + /** @name Constructors and Destructor */ + //@{ + + /** Constructor */ + DOMLocatorImpl(); + + DOMLocatorImpl + ( + const XMLFileLoc lineNum + , const XMLFileLoc columnNum + , DOMNode* const errorNode + , const XMLCh* const uri + , const XMLFilePos offset = ~(XMLFilePos(0)) + , const XMLFilePos utf16Offset = ~(XMLFilePos(0)) + ); + + /** Desctructor */ + virtual ~DOMLocatorImpl(); + + //@} + + // DOMLocator interface + virtual XMLFileLoc getLineNumber() const; + virtual XMLFileLoc getColumnNumber() const; + virtual XMLFilePos getByteOffset() const; + virtual XMLFilePos getUtf16Offset() const; + virtual DOMNode* getRelatedNode() const; + virtual const XMLCh* getURI() const; + + // Setter functions + void setLineNumber(const XMLFileLoc lineNumber); + void setColumnNumber(const XMLFileLoc columnNumber); + void setByteOffset(const XMLFilePos offset); + void setUtf16Offset(const XMLFilePos offset); + void setRelatedNode(DOMNode* const errorNode); + void setURI(const XMLCh* const uri); + + +private : + /* Unimplemented constructors and operators */ + + /* Copy constructor */ + DOMLocatorImpl(const DOMLocatorImpl&); + + /* Assignment operator */ + DOMLocatorImpl& operator=(const DOMLocatorImpl&); + +protected: + // ----------------------------------------------------------------------- + // Private data members + // + // fLineNum + // fColumnNum + // Track line/column number of where the error occured + // + // fByteOffset + // Track byte offset in the input source where the error + // occured + // + // fUtf16Offset + // Track character offset in the input source where the error + // occured + // + // fRelatedNode + // Current node where the error occured + // + // fURI + // The uri where the error occured + // ----------------------------------------------------------------------- + XMLFileLoc fLineNum; + XMLFileLoc fColumnNum; + XMLFilePos fByteOffset; + XMLFilePos fUtf16Offset; + DOMNode* fRelatedNode; + const XMLCh* fURI; +}; + + +// --------------------------------------------------------------------------- +// DOMLocatorImpl: Getter methods +// --------------------------------------------------------------------------- +inline XMLFileLoc DOMLocatorImpl::getLineNumber() const +{ + return fLineNum; +} + +inline XMLFileLoc DOMLocatorImpl::getColumnNumber() const +{ + return fColumnNum; +} + +inline XMLFilePos DOMLocatorImpl::getByteOffset() const +{ + return fByteOffset; +} + +inline XMLFilePos DOMLocatorImpl::getUtf16Offset() const +{ + return fUtf16Offset; +} + +inline DOMNode* DOMLocatorImpl::getRelatedNode() const +{ + return fRelatedNode; +} + +inline const XMLCh* DOMLocatorImpl::getURI() const +{ + return fURI; +} + + +// --------------------------------------------------------------------------- +// DOMLocatorImpl: Setter methods +// --------------------------------------------------------------------------- +inline void DOMLocatorImpl::setLineNumber(const XMLFileLoc lineNumber) +{ + fLineNum = lineNumber; +} + +inline void DOMLocatorImpl::setColumnNumber(const XMLFileLoc columnNumber) +{ + fColumnNum = columnNumber; +} + +inline void DOMLocatorImpl::setByteOffset(const XMLFilePos offset) +{ + fByteOffset = offset; +} + +inline void DOMLocatorImpl::setUtf16Offset(const XMLFilePos offset) +{ + fUtf16Offset = offset; +} + +inline void DOMLocatorImpl::setRelatedNode(DOMNode* const errorNode) +{ + fRelatedNode = errorNode; +} + +inline void DOMLocatorImpl::setURI(const XMLCh* const uri) +{ + fURI = uri; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNamedNodeMapImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNamedNodeMapImpl.hpp new file mode 100644 index 000000000000..b8c334e3f898 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNamedNodeMapImpl.hpp @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNAMEDNODEMAPIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNAMEDNODEMAPIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNodeVector; +class DOMNode; + +#define MAP_SIZE 193 + +class CDOM_EXPORT DOMNamedNodeMapImpl: public DOMNamedNodeMap { +protected: + DOMNodeVector* fBuckets[MAP_SIZE]; + DOMNode* fOwnerNode; // the node this map belongs to + //bool fReadOnly; // revisit - flag on owner node instead? + + bool readOnly(); // revisit. Look at owner node read-only. + +public: + DOMNamedNodeMapImpl(DOMNode *ownerNode); + + virtual ~DOMNamedNodeMapImpl(); + virtual DOMNamedNodeMapImpl *cloneMap(DOMNode *ownerNode); + virtual void setReadOnly(bool readOnly, bool deep); + + virtual XMLSize_t getLength() const; + virtual DOMNode* item(XMLSize_t index) const; + virtual DOMNode* getNamedItem(const XMLCh *name) const; + virtual DOMNode* setNamedItem(DOMNode *arg); + virtual DOMNode* removeNamedItem(const XMLCh *name); + + //Introduced in DOM Level 2 + virtual DOMNode* getNamedItemNS(const XMLCh *namespaceURI, + const XMLCh *localName) const; + virtual DOMNode* setNamedItemNS(DOMNode *arg); + virtual DOMNode* removeNamedItemNS(const XMLCh *namespaceURI, + const XMLCh *localName); +private: + // unimplemented + DOMNamedNodeMapImpl(const DOMNamedNodeMapImpl &); + DOMNamedNodeMapImpl & operator = (const DOMNamedNodeMapImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeBase.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeBase.hpp new file mode 100644 index 000000000000..443e2ddee017 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeBase.hpp @@ -0,0 +1,244 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id:$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODEBASE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODEBASE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNodeImpl; +class DOMParentNode; +class DOMChildNode; + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +/** + * Virtual base class with accessors for shared characteristics of DOM implementation + * types, this is a workaround for the current class design that allows the various + * implementation classes to punch into the internals of each others members without + * using unsafe casts that depend on object layout. + */ +class CDOM_EXPORT HasDOMNodeImpl { +protected: + // ----------------------------------------------------------------------- + // Hidden constructor + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + HasDOMNodeImpl() {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + HasDOMNodeImpl & operator= (const HasDOMNodeImpl &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~HasDOMNodeImpl() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual HasDOMNodeImpl interface + // ----------------------------------------------------------------------- + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** + * Gets the embedded DOMNodeImpl member. + */ + virtual DOMNodeImpl *getNodeImpl() = 0; + + /** + * Gets the embedded DOMNodeImpl member. + */ + virtual const DOMNodeImpl *getNodeImpl() const = 0; + //@} +}; + +/** + * Virtual base class with accessors for shared characteristics of DOM implementation + * types, this is a workaround for the current class design that allows the various + * implementation classes to punch into the internals of each others members without + * using unsafe casts that depend on object layout. + */ +class CDOM_EXPORT HasDOMParentImpl { +protected: + // ----------------------------------------------------------------------- + // Hidden constructor + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + HasDOMParentImpl() {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + HasDOMParentImpl & operator= (const HasDOMParentImpl &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~HasDOMParentImpl() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual HasDOMParentImpl interface + // ----------------------------------------------------------------------- + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** + * Gets the embedded DOMParentNode member. + */ + virtual DOMParentNode *getParentNodeImpl() = 0; + + /** + * Gets the embedded DOMParentNode member. + */ + virtual const DOMParentNode *getParentNodeImpl() const = 0; + //@} +}; + +/** + * Virtual base class with accessors for shared characteristics of DOM implementation + * types, this is a workaround for the current class design that allows the various + * implementation classes to punch into the internals of each others members without + * using unsafe casts that depend on object layout. + */ +class CDOM_EXPORT HasDOMChildImpl { +protected: + // ----------------------------------------------------------------------- + // Hidden constructor + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + HasDOMChildImpl() {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + HasDOMChildImpl & operator= (const HasDOMChildImpl &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~HasDOMChildImpl() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual HasDOMChildImpl interface + // ----------------------------------------------------------------------- + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** + * Gets the embedded DOMChildNode member. + */ + virtual DOMChildNode *getChildNodeImpl() = 0; + + /** + * Gets the embedded DOMChildNode member. + */ + virtual const DOMChildNode *getChildNodeImpl() const = 0; + //@} +}; + +#define DOMNODEIMPL_DECL \ + virtual DOMNodeImpl* getNodeImpl(); \ + virtual const DOMNodeImpl* getNodeImpl() const; + +#define DOMNODEIMPL_IMPL(classname) \ + DOMNodeImpl* classname::getNodeImpl() {return &fNode;} \ + const DOMNodeImpl* classname::getNodeImpl() const {return &fNode;} + +#define DOMPARENTIMPL_DECL \ + virtual DOMParentNode* getParentNodeImpl(); \ + virtual const DOMParentNode* getParentNodeImpl() const; + +#define DOMPARENTIMPL_IMPL(classname) \ + DOMParentNode* classname::getParentNodeImpl() {return &fParent;} \ + const DOMParentNode* classname::getParentNodeImpl() const {return &fParent;} + +#define DOMCHILDIMPL_DECL \ + virtual DOMChildNode* getChildNodeImpl(); \ + virtual const DOMChildNode* getChildNodeImpl() const; + +#define DOMCHILDIMPL_IMPL(classname) \ + DOMChildNode* classname::getChildNodeImpl() {return &fChild;} \ + const DOMChildNode* classname::getChildNodeImpl() const {return &fChild;} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeIDMap.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeIDMap.hpp new file mode 100644 index 000000000000..faf12ad6e706 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeIDMap.hpp @@ -0,0 +1,86 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODEIDMAP_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODEIDMAP_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +XERCES_CPP_NAMESPACE_BEGIN + + +// +// Class DOMNodeIDMap is a hash table that is used in the implementation of +// of DOM_Document::getElementsByID(). +// +// Why Yet Another HashTable implementation? Becuase it can be significantly +// smaller when tuned for this exact usage, and the generic RefHashTableOf +// from the xerces utils project is not a paricularly good fit. +// +class DOMAttr; +class DOMDocument; + + +class DOMNodeIDMap { +public: + + DOMNodeIDMap(XMLSize_t initialSize, DOMDocument *doc); // Create a new hash table, sized to hold "initialSize" + // Entries. It will automatically grow if need be. + + ~DOMNodeIDMap(); + +private: + DOMNodeIDMap(const DOMNodeIDMap &other); // No copy, assignement, comparison. + DOMNodeIDMap &operator = (const DOMNodeIDMap &other); + bool operator == (const DOMNodeIDMap &other); + +public: + void add(DOMAttr *attr); // Add the specified attribute to the table. + void remove(DOMAttr *other); // Remove the specified attribute. + // Does nothing if the node is not in the table. + DOMAttr *find(const XMLCh *ID); // Find the attribute node in the table with this ID + +private: + void growTable(); + +private: + DOMAttr **fTable; + XMLSize_t fSizeIndex; // Index of the current table size in the + // array of possible table sizes. + XMLSize_t fSize; // The current size of the table array + // (number of slots, not bytes.) + XMLSize_t fNumEntries; // The number of entries used. + XMLSize_t fMaxEntries; // The max number of entries to use before + // growing the table. + DOMDocument *fDoc; // The owning document. +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeImpl.hpp new file mode 100644 index 000000000000..5f82e5a4b30a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeImpl.hpp @@ -0,0 +1,391 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODEIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODEIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +/** + * A DOMNodeImpl doesn't have any children, and can therefore only be directly + * inherited by classes of nodes that never have any, such as Text nodes. For + * other types, such as Element, classes must inherit from ParentNode. + *

+ * All nodes in a single document must originate + * in that document. (Note that this is much tighter than "must be + * same implementation") Nodes are all aware of their ownerDocument, + * and attempts to mismatch will throw WRONG_DOCUMENT_ERR. + *

+ * However, to save memory not all nodes always have a direct reference + * to their ownerDocument. When a node is owned by another node it relies + * on its owner to store its ownerDocument. Parent nodes always store it + * though, so there is never more than one level of indirection. + * And when a node doesn't have an owner, ownerNode refers to its + * ownerDocument. + **/ + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNamedNodeMap; +class DOMNodeList; +class DOMNode; +class DOMDocument; +class DOMElement; + +class CDOM_EXPORT DOMNodeImpl { +public: + + // data + DOMNode *fContainingNode; // the impl object that we're contained by + DOMNode *fOwnerNode; // typically the parent but not always! + + unsigned short flags; + + static const unsigned short READONLY; + static const unsigned short SYNCDATA; + static const unsigned short SYNCCHILDREN; + static const unsigned short OWNED; + static const unsigned short FIRSTCHILD; + static const unsigned short SPECIFIED; + static const unsigned short IGNORABLEWS; + static const unsigned short SETVALUE; + static const unsigned short ID_ATTR; + static const unsigned short USERDATA; + static const unsigned short LEAFNODETYPE; + static const unsigned short CHILDNODE; + static const unsigned short TOBERELEASED; + + +public: + DOMNodeImpl(DOMNode* containingNode, DOMNode *ownerDocument); + DOMNodeImpl(DOMNode* containingNode, const DOMNodeImpl &other); + ~DOMNodeImpl(); + +private: + // Make sure this can't be called to corrupt the containing node ptr. + DOMNodeImpl(const DOMNodeImpl &other); + + DOMNode* getContainingNode(); + const DOMNode* getContainingNode() const; + +public: + DOMNode * appendChild(DOMNode *newChild); + DOMNamedNodeMap * getAttributes() const; + DOMNodeList * getChildNodes() const; + DOMNode * getFirstChild() const; + DOMNode * getLastChild() const; + const XMLCh * getLocalName() const; + const XMLCh * getNamespaceURI() const; + DOMNode * getNextSibling() const; + const XMLCh * getNodeValue() const; + DOMDocument * getOwnerDocument() const; + DOMNode * getParentNode() const; + const XMLCh * getPrefix() const; + DOMNode * getPreviousSibling() const; + bool hasChildNodes() const; + DOMNode * insertBefore(DOMNode *newChild, DOMNode *refChild); + void normalize(); + DOMNode * removeChild(DOMNode *oldChild); + DOMNode * replaceChild(DOMNode *newChild, DOMNode *oldChild); + void setNodeValue(const XMLCh *value); + void setPrefix(const XMLCh *fPrefix); + void setReadOnly(bool readOnly, bool deep); + bool isSupported(const XMLCh *feature, const XMLCh *version) const; + bool hasAttributes() const; + + // Introduced in DOM Level 3 + void* setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler); + void* getUserData(const XMLCh* key) const; + bool isSameNode(const DOMNode* other) const; + bool isEqualNode(const DOMNode* arg) const; + const XMLCh* getBaseURI() const ; + short compareDocumentPosition(const DOMNode* other) const; + const XMLCh* getTextContent() const ; + const XMLCh* getTextContent(XMLCh* pzBuffer, XMLSize_t& rnBufferLength) const; + void setTextContent(const XMLCh* textContent) ; + const XMLCh* lookupPrefix(const XMLCh* namespaceURI) const ; + bool isDefaultNamespace(const XMLCh* namespaceURI) const ; + const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const ; + void* getFeature(const XMLCh* feature, const XMLCh* version) const; + + + // Helper functions for DOM Level 3 + void release(); + void callUserDataHandlers(DOMUserDataHandler::DOMOperationType operation, + const DOMNode* src, + DOMNode* dst) const; + //reverses the bit pattern given by compareDocumentPosition + short reverseTreeOrderBitPattern(short pattern) const; + const DOMNode* getTreeParentNode(const DOMNode* node) const; + + + //Utility, not part of DOM Level 2 API + static bool isKidOK(DOMNode *parent, DOMNode *child); + static const XMLCh *mapPrefix(const XMLCh *prefix, + const XMLCh *namespaceURI, short nType); + + static const XMLCh *getXmlnsString(); + static const XMLCh *getXmlnsURIString(); + static const XMLCh *getXmlString(); + static const XMLCh *getXmlURIString(); + +public: // should really be protected - ALH + + DOMNode* getElementAncestor (const DOMNode* currentNode) const; + const XMLCh* lookupPrefix(const XMLCh* const namespaceURI, DOMElement *el) const ; + void setOwnerDocument(DOMDocument *doc); + + /* + * Flags setters and getters + */ + + inline bool isReadOnly() const { + return (flags & READONLY) != 0; + } + + inline void isReadOnly(bool value) { + flags = (value ? flags | READONLY : flags & ~READONLY); + } + + inline bool needsSyncData() const { + return (flags & SYNCDATA) != 0; + } + + inline void needsSyncData(bool value) { + flags = (value ? flags | SYNCDATA : flags & ~SYNCDATA); + } + + inline bool needsSyncChildren() const { + return (flags & SYNCCHILDREN) != 0; + } + + inline void needsSyncChildren(bool value) { + flags = (value ? flags | SYNCCHILDREN : flags & ~SYNCCHILDREN); + } + + // For Attributes, true if the attr node is attached to an element. + // For all other node types, true if the node has a parent node. + inline bool isOwned() const { + return (flags & OWNED) != 0; + } + + inline void isOwned(bool value) { + flags = (value ? flags | OWNED : flags & ~OWNED); + } + + inline bool isFirstChild() const { + return (flags & FIRSTCHILD) != 0; + } + + inline void isFirstChild(bool value) { + flags = (value ? flags | FIRSTCHILD : flags & ~FIRSTCHILD); + } + + inline bool isSpecified() const { + return (flags & SPECIFIED) != 0; + } + + inline void isSpecified(bool value) { + flags = (value ? flags | SPECIFIED : flags & ~SPECIFIED); + } + + inline bool ignorableWhitespace() const { + return (flags & IGNORABLEWS) != 0; + } + + inline void ignorableWhitespace(bool value) { + flags = (value ? flags | IGNORABLEWS : flags & ~IGNORABLEWS); + } + + inline bool setValue() const { + return (flags & SETVALUE) != 0; + } + + inline void setValue(bool value) { + flags = (value ? flags | SETVALUE : flags & ~SETVALUE); + } + + inline bool isIdAttr() const { + return (flags & ID_ATTR) != 0; + } + + inline void isIdAttr(bool value) { + flags = (value ? flags | ID_ATTR : flags & ~ID_ATTR); + } + + inline bool hasUserData() const { + return (flags & USERDATA) != 0; + } + + inline void hasUserData(bool value) { + flags = (value ? flags | USERDATA : flags & ~USERDATA); + } + + // + // LeafNode is set true for node types that can not be ParentNodes (can't have children) + // This knowledge is used to allow casting from any unknown node type to the + // IDParentImpl or IDChildImpl parts of the node. + // + inline bool isLeafNode() const { + return (flags & LEAFNODETYPE) != 0; + } + + inline void setIsLeafNode(bool value) { + flags = (value ? flags | LEAFNODETYPE : flags & ~LEAFNODETYPE); + } + + + // + // ChildNode is set true for node types that can be children of other nodes, and + // therefore include a DOMChildNode data member. Note that all of the leaf + // node types (above flag) are also ChildNodes, but not all ChildNodes are + // leaf nodes. + inline bool isChildNode() const { + return (flags & CHILDNODE) != 0; + } + + inline void setIsChildNode(bool value) { + flags = (value ? flags | CHILDNODE : flags & ~CHILDNODE); + } + + // True if this node has to be released regardless if it has a owner or not + // This is true if called from fParent->release() + inline bool isToBeReleased() const { + return (flags & TOBERELEASED) != 0; + } + + inline void isToBeReleased(bool value) { + flags = (value ? flags | TOBERELEASED : flags & ~TOBERELEASED); + } + +}; + + +// This macro lists all of the pure virtual functions declared in DOMNode that must +// be implemented by all node types. Since there is no inheritance of implementation, +// using this macro in the class declaration of the node types make it easier to +// accurately get all of the functions declared. +// +#define DOMNODE_FUNCTIONS \ + virtual DOMNode* appendChild(DOMNode *newChild) ;\ + virtual DOMNode* cloneNode(bool deep) const ;\ + virtual DOMNamedNodeMap* getAttributes() const ;\ + virtual DOMNodeList* getChildNodes() const ;\ + virtual DOMNode* getFirstChild() const ;\ + virtual DOMNode* getLastChild() const ;\ + virtual const XMLCh* getLocalName() const ;\ + virtual const XMLCh* getNamespaceURI() const ;\ + virtual DOMNode* getNextSibling() const ;\ + virtual const XMLCh* getNodeName() const ;\ + virtual NodeType getNodeType() const ;\ + virtual const XMLCh* getNodeValue() const ;\ + virtual DOMDocument* getOwnerDocument() const ;\ + virtual const XMLCh* getPrefix() const ;\ + virtual DOMNode* getParentNode() const ;\ + virtual DOMNode* getPreviousSibling() const ;\ + virtual bool hasChildNodes() const ;\ + virtual DOMNode* insertBefore(DOMNode *newChild, DOMNode *refChild) ;\ + virtual void normalize() ;\ + virtual DOMNode* removeChild(DOMNode *oldChild) ;\ + virtual DOMNode* replaceChild(DOMNode *newChild, DOMNode *oldChild) ;\ + virtual void setNodeValue(const XMLCh *nodeValue) ;\ + virtual bool isSupported(const XMLCh *feature, const XMLCh *version) const ;\ + virtual bool hasAttributes() const ;\ + virtual void setPrefix(const XMLCh * prefix) ;\ + virtual void* setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) ;\ + virtual void* getUserData(const XMLCh* key) const ;\ + virtual bool isSameNode(const DOMNode* other) const;\ + virtual bool isEqualNode(const DOMNode* arg) const;\ + virtual const XMLCh* getBaseURI() const ;\ + virtual short compareDocumentPosition(const DOMNode* other) const ;\ + virtual const XMLCh* getTextContent() const ;\ + const XMLCh* getTextContent(XMLCh* pzBuffer, unsigned int& rnBufferLength) const;\ + virtual void setTextContent(const XMLCh* textContent) ;\ + virtual const XMLCh* lookupPrefix(const XMLCh* namespaceURI) const ;\ + virtual bool isDefaultNamespace(const XMLCh* namespaceURI) const;\ + virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const ;\ + virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const ;\ + virtual void release() + + +/* + * Here are dummy stubs for most of the functions introduced by DOMNode. + * Each subclass of DOMNode will have something like this that delegates each + * function to the appropriate implementation. + * Functions that must be supplied by every node class are omitted. + * + DOMNode* xxx::appendChild(DOMNode *newChild) {return fParent.appendChild (newChild); }; + DOMNamedNodeMap* xxx::getAttributes() const {return fNode.getAttributes (); }; + DOMNodeList* xxx::getChildNodes() const {return fParent.getChildNodes (); }; + DOMNode* xxx::getFirstChild() const {return fParent.getFirstChild (); }; + DOMNode* xxx::getLastChild() const {return fParent.getLastChild (); }; + const XMLCh* xxx::getLocalName() const {return fNode.getLocalName (); }; + const XMLCh* xxx::getNamespaceURI() const {return fNode.getNamespaceURI (); }; + DOMNode* xxx::getNextSibling() const {return fChild.getNextSibling (); }; + const XMLCh* xxx::getNodeValue() const {return fNode.getNodeValue (); }; + DOMDocument* xxx::getOwnerDocument() const {return fNode.getOwnerDocument (); }; + const XMLCh* xxx::getPrefix() const {return fNode.getPrefix (); }; + DOMNode* xxx::getParentNode() const {return fChild.getParentNode (this); }; + DOMNode* xxx::getPreviousSibling() const {return fChild.getPreviousSibling (this); }; + bool xxx::hasChildNodes() const {return fParent.hasChildNodes (); }; + DOMNode* xxx::insertBefore(DOMNode *newChild, DOMNode *refChild) + {return fParent.insertBefore (newChild, refChild); }; + void xxx::normalize() {fParent.normalize(); }; + DOMNode* xxx::removeChild(DOMNode *oldChild) {return fParent.removeChild (oldChild); }; + DOMNode* xxx::replaceChild(DOMNode *newChild, DOMNode *oldChild) + {return fParent.replaceChild (newChild, oldChild); }; + bool xxx::isSupported(const XMLCh *feature, const XMLCh *version) const + {return fNode.isSupported (feature, version); }; + void xxx::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); }; + bool xxx::hasAttributes() const {return fNode.hasAttributes(); }; + bool xxx::isSameNode(const DOMNode* other) const {return fNode.isSameNode(other); }; + bool xxx::isEqualNode(const DOMNode* arg) const {return fNode.isEqualNode(arg); }; + void* xxx::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) + {return fNode.setUserData(key, data, handler); }; + void* xxx::getUserData(const XMLCh* key) const {return fNode.getUserData(key); }; + const XMLCh* xxx::getBaseURI() const {return fNode.getBaseURI(); }; + short xxx::compareDocumentPosition(const DOMNode* other) const {return fNode.compareDocumentPosition(other); }; + const XMLCh* xxx::getTextContent() const {return fNode.getTextContent(); }; + void xxx::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); }; + const XMLCh* xxx::lookupPrefix(const XMLCh* namespaceURI) const {return fNode.lookupPrefix(namespaceURI); }; + bool xxx::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); }; + const XMLCh* xxx::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); }; + void* xxx::getFeature(const XMLCh* feature, const XMLCh* version) const {return fNode.getFeature(feature, version); }; + + +*/ + + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeIteratorImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeIteratorImpl.hpp new file mode 100644 index 000000000000..e6cb537d77e1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeIteratorImpl.hpp @@ -0,0 +1,122 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODEITERATORIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODEITERATORIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +////////////////////////////////////////////////////////////////////// +// DOMNodeIteratorImpl.hpp: interface for the DOMNodeIteratorImpl class. +// +////////////////////////////////////////////////////////////////////// + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class CDOM_EXPORT DOMNodeIteratorImpl : public DOMNodeIterator { + protected: + // + // Data + // + // The root. + DOMNode* fRoot; + + // The Document used to create this iterator + DOMDocument* fDocument; + + // The whatToShow mask. + DOMNodeFilter::ShowType fWhatToShow; + + // The NodeFilter reference. + DOMNodeFilter* fNodeFilter; + + + // The expandEntity reference flag. + bool fExpandEntityReferences; + bool fDetached; + + + // + // Iterator state - current node and direction. + // + // Note: The current node and direction are sufficient to implement + // the desired behaviour of the current pointer being _between_ + // two nodes. The fCurrentNode is actually the last node returned, + // and the + // direction is whether the pointer is in front or behind this node. + // (usually akin to whether the node was returned via nextNode()) + // (eg fForward = true) or previousNode() (eg fForward = false). + // The last Node returned. + DOMNode* fCurrentNode; + + // The direction of the iterator on the fCurrentNode. + // + // nextNode() == fForward = true;
+ // previousNode() == fForward = false;
+ //
+ bool fForward; + + public: + virtual ~DOMNodeIteratorImpl (); + DOMNodeIteratorImpl ( + DOMDocument* fDocument, + DOMNode* root, + DOMNodeFilter::ShowType whatToShow, + DOMNodeFilter* nodeFilter, + bool expandEntityRef); + + DOMNodeIteratorImpl ( const DOMNodeIteratorImpl& toCopy); + DOMNodeIteratorImpl& operator= (const DOMNodeIteratorImpl& other); + + virtual DOMNode* getRoot (); + virtual DOMNodeFilter::ShowType getWhatToShow (); + virtual DOMNodeFilter* getFilter (); + // Get the expandEntity reference flag. + virtual bool getExpandEntityReferences(); + + virtual DOMNode* nextNode (); + virtual DOMNode* previousNode (); + virtual void detach (); + + virtual void release(); + void removeNode (DOMNode* node); + + protected: + DOMNode* matchNodeOrParent (DOMNode* node); + DOMNode* nextNode (DOMNode* node, bool visitChildren); + DOMNode* previousNode (DOMNode* node); + bool acceptNode (DOMNode* node); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeListImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeListImpl.hpp new file mode 100644 index 000000000000..e7a79c88a360 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeListImpl.hpp @@ -0,0 +1,73 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODELISTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODELISTIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +// NodeList implementation class - +// This is for NodeLists returned by GetChildNodes only, not for +// node lists returned by GetElementsByTagName +// +// Every node type capable of having children has (as an embedded member) +// an instance of this class. To hold down the size overhead on each node, a +// cache of extended data for active node lists is maintained +// separately. +// + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMParentNode; +class DOMNode; + +class CDOM_EXPORT DOMNodeListImpl: public DOMNodeList +{ +protected: + DOMParentNode *fNode; + +private: + // Unused, and unimplemented constructors, operators, etc. + DOMNodeListImpl(); + DOMNodeListImpl(const DOMNodeListImpl & other); + DOMNodeListImpl & operator = (const DOMNodeListImpl & other); + +public: + DOMNodeListImpl(DOMParentNode *node); + virtual ~DOMNodeListImpl(); + virtual DOMNode * item(XMLSize_t index) const; + virtual XMLSize_t getLength() const; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeVector.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeVector.hpp new file mode 100644 index 000000000000..d3e5e028d854 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNodeVector.hpp @@ -0,0 +1,88 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODEVECTOR_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODEVECTOR_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNode; +class DOMDocument; + + +class DOMNodeVector { +private: + DOMNode **data; + XMLSize_t allocatedSize; + XMLSize_t nextFreeSlot; + void init(DOMDocument *doc, XMLSize_t size); + void checkSpace(); + + // unimplemented + DOMNodeVector ( const DOMNodeVector& toCopy); + DOMNodeVector& operator= (const DOMNodeVector& other); + +public: + DOMNodeVector(DOMDocument *doc); + DOMNodeVector(DOMDocument *doc, XMLSize_t size); + ~DOMNodeVector(); + + XMLSize_t size(); + DOMNode* elementAt(XMLSize_t index); + DOMNode* lastElement(); + void addElement(DOMNode *); + void insertElementAt(DOMNode *, XMLSize_t index); + void setElementAt(DOMNode *val, XMLSize_t index); + void removeElementAt(XMLSize_t index); + void reset(); +}; + +inline DOMNode *DOMNodeVector::elementAt(XMLSize_t index) { + if (index >= nextFreeSlot) + return 0; + return data[index]; +} + +inline DOMNode *DOMNodeVector::lastElement() { + if (nextFreeSlot == 0) + return 0; + return data[nextFreeSlot-1]; +} + +inline XMLSize_t DOMNodeVector::size() { + return nextFreeSlot; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNormalizer.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNormalizer.hpp new file mode 100644 index 000000000000..e37604f9157b --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNormalizer.hpp @@ -0,0 +1,166 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNORMALIZER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNORMALIZER_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include +#include +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMConfigurationImpl; +class DOMErrorHandler; +class DOMDocumentImpl; +class DOMNode; +class DOMElementImpl; +class DOMAttr; +class DOMNamedNodeMap; + +class DOMNormalizer : public XMemory { + + //the following are the data structures maintain the stack of namespace information + class InScopeNamespaces : public XMemory { + class Scope : public XMemory { + public: + Scope(Scope *baseScopeWithBindings); + ~Scope(); + void addOrChangeBinding(const XMLCh *prefix, const XMLCh *uri, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + const XMLCh* getUri(const XMLCh *prefix) const; + const XMLCh* getPrefix(const XMLCh* uri) const; + Scope *fBaseScopeWithBindings; + + private: + RefHashTableOf *fPrefixHash; + RefHashTableOf *fUriHash; + // unimplemented + Scope ( const Scope& toCopy); + Scope& operator= (const Scope& other); + }; + + public: + InScopeNamespaces(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~InScopeNamespaces(); + void addOrChangeBinding(const XMLCh *prefix, const XMLCh *uri, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + void addScope(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + void removeScope(); + bool isValidBinding(const XMLCh* prefix, const XMLCh* uri) const; + const XMLCh* getOrDeclarePrefix(const XMLCh* uri); + const XMLCh* getPrefix(const XMLCh* uri) const; + const XMLCh* getUri(const XMLCh* prefix) const; + XMLSize_t size(); + + private: + RefVectorOf *fScopes; + Scope *lastScopeWithBindings; + // unimplemented + InScopeNamespaces ( const InScopeNamespaces& toCopy); + InScopeNamespaces& operator= (const InScopeNamespaces& other); + }; + +public: + DOMNormalizer(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~DOMNormalizer(); + + /** + * Main entry method to normalize a document + */ + void normalizeDocument(DOMDocumentImpl *doc); + +private: + // unimplemented + DOMNormalizer ( const DOMNormalizer& toCopy); + DOMNormalizer& operator= (const DOMNormalizer& other); + +protected: + /** + * Recursively normalizes a node + */ + DOMNode * normalizeNode(DOMNode *node) const; + + /** + * Helper method that fixes up the namespace declarations according to the + * DOM Level 3 psydocode + */ + void namespaceFixUp(DOMElementImpl *ele) const; + + /** + * Converts an integer to an XMLCh - max 15 digits long. + */ + const XMLCh * integerToXMLCh(unsigned int i) const; + + /** + * Adds a namespace attribute or replaces the value of existing namespace + * attribute with the given prefix and value for URI. + * In case prefix is empty will add/update default namespace declaration. + */ + void addOrChangeNamespaceDecl(const XMLCh* prefix, const XMLCh* uri, DOMElementImpl *element) const; + + /** + * Adds a custom namespace in the form "NSx" where x is an integer that + * has not yet used in the document + */ + const XMLCh* addCustomNamespaceDecl(const XMLCh* uri, DOMElementImpl *element) const; + + + /** + * Report an error + */ + void error(const XMLErrs::Codes code, const DOMNode *node) const; + + // + // fDocument - the document we are operating on + // + // fDOMConfiguration - the configuration from the document + // + // fErrorHandler - the errorhandler to be used when reporting errors during normalization + // + // fNSScope - the data stucture that holds the prefix-uri information + // + // fNewNamespaceCount - the number of custom namespace declarations we have created + // + DOMDocumentImpl *fDocument; + DOMConfigurationImpl *fConfiguration; + DOMErrorHandler *fErrorHandler; + InScopeNamespaces *fNSScope; + unsigned int fNewNamespaceCount; + MemoryManager* fMemoryManager; +}; + + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNotationImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNotationImpl.hpp new file mode 100644 index 000000000000..23ff6217729d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMNotationImpl.hpp @@ -0,0 +1,96 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNOTATIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNOTATIONIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +#include "DOMNodeBase.hpp" +#include "DOMNodeImpl.hpp" + +class DOMDocument; + + +class CDOM_EXPORT DOMNotationImpl: public DOMNotation, public HasDOMNodeImpl { +public: + DOMNodeImpl fNode; + + const XMLCh * fName; + const XMLCh * fPublicId; + const XMLCh * fSystemId; + const XMLCh * fBaseURI; + +public: + DOMNotationImpl(DOMDocument *ownerDoc, const XMLCh *); + DOMNotationImpl(const DOMNotationImpl &other, bool deep=false); + + virtual ~DOMNotationImpl(); + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + +public: + // + // The Public Identifier for this Notation. If no public identifier + // was specified, this will be null. + virtual const XMLCh * getPublicId() const; + + // The System Identifier for this Notation. If no system identifier + // was specified, this will be null. + virtual const XMLCh * getSystemId() const; + + // NON-DOM: The Public Identifier for this Notation. If no public + // identifier was specified, this will be null. + virtual void setPublicId(const XMLCh *arg); + + + // NON-DOM: The System Identifier for this Notation. If no system + // identifier was specified, this will be null. + virtual void setSystemId(const XMLCh *arg); + + // NON-DOM: set base uri + virtual void setBaseURI(const XMLCh *arg); + +private: + // unimplemented + DOMNotationImpl& operator= (const DOMNotationImpl& other); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMParentNode.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMParentNode.hpp new file mode 100644 index 000000000000..72b9794c6159 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMParentNode.hpp @@ -0,0 +1,125 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMPARENTNODE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMPARENTNODE_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +/** + * ParentNode provides the capability of having child + * nodes. Not every node in the DOM can have children, so only nodes that can + * should include this class and pay the price for it. + *

+ * While we have a direct reference to the first child, the last child is + * stored as the previous sibling of the first child. First child nodes are + * marked as being so, and getNextSibling hides this fact. + * + **/ + +#include +#include "DOMNodeListImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMChildNode; +class DOMDocument; +class DOMNode; +class DOMNodeList; + +class CDOM_EXPORT DOMParentNode { +public: + DOMNode *fContainingNode; // the impl object that we're contained by + DOMDocument *fOwnerDocument; // Document this node belongs to + DOMNode *fFirstChild; + DOMNodeListImpl fChildNodeList; // for GetChildNodes() + +public: + DOMParentNode(DOMNode* containingNode, DOMDocument *ownerDocument); + DOMParentNode(DOMNode* containingNode, const DOMParentNode &other); + ~DOMParentNode(); + +private: + // Make sure this can't be called to corrupt the containing node ptr. + DOMParentNode(const DOMParentNode &other); + + DOMNode* getContainingNode(); + const DOMNode* getContainingNode() const; + const DOMNodeImpl* getContainingNodeImpl() const; + +public: + DOMDocument * getOwnerDocument() const; + void setOwnerDocument(DOMDocument* doc); + + // Track changes to the node tree structure under this node. An optimization + // for NodeLists. + int changes() const; + void changed(); + + DOMNode* appendChild(DOMNode *newChild); + DOMNodeList* getChildNodes() const; + DOMNode* getFirstChild() const; + DOMNode* getLastChild() const; + bool hasChildNodes() const; + DOMNode* insertBefore(DOMNode *newChild, DOMNode *refChild); + DOMNode* item(unsigned int index) const; + DOMNode* removeChild(DOMNode *oldChild); + DOMNode* replaceChild(DOMNode *newChild, DOMNode *oldChild); + + // Append certain types of nodes fast. Used to speed up XML to DOM + // parsing. See the function implementation for detail. + virtual DOMNode* appendChildFast(DOMNode *newChild); + + //Introduced in DOM Level 2 + void normalize(); + + //Introduced in DOM Level 3 + bool isEqualNode(const DOMNode* arg) const; + + // NON-DOM + // unlike getOwnerDocument this never returns null, even for Document nodes + DOMDocument * getDocument() const; + void release(); + + +public: + void cloneChildren(const DOMNode *other); + DOMNode * lastChild() const; + void lastChild(DOMNode *); + +private: + // unimplemented + DOMParentNode& operator= (const DOMParentNode& other); +}; + +#define GetDOMParentNodeMemoryManager GET_DIRECT_MM(fOwnerDocument) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp new file mode 100644 index 000000000000..c336b674661d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp @@ -0,0 +1,98 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMPROCESSINGINSTRUCTIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMPROCESSINGINSTRUCTIONIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#include +#include +#include "DOMNodeBase.hpp" +#include "DOMCharacterDataImpl.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMChildNode.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class DocumentImpl; + + +class CDOM_EXPORT DOMProcessingInstructionImpl: public DOMProcessingInstruction, + public HasDOMNodeImpl, public HasDOMChildImpl { +protected: + DOMNodeImpl fNode; + DOMChildNode fChild; + // use fCharacterData to store its data so that those character utitlites can be used + DOMCharacterDataImpl fCharacterData; + + XMLCh *fTarget; + const XMLCh *fBaseURI; + +public: + DOMProcessingInstructionImpl(DOMDocument *ownerDoc, + const XMLCh * target, + const XMLCh *data); + DOMProcessingInstructionImpl(const DOMProcessingInstructionImpl &other, + bool deep=false); + virtual ~DOMProcessingInstructionImpl(); + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMCHILDIMPL_DECL; + +public: + virtual const XMLCh *getData() const; + virtual const XMLCh *getTarget() const; + virtual void setData(const XMLCh *arg); + + // NON-DOM: set base uri + virtual void setBaseURI(const XMLCh* baseURI); + + // Non standard extension for the range to work + void deleteData(XMLSize_t offset, XMLSize_t count); + const XMLCh* substringData(XMLSize_t offset, XMLSize_t count) const; + DOMProcessingInstruction* splitText(XMLSize_t offset); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMProcessingInstructionImpl & operator = (const DOMProcessingInstructionImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMRangeImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMRangeImpl.hpp new file mode 100644 index 000000000000..9f3b606117e6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMRangeImpl.hpp @@ -0,0 +1,176 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMRANGEIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMRANGEIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + + +class DOMNode; +class DOMDocumentFragment; +class DOMDocument; +class DOMText; +class MemoryManager; + +class CDOM_EXPORT DOMRangeImpl: public DOMRange { +protected: + enum TraversalType { + EXTRACT_CONTENTS = 1, + CLONE_CONTENTS = 2, + DELETE_CONTENTS = 3 + }; + + enum TraversePoint { + BEFORE = -1, + START = 0, + AFTER = 1 + }; + + //private data + + DOMNode* fStartContainer; + XMLSize_t fStartOffset; + DOMNode* fEndContainer; + XMLSize_t fEndOffset; + bool fCollapsed; + DOMDocument* fDocument; + bool fDetached; + + DOMNode* fRemoveChild; + MemoryManager* fMemoryManager; + +public: + //c'tor + DOMRangeImpl(DOMDocument* doc, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + DOMRangeImpl(const DOMRangeImpl& other); + + //d'tor + ~DOMRangeImpl(); + + //getter functions + virtual DOMNode* getStartContainer() const; + virtual XMLSize_t getStartOffset() const; + virtual DOMNode* getEndContainer() const; + virtual XMLSize_t getEndOffset() const; + virtual bool getCollapsed() const; + virtual const DOMNode* getCommonAncestorContainer() const; + + //setter functions + virtual void setStart(const DOMNode *parent, XMLSize_t offset); + virtual void setEnd(const DOMNode *parent, XMLSize_t offset); + + virtual void setStartBefore(const DOMNode *refNode); + virtual void setStartAfter(const DOMNode *refNode); + virtual void setEndBefore(const DOMNode *refNode); + virtual void setEndAfter(const DOMNode *refNode); + + //misc functions + virtual void collapse(bool toStart); + virtual void selectNode(const DOMNode *node); + virtual void selectNodeContents(const DOMNode *node); + + //Functions related to comparing range Boundrary-Points + virtual short compareBoundaryPoints(CompareHow how, const DOMRange* range) const; + virtual void deleteContents(); + virtual DOMDocumentFragment* extractContents(); + virtual DOMDocumentFragment* cloneContents() const; + virtual void insertNode(DOMNode* node); + + //Misc functions + virtual void surroundContents(DOMNode *node); + virtual DOMRange* cloneRange() const; + virtual const XMLCh* toString() const; + virtual void detach(); + virtual void release(); + + //getter functions + DOMDocument* getDocument(); + + // functions to inform all existing valid ranges about a change + void updateSplitInfo(DOMNode* oldNode, DOMNode* startNode, XMLSize_t offset); + void updateRangeForInsertedNode(DOMNode* node); + void receiveReplacedText(DOMNode* node); + void updateRangeForDeletedText(DOMNode* node, XMLSize_t offset, XMLSize_t count); + void updateRangeForInsertedText(DOMNode* node, XMLSize_t offset, XMLSize_t count); + void updateRangeForDeletedNode(DOMNode* node); + +protected: + //setter functions + void setStartContainer(const DOMNode* node); + void setStartOffset(XMLSize_t offset) ; + void setEndContainer(const DOMNode* node); + void setEndOffset(XMLSize_t offset) ; + + //misc functions + void validateNode(const DOMNode* node) const; + bool isValidAncestorType(const DOMNode* node) const; + bool hasLegalRootContainer(const DOMNode* node) const; + bool isLegalContainedNode(const DOMNode* node ) const; + void checkIndex(const DOMNode* node, XMLSize_t offset) const; + static bool isAncestorOf(const DOMNode* a, const DOMNode* b); + + XMLSize_t indexOf(const DOMNode* child, const DOMNode* parent) const; + + const DOMNode* commonAncestorOf(const DOMNode* pointA, const DOMNode* pointB) const; + DOMNode* nextNode(const DOMNode* node, bool visitChildren) const; + DOMDocumentFragment* traverseContents(TraversalType type); + void checkReadOnly(DOMNode* start, DOMNode* end, + XMLSize_t starOffset, XMLSize_t endOffset); + void recurseTreeAndCheck(DOMNode* start, DOMNode* end); + DOMNode* removeChild(DOMNode* parent, DOMNode* child); + + DOMDocumentFragment* traverseSameContainer( int how ); + DOMDocumentFragment* traverseCommonStartContainer( DOMNode *endAncestor, int how ); + DOMDocumentFragment* traverseCommonEndContainer( DOMNode *startAncestor, int how ); + DOMDocumentFragment* traverseCommonAncestors( DOMNode *startAncestor, DOMNode *endAncestor, int how ); + DOMNode* traverseRightBoundary( DOMNode *root, int how ); + DOMNode* traverseLeftBoundary( DOMNode *root, int how ); + DOMNode* traverseNode( DOMNode *n, bool isFullySelected, bool isLeft, int how ); + DOMNode* traverseFullySelected( DOMNode *n, int how ); + DOMNode* traversePartiallySelected( DOMNode *n, int how ); + DOMNode* traverseTextNode( DOMNode *n, bool isLeft, int how ); + DOMNode* getSelectedNode( DOMNode *container, int offset ); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMRangeImpl & operator = (const DOMRangeImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMStringListImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMStringListImpl.hpp new file mode 100644 index 000000000000..b6c5c07ac361 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMStringListImpl.hpp @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMSTRINGLISTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMSTRINGLISTIMPL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMStringListImpl: public XMemory, + public DOMStringList +{ +protected: + RefVectorOf *fList; + +private: + // Unused, and unimplemented constructors, operators, etc. + DOMStringListImpl(const DOMStringListImpl & other); + DOMStringListImpl & operator = (const DOMStringListImpl & other); + +public: + DOMStringListImpl(int nInitialSize, MemoryManager* manager); + void add(const XMLCh* impl); + + virtual ~DOMStringListImpl(); + virtual const XMLCh* item(XMLSize_t index) const; + virtual XMLSize_t getLength() const; + virtual bool contains(const XMLCh* str) const; + virtual void release(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMStringPool.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMStringPool.hpp new file mode 100644 index 000000000000..f26e611bcdfb --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMStringPool.hpp @@ -0,0 +1,226 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMSTRINGPOOL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMSTRINGPOOL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMDocumentImpl; + +// +// DStringPoolEntry - one of these structs is allocated for each +// XMLCh String in the pool. Each slot in the +// hash table array itself is a pointer to the head +// of a singly-linked list of these structs. +// +// Although this struct is declared with a string length of one, +// the factory method allocates enough storage to hold the full +// string length. +// +struct DOMStringPoolEntry +{ + DOMStringPoolEntry *fNext; + XMLSize_t fLength; + XMLCh fString[1]; +}; + +// +// DOMBuffer is a lightweight text buffer +// The buffer is not nul terminated until some asks to see the raw buffer +// contents. This also avoids overhead during append operations. +class DOMBuffer +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DOMBuffer(DOMDocumentImpl *doc, XMLSize_t capacity = 31); + + ~DOMBuffer() + { + } + + // ----------------------------------------------------------------------- + // Buffer Management + // ----------------------------------------------------------------------- + void append (const XMLCh* const chars); + void append (const XMLCh* const chars, const XMLSize_t count); + void appendInPlace (const XMLCh* const chars, const XMLSize_t count); + + void set (const XMLCh* const chars); + void set (const XMLCh* const chars, const XMLSize_t count); + + const XMLCh* getRawBuffer() const + { + fBuffer[fIndex] = 0; + return fBuffer; + } + + void reset() + { + fIndex = 0; + fBuffer[0] = 0; + } + + void chop + ( + const XMLSize_t count + ) + { + fBuffer[count] = 0; + fIndex = count; + } + + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + XMLSize_t getLen() const + { + return fIndex; + } + + XMLSize_t getCapacity() const + { + return fCapacity; + } + + // ----------------------------------------------------------------------- + // Private helpers + // ----------------------------------------------------------------------- + void expandCapacity(const XMLSize_t extraNeeded, bool releasePrevious = false); + + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fBuffer + // The pointer to the buffer data. Its grown as needed. Its always + // one larger than fCapacity, to leave room for the null terminator. + // + // fIndex + // The current index into the buffer, as characters are appended + // to it. If its zero, then the buffer is empty. + // + // fCapacity + // The current capacity of the buffer. Its actually always one + // larger, to leave room for the null terminator. + // + // fDoc + // For allocating memory + // ----------------------------------------------------------------------- + XMLCh* fBuffer; + XMLSize_t fIndex; + XMLSize_t fCapacity; + DOMDocumentImpl* fDoc; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMBuffer(const DOMBuffer &); + DOMBuffer & operator = (const DOMBuffer &); +}; + +inline void DOMBuffer:: +append (const XMLCh* const chars) +{ + XMLSize_t count = XMLString::stringLen(chars); + if (fIndex + count >= fCapacity) + expandCapacity(count); + + memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh)); + fIndex += count; + + // Keep it null terminated + fBuffer[fIndex] = 0; +} + +inline void DOMBuffer:: +append (const XMLCh* const chars, const XMLSize_t count) +{ + if (fIndex + count >= fCapacity) + expandCapacity(count); + + memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh)); + fIndex += count; + + // Keep it null terminated + fBuffer[fIndex] = 0; +} + +inline void DOMBuffer:: +appendInPlace (const XMLCh* const chars, const XMLSize_t count) +{ + if (fIndex + count >= fCapacity) + expandCapacity(count, true); + + memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh)); + fIndex += count; + + // Keep it null terminated + fBuffer[fIndex] = 0; +} + +inline void DOMBuffer:: +set (const XMLCh* const chars) +{ + XMLSize_t count = XMLString::stringLen(chars); + fIndex = 0; + if (count >= fCapacity) + expandCapacity(count); + + memcpy(fBuffer, chars, count * sizeof(XMLCh)); + fIndex = count; + + // Keep it null terminated + fBuffer[fIndex] = 0; +} + +inline void DOMBuffer:: +set (const XMLCh* const chars, const XMLSize_t count) +{ + fIndex = 0; + if (count >= fCapacity) + expandCapacity(count); + + memcpy(fBuffer, chars, count * sizeof(XMLCh)); + fIndex = count; + + // Keep it null terminated + fBuffer[fIndex] = 0; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMTextImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMTextImpl.hpp new file mode 100644 index 000000000000..ecd3b980bfe4 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMTextImpl.hpp @@ -0,0 +1,108 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMTEXTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMTEXTIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + + +#include +#include +#include "DOMNodeBase.hpp" +#include "DOMChildNode.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMCharacterDataImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMTextImpl: public DOMText, public HasDOMNodeImpl, public HasDOMChildImpl { +public: + DOMNodeImpl fNode; + DOMChildNode fChild; + DOMCharacterDataImpl fCharacterData; + +public: + DOMTextImpl(DOMDocument* ownerDoc, const XMLCh* data); + DOMTextImpl(DOMDocument *ownerDoc, const XMLCh* data, XMLSize_t n); + DOMTextImpl(const DOMTextImpl& other, bool deep=false); + + virtual ~DOMTextImpl(); + virtual DOMText* splitText(XMLSize_t offset); + // DOM Level 3 + virtual bool getIsElementContentWhitespace() const; + virtual const XMLCh* getWholeText() const; + virtual DOMText* replaceWholeText(const XMLCh* content); + + // non-standard extension + virtual bool isIgnorableWhitespace() const; + +public: + // Declare the functions coming from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMCHILDIMPL_DECL; + +public: + // All of the functions coming from DOMCharacterData + virtual const XMLCh* getData() const; + virtual XMLSize_t getLength() const; + virtual const XMLCh* substringData(XMLSize_t offset, + XMLSize_t count) const; + virtual void appendData(const XMLCh *arg); + virtual void insertData(XMLSize_t offset, const XMLCh *arg); + virtual void deleteData(XMLSize_t offset, + XMLSize_t count); + virtual void replaceData(XMLSize_t offset, + XMLSize_t count, + const XMLCh *arg); + virtual void setData(const XMLCh *data); + + // Non-standard extension. + // + virtual void appendData(const XMLCh *arg, XMLSize_t n); + void appendDataFast(const XMLCh *arg, XMLSize_t n); + +protected: + virtual void setIgnorableWhitespace(bool ignorable); + friend class AbstractDOMParser; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMTextImpl & operator = (const DOMTextImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMTreeWalkerImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMTreeWalkerImpl.hpp new file mode 100644 index 000000000000..4ecbbb424b3b --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMTreeWalkerImpl.hpp @@ -0,0 +1,168 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMTREEWALKERIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMTREEWALKERIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMTreeWalkerImpl : public DOMTreeWalker { +protected: + // The whatToShow mask. + DOMNodeFilter::ShowType fWhatToShow; + + // The NodeFilter reference. + DOMNodeFilter* fNodeFilter; + + // The current Node. + DOMNode* fCurrentNode; + + // The root Node. + DOMNode* fRoot; + + // The expandEntity reference flag. + bool fExpandEntityReferences; + +public: + // Implementation Note: No state is kept except the data above + // (fWhatToShow, fNodeFilter, fCurrentNode, fRoot) such that + // setters could be created for these data values and the + // implementation will still work. + + /** Public constructor */ + DOMTreeWalkerImpl ( + DOMNode* root, + DOMNodeFilter::ShowType whatToShow, + DOMNodeFilter* nodeFilter, + bool expandEntityRef); + DOMTreeWalkerImpl (const DOMTreeWalkerImpl& twi); + DOMTreeWalkerImpl& operator= (const DOMTreeWalkerImpl& twi); + + // Return the root node. + virtual DOMNode* getRoot (); + + // Return the whatToShow value. + virtual DOMNodeFilter::ShowType getWhatToShow (); + + // Return the NodeFilter. + virtual DOMNodeFilter* getFilter (); + + + // Return the current DOMNode. + virtual DOMNode* getCurrentNode (); + + // Return the current Node. + virtual void setCurrentNode (DOMNode* node); + + // Return the parent Node from the current node, + // after applying filter, whatToshow. + // If result is not null, set the current Node. + virtual DOMNode* parentNode (); + + // Return the first child Node from the current node, + // after applying filter, whatToshow. + // If result is not null, set the current Node. + virtual DOMNode* firstChild (); + + // Return the last child Node from the current node, + // after applying filter, whatToshow. + // If result is not null, set the current Node. + virtual DOMNode* lastChild (); + + // Return the previous sibling Node from the current node, + // after applying filter, whatToshow. + // If result is not null, set the current Node. + virtual DOMNode* previousSibling (); + + // Return the next sibling Node from the current node, + // after applying filter, whatToshow. + // If result is not null, set the current Node. + + virtual DOMNode* nextSibling (); + // Return the previous Node from the current node, + // after applying filter, whatToshow. + // If result is not null, set the current Node. + virtual DOMNode* previousNode (); + + // Return the next Node from the current node, + // after applying filter, whatToshow. + // If result is not null, set the current Node. + virtual DOMNode* nextNode (); + + // Get the expandEntity reference flag. + virtual bool getExpandEntityReferences(); + + // release the resource + virtual void release(); + +protected: + + // Internal function. + // Return the parent Node, from the input node + // after applying filter, whatToshow. + // The current node is not consulted or set. + DOMNode* getParentNode (DOMNode* node); + + // Internal function. + // Return the nextSibling Node, from the input node + // after applying filter, whatToshow. + // The current node is not consulted or set. + DOMNode* getNextSibling (DOMNode* node); + + // Internal function. + // Return the previous sibling Node, from the input node + // after applying filter, whatToshow. + // The current node is not consulted or set. + DOMNode* getPreviousSibling (DOMNode* node); + + // Internal function. + // Return the first child Node, from the input node + // after applying filter, whatToshow. + // The current node is not consulted or set. + DOMNode* getFirstChild (DOMNode* node); + + // Internal function. + // Return the last child Node, from the input node + // after applying filter, whatToshow. + // The current node is not consulted or set. + DOMNode* getLastChild (DOMNode* node); + + // The node is accepted if it passes the whatToShow and the filter. + short acceptNode (DOMNode* node); + + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMTypeInfoImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMTypeInfoImpl.hpp new file mode 100644 index 000000000000..f290fe1fe229 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMTypeInfoImpl.hpp @@ -0,0 +1,106 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#if !defined(XERCESC_INCLUDE_GUARD_DOMTYPEINFOIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMTYPEINFOIMPL_HPP + +//------------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------------ +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMDocumentImpl; + +class CDOM_EXPORT DOMTypeInfoImpl : public DOMTypeInfo, public DOMPSVITypeInfo +{ +public: + + //----------------------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------------------- + DOMTypeInfoImpl(const XMLCh* namespaceUri=0, const XMLCh* name=0); + DOMTypeInfoImpl(DOMDocumentImpl* ownerDoc, const DOMPSVITypeInfo* sourcePSVI); + + static DOMTypeInfoImpl g_DtdValidatedElement; + static DOMTypeInfoImpl g_DtdNotValidatedAttribute; + static DOMTypeInfoImpl g_DtdValidatedCDATAAttribute; + static DOMTypeInfoImpl g_DtdValidatedIDAttribute; + static DOMTypeInfoImpl g_DtdValidatedIDREFAttribute; + static DOMTypeInfoImpl g_DtdValidatedIDREFSAttribute; + static DOMTypeInfoImpl g_DtdValidatedENTITYAttribute; + static DOMTypeInfoImpl g_DtdValidatedENTITIESAttribute; + static DOMTypeInfoImpl g_DtdValidatedNMTOKENAttribute; + static DOMTypeInfoImpl g_DtdValidatedNMTOKENSAttribute; + static DOMTypeInfoImpl g_DtdValidatedNOTATIONAttribute; + static DOMTypeInfoImpl g_DtdValidatedENUMERATIONAttribute; + + // ----------------------------------------------------------------------- + // DOMTypeInfo interface + // ----------------------------------------------------------------------- + virtual const XMLCh* getTypeName() const; + virtual const XMLCh* getTypeNamespace() const; + virtual bool isDerivedFrom(const XMLCh* typeNamespaceArg, const XMLCh* typeNameArg, DerivationMethods derivationMethod) const; + + // ----------------------------------------------------------------------- + // DOMPSVITypeInfo interface + // ----------------------------------------------------------------------- + virtual const XMLCh* getStringProperty(PSVIProperty prop) const; + virtual int getNumericProperty(PSVIProperty prop) const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + virtual void setStringProperty(PSVIProperty prop, const XMLCh* value); + virtual void setNumericProperty(PSVIProperty prop, int value); + +protected: + int fBitFields; + const XMLCh* fTypeName; + const XMLCh* fTypeNamespace; + const XMLCh* fMemberTypeName; + const XMLCh* fMemberTypeNamespace; + const XMLCh* fDefaultValue; + const XMLCh* fNormalizedValue; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMTypeInfoImpl (const DOMTypeInfoImpl&); + DOMTypeInfoImpl & operator = (const DOMTypeInfoImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DOMTypeInfo.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMXPathExpressionImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMXPathExpressionImpl.hpp new file mode 100644 index 000000000000..1065fb6d8c53 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMXPathExpressionImpl.hpp @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHEXPRESSIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHEXPRESSIONIMPL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMElement; +class XercesXPath; +class XPathMatcher; +class DOMXPathResultImpl; +class DOMXPathNSResolver; +class XMLStringPool; + +class CDOM_EXPORT DOMXPathExpressionImpl : public XMemory, + public DOMXPathExpression +{ +public: + DOMXPathExpressionImpl(const XMLCh *expression, + const DOMXPathNSResolver *resolver, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~DOMXPathExpressionImpl(); + + virtual DOMXPathResult* evaluate(const DOMNode *contextNode, + DOMXPathResult::ResultType type, + DOMXPathResult* result) const; + + virtual void release(); + +protected: + bool testNode(XPathMatcher* matcher, + DOMXPathResultImpl* result, + DOMElement *node) const; + void cleanUp(); + + XMLStringPool* fStringPool; + XercesXPath* fParsedExpression; + XMLCh* fExpression; + bool fMoveToRoot; + + MemoryManager* const fMemoryManager; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMXPathNSResolverImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMXPathNSResolverImpl.hpp new file mode 100644 index 000000000000..0435200edbac --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMXPathNSResolverImpl.hpp @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHNSRESOLVERIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHNSRESOLVERIMPL_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMNode; + +class CDOM_EXPORT DOMXPathNSResolverImpl : public XMemory, + public DOMXPathNSResolver +{ +public: + DOMXPathNSResolverImpl(const DOMNode* nodeResolver = 0, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~DOMXPathNSResolverImpl(); + + virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const; + virtual const XMLCh* lookupPrefix(const XMLCh* URI) const; + virtual void addNamespaceBinding(const XMLCh* prefix, const XMLCh* uri); + + virtual void release(); + +protected: + RefHashTableOf* fNamespaceBindings; + const DOMNode* fResolverNode; + MemoryManager* fManager; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMXPathResultImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMXPathResultImpl.hpp new file mode 100644 index 000000000000..ae0aa62d531c --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/DOMXPathResultImpl.hpp @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHRESULTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHRESULTIMPL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class CDOM_EXPORT DOMXPathResultImpl : public XMemory, + public DOMXPathResult +{ +public: + DOMXPathResultImpl(ResultType type, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~DOMXPathResultImpl(); + + virtual ResultType getResultType() const; + virtual const DOMTypeInfo *getTypeInfo() const; + virtual bool isNode() const; + virtual bool getBooleanValue() const; + virtual int getIntegerValue() const; + virtual double getNumberValue() const; + virtual const XMLCh* getStringValue() const; + virtual DOMNode* getNodeValue() const; + virtual bool iterateNext(); + virtual bool getInvalidIteratorState() const; + virtual bool snapshotItem(XMLSize_t); + virtual XMLSize_t getSnapshotLength() const; + + virtual void release(); + +public: + void reset(ResultType type); + void addResult(DOMNode* node); + +protected: + ResultType fType; + MemoryManager* const fMemoryManager; + RefVectorOf* fSnapshot; + XMLSize_t fIndex; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/dom/impl/XSDElementNSImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/XSDElementNSImpl.hpp new file mode 100644 index 000000000000..fd7877229e35 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/dom/impl/XSDElementNSImpl.hpp @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSDELEMENTNSIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_XSDELEMENTNSIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It is used by TraverseSchema to store line/column information. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#include "DOMElementNSImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + + +class CDOM_EXPORT XSDElementNSImpl: public DOMElementNSImpl { +protected: + XMLFileLoc fLineNo; //Line number + XMLFileLoc fColumnNo; //Column number + + +public: + XSDElementNSImpl(DOMDocument *ownerDoc, const XMLCh *name); + XSDElementNSImpl(DOMDocument *ownerDoc, //DOM Level 2 + const XMLCh *namespaceURI, + const XMLCh *qualifiedName, + const XMLFileLoc lineNo, + const XMLFileLoc columnNo); + XSDElementNSImpl(const XSDElementNSImpl &other, bool deep=false); + + virtual DOMNode * cloneNode(bool deep) const; + + XMLFileLoc getLineNo() const { return fLineNo; } + XMLFileLoc getColumnNo() const { return fColumnNo; } + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSDElementNSImpl& operator=(const XSDElementNSImpl&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/BinOutputStream.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/BinOutputStream.hpp new file mode 100644 index 000000000000..b750862a22a5 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/BinOutputStream.hpp @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BIN_OUTPUT_STREAM_HPP) +#define XERCESC_INCLUDE_GUARD_BIN_OUTPUT_STREAM_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BinOutputStream : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Virtual destructor for derived classes + // ----------------------------------------------------------------------- + virtual ~BinOutputStream(); + + // ----------------------------------------------------------------------- + // The virtual output stream interface + // ----------------------------------------------------------------------- + virtual XMLFilePos curPos() const = 0; + + virtual void writeBytes + ( + const XMLByte* const toGo + , const XMLSize_t maxToWrite + ) = 0; + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + BinOutputStream(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented Constructors + // ----------------------------------------------------------------------- + BinOutputStream(const BinOutputStream&); + BinOutputStream& operator=(const BinOutputStream&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/LocalFileFormatTarget.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/LocalFileFormatTarget.hpp new file mode 100644 index 000000000000..9cae3d9bf7d6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/LocalFileFormatTarget.hpp @@ -0,0 +1,99 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_LOCALFILEFORMATTARGET_HPP) +#define XERCESC_INCLUDE_GUARD_LOCALFILEFORMATTARGET_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT LocalFileFormatTarget : public XMLFormatTarget { +public: + + /** @name constructors and destructor */ + //@{ + LocalFileFormatTarget + ( + const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + LocalFileFormatTarget + ( + const char* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~LocalFileFormatTarget(); + //@} + + // ----------------------------------------------------------------------- + // Implementations of the format target interface + // ----------------------------------------------------------------------- + virtual void writeChars(const XMLByte* const toWrite + , const XMLSize_t count + , XMLFormatter* const formatter); + + virtual void flush(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented methods. + // ----------------------------------------------------------------------- + LocalFileFormatTarget(const LocalFileFormatTarget&); + LocalFileFormatTarget& operator=(const LocalFileFormatTarget&); + + // ----------------------------------------------------------------------- + // Private helpers + // ----------------------------------------------------------------------- + void ensureCapacity(const XMLSize_t extraNeeded); + + // ----------------------------------------------------------------------- + // Private data members + // + // fSource + // The source file that we represent. The FileHandle type is defined + // per platform. + // + // fDataBuf + // The pointer to the buffer data. Its always + // one larger than fCapacity, to leave room for the null terminator. + // + // fIndex + // The current index into the buffer, as characters are appended + // to it. If its zero, then the buffer is empty. + // + // fCapacity + // The current capacity of the buffer. Its actually always one + // larger, to leave room for the null terminator. + // ----------------------------------------------------------------------- + FileHandle fSource; + XMLByte* fDataBuf; + XMLSize_t fIndex; + XMLSize_t fCapacity; + MemoryManager* fMemoryManager; +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/LocalFileInputSource.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/LocalFileInputSource.hpp new file mode 100644 index 000000000000..acbd9224f483 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/LocalFileInputSource.hpp @@ -0,0 +1,152 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +#if !defined(XERCESC_INCLUDE_GUARD_LOCALFILEINPUTSOURCE_HPP) +#define XERCESC_INCLUDE_GUARD_LOCALFILEINPUTSOURCE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class BinInputStream; + +/** + * This class is a derivative of the standard InputSource class. It provides + * for the parser access to data which is referenced via a local file path, + * as apposed to remote file or URL. This is the most efficacious mechanism + * by which local files can be parsed, since the parse knows that it refers + * to a local file and will make no other attempts to interpret the passed + * path. + * + * The path provided can either be a fully qualified path or a relative path. + * If relative, it will be completed either relative to a passed base path + * or relative to the current working directory of the process. + * + * As with all InputSource derivatives. The primary objective of an input + * source is to create an input stream via which the parser can spool in + * data from the referenced source. + */ +class XMLPARSER_EXPORT LocalFileInputSource : public InputSource +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors */ + //@{ + + /** + * A local file input source requires a path to the file to load. This + * can be provided either as a fully qualified path, a path relative to + * the current working directly, or a path relative to a provided base + * path. + * + * The completed path will become the system id of this input source. + * The constructors don't take any public id for local files, but you + * still set them via the parent class' setPublicId() method of course. + * + * This constructor takes an explicit base path and a possibly relative + * path. If the relative path is seen to be fully qualified, it is used + * as is. Otherwise, it is made relative to the passed base path. + * + * @param basePath The base path from which the passed relative path + * will be based, if the relative part is indeed + * relative. + * + * @param relativePath The relative part of the path. It can actually + * be fully qualified, in which case it is taken + * as is. + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * + * @exception XMLException If the path is relative and doesn't properly + * resolve to a file. + */ + LocalFileInputSource + ( + const XMLCh* const basePath + , const XMLCh* const relativePath + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * This constructor takes a single parameter which is the fully qualified + * or relative path. If it is fully qualified, it is taken as is. If it is + * relative, then it is completed relative to the current working directory + * (or the equivalent on the local host machine.) + * + * The completed path will become the system id of this input source. + * The constructors don't take any public id for local files, but you + * still set them via the parent class' setPublicId() method of course. + * + * @param filePath The relative or fully qualified path. + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * + * @exception XMLException If the path is relative and doesn't properly + * resolve to a file. + */ + LocalFileInputSource + ( + const XMLCh* const filePath + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Destructor */ + //@{ + ~LocalFileInputSource(); + //@} + + + // ----------------------------------------------------------------------- + // Virtual input source interface + // ----------------------------------------------------------------------- + + /** @name Virtual methods */ + //@{ + + /** + * This method will return a binary input stream derivative that will + * parse from the local file indicatedby the system id. + * + * @return A dynamically allocated binary input stream derivative that + * can parse from the file indicated by the system id. + */ + virtual BinInputStream* makeStream() const; + + //@} +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + LocalFileInputSource(const LocalFileInputSource&); + LocalFileInputSource& operator=(const LocalFileInputSource&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/MemBufFormatTarget.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/MemBufFormatTarget.hpp new file mode 100644 index 000000000000..e6ac33f84e93 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/MemBufFormatTarget.hpp @@ -0,0 +1,136 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_MEMBUFFORMATTARGET_HPP) +#define XERCESC_INCLUDE_GUARD_MEMBUFFORMATTARGET_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/* + * The MemBufFormatTarget is a derivative from XMLFormatTarget, which user code + * may plug into DOMLSSerializer to retrieve the serialized XML stream (from DOM Tree) + * in a memory buffer. + * + * The MemBufFormatTarget is initialized to have a memory buffer of 1023 upon + * construction, which grows as needed. The buffer will be deleted when + * MemBufFormatTarget is destructed; or will be reset when the reset() function + * is called. + * + * The MemBufFormatTarget returns a NULL terminated XMLByte stream upon request, + * through the method getRawBuffer(), and user should make its own copy of the + * returned buffer if it intends to keep it independent on the state of the + * MemBufFormatTarget. + */ + +class XMLPARSER_EXPORT MemBufFormatTarget : public XMLFormatTarget { +public: + + /** @name constructors and destructor */ + //@{ + MemBufFormatTarget + ( + XMLSize_t initCapacity = 1023 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) ; + ~MemBufFormatTarget(); + //@} + + // ----------------------------------------------------------------------- + // Implementations of the format target interface + // ----------------------------------------------------------------------- + virtual void writeChars(const XMLByte* const toWrite + , const XMLSize_t count + , XMLFormatter* const formatter); + + // ----------------------------------------------------------------------- + // Getter + // ----------------------------------------------------------------------- + /** @name getRawBuffer */ + //@{ + /** + * Returned the internal raw buffer. + * + */ + //@} + const XMLByte* getRawBuffer() const; + + /** @name getLen */ + //@{ + /** + * Returned the length of the raw buffer. + * + */ + //@} + XMLSize_t getLen() const + { + return fIndex; + } + + /** @name reset */ + //@{ + /** + * Reset the internal string buffer. + * + */ + void reset(); + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented methods. + // ----------------------------------------------------------------------- + MemBufFormatTarget(const MemBufFormatTarget&); + MemBufFormatTarget& operator=(const MemBufFormatTarget&); + + // ----------------------------------------------------------------------- + // Private helpers + // ----------------------------------------------------------------------- + void ensureCapacity(const XMLSize_t extraNeeded); + + // ----------------------------------------------------------------------- + // Private data members + // + // fDataBuf + // The pointer to the buffer data. Its grown as needed. Its always + // one larger than fCapacity, to leave room for the null terminator. + // + // fIndex + // The current index into the buffer, as characters are appended + // to it. If its zero, then the buffer is empty. + // + // fCapacity + // The current capacity of the buffer. Its actually always one + // larger, to leave room for the null terminator. + // + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + XMLByte* fDataBuf; + XMLSize_t fIndex; + XMLSize_t fCapacity; + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/MemBufInputSource.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/MemBufInputSource.hpp new file mode 100644 index 000000000000..a35132eda672 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/MemBufInputSource.hpp @@ -0,0 +1,232 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +#if !defined(XERCESC_INCLUDE_GUARD_MEMBUFINPUTSOURCE_HPP) +#define XERCESC_INCLUDE_GUARD_MEMBUFINPUTSOURCE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class BinInputStream; + + +/** + * This class is a derivative of the standard InputSource class. It provides + * for the parser access to data stored in a memory buffer. The type of + * buffer and its host specific attributes are of little concern here. The + * only real requirement is that the memory be readable by the current + * process. + * + * Note that the memory buffer size is expressed in bytes, not in + * characters. If you pass it text data, you must account for the bytes + * per character when indicating the buffer size. + * + * As with all InputSource derivatives. The primary objective of an input + * source is to create an input stream via which the parser can spool in + * data from the referenced source. In this case, there are two options + * available. + * + * The passed buffer can be adopted or merely referenced. If it is adopted, + * then it must be dynamically allocated and will be destroyed when the + * input source is destroyed (no reference counting!.) Note that the + * deallocation assumes that array deletion should be performed, so do + * not pass a non-array-allocated buffer if asking for adoption. + * If not adopted, the caller must insure that it remains valid until the + * input source object is destroyed. + * + * The other option indicates whether each stream created for this input + * source should get its own copy of the data, or whether it should just + * stream the data directly from this object's copy of the data. The same + * rules apply here, in that the buffer must either be copied by the + * stream or it must remain valid until the stream is destroyed. + */ +class XMLPARSER_EXPORT MemBufInputSource : public InputSource +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors */ + //@{ + + /** + * A memory buffer input source is constructed from a buffer of byte + * data, and the count of bytes in that buffer. The parser will parse + * from this memory buffer until it has eaten the indicated number of + * bytes. + * + * Note that the system id provided serves two purposes. Firstly it is + * going to be displayed in error messages as the source of the error. + * And secondly, any entities which are referred to from this entity + * via relative paths/URLs will be relative to this fake system id. + * + * @param srcDocBytes The actual data buffer to be parsed from. + * @param byteCount The count of bytes (not characters, bytes!) + * in the buffer. + * @param bufId A fake system id for the buffer. + * @param adoptBuffer Indicates whether this object should adopt + * the buffer (i.e. become responsible for + * deletion) or just + * use it in place. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + MemBufInputSource + ( + const XMLByte* const srcDocBytes + , const XMLSize_t byteCount + , const XMLCh* const bufId + , const bool adoptBuffer = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * This constructor is identical to the previous one, except that it takes + * the fake system id in local code page form and transcodes it internally. + */ + MemBufInputSource + ( + const XMLByte* const srcDocBytes + , const XMLSize_t byteCount + , const char* const bufId + , const bool adoptBuffer = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Destructor */ + //@{ + /** + * If the buffer was adopted, the copy made during construction is deleted + * at this point. + */ + ~MemBufInputSource(); + //@} + + + // ----------------------------------------------------------------------- + // Virtual input source interface + // ----------------------------------------------------------------------- + + /** @name Virtual methods */ + //@{ + + /** + * This method will return a binary input stream derivative that will + * parse from the memory buffer. If setCopyBufToStream() has been set, + * then the stream will make its own copy. Otherwise, it will use the + * buffer as is (in which case it must remain valid until the stream + * is no longer in use, i.e. the parse completes.) + * + * @return A dynamically allocated binary input stream derivative that + * can parse from the memory buffer. + */ + BinInputStream* makeStream() const; + + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + + //@{ + + /** + * By default, for safety's sake, each newly created stream from this + * input source will make its own copy of the buffer to stream from. This + * avoids having to deal with aliasing of the buffer for simple work. But, + * for higher performance applications or for large buffers, this is + * obviously not optimal. + * + * In such cases, you can call this method to turn off that default + * action. Once turned off, the streams will just get a pointer to the + * buffer and parse directly from that. In this case, you must insure that + * the buffer remains valid for as long as any parse events are still + * using it. + * + * @param newState The new boolean flag state to set. + */ + void setCopyBufToStream(const bool newState); + + /** + * This methods allows the MemBufInputSource to be used for more than + * one input source, instead of destructing/constructing another + * MemBufInputSource. + * + * @param srcDocBytes The actual data buffer to be parsed from. + * @param byteCount The count of bytes (not characters, bytes!) + * in the buffer. + */ + void resetMemBufInputSource(const XMLByte* const srcDocBytes + , const XMLSize_t byteCount); + //@} + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + MemBufInputSource(const MemBufInputSource&); + MemBufInputSource& operator=(const MemBufInputSource&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fAdopted + // Indicates whether the buffer is adopted or not. If so, then it + // is destroyed when the input source is destroyed. + // + // fByteCount + // The size of the source document. + // + // fCopyBufToStream + // This defaults to true (the safe option), which causes it to + // give a copy of the buffer to any streams it creates. If you set + // it to false, it will allow the streams to just reference the + // buffer (in which case this input source must stay alive as long + // as the buffer is in use by the stream.) + // + // fSrcBytes + // The source memory buffer that is being spooled from. Whether it + // belongs to the this input source or not is controlled by the + // fAdopted flag. + // ----------------------------------------------------------------------- + bool fAdopted; + XMLSize_t fByteCount; + bool fCopyBufToStream; + const XMLByte* fSrcBytes; +}; + + +inline void MemBufInputSource::setCopyBufToStream(const bool newState) +{ + fCopyBufToStream = newState; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/MemoryManager.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/MemoryManager.hpp new file mode 100644 index 000000000000..564eea9f13e6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/MemoryManager.hpp @@ -0,0 +1,125 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * $Id$ + */ + + +#if !defined(XERCESC_INCLUDE_GUARD_MEMORYMANAGER_HPP) +#define XERCESC_INCLUDE_GUARD_MEMORYMANAGER_HPP + +#include +#include + + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * Configurable memory manager + * + *

This interface allows outside applications to plug in their own memory + * manager to be used by Xerces for memory allocation/deallocation.

+ */ +class XMLPARSER_EXPORT MemoryManager +{ +public: + // ----------------------------------------------------------------------- + // Constructors are hidden, only the virtual destructor is exposed + // ----------------------------------------------------------------------- + + /** @name Destructor */ + //@{ + + /** + * Default destructor + */ + virtual ~MemoryManager() + { + } + //@} + + + /** + * This method is called to obtain the memory manager that should be + * used to allocate memory used in exceptions. If the same memory + * manager can be used, simply return 'this' from this function. + * Note, however, that if there is a possibility that an exception + * thrown can outlive the memory manager (for example, because the + * memory manager object is allocated on the stack or is managed by + * a stack-bound object), it is recommended that you return + * XMLPlatformUtils::fgMemoryManager. + * + * @return A pointer to the memory manager + */ + virtual MemoryManager* getExceptionMemoryManager() = 0; + + + // ----------------------------------------------------------------------- + // The virtual memory manager interface + // ----------------------------------------------------------------------- + /** @name The pure virtual methods in this interface. */ + //@{ + + /** + * This method allocates requested memory. + * + * @param size The requested memory size + * + * @return A pointer to the allocated memory + */ + virtual void* allocate(XMLSize_t size) = 0; + + /** + * This method deallocates memory + * + * @param p The pointer to the allocated memory to be deleted + */ + virtual void deallocate(void* p) = 0; + + //@} + + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + /** @name Constructor */ + //@{ + + /** + * Protected default constructor + */ + MemoryManager() + { + } + //@} + + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + MemoryManager(const MemoryManager&); + MemoryManager& operator=(const MemoryManager&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/StdInInputSource.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/StdInInputSource.hpp new file mode 100644 index 000000000000..e90dc3109ce8 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/StdInInputSource.hpp @@ -0,0 +1,108 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +#if !defined(XERCESC_INCLUDE_GUARD_STDININPUTSOURCE_HPP) +#define XERCESC_INCLUDE_GUARD_STDININPUTSOURCE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class BinInputStream; + + +/** + * This class is a derivative of the standard InputSource class. It provides + * for the parser access to data via the standard input. This input source + * is not commonly used, but can be useful when implementing such things + * as pipe based tools which exchange XML data. + * + * As with all InputSource derivatives. The primary objective of an input + * source is to create an input stream via which the parser can spool in + * data from the referenced source. + */ +class XMLPARSER_EXPORT StdInInputSource : public InputSource +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructor */ + //@{ + + /** + * Since the standard input is a canned source, the constructor is very + * simple. It just uses local platform services to open up the standard + * input source as file, a new handleof which it gives to each new stream + * it creates. + */ + StdInInputSource(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + //@} + + /** @name Destructor */ + //@{ + ~StdInInputSource(); + //@} + + + // ----------------------------------------------------------------------- + // Virtual input source interface + // ----------------------------------------------------------------------- + + + /** @name Virtual methods */ + //@{ + + /** + * This method will return a binary input stream derivative that will + * parse from the standard input of the local host. + * + * @return A dynamically allocated binary input stream derivative that + * can parse from the standardinput. + */ + BinInputStream* makeStream() const; + + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + StdInInputSource(const StdInInputSource&); + StdInInputSource& operator=(const StdInInputSource&); + +}; + +inline StdInInputSource::StdInInputSource(MemoryManager* const manager) : + + InputSource("stdin", manager) +{ +} + +inline StdInInputSource::~StdInInputSource() +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/StdOutFormatTarget.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/StdOutFormatTarget.hpp new file mode 100644 index 000000000000..c58502cc6752 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/StdOutFormatTarget.hpp @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_STDOUTFORMATTARGET_HPP) +#define XERCESC_INCLUDE_GUARD_STDOUTFORMATTARGET_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT StdOutFormatTarget : public XMLFormatTarget { +public: + + /** @name constructors and destructor */ + //@{ + StdOutFormatTarget() ; + ~StdOutFormatTarget(); + //@} + + // ----------------------------------------------------------------------- + // Implementations of the format target interface + // ----------------------------------------------------------------------- + virtual void writeChars(const XMLByte* const toWrite + , const XMLSize_t count + , XMLFormatter* const formatter); + + virtual void flush(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented methods. + // ----------------------------------------------------------------------- + StdOutFormatTarget(const StdOutFormatTarget&); + StdOutFormatTarget& operator=(const StdOutFormatTarget&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/URLInputSource.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/URLInputSource.hpp new file mode 100644 index 000000000000..0cdcfe2c4d62 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/URLInputSource.hpp @@ -0,0 +1,236 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_URLINPUTSOURCE_HPP) +#define XERCESC_INCLUDE_GUARD_URLINPUTSOURCE_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class BinInputStream; + +/** + * This class is a derivative of the standard InputSource class. It provides + * for the parser access to data which is referenced via a URL, as apposed to + * a local file name. The URL can be provided via an XMLURL class, as a fully + * qualified system id, or a base system id and a system id which may be + * fully qualified or may be relative to the base. + * + * As with all InputSource derivatives. The primary objective of an input + * source is to create an input stream via which the parser can spool in + * data from the referenced source. + * + * Note that the parse system does not necessarily support URL based XML + * entities out of the box. Support for socket based access is optional and + * controlled by the per-platform support. + */ +class XMLPARSER_EXPORT URLInputSource : public InputSource +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors */ + //@{ + + /** + * This constructor accepts an already built URL. It is assumed that + * it is correct and it will be used as is. In this case, no public id + * accepted, but it can still be set via the parent class' setPublicId() + * method. + * + * @param urlId The URL which holds the system id of the entity + * to parse. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + URLInputSource + ( + const XMLURL& urlId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + + /** + * This constructor takes a base system id URL and a possibly relative + * system id. The relative part is parsed and, if it is indeed relative, + * it will be made relative to the passed base id. Otherwise, it will be + * taken as is. + * + * @param baseId The base system id URL which provides the base + * for any relative id part. + * + * @param systemId The possibly relative system id URL. If its relative + * its based on baseId, else its taken as is. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + URLInputSource + ( + const XMLCh* const baseId + , const XMLCh* const systemId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * This constructor is identical to the previous one, except that it also + * allows you to set a public id if you want to. + * + * @param baseId The base system id URL which provides the base + * for any relative id part. + * + * @param systemId The possibly relative system id URL. If its relative + * its based on baseId, else its taken as is. + * + * @param publicId The optional public id to set. This is just passed + * on to the parent class for storage. + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + URLInputSource + ( + const XMLCh* const baseId + , const XMLCh* const systemId + , const XMLCh* const publicId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + + /** + * This constructor is identical to the second constructor above, except that + * it accepts the relative system id part as a local code page string and + * just transcodes it internally, as a convenience. + * + * @param baseId The base system id URL which provides the base + * for any relative id part. + * + * @param systemId The possibly relative system id URL. If its relative + * its based on baseId, else its taken as is. + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + URLInputSource + ( + const XMLCh* const baseId + , const char* const systemId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * This constructor is identical to the third constructor above, except that + * it accepts the relative and public ids as local code page strings and just + * transcodes them internally, as a convenience. + * + * @param baseId The base system id URL which provides the base + * for any relative id part. + * + * @param systemId The possibly relative system id URL. If its relative + * its based on baseId, else its taken as is. + * + * @param publicId The optional public id to set. This is just passed + * on to the parent class for storage. + * on to the parent class for storage. + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + URLInputSource + ( + const XMLCh* const baseId + , const char* const systemId + , const char* const publicId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** @name Destructor */ + //@{ + ~URLInputSource(); + //@} + + + // ----------------------------------------------------------------------- + // Virtual input source interface + // ----------------------------------------------------------------------- + + /** @name Virtual methods */ + //@{ + + /** + * This method will return a binary input stream derivative that will + * parse from the source referred to by the URL system id. + */ + BinInputStream* makeStream() const; + + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** + * This method will return a const reference to the URL member which + * contains the system id in pre-parsed URL form. If you just want the + * string format, call getSystemId() on the parent class. + * + * @return A const reference to a URL object that contains the current + * system id set for this input source. + */ + const XMLURL& urlSrc() const; + + //@} + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + URLInputSource(const URLInputSource&); + URLInputSource& operator=(const URLInputSource&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fURL + // This is the URL created from the passed ids. + // ----------------------------------------------------------------------- + XMLURL fURL; +}; + + +inline const XMLURL& URLInputSource::urlSrc() const +{ + return fURL; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/ValidationContext.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/ValidationContext.hpp new file mode 100644 index 000000000000..edb32316a778 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/ValidationContext.hpp @@ -0,0 +1,139 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALIDATION_CONTEXT_HPP) +#define XERCESC_INCLUDE_GUARD_VALIDATION_CONTEXT_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLRefInfo; +class DTDEntityDecl; +class DatatypeValidator; +class ElemStack; +class NamespaceScope; +class XMLScanner; + +class XMLPARSER_EXPORT ValidationContext : public XMemory +{ +public : + // ----------------------------------------------------------------------- + /** @name Virtual destructor for derived classes */ + // ----------------------------------------------------------------------- + //@{ + + /** + * virtual destructor + * + */ + virtual ~ValidationContext(){}; + //@} + + // ----------------------------------------------------------------------- + /** @name The ValidationContext Interface */ + // ----------------------------------------------------------------------- + //@{ + + /** + * IDRefList + * + */ + virtual RefHashTableOf* getIdRefList() const = 0; + + virtual void setIdRefList(RefHashTableOf* const) = 0; + + virtual void clearIdRefList() = 0; + + virtual void addId(const XMLCh * const ) = 0; + + virtual void addIdRef(const XMLCh * const ) = 0; + + virtual void toCheckIdRefList(bool) = 0; + + /** + * EntityDeclPool + * + */ + virtual const NameIdPool* getEntityDeclPool() const = 0; + + virtual const NameIdPool* setEntityDeclPool(const NameIdPool* const) = 0; + + virtual void checkEntity(const XMLCh * const ) const = 0 ; + + /** + * Union datatype handling + * + */ + + virtual DatatypeValidator * getValidatingMemberType() const = 0 ; + virtual void setValidatingMemberType(DatatypeValidator * validatingMemberType) = 0 ; + + /** + * QName datatype handling + * Create default implementations for source code compatibility + */ + virtual bool isPrefixUnknown(XMLCh* /* prefix */) { return true; }; + virtual void setElemStack(ElemStack* /* elemStack */) {}; + virtual const XMLCh* getURIForPrefix(XMLCh* /*prefix */) { return 0; }; + virtual void setScanner(XMLScanner* /* scanner */) { }; + virtual void setNamespaceScope(NamespaceScope* /* nsStack */) { }; + + //@} + + +protected : + // ----------------------------------------------------------------------- + /** Hidden Constructors */ + // ----------------------------------------------------------------------- + //@{ + ValidationContext(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager) + :fMemoryManager(memMgr) + { + }; + //@} + + // ----------------------------------------------------------------------- + // Data members + // + // fMemoryManager + // Pluggable memory manager for dynamic allocation/deallocation. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + +private : + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + ValidationContext(const ValidationContext& ); + ValidationContext& operator=(const ValidationContext& ); + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/Wrapper4DOMLSInput.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/Wrapper4DOMLSInput.hpp new file mode 100644 index 000000000000..aaa518725cdf --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/Wrapper4DOMLSInput.hpp @@ -0,0 +1,230 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_WRAPPER4DOMLSINPUT_HPP) +#define XERCESC_INCLUDE_GUARD_WRAPPER4DOMLSINPUT_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMLSInput; +class DOMLSResourceResolver; + +/** + * Wrap a DOMLSInput object and make it behave like a SAX InputSource. + */ +class XMLPARSER_EXPORT Wrapper4DOMLSInput: public InputSource +{ +public: + /** @name Constructors and Destructor */ + //@{ + + /** + * Constructor + * + * Wrap a DOMLSInput and make it behave like a SAX InputSource. + * By default, the wrapper will adopt the DOMLSInput that is wrapped. + * + * @param inputSource The DOMLSInput to be wrapped + * @param entityResolver The DOMLSResourceResolver to be used when resolving publicID entries + * @param adoptFlag Indicates if the wrapper should adopt the wrapped + * DOMLSInput. Default is true. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + Wrapper4DOMLSInput + ( + DOMLSInput* const inputSource + , DOMLSResourceResolver* entityResolver = 0 + , const bool adoptFlag = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Destructor + * + */ + virtual ~Wrapper4DOMLSInput(); + //@} + + + // ----------------------------------------------------------------------- + /** @name Virtual input source interface */ + //@{ + /** + * + * Makes the byte stream for this input source. + * + *

The function will call the makeStream of the wrapped input source. + * The returned stream becomes the parser's property.

+ * + * @see BinInputStream + */ + BinInputStream* makeStream() const; + + //@} + + // ----------------------------------------------------------------------- + /** @name Getter methods */ + //@{ + /** + * + * An input source can be set to force the parser to assume a particular + * encoding for the data that input source reprsents, via the setEncoding() + * method. This method will delegate to the wrapped input source to return + * name of the encoding that is to be forced. If the encoding has never + * been forced, it returns a null pointer. + * + * @return The forced encoding, or null if none was supplied. + * @see #setEncoding + */ + const XMLCh* getEncoding() const; + + + /** + * + * Get the public identifier for this input source. Delegated to the + * wrapped input source object. + * + * @return The public identifier, or null if none was supplied. + * @see #setPublicId + */ + const XMLCh* getPublicId() const; + + + /** + * + * Get the system identifier for this input source. Delegated to the + * wrapped input source object. + * + *

If the system ID is a URL, it will be fully resolved.

+ * + * @return The system identifier. + * @see #setSystemId + */ + const XMLCh* getSystemId() const; + + /** + * + * Get the flag that indicates if the parser should issue fatal error if + * this input source is not found. Delegated to the wrapped input source + * object. + * + * @return True if the parser should issue fatal error if this input source + * is not found. + * False if the parser issue warning message instead. + * @see #setIssueFatalErrorIfNotFound + */ + bool getIssueFatalErrorIfNotFound() const; + + //@} + + + // ----------------------------------------------------------------------- + /** @name Setter methods */ + //@{ + + /** + * + * Set the encoding which will be required for use with the XML text read + * via a stream opened by this input source. This will update the wrapped + * input source object. + * + *

This is usually not set, allowing the encoding to be sensed in the + * usual XML way. However, in some cases, the encoding in the file is known + * to be incorrect because of intermediate transcoding, for instance + * encapsulation within a MIME document. + * + * @param encodingStr The name of the encoding to force. + */ + void setEncoding(const XMLCh* const encodingStr); + + + /** + * + * Set the public identifier for this input source. This will update the + * wrapped input source object. + * + *

The public identifier is always optional: if the application writer + * includes one, it will be provided as part of the location information.

+ * + * @param publicId The public identifier as a string. + * @see Locator#getPublicId + * @see SAXParseException#getPublicId + * @see #getPublicId + */ + void setPublicId(const XMLCh* const publicId); + + /** + * + * Set the system identifier for this input source. This will update the + * wrapped input source object. + * + *

The system id is always required. The public id may be used to map + * to another system id, but the system id must always be present as a fall + * back.

+ * + *

If the system ID is a URL, it must be fully resolved.

+ * + * @param systemId The system identifier as a string. + * @see #getSystemId + * @see Locator#getSystemId + * @see SAXParseException#getSystemId + */ + void setSystemId(const XMLCh* const systemId); + + /** + * + * Indicates if the parser should issue fatal error if this input source + * is not found. If set to false, the parser issue warning message instead. + * This will update the wrapped input source object. + * + * @param flag True if the parser should issue fatal error if this input source is not found. + * If set to false, the parser issue warning message instead. (Default: true) + * + * @see #getIssueFatalErrorIfNotFound + */ + void setIssueFatalErrorIfNotFound(const bool flag); + + //@} + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Wrapper4DOMLSInput(const Wrapper4DOMLSInput&); + Wrapper4DOMLSInput& operator=(const Wrapper4DOMLSInput&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fAdoptInputSource, + fForceXMLChEncoding; + DOMLSInput* fInputSource; + DOMLSResourceResolver* fEntityResolver; +}; + +XERCES_CPP_NAMESPACE_END + + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/Wrapper4InputSource.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/Wrapper4InputSource.hpp new file mode 100644 index 000000000000..9c88699142f6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/Wrapper4InputSource.hpp @@ -0,0 +1,290 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_WRAPPER4INPUTSOURCE_HPP) +#define XERCESC_INCLUDE_GUARD_WRAPPER4INPUTSOURCE_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class InputSource; + + +/** + * Wrap a SAX InputSource object and make it behave like DOMLSInput. + */ +class XMLPARSER_EXPORT Wrapper4InputSource: public DOMLSInput +{ +public: + /** @name Constructors and Destructor */ + //@{ + + /** + * Constructor + * + * Wrap a SAX InputSource and make it behave like a DOMLSInput. + * By default, the wrapper will adopt the SAX InputSource that is wrapped. + * + * @param inputSource The SAX InputSource to be wrapped + * @param adoptFlag Indicates if the wrapper should adopt the wrapped + * SAX InputSource. Default is true. + * @param manager The MemoryManager to use to allocate objects + */ + Wrapper4InputSource(InputSource* const inputSource + , const bool adoptFlag = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Destructor + * + */ + virtual ~Wrapper4InputSource(); + //@} + + + // ----------------------------------------------------------------------- + /** @name Virtual input source interface */ + //@{ + /** + * This wrapper doesn't support string data + * + */ + virtual const XMLCh* getStringData() const; + + /** + * Makes the byte stream for this input source. + * + *

The function will call the makeStream of the wrapped input source. + * The returned stream becomes the parser's property.

+ * + * @see InputSource + */ + virtual InputSource* getByteStream() const; + //@} + + // ----------------------------------------------------------------------- + /** @name Getter methods */ + //@{ + /** + * An input source can be set to force the parser to assume a particular + * encoding for the data that input source represents, via the setEncoding() + * method. This method will delegate to the wrapped input source to return + * name of the encoding that is to be forced. If the encoding has never + * been forced, it returns a null pointer. + * + * @return The forced encoding, or null if none was supplied. + * @see #setEncoding + */ + virtual const XMLCh* getEncoding() const; + + + /** + * Get the public identifier for this input source. Delegated to the + * wrapped input source object. + * + * @return The public identifier, or null if none was supplied. + * @see #setPublicId + */ + const XMLCh* getPublicId() const; + + + /** + * Get the system identifier for this input source. Delegated to the + * wrapped input source object. + * + *

If the system ID is a URL, it will be fully resolved.

+ * + * @return The system identifier. + * @see #setSystemId + */ + const XMLCh* getSystemId() const; + + /** + * Get the base URI to be used for resolving relative URIs to absolute + * URIs. If the baseURI is itself a relative URI, the behavior is + * implementation dependent. Delegated to the wrapped intput source + * object. + * + * @return The base URI. + * @see #setBaseURI + * @since DOM Level 3 + */ + const XMLCh* getBaseURI() const; + + /** + * Get the flag that indicates if the parser should issue fatal error if this input source + * is not found. Delegated to the wrapped input source object. + * + * @return True if the parser should issue fatal error if this input source is not found. + * False if the parser issue warning message instead. + * @see #setIssueFatalErrorIfNotFound + */ + bool getIssueFatalErrorIfNotFound() const; + + //@} + + + // ----------------------------------------------------------------------- + /** @name Setter methods */ + //@{ + /** + * This wrapper only exposes the given InputSource, no setting allowed + * + */ + virtual void setStringData(const XMLCh* data); + + /** + * This wrapper only exposes the given InputSource, no setting allowed + * + */ + virtual void setByteStream(InputSource* stream); + + /** + * Set the encoding which will be required for use with the XML text read + * via a stream opened by this input source. This will update the wrapped + * input source object. + * + *

This is usually not set, allowing the encoding to be sensed in the + * usual XML way. However, in some cases, the encoding in the file is known + * to be incorrect because of intermediate transcoding, for instance + * encapsulation within a MIME document. + * + * @param encodingStr The name of the encoding to force. + */ + void setEncoding(const XMLCh* const encodingStr); + + + /** + * Set the public identifier for this input source. This will update the + * wrapped input source object. + * + *

The public identifier is always optional: if the application writer + * includes one, it will be provided as part of the location information.

+ * + * @param publicId The public identifier as a string. + * @see Locator#getPublicId + * @see SAXParseException#getPublicId + * @see #getPublicId + */ + void setPublicId(const XMLCh* const publicId); + + /** + * Set the system identifier for this input source. This will update the + * wrapped input source object. + * + *

The system id is always required. The public id may be used to map + * to another system id, but the system id must always be present as a fall + * back.

+ * + *

If the system ID is a URL, it must be fully resolved.

+ * + * @param systemId The system identifier as a string. + * @see #getSystemId + * @see Locator#getSystemId + * @see SAXParseException#getSystemId + */ + void setSystemId(const XMLCh* const systemId); + + /** + * Set the base URI to be used for resolving relative URIs to absolute + * URIs. If the baseURI is itself a relative URI, the behavior is + * implementation dependent. This will update the wrapped input source + * object. + * + * @param baseURI The base URI. + * @see #getBaseURI + * @since DOM Level 3 + */ + void setBaseURI(const XMLCh* const baseURI); + + /** + * Indicates if the parser should issue fatal error if this input source + * is not found. If set to false, the parser issue warning message + * instead. This will update the wrapped input source object. + * + * @param flag True if the parser should issue fatal error if this input + * source is not found. + * If set to false, the parser issue warning message instead. + * (Default: true) + * + * @see #getIssueFatalErrorIfNotFound + */ + void setIssueFatalErrorIfNotFound(bool flag); + + /** + * Called to indicate that this DOMInputSource is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + void release(); + + //@} + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Wrapper4InputSource(const Wrapper4InputSource&); + Wrapper4InputSource& operator=(const Wrapper4InputSource&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fAdoptInputSource; + InputSource* fInputSource; +}; + + +// --------------------------------------------------------------------------- +// Wrapper4InputSource: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh* Wrapper4InputSource::getBaseURI() const +{ + return 0; // REVISIT - should we return an empty string? +} + +inline const XMLCh* Wrapper4InputSource::getStringData() const +{ + return 0; +} + +// --------------------------------------------------------------------------- +// Wrapper4InputSource: Setter methods +// --------------------------------------------------------------------------- +inline void Wrapper4InputSource::setBaseURI(const XMLCh* const) +{ +} + +inline void Wrapper4InputSource::setStringData(const XMLCh*) +{ +} + +inline void Wrapper4InputSource::setByteStream(InputSource*) +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLAttDef.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLAttDef.hpp new file mode 100644 index 000000000000..f5e479d8f9d7 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLAttDef.hpp @@ -0,0 +1,539 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLATTDEF_HPP) +#define XERCESC_INCLUDE_GUARD_XMLATTDEF_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLAttr; + +/** Represents the core information of an attribute definition + * + * This class defines the basic characteristics of an attribute, no matter + * what type of validator is used. If a particular schema associates more + * information with an attribute it will create a derivative of this class. + * So this class provides an abstract way to get basic information on + * attributes from any type of validator. + * + * This class supports keyed collection semantics on the fully qualified + * attribute name, by providing a getKey() method to extract the key string. + * getKey(), in this case, just calls the virtual method getFullName() to + * get the fully qualified name, as defined by the derived class. + * + * Note that the 'value' of an attribute type definition is the default or + * of fixed value given to it in its definition. If the attribute is of the + * enumerated or notation type, it will have an 'enumeration value' as well + * which is a space separated list of its possible vlaues. + */ +class XMLPARSER_EXPORT XMLAttDef : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Class specific types + // + // AttTypes + // The list of possible types that an attribute can have, according + // to the XML 1.0 spec and schema. + // + // DefAttTypes + // The modifiers that an attribute decl can have, which indicates + // whether instances of that attributes are required, implied, etc.. + // + // CreateReasons + // This type is used to store how an attribute declaration got into + // the elementdecl's attribute pool. + // + // ----------------------------------------------------------------------- + enum AttTypes + { + CData = 0 + , ID = 1 + , IDRef = 2 + , IDRefs = 3 + , Entity = 4 + , Entities = 5 + , NmToken = 6 + , NmTokens = 7 + , Notation = 8 + , Enumeration = 9 + , Simple = 10 + , Any_Any = 11 + , Any_Other = 12 + , Any_List = 13 + + , AttTypes_Count + , AttTypes_Min = 0 + , AttTypes_Max = 13 + , AttTypes_Unknown = -1 + }; + + enum DefAttTypes + { + Default = 0 + , Fixed = 1 + , Required = 2 + , Required_And_Fixed = 3 + , Implied = 4 + , ProcessContents_Skip = 5 + , ProcessContents_Lax = 6 + , ProcessContents_Strict = 7 + , Prohibited = 8 + + , DefAttTypes_Count + , DefAttTypes_Min = 0 + , DefAttTypes_Max = 8 + , DefAttTypes_Unknown = -1 + }; + + enum CreateReasons + { + NoReason + , JustFaultIn + }; + + // ----------------------------------------------------------------------- + // Public static data members + // ----------------------------------------------------------------------- + static const unsigned int fgInvalidAttrId; + + + // ----------------------------------------------------------------------- + // Public, static methods + // ----------------------------------------------------------------------- + + /** @name Public, static methods */ + //@{ + + /** Get a string representation of the passed attribute type enum + * + * This method allows you to get a textual representation of an attribute + * type, mostly for debug or display. + * + * @param attrType The attribute type value to get the string for. + * @param manager The MemoryManager to use to allocate objects + * @return A const pointer to the static string that holds the text + * description of the passed type. + */ + static const XMLCh* getAttTypeString(const AttTypes attrType + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Get a string representation of the passed def attribute type enum + * + * This method allows you to get a textual representation of an default + * attributetype, mostly for debug or display. + * + * @param attrType The default attribute type value to get the string for. + * @param manager The MemoryManager to use to allocate objects + * @return A const pointer to the static string that holds the text + * description of the passed default type. + */ + static const XMLCh* getDefAttTypeString(const DefAttTypes attrType + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + + // ----------------------------------------------------------------------- + // Destructor + // ----------------------------------------------------------------------- + + /** @name Destructor */ + //@{ + + /** + * Destructor + */ + virtual ~XMLAttDef(); + //@} + + + // ----------------------------------------------------------------------- + // The virtual attribute def interface + // ----------------------------------------------------------------------- + + /** @name Virtual interface */ + //@{ + + /** Get the full name of this attribute type + * + * The derived class should return a const pointer to the full name of + * this attribute. This will vary depending on the type of validator in + * use. + * + * @return A const pointer to the full name of this attribute type. + */ + virtual const XMLCh* getFullName() const = 0; + + /** + * The derived class should implement any cleaning up required between + * each use of an instance of this class for validation + */ + virtual void reset() = 0; + + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** Get the default type of this attribute type + * + * This method returns the 'default type' of the attribute. Default + * type in this case refers to the XML concept of a default type for + * an attribute, i.e. \#FIXED, \#IMPLIED, etc... + * + * @return The default type enum for this attribute type. + */ + DefAttTypes getDefaultType() const; + + /** Get the enumeration value (if any) of this attribute type + * + * If the attribute is of an enumeration or notation type, then this + * method will return a const reference to a string that contains the + * space separated values that can the attribute can have. + * + * @return A const pointer to a string that contains the space separated + * legal values for this attribute. + */ + const XMLCh* getEnumeration() const; + + /** Get the pool id of this attribute type + * + * This method will return the id of this attribute in the validator's + * attribute pool. It was set by the validator when this attribute was + * created. + * + * @return The pool id of this attribute type. + */ + XMLSize_t getId() const; + + /** Get the type of this attribute + * + * Gets the type of this attribute. This type is represented by an enum + * that converts the types of attributes allowed by XML, e.g. CDATA, NMTOKEN, + * NOTATION, etc... + * + * @return The attribute type enumeration value for this type of + * attribute. + */ + AttTypes getType() const; + + /** Get the default/fixed value of this attribute (if any.) + * + * If the attribute defined a default/fixed value, then it is stored + * and this method will retrieve it. If it has non, then a null pointer + * is returned. + * + * @return A const pointer to the default/fixed value for this attribute + * type. + */ + const XMLCh* getValue() const; + + /** Get the create reason for this attribute + * + * This method returns an enumeration which indicates why this attribute + * declaration exists. + * + * @return An enumerated value that indicates the reason why this attribute + * was added to the attribute table. + */ + CreateReasons getCreateReason() const; + + /** Indicate whether this attribute has been declared externally + * + * This method returns a boolean that indicates whether this attribute + * has been declared externally. + * + * @return true if this attribute has been declared externally, else false. + */ + bool isExternal() const; + + /** Get the plugged-in memory manager + * + * This method returns the plugged-in memory manager user for dynamic + * memory allocation/deallocation. + * + * @return the plugged-in memory manager + */ + MemoryManager* getMemoryManager() const; + + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + + /** Set the default attribute type + * + * This method sets the default attribute type for this attribute. + * This setting controls whether the attribute is required, fixed, + * implied, etc... + * + * @param newValue The new default attribute to set + */ + void setDefaultType(const XMLAttDef::DefAttTypes newValue); + + /** Set the pool id for this attribute type. + * + * This method sets the pool id of this attribute type. This is usually + * called by the validator that creates the actual instance (which is of + * a derived type known only by the validator.) + * + * @param newId The new pool id to set. + */ + void setId(const XMLSize_t newId); + + /** Set the type of this attribute type. + * + * This method will set the type of the attribute. The type of an attribute + * controls how it is normalized and what kinds of characters it can hold. + * + * @param newValue The new attribute type to set + */ + void setType(const XMLAttDef::AttTypes newValue); + + /** Set the default/fixed value of this attribute type. + * + * This method set the fixed/default value for the attribute. This value + * will be used when instances of this attribute type are faulted in. It + * must be a valid value for the type set by setType(). If the + * type is enumeration or notation, this must be one of the valid values + * set in the setEnumeration() call. + * + * @param newValue The new fixed/default value to set. + */ + void setValue(const XMLCh* const newValue); + + /** Set the enumerated value of this attribute type. + * + * This method sets the enumerated/notation value list for this attribute + * type. It is a space separated set of possible values. These values must + * meet the constrains of the XML spec for such values of this type of + * attribute. This should only be set if the setType() method is used to + * set the type to the enumeration or notation types. + * + * @param newValue The new enumerated/notation value list to set. + */ + void setEnumeration(const XMLCh* const newValue); + + /** Update the create reason for this attribute type. + * + * This method will update the 'create reason' field for this attribute + * decl object. + * + * @param newReason The new create reason. + */ + void setCreateReason(const CreateReasons newReason); + + /** + * Set the attribute decl to indicate external declaration + * + * @param aValue The new value to indicate external declaration. + */ + void setExternalAttDeclaration(const bool aValue); + + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLAttDef) + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XMLAttDef + ( + const AttTypes type = CData + , const DefAttTypes defType= Implied + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + XMLAttDef + ( + const XMLCh* const attValue + , const AttTypes type + , const DefAttTypes defType + , const XMLCh* const enumValues = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLAttDef(const XMLAttDef&); + XMLAttDef& operator=(const XMLAttDef&); + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fDefaultType + // Indicates what, if any, default stuff this attribute has. + // + // fEnumeration + // If its an enumeration, this is the list of values as space + // separated values. + // + // fId + // This is the unique id of this attribute, given to it when its put + // into the validator's attribute decl pool. It defaults to the + // special value XMLAttrDef::fgInvalidAttrId. + // + // fType + // The type of attribute, which is one of the AttTypes values. + // + // fValue + // This is the value of the attribute, which is the default value + // given in the attribute declaration. + // + // fCreateReason + // This flag tells us how this attribute got created. Sometimes even + // the attribute was not declared for the element, we want to fault + // fault it into the pool to avoid lots of redundant errors. + // + // fExternalAttribute + // This flag indicates whether or not the attribute was declared externally. + // ----------------------------------------------------------------------- + DefAttTypes fDefaultType; + AttTypes fType; + CreateReasons fCreateReason; + bool fExternalAttribute; + XMLSize_t fId; + XMLCh* fValue; + XMLCh* fEnumeration; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// Getter methods +// --------------------------------------------------------------------------- +inline XMLAttDef::DefAttTypes XMLAttDef::getDefaultType() const +{ + return fDefaultType; +} + +inline const XMLCh* XMLAttDef::getEnumeration() const +{ + return fEnumeration; +} + +inline XMLSize_t XMLAttDef::getId() const +{ + return fId; +} + +inline XMLAttDef::AttTypes XMLAttDef::getType() const +{ + return fType; +} + +inline const XMLCh* XMLAttDef::getValue() const +{ + return fValue; +} + +inline XMLAttDef::CreateReasons XMLAttDef::getCreateReason() const +{ + return fCreateReason; +} + +inline bool XMLAttDef::isExternal() const +{ + return fExternalAttribute; +} + +inline MemoryManager* XMLAttDef::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// XMLAttDef: Setter methods +// --------------------------------------------------------------------------- +inline void XMLAttDef::setDefaultType(const XMLAttDef::DefAttTypes newValue) +{ + fDefaultType = newValue; +} + +inline void XMLAttDef::setEnumeration(const XMLCh* const newValue) +{ + if (fEnumeration) + fMemoryManager->deallocate(fEnumeration); + + fEnumeration = XMLString::replicate(newValue, fMemoryManager); +} + +inline void XMLAttDef::setId(const XMLSize_t newId) +{ + fId = newId; +} + +inline void XMLAttDef::setType(const XMLAttDef::AttTypes newValue) +{ + fType = newValue; +} + +inline void XMLAttDef::setValue(const XMLCh* const newValue) +{ + if (fValue) + fMemoryManager->deallocate(fValue); + + fValue = XMLString::replicate(newValue, fMemoryManager); +} + +inline void +XMLAttDef::setCreateReason(const XMLAttDef::CreateReasons newReason) +{ + fCreateReason = newReason; +} + +inline void XMLAttDef::setExternalAttDeclaration(const bool aValue) +{ + fExternalAttribute = aValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLAttDefList.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLAttDefList.hpp new file mode 100644 index 000000000000..f0353a9379c8 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLAttDefList.hpp @@ -0,0 +1,171 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLATTDEFLIST_HPP) +#define XERCESC_INCLUDE_GUARD_XMLATTDEFLIST_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLAttDef; + +/** + * This class defines an abstract interface that all validators must support. + * When the scanner scans the attributes in a start tag, it must have a list + * of the defined attributes for that element. This is used to fault in + * defaulted and fixed attributes, to know which ones are required, and to + * know the their types in order to do the correct normalization. + * + * Since each validator will have its own derivatives of XMLAttDef and will + * have its own specialized storage mechanisms for elements and the att + * defs that they own, there must be an abstracted way for the scanner to + * deal with this list. + * + * It does not derive from the generic Enumerator template class, because + * there are portability issues with deriving from a template class in a + * DLL. It does though provide a similar enumerator interface. + */ + +class XMLPARSER_EXPORT XMLAttDefList : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Destructor */ + //@{ + virtual ~XMLAttDefList(); + //@} + + + // ----------------------------------------------------------------------- + // The virtual interface + // ----------------------------------------------------------------------- + + virtual bool isEmpty() const = 0; + virtual XMLAttDef* findAttDef + ( + const unsigned int uriID + , const XMLCh* const attName + ) = 0; + virtual const XMLAttDef* findAttDef + ( + const unsigned int uriID + , const XMLCh* const attName + ) const = 0; + virtual XMLAttDef* findAttDef + ( + const XMLCh* const attURI + , const XMLCh* const attName + ) = 0; + virtual const XMLAttDef* findAttDef + ( + const XMLCh* const attURI + , const XMLCh* const attName + ) const = 0; + + /** + * return total number of attributes in this list + */ + virtual XMLSize_t getAttDefCount() const = 0; + + /** + * return attribute at the index-th position in the list. + */ + virtual XMLAttDef &getAttDef(XMLSize_t index) = 0; + + /** + * return attribute at the index-th position in the list. + */ + virtual const XMLAttDef &getAttDef(XMLSize_t index) const = 0; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLAttDefList) + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** Get the memory manager + * + * This method returns the configurable memory manager used by the + * element declaration for dynamic allocation/deallocation. + * + * @return the memory manager + */ + MemoryManager* getMemoryManager() const; + + //@} + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors and operators + // ----------------------------------------------------------------------- + XMLAttDefList(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // unimplemented + XMLAttDefList(const XMLAttDefList&); + XMLAttDefList& operator=(const XMLAttDefList&); + + MemoryManager* fMemoryManager; +}; + + + +// --------------------------------------------------------------------------- +// XMLAttDefList: Getter methods +// --------------------------------------------------------------------------- + +inline MemoryManager* XMLAttDefList::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// XMLAttDefList: Constructors and Destructor +// --------------------------------------------------------------------------- +inline XMLAttDefList::~XMLAttDefList() +{ +} + + +// --------------------------------------------------------------------------- +// XMLAttDefList: Protected Constructor +// --------------------------------------------------------------------------- +inline XMLAttDefList::XMLAttDefList(MemoryManager* const manager): +fMemoryManager(manager) +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLAttr.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLAttr.hpp new file mode 100644 index 000000000000..27a1ecb8e045 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLAttr.hpp @@ -0,0 +1,501 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLATTR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLATTR_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class defines the information about an attribute that will come out + * of the scanner during parsing. This information does not depend upon the + * type of validator because it is not tied to any scheme/DTD type info. Its + * just the raw XML 1.0 information that will be reported about an attribute + * in the startElement() callback method of the XMLDocumentHandler class. + * Hence it is not intended to be extended or derived from. Its designed to + * be used as is. + * + * The 'specified' field of this class indicates whether the attribute was + * actually present or whether it was faulted in because it had a fixed or + * default value. + * + * The code receiving this information can ask its validator for more info + * about the attribute, i.e. get its declaration from the DTD/Schema info. + * + * Because of the heavy use (and reuse) of instances of this class, and the + * number of string members it has, this class takes pains to not reallocate + * string members unless it has to. It keeps up with how long each buffer + * is and only reallocates if the new value won't fit. + */ +class XMLPARSER_EXPORT XMLAttr : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor just setsup an empty attribute to be filled + * in the later. Though the initial state is a reasonable one, it is + * not documented because it should not be depended on. + * + * @param manager The configurable memory manager + */ + XMLAttr(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * This is the primary constructor which takes all of the information + * required to construct a complete attribute object. + * + * @param uriId The id into the validator's URI pool of the URI + * that the prefix mapped to. Only used if namespaces + * are enabled/supported. + * + * @param attrName The base name of the attribute, i.e. the part + * after any prefix. + * + * @param attrPrefix The prefix, if any, of this attribute's name. If + * this is empty, then uriID is meaningless as well. + * + * @param attrValue The value string of the attribute, which should + * be fully normalized by XML rules! + * + * @param type The type of the attribute. This will indicate + * the type of normalization done and constrains + * the value content. Make sure that the value + * set meets the constraints! + * + * @param specified Indicates whether the attribute was explicitly + * specified or not. If not, then it was faulted + * in from a FIXED or DEFAULT value. + * + * @param manager The configurable memory manager + * @param datatypeValidator type used to validate the attribute, + * if it was validated by an XML Schema + * @param isSchema true if and only if this attribute was validated + * by an XML Schema + */ + XMLAttr + ( + const unsigned int uriId + , const XMLCh* const attrName + , const XMLCh* const attrPrefix + , const XMLCh* const attrValue + , const XMLAttDef::AttTypes type = XMLAttDef::CData + , const bool specified = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , DatatypeValidator * datatypeValidator = 0 + , const bool isSchema = false + ); + + /** + * This is the primary constructor which takes all of the information + * required to construct a complete attribute object. + * + * @param uriId The id into the validator's URI pool of the URI + * that the prefix mapped to. Only used if namespaces + * are enabled/supported. + * + * @param rawName The raw name of the attribute. + * + * @param attrValue The value string of the attribute, which should + * be fully normalized by XML rules! + * + * @param type The type of the attribute. This will indicate + * the type of normalization done and constrains + * the value content. Make sure that the value + * set meets the constraints! + * + * @param specified Indicates whether the attribute was explicitly + * specified or not. If not, then it was faulted + * in from a FIXED or DEFAULT value. + * + * @param manager The configurable memory manager + * @param datatypeValidator type used to validate the attribute, + * if it was validated by an XML Schema + * @param isSchema true if and only if this attribute was validated + * by an XML Schema + */ + XMLAttr + ( + const unsigned int uriId + , const XMLCh* const rawName + , const XMLCh* const attrValue + , const XMLAttDef::AttTypes type = XMLAttDef::CData + , const bool specified = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , DatatypeValidator * datatypeValidator = 0 + , const bool isSchema = false + ); + + //@} + + /** @name Destructor */ + //@{ + ~XMLAttr(); + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** + * This method returns the attribute name in a QName format. + */ + QName* getAttName() const; + + /** + * This method gets a const pointer to the name of the attribute. The + * form of this name is defined by the validator in use. + */ + const XMLCh* getName() const; + + /** + * This method will get a const pointer to the prefix string of this + * attribute. Since prefixes are optional, it may be zero. + */ + const XMLCh* getPrefix() const; + + /** + * This method will get the QName of this attribute, which will be the + * prefix if any, then a colon, then the base name. If there was no + * prefix, its the same as the getName() method. + */ + const XMLCh* getQName() const; + + /** + * This method will get the specified flag, which indicates whether + * the attribute was explicitly specified or just faulted in. + */ + bool getSpecified() const; + + /** + * This method will get the type of the attribute. The available types + * are defined by the XML specification. + */ + XMLAttDef::AttTypes getType() const; + + /** + * This method will get the value of the attribute. The value can be + * be an empty string, but never null if the object is correctly + * set up. + */ + const XMLCh* getValue() const; + + /** + * This method will get the id of the URI that this attribute's prefix + * mapped to. If namespaces are not on, then its value is meaningless. + */ + unsigned int getURIId() const; + + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + + /** + * This method is called to set up a default constructed object after + * the fact, or to reuse a previously used object. + * + * @param uriId The id into the validator's URI pool of the URI + * that the prefix mapped to. Only used if namespaces + * are enabled/supported. + * + * @param attrName The base name of the attribute, i.e. the part + * after any prefix. + * + * @param attrPrefix The prefix, if any, of this attribute's name. If + * this is empty, then uriID is meaningless as well. + * + * @param attrValue The value string of the attribute, which should + * be fully normalized by XML rules according to the + * attribute type. + * + * @param type The type of the attribute. This will indicate + * the type of normalization done and constrains + * the value content. Make sure that the value + * set meets the constraints! + * @param datatypeValidator type used to validate the attribute, + * if it was validated by an XML Schema + * @param isSchema true if and only if this attribute was validated + * by an XML Schema + * + */ + void set + ( + const unsigned int uriId + , const XMLCh* const attrName + , const XMLCh* const attrPrefix + , const XMLCh* const attrValue + , const XMLAttDef::AttTypes type = XMLAttDef::CData + , DatatypeValidator * datatypeValidator = 0 + , const bool isSchema = false + ); + + /** + * This method is called to set up a default constructed object after + * the fact, or to reuse a previously used object. + * + * @param uriId The id into the validator's URI pool of the URI + * that the prefix mapped to. Only used if namespaces + * are enabled/supported. + * + * @param attrRawName The raw name of the attribute. + * + * @param attrValue The value string of the attribute, which should + * be fully normalized by XML rules according to the + * attribute type. + * + * @param type The type of the attribute. This will indicate + * the type of normalization done and constrains + * the value content. Make sure that the value + * set meets the constraints! + * @param datatypeValidator type used to validate the attribute, + * if it was validated by an XML Schema + * @param isSchema true if and only if this attribute was validated + * by an XML Schema + */ + void set + ( + const unsigned int uriId + , const XMLCh* const attrRawName + , const XMLCh* const attrValue + , const XMLAttDef::AttTypes type = XMLAttDef::CData + , DatatypeValidator * datatypeValidator = 0 + , const bool isSchema = false + ); + + /** + * This method will update just the name related fields of the + * attribute object. The other fields are left as is. + * + * @param uriId The id into the validator's URI pool of the URI + * that the prefix mapped to. Only used if namespaces + * are enabled/supported. + * + * @param attrName The base name of the attribute, i.e. the part + * after any prefix. + * + * @param attrPrefix The prefix, if any, of this attribute's name. If + * this is empty, then uriID is meaningless as well. + */ + void setName + ( + const unsigned int uriId + , const XMLCh* const attrName + , const XMLCh* const attrPrefix + ); + + /** + * This method will update the specified state of the object. + * + * @param newValue Indicates whether the attribute was explicitly + * specified or not. If not, then it was faulted + * in from a FIXED or DEFAULT value. + */ + void setSpecified(const bool newValue); + + /** + * This method will update the attribute type of the object. + * + * @param newType The type of the attribute. This will indicate + * the type of normalization done and constrains + * the value content. Make sure that the value + * set meets the constraints! + */ + void setType(const XMLAttDef::AttTypes newType); + + /** + * This method will update the value field of the attribute. + * + * @param newValue The value string of the attribute, which should + * be fully normalized by XML rules according to the + * attribute type. + */ + void setValue(const XMLCh* const newValue); + + /** + * This method will set the URI id field of this attribute. This is + * generally only ever called internally by the parser itself during + * the parsing process. + * + * @param uriId The uriId of the attribute. + */ + void setURIId(const unsigned int uriId); + + //@} + + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLAttr(const XMLAttr&); + XMLAttr& operator=(const XMLAttr&); + + + // ----------------------------------------------------------------------- + // Private, helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + + + // ----------------------------------------------------------------------- + // Private instance variables + // + // fAttName + // The Attribute Name; + // + // fSpecified + // True if this attribute appeared in the element; else, false if + // it was defaulted from an AttDef. + // + // fType + // The attribute type enum value for this attribute. Indicates what + // type of attribute it was. + // + // fValue + // fValueBufSz + // The attribute value that was given in the attribute instance, and + // its current buffer size (minus one, where the null is.) + // + // fMemoryManager + // The memory manager used for dynamic memory allocation/deallocation + // ----------------------------------------------------------------------- + bool fSpecified; + XMLAttDef::AttTypes fType; + XMLSize_t fValueBufSz; + XMLCh* fValue; + QName* fAttName; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// XMLAttr: Constructors and Destructor +// --------------------------------------------------------------------------- +inline XMLAttr::~XMLAttr() +{ + cleanUp(); +} + + +// --------------------------------------------------------------------------- +// XMLAttr: Getter methods +// --------------------------------------------------------------------------- +inline QName* XMLAttr::getAttName() const +{ + return fAttName; +} + +inline const XMLCh* XMLAttr::getName() const +{ + return fAttName->getLocalPart(); +} + +inline const XMLCh* XMLAttr::getPrefix() const +{ + return fAttName->getPrefix(); +} + +inline bool XMLAttr::getSpecified() const +{ + return fSpecified; +} + +inline XMLAttDef::AttTypes XMLAttr::getType() const +{ + return fType; +} + +inline const XMLCh* XMLAttr::getValue() const +{ + return fValue; +} + +inline unsigned int XMLAttr::getURIId() const +{ + return fAttName->getURI(); +} + +// --------------------------------------------------------------------------- +// XMLAttr: Setter methods +// --------------------------------------------------------------------------- +inline void XMLAttr::set(const unsigned int uriId + , const XMLCh* const attrName + , const XMLCh* const attrPrefix + , const XMLCh* const attrValue + , const XMLAttDef::AttTypes type + , DatatypeValidator * /*datatypeValidator */ + , const bool /*isSchema*/ ) +{ + // Set the name info and the value via their respective calls + fAttName->setName(attrPrefix, attrName, uriId); + setValue(attrValue); + + // And store the type + fType = type; +} + +inline void XMLAttr::set(const unsigned int uriId + , const XMLCh* const attrRawName + , const XMLCh* const attrValue + , const XMLAttDef::AttTypes type + , DatatypeValidator * /*datatypeValidator */ + , const bool /*isSchema*/ ) +{ + // Set the name info and the value via their respective calls + fAttName->setName(attrRawName, uriId); + setValue(attrValue); + + // And store the type + fType = type; +} + +inline void XMLAttr::setType(const XMLAttDef::AttTypes newValue) +{ + fType = newValue; +} + +inline void XMLAttr::setSpecified(const bool newValue) +{ + fSpecified = newValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLBuffer.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLBuffer.hpp new file mode 100644 index 000000000000..1062f6d5d2d6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLBuffer.hpp @@ -0,0 +1,281 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLBUFFER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLBUFFER_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLBufferFullHandler; + +/** + * XMLBuffer is a lightweight, expandable Unicode text buffer. Since XML is + * inherently theoretically unbounded in terms of the sizes of things, we + * very often need to have expandable buffers. The primary concern here is + * that appends of characters and other buffers or strings be very fast, so + * it always maintains the current buffer size. + * + * The buffer is not null terminated until some asks to see the raw buffer + * contents. This also avoids overhead during append operations. + */ +class XMLPARSER_EXPORT XMLBuffer : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructor */ + //@{ + XMLBuffer(const XMLSize_t capacity = 1023 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) : + + fIndex(0) + , fCapacity(capacity) + , fFullSize(0) + , fUsed(false) + , fMemoryManager(manager) + , fFullHandler(0) + , fBuffer(0) + { + // Buffer is one larger than capacity, to allow for zero term + fBuffer = (XMLCh*) manager->allocate((capacity+1) * sizeof(XMLCh)); //new XMLCh[fCapacity+1]; + + // Keep it null terminated + fBuffer[0] = XMLCh(0); + } + //@} + + /** @name Destructor */ + //@{ + ~XMLBuffer() + { + fMemoryManager->deallocate(fBuffer); //delete [] fBuffer; + } + //@} + + // ----------------------------------------------------------------------- + // Buffer Full Handler Management + // ----------------------------------------------------------------------- + void setFullHandler(XMLBufferFullHandler* handler, const XMLSize_t fullSize) + { + if (handler && fullSize) { + fFullHandler = handler; + fFullSize = fullSize; + + // Need to consider the case that the fullsize is less than the current capacity. + // For example, say fullSize = 100 and fCapacity is 1023 (the default). + // If the fIndex is less than the fullSize, then no problem. We can just carry + // on by resetting fCapacity to fullsize and proceed business as usual. + // If the fIndex is already bigger than the fullSize then we call ensureCapacity + // to see if it can handle emptying the current buffer (it will throw an + // exception if it can't). + if (fullSize < fCapacity) { + fCapacity = fullSize; + if (fIndex >= fullSize) { + ensureCapacity(0); + } + } + } + else { + // reset fFullHandler to zero because setFullHandler had bad input + fFullHandler = 0; + } + } + + // ----------------------------------------------------------------------- + // Buffer Management + // ----------------------------------------------------------------------- + void append(const XMLCh toAppend) + { + // Put in char and bump the index + if (fIndex == fCapacity) + ensureCapacity(1); + fBuffer[fIndex++] = toAppend; + } + + void append (const XMLCh* const chars, const XMLSize_t count) + { + if (count) { + if (fIndex + count >= fCapacity) { + ensureCapacity(count); + } + memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh)); + fIndex += count; + } + else { + append(chars); + } + } + + void append (const XMLCh* const chars) + { + if (chars != 0 && *chars != 0) { + // get length of chars + XMLSize_t count = 0; + for (; *(chars+count); count++ ) /*noop*/; + + if (fIndex + count >= fCapacity) { + ensureCapacity(count); + } + memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh)); + fIndex += count; + } + } + + void set (const XMLCh* const chars, const XMLSize_t count) + { + fIndex = 0; + append(chars, count); + } + + void set (const XMLCh* const chars) + { + fIndex = 0; + if (chars != 0 && *chars != 0) + append(chars); + } + + const XMLCh* getRawBuffer() const + { + fBuffer[fIndex] = 0; + return fBuffer; + } + + XMLCh* getRawBuffer() + { + fBuffer[fIndex] = 0; + return fBuffer; + } + + void reset() + { + fIndex = 0; + } + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + bool getInUse() const + { + return fUsed; + } + + XMLSize_t getLen() const + { + return fIndex; + } + + bool isEmpty() const + { + return (fIndex == 0); + } + + // ----------------------------------------------------------------------- + // Setters + // ----------------------------------------------------------------------- + void setInUse(const bool newValue) + { + fUsed = newValue; + } + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLBuffer(const XMLBuffer&); + XMLBuffer& operator=(const XMLBuffer&); + + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class XMLBufBid; + + // ----------------------------------------------------------------------- + // Private helpers + // ----------------------------------------------------------------------- + void ensureCapacity(const XMLSize_t extraNeeded); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fBuffer + // The pointer to the buffer data. Its grown as needed. Its always + // one larger than fCapacity, to leave room for the null terminator. + // + // fIndex + // The current index into the buffer, as characters are appended + // to it. If its zero, then the buffer is empty. + // + // fCapacity + // The current capacity of the buffer. Its actually always one + // larger, to leave room for the null terminator. + // + // fUsed + // Indicates whether this buffer is in use or not. + // + // fFullHandler, fFullSize + // If fFullHandler is non-null, the buffer has a maximum size + // indicated by fFullSize. If writing to the buffer would exceed the + // buffer's maximum size, fFullHandler's bufferFull callback is + // invoked, to empty the buffer. + // ----------------------------------------------------------------------- + XMLSize_t fIndex; + XMLSize_t fCapacity; + XMLSize_t fFullSize; + bool fUsed; + MemoryManager* const fMemoryManager; + XMLBufferFullHandler* fFullHandler; + XMLCh* fBuffer; +}; + +/** + * XMLBufferFullHandler is a callback interface for clients of + * XMLBuffers that impose a size restriction (e.g. XMLScanner). + * Note that this is intended solely as a mix-in for internal + * use, and therefore does not derive from XMemory (to avoid + * the ambiguous base class problem). + */ +class XMLPARSER_EXPORT XMLBufferFullHandler +{ +public : + + virtual ~XMLBufferFullHandler() {} + + /** + * Callback method, intended to allow clients of an XMLBuffer which has + * become full to empty it appropriately. + * @return true if the handler was able to empty the buffer (either + * partially or completely), otherwise false to indicate an error. + */ + virtual bool bufferFull(XMLBuffer&) = 0; + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLBufferMgr.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLBufferMgr.hpp new file mode 100644 index 000000000000..a77405f8f1ab --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLBufferMgr.hpp @@ -0,0 +1,212 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLBUFFERMGR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLBUFFERMGR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLBufBid; + +/** + * There are many places where XMLBuffer objects are needed. In order to + * avoid either constantly creating and destroying them or maintaining a + * fixed set and worrying about accidental reuse, a buffer manager can + * provide a pool of buffers which can be temporarily used and then put + * back into the pool. This provides a good compromise between performance + * and easier maintenance. + */ +class XMLPARSER_EXPORT XMLBufferMgr : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructor */ + //@{ + XMLBufferMgr(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + //@} + + /** @name Destructor */ + //@{ + ~XMLBufferMgr(); + //@} + + + // ----------------------------------------------------------------------- + // Buffer management + // ----------------------------------------------------------------------- + XMLBuffer& bidOnBuffer(); + void releaseBuffer(XMLBuffer& toRelease); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t getBufferCount() const; + XMLSize_t getAvailableBufferCount() const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLBufferMgr(const XMLBufferMgr&); + XMLBufferMgr& operator=(const XMLBufferMgr&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fBufCount + // The count of buffers that have been allocated so far. + // + // fBufList; + // The list of pointers to buffers that are loaned out. There will + // never be a lot of them, so a flat list is good enough. + // ----------------------------------------------------------------------- + XMLSize_t fBufCount; + MemoryManager* fMemoryManager; + XMLBuffer** fBufList; +}; + +inline XMLSize_t XMLBufferMgr::getBufferCount() const +{ + return fBufCount; +} + +inline XMLSize_t XMLBufferMgr::getAvailableBufferCount() const +{ + XMLSize_t available = fBufCount; + for (XMLSize_t index = 0; index < fBufCount && fBufList[index]; index++) + { + if (fBufList[index]->getInUse()) + --available; + } + return available; +} + + +/** + * XMLBufBid is a scoped based janitor that allows the scanner code to ask + * for a buffer on a scoped basis and then insure that it gets freed back + * into the pool no matter how the scope is exited (exception or normal exit.) + */ +class XMLBufBid : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLBufBid(XMLBufferMgr* const srcMgr) : + + fBuffer(srcMgr->bidOnBuffer()) + , fMgr(srcMgr) + { + } + + ~XMLBufBid() + { + fMgr->releaseBuffer(fBuffer); + } + + + + // ----------------------------------------------------------------------- + // Buffer access + // ----------------------------------------------------------------------- + void append(const XMLCh toAppend) + { + fBuffer.append(toAppend); + } + + void append(const XMLCh* const toAppend, const XMLSize_t count = 0) + { + fBuffer.append(toAppend, count); + } + + const XMLBuffer& getBuffer() const + { + return fBuffer; + } + + XMLBuffer& getBuffer() + { + return fBuffer; + } + + const XMLCh* getRawBuffer() const + { + fBuffer.fBuffer[fBuffer.fIndex] = 0; + return fBuffer.fBuffer; + } + + XMLCh* getRawBuffer() + { + fBuffer.fBuffer[fBuffer.fIndex] = 0; + return fBuffer.fBuffer; + } + + XMLSize_t getLen() const + { + return fBuffer.fIndex; + } + + bool isEmpty() const + { + return (fBuffer.fIndex == 0); + } + + void reset() + { + fBuffer.reset(); + } + + void set(const XMLCh* const chars, const XMLSize_t count = 0) + { + fBuffer.set(chars, count); + } + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLBufBid(const XMLBufBid&); + XMLBufBid& operator=(const XMLBufBid&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fBuffer + // This is the buffer we got, and which we will release. + // + // fMgr + // This is the buffer manager we got the buffer from. This is needed + // to release the buffer later. + // ----------------------------------------------------------------------- + XMLBuffer& fBuffer; + XMLBufferMgr* const fMgr; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLContentModel.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLContentModel.hpp new file mode 100644 index 000000000000..24d23ac4070a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLContentModel.hpp @@ -0,0 +1,145 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLCONTENTMODEL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLCONTENTMODEL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentLeafNameTypeVector; +class GrammarResolver; +class XMLStringPool; +class XMLValidator; +class SchemaGrammar; +class SubstitutionGroupComparator; + +/** + * This class defines the abstract interface for all content models. All + * elements have a content model against which (if validating) its content + * is checked. Each type of validator (DTD, Schema, etc...) can have + * different types of content models, and even with each type of validator + * there can be specialized content models. So this simple class provides + * the abstract API via which all the types of contents models are dealt + * with generically. Its pretty simple. + */ +class XMLPARSER_EXPORT XMLContentModel : public XMemory +{ +public: + // --------------------------------------------------------------------------- + // Public static data + // + // gInvalidTrans + // This value represents an invalid transition in each line of the + // transition table. + // + // gEOCFakeId + // gEpsilonFakeId + // We have to put in a couple of special CMLeaf nodes to represent + // special values, using fake element ids that we know won't conflict + // with real element ids. + // + // + // --------------------------------------------------------------------------- + static const unsigned int gInvalidTrans; + static const unsigned int gEOCFakeId; + static const unsigned int gEpsilonFakeId; + + // ----------------------------------------------------------------------- + // Constructors are hidden, only the virtual Destructor is exposed + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + virtual ~XMLContentModel() + { + } + //@} + + + // ----------------------------------------------------------------------- + // The virtual content model interface provided by derived classes + // ----------------------------------------------------------------------- + virtual bool validateContent + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const = 0; + + virtual bool validateContentSpecial + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const =0; + + virtual void checkUniqueParticleAttribution + ( + SchemaGrammar* const pGrammar + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLValidator* const pValidator + , unsigned int* const pContentSpecOrgURI + , const XMLCh* pComplexTypeName = 0 + ) =0; + + virtual ContentLeafNameTypeVector* getContentLeafNameTypeVector() + const = 0; + + virtual unsigned int getNextState(unsigned int currentState, + XMLSize_t elementIndex) const = 0; + + virtual bool handleRepetitions( const QName* const curElem, + unsigned int curState, + unsigned int currentLoop, + unsigned int& nextState, + unsigned int& nextLoop, + XMLSize_t elementIndex, + SubstitutionGroupComparator * comparator) const = 0; + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + XMLContentModel() + { + } + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLContentModel(const XMLContentModel&); + XMLContentModel& operator=(const XMLContentModel&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLDTDDescription.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLDTDDescription.hpp new file mode 100644 index 000000000000..e4a5455f2a13 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLDTDDescription.hpp @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLDTDDESCRIPTION_HPP) +#define XERCESC_INCLUDE_GUARD_XMLDTDDESCRIPTION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT XMLDTDDescription : public XMLGrammarDescription +{ +public : + // ----------------------------------------------------------------------- + /** @name Virtual destructor for derived classes */ + // ----------------------------------------------------------------------- + //@{ + /** + * virtual destructor + * + */ + virtual ~XMLDTDDescription(); + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of Grammar Description Interface */ + // ----------------------------------------------------------------------- + //@{ + /** + * getGrammarType + * + */ + virtual Grammar::GrammarType getGrammarType() const + { + return Grammar::DTDGrammarType; + } + //@} + + // ----------------------------------------------------------------------- + /** @name The DTDDescription Interface */ + // ----------------------------------------------------------------------- + //@{ + /** + * Getter + * + */ + virtual const XMLCh* getRootName() const = 0; + virtual const XMLCh* getSystemId() const {return 0;}; + + /** + * Setter + * + */ + virtual void setRootName(const XMLCh* const) = 0; + virtual void setSystemId(const XMLCh* const) {}; + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLDTDDescription) + +protected : + // ----------------------------------------------------------------------- + /** Hidden Constructors */ + // ----------------------------------------------------------------------- + //@{ + XMLDTDDescription(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); + //@} + +private : + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + XMLDTDDescription(const XMLDTDDescription& ); + XMLDTDDescription& operator=(const XMLDTDDescription& ); + //@} + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLDocumentHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLDocumentHandler.hpp new file mode 100644 index 000000000000..29d10ab57513 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLDocumentHandler.hpp @@ -0,0 +1,283 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLDOCUMENTHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLDOCUMENTHANDLER_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLElementDecl; +class XMLEntityDecl; + +/** + * This abstract class provides the interface for the scanner to return + * XML document information up to the parser as it scans through the + * document. + * + * The interface is very similar to org.sax.DocumentHandler, but + * has some extra methods required to get all the data out. + */ +class XMLPARSER_EXPORT XMLDocumentHandler +{ +public: + // ----------------------------------------------------------------------- + // Constructors are hidden, just the virtual destructor is exposed + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + virtual ~XMLDocumentHandler() + { + } + //@} + + /** @name The document handler interface */ + //@{ + /** Receive notification of character data. + * + *

The scanner will call this method to report each chunk of + * character data. The scanner may return all contiguous character + * data in a single chunk, or they may split it into several + * chunks; however, all of the characters in any single event + * will come from the same external entity, so that the Locator + * provides useful information.

+ * + *

The parser must not attempt to read from the array + * outside of the specified range.

+ * + * @param chars The content (characters) between markup from the XML + * document. + * @param length The number of characters to read from the array. + * @param cdataSection Indicates that this data is inside a CDATA + * section. + * @see #ignorableWhitespace + * @see Locator + */ + virtual void docCharacters + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ) = 0; + + /** Receive notification of comments in the XML content being parsed. + * + * This scanner will call this method for any comments found in the + * content of the document. + * + * @param comment The text of the comment. + */ + virtual void docComment + ( + const XMLCh* const comment + ) = 0; + + /** Receive notification of PI's parsed in the XML content. + * + * The scanner will call this method for any PIs it finds within the + * content of the document. + * + * @param target The name of the PI. + * @param data The body of the PI. This may be an empty string since + * the body is optional. + */ + virtual void docPI + ( + const XMLCh* const target + , const XMLCh* const data + ) = 0; + + /** Receive notification after the scanner has parsed the end of the + * document. + * + * The scanner will call this method when the current document has been + * fully parsed. The handler may use this opportunity to do something with + * the data, clean up temporary data, etc... + */ + virtual void endDocument() = 0; + + /** Receive notification of the end of an element. + * + * This method is called when scanner encounters the end of element tag. + * There will be a corresponding startElement() event for every + * endElement() event, but not necessarily the other way around. For + * empty tags, there is only a startElement() call. + * + * @param elemDecl The name of the element whose end tag was just + * parsed. + * @param uriId The ID of the URI in the URI pool (only valid if + * name spaces is enabled) + * @param isRoot Indicates if this is the root element. + * @param prefixName The string representing the prefix name + */ + virtual void endElement + ( + const XMLElementDecl& elemDecl + , const unsigned int uriId + , const bool isRoot + , const XMLCh* const prefixName = 0 + ) = 0; + + /** Receive notification when a referenced entity's content ends + * + * This method is called when scanner encounters the end of an entity + * reference. + * + * @param entDecl The name of the entity reference just scanned. + */ + virtual void endEntityReference + ( + const XMLEntityDecl& entDecl + ) = 0; + + /** Receive notification of ignorable whitespace in element content. + * + *

Validating Parsers must use this method to report each chunk + * of ignorable whitespace (see the W3C XML 1.0 recommendation, + * section 2.10): non-validating parsers may also use this method + * if they are capable of parsing and using content models.

+ * + *

The scanner may return all contiguous whitespace in a single + * chunk, or it may split it into several chunks; however, all of + * the characters in any single event will come from the same + * external entity, so that the Locator provides useful + * information.

+ * + *

The parser must not attempt to read from the array + * outside of the specified range.

+ * + * @param chars The whitespace characters from the XML document. + * @param length The number of characters to read from the array. + * @param cdataSection Indicates that this data is inside a CDATA + * section. + * @see #docCharacters + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ) = 0; + + /** Reset the document handler's state, if required + * + * This method is used to give the registered document handler a + * chance to reset itself. Its called by the scanner at the start of + * every parse. + */ + virtual void resetDocument() = 0; + + /** Receive notification of the start of a new document + * + * This method is the first callback called the scanner at the + * start of every parse. This is before any content is parsed. + */ + virtual void startDocument() = 0; + + /** Receive notification of a new start tag + * + * This method is called when scanner encounters the start of an element tag. + * All elements must always have a startElement() tag. Empty tags will + * only have the startElement() tag and no endElement() tag. + * + * @param elemDecl The name of the element whose start tag was just + * parsed. + * @param uriId The ID of the URI in the URI pool (only valid if + * name spaces is enabled) + * @param prefixName The string representing the prefix name + * @param attrList List of attributes in the element + * @param attrCount Count of the attributes in the element + * @param isEmpty Indicates if the element is empty, in which case + * you should not expect an endElement() event. + * @param isRoot Indicates if this is the root element. + */ + virtual void startElement + ( + const XMLElementDecl& elemDecl + , const unsigned int uriId + , const XMLCh* const prefixName + , const RefVectorOf& attrList + , const XMLSize_t attrCount + , const bool isEmpty + , const bool isRoot + ) = 0; + + /** Receive notification when the scanner hits an entity reference. + * + * This is currently useful only to DOM parser configurations as SAX + * does not provide any api to return this information. + * + * @param entDecl The name of the entity that was referenced. + */ + virtual void startEntityReference(const XMLEntityDecl& entDecl) = 0; + + /** Receive notification of an XML declaration + * + * Currently neither DOM nor SAX provide API's to return back this + * information. + * + * @param versionStr The value of the version pseudoattribute + * of the XML decl. + * @param encodingStr The value of the encoding pseudoattribute + * of the XML decl. + * @param standaloneStr The value of the standalone + * pseudoattribute of the XML decl. + * @param autoEncodingStr The encoding string auto-detected by the + * scanner. In absence of any 'encoding' attribute in the + * XML decl, the XML standard specifies how a parser can + * auto-detect. If there is no encodingStr + * this is what will be used to try to decode the file. + */ + virtual void XMLDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + , const XMLCh* const standaloneStr + , const XMLCh* const autoEncodingStr + ) = 0; + + //@} + + + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + XMLDocumentHandler() + { + } + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLDocumentHandler(const XMLDocumentHandler&); + XMLDocumentHandler& operator=(const XMLDocumentHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLElementDecl.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLElementDecl.hpp new file mode 100644 index 000000000000..450136236f82 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLElementDecl.hpp @@ -0,0 +1,552 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLELEMENTDECL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLELEMENTDECL_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentSpecNode; +class XMLContentModel; + +/** + * This class defines the core information of an element declaration. Each + * validator (DTD, Schema, etc...) will have its own information that it + * associations with the declaration of an element, but they must all share + * at least this core information, i.e. they must all derive from this + * class. The set of info enforced at this level is driven by the needs of + * XML 1.0 spec validation and well formedness checks. + * + * This class defines some special element id values for invalid elements + * and PCDATA elements, as well as a string for the special PCDATA element + * name. All validators must honor these special values in order to allow + * content models to work generically (i.e. to let code know when its dealing + * with invalid or PCDATA element ids without having to know what type of + * validator its messing with.) + */ +class XMLPARSER_EXPORT XMLElementDecl : public XSerializable, public XMemory +{ + public: + // ----------------------------------------------------------------------- + // Class specific types + // + // CreateReasons + // This type is used to store how an element declaration got into + // the grammar's element pool. They are faulted in for various + // reasons. + // + // LookupOpts + // These are the values used by the attribute lookup methods. + // + // CharDataOpts + // This is used to indicate how this type of element reacts to + // character data as content. + // ----------------------------------------------------------------------- + enum CreateReasons + { + NoReason + , Declared + , AttList + , InContentModel + , AsRootElem + , JustFaultIn + }; + + enum CharDataOpts + { + NoCharData + , SpacesOk + , AllCharData + }; + + + // ----------------------------------------------------------------------- + // Public static data + // + // fgInvalidElemId + // A value to represent an invalid element node id. + // + // fgPCDataElemId + // This is the value to use to represent a PCDATA node when an + // element id is required. + // + // fgPCDataElemName + // This is the value to use to represent a PCDATA node when an + // element name is required. + // ----------------------------------------------------------------------- + static const unsigned int fgInvalidElemId; + static const unsigned int fgPCDataElemId; + static const XMLCh fgPCDataElemName[]; + + + + // ----------------------------------------------------------------------- + // Destructor + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + virtual ~XMLElementDecl(); + //@} + + + // ----------------------------------------------------------------------- + // The virtual element decl interface + // ----------------------------------------------------------------------- + + /** @name Virual ElementDecl interface */ + //@{ + + /** Get a list of attributes defined for this element. + * + * The derived class should return a reference to some member object which + * implements the XMLAttDefList interface. This object gives the scanner the + * ability to look through the attributes defined for this element. + * + * It is done this way for efficiency, though of course this is not thread + * safe. The scanner guarantees that it won't ever call this method in any + * nested way, but the outside world must be careful about when it calls + * this method, and optimally never would. + */ + virtual XMLAttDefList& getAttDefList() const = 0; + + /** The character data options for this element type + * + * The derived class should return an appropriate character data opts value + * which correctly represents its tolerance towards whitespace or character + * data inside of its instances. This allows the scanner to do all of the + * validation of character data. + */ + virtual CharDataOpts getCharDataOpts() const = 0; + + /** Indicate whether this element type defined any attributes + * + * The derived class should return a boolean that indicates whether this + * element has any attributes defined for it or not. This is an optimization + * that allows the scanner to skip some work if no attributes exist. + */ + virtual bool hasAttDefs() const = 0; + + /** Get a pointer to the content spec node + * + * This method will return a const pointer to the content spec node object + * of this element. + * + * @return A const pointer to the element's content spec node + */ + virtual const ContentSpecNode* getContentSpec() const = 0; + + /** Get a pointer to the content spec node + * + * This method is identical to the previous one, except that it is non + * const. + */ + virtual ContentSpecNode* getContentSpec() = 0; + + /** Set the content spec node object for this element type + * + * This method will adopt the based content spec node object. This is called + * by the actual validator which is parsing its DTD or Schema or whatever + * and store it on the element decl object via this method. + * + * @param toAdopt This method will adopt the passed content node spec + * object. Any previous object is destroyed. + */ + virtual void setContentSpec(ContentSpecNode* toAdopt) = 0; + + /** Get a pointer to the abstract content model + * + * This method will return a const pointer to the content model object + * of this element. This class is a simple abstraction that allows an + * element to define and use multiple, specialized content model types + * internally but still allow the outside world to do simple stuff with + * them. + * + * @return A pointer to the element's content model, via the basic + * abstract content model type. + */ + virtual XMLContentModel* getContentModel() = 0; + + /** Set the content model object for this element type + * + * This method will adopt the based content model object. This is called + * by the actual validator which is parsing its DTD or Schema or whatever + * a creating an element decl. It will build what it feels is the correct + * content model type object and store it on the element decl object via + * this method. + * + * @param newModelToAdopt This method will adopt the passed content model + * object. Any previous object is destroyed. + */ + virtual void setContentModel(XMLContentModel* const newModelToAdopt) = 0; + + /** Geta formatted string of the content model + * + * This method is a convenience method which will create a formatted + * representation of the content model of the element. It will not always + * exactly recreate the original model, since some normalization or + * or reformatting may occur. But, it will be a technically accurate + * representation of the original content model. + * + * @return A pointer to an internal buffer which contains the formatted + * content model. The caller does not own this buffer and should + * copy it if it needs to be kept around. + */ + virtual const XMLCh* getFormattedContentModel () const = 0; + + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** Get the base name of this element type. + * + * Return the base name part of the element's name. This is the + * same regardless of whether namespaces are enabled or not. + * + * @return A const pointer to the base name of the element decl. + */ + const XMLCh* getBaseName() const; + XMLCh* getBaseName(); + + /** Get the URI id of this element type. + * + * Return the URI Id of this element. + * + * @return The URI Id of the element decl, or the emptyNamespaceId if not applicable. + */ + unsigned int getURI() const; + + /** Get the QName of this element type. + * + * Return the QName part of the element's name. This is the + * same regardless of whether namespaces are enabled or not. + * + * @return A const pointer to the QName of the element decl. + */ + const QName* getElementName() const; + QName* getElementName(); + + /** Get the full name of this element type. + * + * Return the full name of the element. If namespaces + * are not enabled, then this is the qName. Else it is the {uri}baseName + * form. For those validators that always require namespace processing, it + * will always be in the latter form because namespace processing will always + * be on. + */ + const XMLCh* getFullName() const; + + /** Get the create reason for this element type + * + * This method returns an enumeration which indicates why this element + * declaration exists. Elements can be used before they are actually + * declared, so they will often be faulted into the pool and marked as + * to why they are there. + * + * @return An enumerated value that indicates the reason why this element + * was added to the element decl pool. + */ + + CreateReasons getCreateReason() const; + + /** Get the element decl pool id for this element type + * + * This method will return the element decl pool id of this element + * declaration. This uniquely identifies this element type within the + * parse event that it is declared within. This value is assigned by the + * grammar whose decl pool this object belongs to. + * + * @return The element decl id of this element declaration. + */ + XMLSize_t getId() const; + + /** Indicate whether this element type has been declared yet + * + * This method returns a boolean that indicates whether this element + * has been declared yet. There are a number of reasons why an element + * declaration can be faulted in, but eventually it must be declared or + * its an error. See the CreateReasons enumeration. + * + * @return true if this element has been declared, else false. + */ + bool isDeclared() const; + + /** Indicate whether this element type has been declared externally + * + * This method returns a boolean that indicates whether this element + * has been declared externally. + * + * @return true if this element has been declared externally, else false. + */ + + bool isExternal() const; + + /** Get the memory manager + * + * This method returns the configurable memory manager used by the + * element declaration for dynamic allocation/deallocation. + * + * @return the memory manager + */ + MemoryManager* getMemoryManager() const; + + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + + /** Set the element name object for this element type + * + * This method will adopt the based content spec node object. This is called + * by the actual validator which is parsing its DTD or Schema or whatever + * and store it on the element decl object via this method. + * + * @param prefix Prefix of the element + * @param localPart Base Name of the element + * @param uriId The uriId of the element + */ + void setElementName(const XMLCh* const prefix + , const XMLCh* const localPart + , const int uriId ); + + /** Set the element name object for this element type + * + * This method will adopt the based content spec node object. This is called + * by the actual validator which is parsing its DTD or Schema or whatever + * and store it on the element decl object via this method. + * + * @param rawName Full Name of the element + * @param uriId The uriId of the element + */ + void setElementName(const XMLCh* const rawName + , const int uriId ); + + /** Set the element name object for this element type + * + * This method will adopt the based content spec node object. This is called + * by the actual validator which is parsing its DTD or Schema or whatever + * and store it on the element decl object via this method. + * + * @param elementName QName of the element + */ + void setElementName(const QName* const elementName); + + /** Update the create reason for this element type. + * + * This method will update the 'create reason' field for this element + * decl object. As the validator parses its DTD, Schema, etc... it will + * encounter various references to an element declaration, which will + * cause the element declaration to either be declared or to be faulted + * into the pool in preparation for some future declaration. As it does + * so,it will update this field to indicate the current status of the + * decl object. + */ + void setCreateReason(const CreateReasons newReason); + + /** Set the element decl pool id for this element type + * + * This method will set the pool id of this element decl. This is called + * by the grammar which created this object, and will provide this + * decl object with a unique id within the parse event that created it. + */ + void setId(const XMLSize_t newId); + + + /** Set the element decl to indicate external declaration + * + */ + void setExternalElemDeclaration(const bool aValue); + + //@} + + + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + + /** @name Miscellaneous methods */ + //@{ + + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLElementDecl) + + enum objectType + { + Schema + , DTD + , UnKnown + }; + + virtual XMLElementDecl::objectType getObjectType() const = 0; + + static void storeElementDecl(XSerializeEngine& serEng + , XMLElementDecl* const element); + + static XMLElementDecl* loadElementDecl(XSerializeEngine& serEng); + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XMLElementDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLElementDecl(const XMLElementDecl&); + XMLElementDecl& operator=(const XMLElementDecl&); + + + // ----------------------------------------------------------------------- + // Data members + // + // fElementName + // This is the name of the element decl. + // + // fCreateReason + // We sometimes have to put an element decl object into the elem + // decl pool before the element's declaration is seen, such as when + // its used in another element's content model or an att list is + // seen for it. This flag tells us whether its been declared, and + // if not why it had to be created. + // + // fId + // The unique id of this element. This is created by the derived + // class, or more accurately the grammar that owns the objects + // of the derived types. But, since they all have to have them, we + // let them all store the id here. It is defaulted to have the + // value fgInvalidElem until explicitly set. + // + // fExternalElement + // This flag indicates whether or the element was declared externally. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + QName* fElementName; + CreateReasons fCreateReason; + XMLSize_t fId; + bool fExternalElement; +}; + + +// --------------------------------------------------------------------------- +// XMLElementDecl: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh* XMLElementDecl::getBaseName() const +{ + return fElementName->getLocalPart(); +} + +inline XMLCh* XMLElementDecl::getBaseName() +{ + return fElementName->getLocalPart(); +} + +inline unsigned int XMLElementDecl::getURI() const +{ + return fElementName->getURI(); +} + +inline const QName* XMLElementDecl::getElementName() const +{ + return fElementName; +} + +inline QName* XMLElementDecl::getElementName() +{ + return fElementName; +} + +inline const XMLCh* XMLElementDecl::getFullName() const +{ + return fElementName->getRawName(); +} + +inline XMLElementDecl::CreateReasons XMLElementDecl::getCreateReason() const +{ + return fCreateReason; +} + +inline XMLSize_t XMLElementDecl::getId() const +{ + return fId; +} + +inline bool XMLElementDecl::isDeclared() const +{ + return (fCreateReason == Declared); +} + + +inline bool XMLElementDecl::isExternal() const +{ + return fExternalElement; +} + +inline MemoryManager* XMLElementDecl::getMemoryManager() const +{ + return fMemoryManager; +} + + +// --------------------------------------------------------------------------- +// XMLElementDecl: Setter methods +// --------------------------------------------------------------------------- +inline void +XMLElementDecl::setCreateReason(const XMLElementDecl::CreateReasons newReason) +{ + fCreateReason = newReason; +} + +inline void XMLElementDecl::setId(const XMLSize_t newId) +{ + fId = newId; +} + + +inline void XMLElementDecl::setExternalElemDeclaration(const bool aValue) +{ + fExternalElement = aValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLEntityDecl.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLEntityDecl.hpp new file mode 100644 index 000000000000..25c604908123 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLEntityDecl.hpp @@ -0,0 +1,512 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLENTITYDECL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLENTITYDECL_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class defines that core information that defines an XML entity, no + * matter what validator is used. Each validator will create a derivative + * of this class which adds any extra information it requires. + * + * This class supports keyed collection semantics via the getKey() method + * which extracts the key field, the entity name in this case. The name will + * have whatever form is deemed appropriate for the type of validator in + * use. + * + * When setting the fields of this class, you must make sure that you do + * not set conflicting values. For instance, an internal entity cannot have + * a notation name. And an external entity cannot have a value string. + * These rules are defined by the XML specification. In most cases, these + * objects are created by validator objects as they parse a DTD or Schema + * or whatever, at which time they confirm the correctness of the data before + * creating the entity decl object. + */ +class XMLPARSER_EXPORT XMLEntityDecl : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors */ + //@{ + + /** + * Default Constructor + */ + XMLEntityDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Constructor with a const entity name + * + * @param entName The new name to give to this entity. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + XMLEntityDecl + ( + const XMLCh* const entName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Constructor with a const entity name and value + * + * @param entName The new name to give to this entity. + * @param value The new value to give to this entity name. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + XMLEntityDecl + ( + const XMLCh* const entName + , const XMLCh* const value + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Constructor with a const entity name and single XMLCh value + * + * @param entName The new name to give to this entity. + * @param value The new value to give to this entity name. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + XMLEntityDecl + ( + const XMLCh* const entName + , const XMLCh value + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Destructor */ + //@{ + + /** + * Default destructor + */ + virtual ~XMLEntityDecl(); + + //@} + + + // ----------------------------------------------------------------------- + // Virtual entity decl interface + // ----------------------------------------------------------------------- + + /** @name The pure virtual methods in this interface. */ + //@{ + + /** Get the 'declared in internal subset' flag + * + * Gets the state of the flag which indicates whether the entity was + * declared in the internal or external subset. Some structural + * description languages might not have an internal subset concept, in + * which case this will always return false. + */ + virtual bool getDeclaredInIntSubset() const = 0; + + /** Get the 'is parameter entity' flag + * + * Gets the state of the flag which indicates whether this entity is + * a parameter entity. If not, then its a general entity. + */ + virtual bool getIsParameter() const = 0; + + /** Get the 'is special char entity' flag + * + * Gets the state of the flag that indicates whether this entity is + * one of the special, intrinsically supported character entities. + */ + virtual bool getIsSpecialChar() const = 0; + + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** + * Gets the pool id of this entity. Validators maintain all decls in + * pools, from which they can be quickly extracted via id. + */ + XMLSize_t getId() const; + + /** + * Returns a const pointer to the name of this entity decl. This name + * will be in whatever format is appropriate for the type of validator + * in use. + */ + const XMLCh* getName() const; + + /** + * Gets the notation name, if any, declared for this entity. If this + * entity is not a notation type entity, it will be a null pointer. + */ + const XMLCh* getNotationName() const; + + /** + * Gets the public id declared for this entity. Public ids are optional + * so it can be a null pointer. + */ + const XMLCh* getPublicId() const; + + /** + * Gets the system id declared for this entity. The system id is required + * so this method should never return a null pointers. + */ + const XMLCh* getSystemId() const; + + /** + * Gets the base URI for this entity. + */ + const XMLCh* getBaseURI() const; + + /** + * This method returns the value of an internal entity. If this is not + * an internal entity (i.e. its external), then this will be a null + * pointer. + */ + const XMLCh* getValue() const; + + /** + * This method returns the number of characters in the value returned + * by getValue(). If this entity is external, this will be zero since + * an external entity has no internal value. + */ + XMLSize_t getValueLen() const; + + /** + * Indicates that this entity is an external entity. If not, then it is + * assumed to be an internal entity, surprise. + */ + bool isExternal() const; + + /** + * Indicates whether this entity is unparsed. This is meaningless for + * internal entities. Some external entities are unparsed in that they + * refer to something other than XML source. + */ + bool isUnparsed() const; + + /** Get the plugged-in memory manager + * + * This method returns the plugged-in memory manager user for dynamic + * memory allocation/deallocation. + * + * @return the plugged-in memory manager + */ + MemoryManager* getMemoryManager() const; + + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + + /** + * This method will set the entity name. The format of this name is + * defined by the particular validator in use, since it will be the + * one who creates entity definitions as it parses the DTD, Schema, + * ect... + * + * @param entName The new name to give to this entity. + */ + void setName + ( + const XMLCh* const entName + ); + + /** + * This method will mark whether the entity is external. + * + * @param value The new value for the 'is external' flag. + */ + void setIsExternal(bool value); + + /** + * This method will set the notation name for this entity. By setting + * this, you are indicating that this is an unparsed external entity. + * + * @param newName The new notation name to give to this entity. + */ + void setNotationName(const XMLCh* const newName); + + /** + * This method will set a new public id on this entity. The public id + * has no particular form and is purely for client consumption. + * + * @param newId The new public id to give to this entity. + */ + void setPublicId(const XMLCh* const newId); + + /** + * This method will set a new sysetm id on this entity. This will + * then control where the source for this entity lives. If it is + * an internal entity, then the system id is only for bookkeeping + * purposes, and to allow any external entities referenced from + * within the entity to be correctly resolved. + * + * @param newId The new system id to give to the entity. + */ + void setSystemId(const XMLCh* const newId); + + /** + * This method will set a new baseURI on this entity. This will + * then control the URI used to resolve the relative system Id. + * + * @param newId The new base URI to give to the entity. + */ + void setBaseURI(const XMLCh* const newId); + + /** + * This method will set a new value for this entity. This is only + * valid if the entity is to be an internal entity. By setting this + * field, you are indicating that the entity is internal. + * + * @param newValue The new value to give to this entity. + */ + void setValue(const XMLCh* const newValue); + + //@} + + /* For internal use only */ + void setId(const XMLSize_t newId); + + + // ----------------------------------------------------------------------- + // Support named pool syntax + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + + /** + * This method allows objects of this class to be used within a standard + * keyed collection used commonly within the parser system. The collection + * calls this method to get the key (usually to hash it) by which the + * object is to be stored. + */ + const XMLCh* getKey() const; + + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLEntityDecl) + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLEntityDecl(const XMLEntityDecl&); + XMLEntityDecl& operator=(XMLEntityDecl&); + + + // ----------------------------------------------------------------------- + // XMLEntityDecl: Private helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fId + // This is the unique id given to this entity decl. + // + // fName + // The name of the entity. Entity names are never namespace based. + // + // fNotationName + // The optional notation of the entity. If there was none, then its + // empty. + // + // fPublicId + // The public id of the entity, which can be empty. + // + // fSystemId + // The system id of the entity. + // + // fValue + // fValueLen + // The entity's value and length, which is only valid if its an + // internal style entity. + // + // fBaseURI + // The base URI of the entity. According to XML InfoSet, such value + // is the URI where it is declared (NOT referenced). + // ----------------------------------------------------------------------- + XMLSize_t fId; + XMLSize_t fValueLen; + XMLCh* fValue; + XMLCh* fName; + XMLCh* fNotationName; + XMLCh* fPublicId; + XMLCh* fSystemId; + XMLCh* fBaseURI; + bool fIsExternal; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// XMLEntityDecl: Getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t XMLEntityDecl::getId() const +{ + return fId; +} + +inline const XMLCh* XMLEntityDecl::getName() const +{ + return fName; +} + +inline const XMLCh* XMLEntityDecl::getNotationName() const +{ + return fNotationName; +} + +inline const XMLCh* XMLEntityDecl::getPublicId() const +{ + return fPublicId; +} + +inline const XMLCh* XMLEntityDecl::getSystemId() const +{ + return fSystemId; +} + +inline const XMLCh* XMLEntityDecl::getBaseURI() const +{ + return fBaseURI; +} + +inline const XMLCh* XMLEntityDecl::getValue() const +{ + return fValue; +} + +inline XMLSize_t XMLEntityDecl::getValueLen() const +{ + return fValueLen; +} + +inline bool XMLEntityDecl::isExternal() const +{ + return fIsExternal; +} + +inline bool XMLEntityDecl::isUnparsed() const +{ + // If it has a notation, its unparsed + return (fNotationName != 0); +} + +inline MemoryManager* XMLEntityDecl::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// XMLEntityDecl: Setter methods +// --------------------------------------------------------------------------- +inline void XMLEntityDecl::setId(const XMLSize_t newId) +{ + fId = newId; +} + +inline void XMLEntityDecl::setIsExternal(bool value) +{ + fIsExternal = value; +} + +inline void XMLEntityDecl::setNotationName(const XMLCh* const newName) +{ + if (fNotationName) + fMemoryManager->deallocate(fNotationName); + + fNotationName = XMLString::replicate(newName, fMemoryManager); +} + +inline void XMLEntityDecl::setPublicId(const XMLCh* const newId) +{ + if (fPublicId) + fMemoryManager->deallocate(fPublicId); + + fPublicId = XMLString::replicate(newId, fMemoryManager); +} + +inline void XMLEntityDecl::setSystemId(const XMLCh* const newId) +{ + if (fSystemId) + fMemoryManager->deallocate(fSystemId); + + fSystemId = XMLString::replicate(newId, fMemoryManager); +} + +inline void XMLEntityDecl::setBaseURI(const XMLCh* const newId) +{ + if (fBaseURI) + fMemoryManager->deallocate(fBaseURI); + + fBaseURI = XMLString::replicate(newId, fMemoryManager); +} + +inline void XMLEntityDecl::setValue(const XMLCh* const newValue) +{ + if (fValue) + fMemoryManager->deallocate(fValue); + + fValue = XMLString::replicate(newValue, fMemoryManager); + fValueLen = XMLString::stringLen(newValue); +} + + +// --------------------------------------------------------------------------- +// XMLEntityDecl: Support named pool syntax +// --------------------------------------------------------------------------- +inline const XMLCh* XMLEntityDecl::getKey() const +{ + return fName; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLEntityHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLEntityHandler.hpp new file mode 100644 index 000000000000..67e1ec771c18 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLEntityHandler.hpp @@ -0,0 +1,157 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLENTITYHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLENTITYHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class InputSource; +class XMLBuffer; +class XMLResourceIdentifier; + +/** + * This abstract class is a callback mechanism for the scanner. By creating + * a derivative of this class and plugging into the scanner, the scanner + * will call back on the object's methods to entity events. + * + * This class is primarily for use by those writing their own parser classes. + * If you use the standard parser classes, DOMParser and SAXParser, you won't + * use this API. You will instead use a similar mechanism defined by the SAX + * API, called EntityResolver. + */ +class XMLPARSER_EXPORT XMLEntityHandler +{ +public: + // ----------------------------------------------------------------------- + // Constructors are hidden, only the virtual destructor is exposed + // ----------------------------------------------------------------------- + + /** @name Destructor */ + //@{ + + /** + * Default destructor + */ + virtual ~XMLEntityHandler() + { + } + //@} + + + // ----------------------------------------------------------------------- + // The virtual entity handler interface + // ----------------------------------------------------------------------- + /** @name The pure virtual methods in this interface. */ + //@{ + + /** + * This method get called after the scanner has finished reading from + * the given input source while processing external entity references. + * + * @param inputSource The input source for the entity + */ + virtual void endInputSource(const InputSource& inputSource) = 0; + + /** + * This method allows the passes the scanned systemId to the entity + * handler, thereby giving it a chance to provide any customized + * handling like resolving relative path names. The scanner first + * calls this method before calling resolveEntity. + * + * @param systemId The system id extracted by the scanner from the + * input source. + * @param toFill The buffer in which the fully expanded system id needs + * to be stored. + */ + virtual bool expandSystemId + ( + const XMLCh* const systemId + , XMLBuffer& toFill + ) = 0; + + /** + * This method allows the entity handler to reset itself, so that + * it can be used again. It is called prior to a new document parse + * operation. + */ + virtual void resetEntities() = 0; + + /** + * This method allows the entity handler to provide customized + * application specific entity resolution. + * + * Only one resolveEntity method will be used. If both setEntityResolver and + * setXMLEntityResolver are called, then the last one is used. + * + * @param resourceIdentifier An object containing the type of + * resource to be resolved and the associated data members + * corresponding to this type. + * @return The value returned by the resolveEntity method or + * NULL otherwise to indicate no processing was done. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + */ + virtual InputSource* resolveEntity + ( + XMLResourceIdentifier* resourceIdentifier + ) = 0; + + /** + * This method will be called before the scanner starts reading + * from an input source while processing external entity references. + * + * @param inputSource The external input source. + */ + virtual void startInputSource(const InputSource& inputSource) = 0; + //@} + + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + /** @name Constructor */ + //@{ + + /** + * Protected default constructor + */ + XMLEntityHandler() + { + } + //@} + + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and destructor + // ----------------------------------------------------------------------- + XMLEntityHandler(const XMLEntityHandler&); + XMLEntityHandler& operator=(const XMLEntityHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLErrorCodes.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLErrorCodes.hpp new file mode 100644 index 000000000000..ea3a6294dbc0 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLErrorCodes.hpp @@ -0,0 +1,351 @@ +// This file is generated, don't edit it!! + +#if !defined(XERCESC_INCLUDE_GUARD_ERRHEADER_XMLErrs) +#define XERCESC_INCLUDE_GUARD_ERRHEADER_XMLErrs + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLErrs +{ +public : + enum Codes + { + NoError = 0 + , W_LowBounds = 1 + , NotationAlreadyExists = 2 + , AttListAlreadyExists = 3 + , ContradictoryEncoding = 4 + , UndeclaredElemInCM = 5 + , UndeclaredElemInAttList = 6 + , XMLException_Warning = 7 + , XIncludeResourceErrorWarning = 8 + , XIncludeCannotOpenFile = 9 + , XIncludeIncludeFailedResourceError = 10 + , W_HighBounds = 11 + , E_LowBounds = 12 + , FeatureUnsupported = 13 + , TopLevelNoNameComplexType = 14 + , TopLevelNoNameAttribute = 15 + , NoNameRefAttribute = 16 + , NoNameRefElement = 17 + , NoNameRefGroup = 18 + , NoNameRefAttGroup = 19 + , AnonComplexTypeWithName = 20 + , AnonSimpleTypeWithName = 21 + , InvalidElementContent = 22 + , SimpleTypeContentError = 23 + , ExpectedSimpleTypeInList = 24 + , ListUnionRestrictionError = 25 + , SimpleTypeDerivationByListError = 26 + , ExpectedSimpleTypeInRestriction = 27 + , DuplicateFacet = 28 + , ExpectedSimpleTypeInUnion = 29 + , EmptySimpleTypeContent = 30 + , InvalidSimpleContent = 31 + , UnspecifiedBase = 32 + , InvalidComplexContent = 33 + , SchemaElementContentError = 34 + , ContentError = 35 + , UnknownSimpleType = 36 + , UnknownComplexType = 37 + , UnresolvedPrefix = 38 + , RefElementNotFound = 39 + , TypeNotFound = 40 + , TopLevelAttributeNotFound = 41 + , InvalidChildInComplexType = 42 + , BaseTypeNotFound = 43 + , DatatypeValidatorCreationError = 44 + , InvalidChildFollowingSimpleContent = 45 + , InvalidChildFollowingConplexContent = 46 + , AttributeDefaultFixedValue = 47 + , NotOptionalDefaultAttValue = 48 + , DuplicateAttribute = 49 + , AttributeWithTypeAndSimpleType = 50 + , AttributeSimpleTypeNotFound = 51 + , ElementWithFixedAndDefault = 52 + , InvalidDeclarationName = 53 + , ElementWithTypeAndAnonType = 54 + , NotSimpleOrMixedElement = 55 + , DisallowedSimpleTypeExtension = 56 + , InvalidSimpleContentBase = 57 + , InvalidComplexTypeBase = 58 + , InvalidChildInSimpleContent = 59 + , InvalidChildInComplexContent = 60 + , AnnotationError = 61 + , DisallowedBaseDerivation = 62 + , InvalidBlockValue = 63 + , InvalidFinalValue = 64 + , InvalidSubstitutionGroupElement = 65 + , SubstitutionGroupTypeMismatch = 66 + , DuplicateElementDeclaration = 67 + , InvalidAttValue = 68 + , AttributeRefContentError = 69 + , DuplicateRefAttribute = 70 + , ForbiddenDerivationByRestriction = 71 + , ForbiddenDerivationByExtension = 72 + , BaseNotComplexType = 73 + , ImportNamespaceDifference = 74 + , DeclarationNoSchemaLocation = 75 + , IncludeNamespaceDifference = 76 + , OnlyAnnotationExpected = 77 + , InvalidAttributeContent = 78 + , AttributeRequiredGlobal = 79 + , AttributeRequiredLocal = 80 + , AttributeDisallowedGlobal = 81 + , AttributeDisallowedLocal = 82 + , InvalidMin2MaxOccurs = 83 + , AnyAttributeContentError = 84 + , NoNameGlobalElement = 85 + , NoCircularDefinition = 86 + , DuplicateGlobalType = 87 + , DuplicateGlobalDeclaration = 88 + , WS_CollapseExpected = 89 + , Import_1_1 = 90 + , Import_1_2 = 91 + , ElemIDValueConstraint = 92 + , NoNotationType = 93 + , EmptiableMixedContent = 94 + , EmptyComplexRestrictionDerivation = 95 + , MixedOrElementOnly = 96 + , InvalidContentRestriction = 97 + , ForbiddenDerivation = 98 + , AtomicItemType = 99 + , GroupContentError = 100 + , AttGroupContentError = 101 + , MinMaxOnGroupChild = 102 + , DeclarationNotFound = 103 + , AllContentLimited = 104 + , BadMinMaxAllCT = 105 + , BadMinMaxAllElem = 106 + , DuplicateAttInDerivation = 107 + , NotExpressibleWildCardIntersection = 108 + , BadAttDerivation_1 = 109 + , BadAttDerivation_2 = 110 + , BadAttDerivation_3 = 111 + , BadAttDerivation_4 = 112 + , BadAttDerivation_5 = 113 + , BadAttDerivation_6 = 114 + , BadAttDerivation_7 = 115 + , BadAttDerivation_8 = 116 + , BadAttDerivation_9 = 117 + , AllContentError = 118 + , RedefineNamespaceDifference = 119 + , Redefine_InvalidSimpleType = 120 + , Redefine_InvalidSimpleTypeBase = 121 + , Redefine_InvalidComplexType = 122 + , Redefine_InvalidComplexTypeBase = 123 + , Redefine_InvalidGroupMinMax = 124 + , Redefine_DeclarationNotFound = 125 + , Redefine_GroupRefCount = 126 + , Redefine_AttGroupRefCount = 127 + , Redefine_InvalidChild = 128 + , Notation_DeclNotFound = 129 + , IC_DuplicateDecl = 130 + , IC_BadContent = 131 + , IC_KeyRefReferNotFound = 132 + , IC_KeyRefCardinality = 133 + , IC_XPathExprMissing = 134 + , AttUseCorrect = 135 + , AttDeclPropCorrect3 = 136 + , AttDeclPropCorrect5 = 137 + , AttGrpPropCorrect3 = 138 + , InvalidTargetNSValue = 139 + , XMLException_Error = 140 + , InvalidRedefine = 141 + , InvalidNSReference = 142 + , NotAllContent = 143 + , InvalidAnnotationContent = 144 + , InvalidFacetName = 145 + , InvalidXMLSchemaRoot = 146 + , CircularSubsGroup = 147 + , ELTSchemaNS = 148 + , InvalidAttTNS = 149 + , NSDeclInvalid = 150 + , DOMLevel1Node = 151 + , DuplicateAnyAttribute = 152 + , AnyAttributeBeforeAttribute = 153 + , E_HighBounds = 154 + , F_LowBounds = 155 + , EntityExpansionLimitExceeded = 156 + , ExpectedCommentOrCDATA = 157 + , ExpectedAttrName = 158 + , ExpectedNotationName = 159 + , NoRepInMixed = 160 + , ExpectedDefAttrDecl = 161 + , ExpectedEqSign = 162 + , ExpectedElementName = 163 + , CommentsMustStartWith = 164 + , InvalidDocumentStructure = 165 + , ExpectedDeclString = 166 + , BadXMLVersion = 167 + , UnsupportedXMLVersion = 168 + , UnterminatedXMLDecl = 169 + , BadXMLEncoding = 170 + , BadStandalone = 171 + , UnterminatedComment = 172 + , PINameExpected = 173 + , UnterminatedPI = 174 + , InvalidCharacter = 175 + , UnterminatedStartTag = 176 + , ExpectedAttrValue = 177 + , UnterminatedEndTag = 178 + , ExpectedAttributeType = 179 + , ExpectedEndOfTagX = 180 + , ExpectedMarkup = 181 + , NotValidAfterContent = 182 + , ExpectedComment = 183 + , ExpectedCommentOrPI = 184 + , ExpectedWhitespace = 185 + , NoRootElemInDOCTYPE = 186 + , ExpectedQuotedString = 187 + , ExpectedPublicId = 188 + , InvalidPublicIdChar = 189 + , UnterminatedDOCTYPE = 190 + , InvalidCharacterInIntSubset = 191 + , UnexpectedWhitespace = 192 + , InvalidCharacterInAttrValue = 193 + , ExpectedMarkupDecl = 194 + , TextDeclNotLegalHere = 195 + , ConditionalSectInIntSubset = 196 + , ExpectedPEName = 197 + , UnterminatedEntityDecl = 198 + , InvalidCharacterRef = 199 + , UnterminatedCharRef = 200 + , ExpectedEntityRefName = 201 + , EntityNotFound = 202 + , NoUnparsedEntityRefs = 203 + , UnterminatedEntityRef = 204 + , RecursiveEntity = 205 + , PartialMarkupInEntity = 206 + , UnterminatedElementDecl = 207 + , ExpectedContentSpecExpr = 208 + , ExpectedAsterisk = 209 + , UnterminatedContentModel = 210 + , ExpectedSystemOrPublicId = 211 + , UnterminatedNotationDecl = 212 + , ExpectedSeqChoiceLeaf = 213 + , ExpectedChoiceOrCloseParen = 214 + , ExpectedSeqOrCloseParen = 215 + , ExpectedEnumValue = 216 + , ExpectedEnumSepOrParen = 217 + , UnterminatedEntityLiteral = 218 + , MoreEndThanStartTags = 219 + , ExpectedOpenParen = 220 + , AttrAlreadyUsedInSTag = 221 + , BracketInAttrValue = 222 + , Expected2ndSurrogateChar = 223 + , ExpectedEndOfConditional = 224 + , ExpectedIncOrIgn = 225 + , ExpectedINCLUDEBracket = 226 + , UnexpectedEOE = 227 + , PEPropogated = 228 + , ExtraCloseSquare = 229 + , PERefInMarkupInIntSubset = 230 + , EntityPropogated = 231 + , ExpectedNumericalCharRef = 232 + , ExpectedOpenSquareBracket = 233 + , BadSequenceInCharData = 234 + , IllegalSequenceInComment = 235 + , UnterminatedCDATASection = 236 + , ExpectedNDATA = 237 + , NDATANotValidForPE = 238 + , HexRadixMustBeLowerCase = 239 + , DeclStringRep = 240 + , DeclStringsInWrongOrder = 241 + , NoExtRefsInAttValue = 242 + , XMLDeclMustBeLowerCase = 243 + , ExpectedEntityValue = 244 + , BadDigitForRadix = 245 + , EndedWithTagsOnStack = 246 + , NestedCDATA = 247 + , UnknownPrefix = 248 + , PartialTagMarkupError = 249 + , EmptyMainEntity = 250 + , CDATAOutsideOfContent = 251 + , Unexpected2ndSurrogateChar = 252 + , NoPIStartsWithXML = 253 + , XMLDeclMustBeFirst = 254 + , XMLVersionRequired = 255 + , StandaloneNotLegal = 256 + , EncodingRequired = 257 + , ColonNotLegalWithNS = 258 + , XMLException_Fatal = 259 + , BadSchemaLocation = 260 + , SchemaScanFatalError = 261 + , IllegalRefInStandalone = 262 + , PEBetweenDecl = 263 + , NoEmptyStrNamespace = 264 + , NoUseOfxmlnsAsPrefix = 265 + , NoUseOfxmlnsURI = 266 + , PrefixXMLNotMatchXMLURI = 267 + , XMLURINotMatchXMLPrefix = 268 + , NoXMLNSAsElementPrefix = 269 + , CT_SimpleTypeChildRequired = 270 + , InvalidRootElemInDOCTYPE = 271 + , InvalidElementName = 272 + , InvalidAttrName = 273 + , InvalidEntityRefName = 274 + , DuplicateDocTypeDecl = 275 + , XIncludeOrphanFallback = 276 + , XIncludeNoHref = 277 + , XIncludeXPointerNotSupported = 278 + , XIncludeInvalidParseVal = 279 + , XIncludeMultipleFallbackElems = 280 + , XIncludeIncludeFailedNoFallback = 281 + , XIncludeCircularInclusionLoop = 282 + , XIncludeCircularInclusionDocIncludesSelf = 283 + , XIncludeDisallowedChild = 284 + , XIncludeConflictingNotation = 285 + , XIncludeConflictingEntity = 286 + , F_HighBounds = 287 + }; + + static bool isFatal(const XMLErrs::Codes toCheck) + { + return ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)); + } + + static bool isWarning(const XMLErrs::Codes toCheck) + { + return ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)); + } + + static bool isError(const XMLErrs::Codes toCheck) + { + return ((toCheck >= E_LowBounds) && (toCheck <= E_HighBounds)); + } + + static XMLErrorReporter::ErrTypes errorType(const XMLErrs::Codes toCheck) + { + if ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)) + return XMLErrorReporter::ErrType_Warning; + else if ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)) + return XMLErrorReporter::ErrType_Fatal; + else if ((toCheck >= E_LowBounds) && (toCheck <= E_HighBounds)) + return XMLErrorReporter::ErrType_Error; + return XMLErrorReporter::ErrTypes_Unknown; + } + static DOMError::ErrorSeverity DOMErrorType(const XMLErrs::Codes toCheck) + { + if ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)) + return DOMError::DOM_SEVERITY_WARNING; + else if ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)) + return DOMError::DOM_SEVERITY_FATAL_ERROR; + else return DOMError::DOM_SEVERITY_ERROR; + } + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLErrs(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLErrorReporter.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLErrorReporter.hpp new file mode 100644 index 000000000000..e49cf65a51a2 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLErrorReporter.hpp @@ -0,0 +1,162 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLERRORREPORTER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLERRORREPORTER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * This abstract class defines a callback mechanism for the scanner. By + * creating a class that implements this interface and plugging an instance + * of that class into the scanner, the scanner will call back on the object's + * virtual methods to report error events. This class is also used with the + * validator, to allow it to report errors. + * + * This class is primarily for use by those writing their own parser classes. + * If you use the standard parser classes, DOMParser and SAXParser, you won't + * use this API. You will instead use a similar mechanism defined by the SAX + * API, called ErrorHandler. + */ +class XMLPARSER_EXPORT XMLErrorReporter +{ +public: + // ----------------------------------------------------------------------- + // The types of errors we can issue + // ----------------------------------------------------------------------- + enum ErrTypes + { + ErrType_Warning + , ErrType_Error + , ErrType_Fatal + + , ErrTypes_Unknown + }; + + + // ----------------------------------------------------------------------- + // Constructors are hidden, only the virtual destructor is exposed + // ----------------------------------------------------------------------- + + /** @name Destructor */ + //@{ + + /** + * Default destructor + */ + virtual ~XMLErrorReporter() + { + } + //@} + + + // ----------------------------------------------------------------------- + // The error handler interface + // ----------------------------------------------------------------------- + + /** @name Error Handler interface */ + //@{ + + /** Called to report errors from the scanner or validator + * + * This method is called back on by the scanner or validator (or any other + * internal parser component which might need to report an error in the + * future.) It contains all the information that the client code might + * need to report or log the error. + * + * @param errCode The error code of the error being reported. What + * this means is dependent on the domain it is from. + * + * @param errDomain The domain from which the error occured. The domain + * is a means of providing a hierarchical layering to + * the error system, so that a single set of error id + * numbers don't have to be split up. + * + * @param type The error type, which is defined mostly by XML which + * categorizes errors into warning, errors and validity + * constraints. + * + * @param errorText The actual text of the error. This is translatable, + * so can possibly be in the local language if a + * translation has been provided. + * + * @param systemId The system id of the entity where the error occured, + * fully qualified. + * + * @param publicId The optional public id of the entity were the error + * occured. It can be an empty string if non was provided. + * + * @param lineNum The line number within the source XML of the error. + * + * @param colNum The column number within the source XML of the error. + * Because of the parsing style, this is usually just + * after the actual offending text. + */ + virtual void error + ( + const unsigned int errCode + , const XMLCh* const errDomain + , const ErrTypes type + , const XMLCh* const errorText + , const XMLCh* const systemId + , const XMLCh* const publicId + , const XMLFileLoc lineNum + , const XMLFileLoc colNum + ) = 0; + + /** Called before a new parse event to allow the handler to reset + * + * This method is called by the scanner before a new parse event is + * about to start. It gives the error handler a chance to reset its + * internal state. + */ + virtual void resetErrors() = 0; + + //@} + + +protected : + + /** @name Constructor */ + //@{ + + /** + * Default constructor + */ + XMLErrorReporter() + { + } + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and destructor + // ----------------------------------------------------------------------- + XMLErrorReporter(const XMLErrorReporter&); + XMLErrorReporter& operator=(const XMLErrorReporter&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLFormatter.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLFormatter.hpp new file mode 100644 index 000000000000..af3845ce94d6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLFormatter.hpp @@ -0,0 +1,538 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLFORMATTER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLFORMATTER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLFormatTarget; +class XMLTranscoder; + +/** + * This class provides the basic formatting capabilities that are required + * to turn the Unicode based XML data from the parsers into a form that can + * be used on non-Unicode based systems, that is, into local or generic text + * encodings. + * + * A number of flags are provided to control whether various optional + * formatting operations are performed. + */ +class XMLPARSER_EXPORT XMLFormatter : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Class types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * EscapeFlags - Different styles of escape flags to control various formatting. + * + *

NoEscapes: + * No character needs to be escaped. Just write them out as is.

+ *

StdEscapes: + * The following characters need to be escaped:

+ * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
charactershould be escaped and written as
&&amp;
>&gt;
"&quot;
<&lt;
'&apos;
+ *

AttrEscapes: + * The following characters need to be escaped:

+ * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
charactershould be escaped and written as
&&amp;
>&gt;
"&quot;
+ *

CharEscapes: + * The following characters need to be escaped:

+ * + * + * + * + * + * + * + * + * + * + * + * + * + *
charactershould be escaped and written as
&&amp;
>&gt;
+ *

EscapeFlags_Count: + * Special value, do not use directly.

+ *

DefaultEscape: + * Special value, do not use directly.

+ * + */ + enum EscapeFlags + { + NoEscapes + , StdEscapes + , AttrEscapes + , CharEscapes + + // Special values, don't use directly + , EscapeFlags_Count + , DefaultEscape = 999 + }; + + /** + * UnRepFlags + * + * The unrepresentable flags that indicate how to react when a + * character cannot be represented in the target encoding. + * + *

UnRep_Fail: + * Fail the operation.

+ *

UnRep_CharRef: + * Display the unrepresented character as reference.

+ *

UnRep_Replace: + * Replace the unrepresented character with the replacement character.

+ *

DefaultUnRep: + * Special value, do not use directly.

+ * + */ + enum UnRepFlags + { + UnRep_Fail + , UnRep_CharRef + , UnRep_Replace + + , DefaultUnRep = 999 + }; + //@} + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructor and Destructor */ + //@{ + /** + * @param outEncoding the encoding for the formatted content. + * @param docVersion the document version. + * @param target the formatTarget where the formatted content is written to. + * @param escapeFlags the escape style for certain character. + * @param unrepFlags the reaction to unrepresentable character. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + XMLFormatter + ( + const XMLCh* const outEncoding + , const XMLCh* const docVersion + , XMLFormatTarget* const target + , const EscapeFlags escapeFlags = NoEscapes + , const UnRepFlags unrepFlags = UnRep_Fail + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XMLFormatter + ( + const char* const outEncoding + , const char* const docVersion + , XMLFormatTarget* const target + , const EscapeFlags escapeFlags = NoEscapes + , const UnRepFlags unrepFlags = UnRep_Fail + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XMLFormatter + ( + const XMLCh* const outEncoding + , XMLFormatTarget* const target + , const EscapeFlags escapeFlags = NoEscapes + , const UnRepFlags unrepFlags = UnRep_Fail + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XMLFormatter + ( + const char* const outEncoding + , XMLFormatTarget* const target + , const EscapeFlags escapeFlags = NoEscapes + , const UnRepFlags unrepFlags = UnRep_Fail + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~XMLFormatter(); + //@} + + + // ----------------------------------------------------------------------- + // Formatting methods + // ----------------------------------------------------------------------- + /** @name Formatting methods */ + //@{ + /** + * @param toFormat the string to be formatted + * @param count length of the string + * @param escapeFlags the escape style for formatting toFormat + * @param unrepFlags the reaction for any unrepresentable character in toFormat + * + */ + void formatBuf + ( + const XMLCh* const toFormat + , const XMLSize_t count + , const EscapeFlags escapeFlags = DefaultEscape + , const UnRepFlags unrepFlags = DefaultUnRep + ); + + /** + * @see formatBuf + */ + XMLFormatter& operator<< + ( + const XMLCh* const toFormat + ); + + XMLFormatter& operator<< + ( + const XMLCh toFormat + ); + + void writeBOM(const XMLByte* const toFormat + , const XMLSize_t count); + + //@} + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Getter methods */ + //@{ + /** + * @return return the encoding set for the formatted content + */ + + const XMLCh* getEncodingName() const; + + /** + * @return return constant transcoder used internally for transcoding the formatter conent + */ + inline const XMLTranscoder* getTranscoder() const; + + /** + * @return return the transcoder used internally for transcoding the formatter content + */ + inline XMLTranscoder* getTranscoder(); + + //@} + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** @name Setter methods */ + //@{ + /** + * @param newFlags set the escape style for the follow-on formatted content + */ + void setEscapeFlags + ( + const EscapeFlags newFlags + ); + + /** + * @param newFlags set the reaction for unrepresentable character + */ + void setUnRepFlags + ( + const UnRepFlags newFlags + ); + + /** + * @param newFlags set the escape style for the follow-on formatted content + * @see setEscapeFlags + */ + XMLFormatter& operator<< + ( + const EscapeFlags newFlags + ); + + /** + * @param newFlags set the reaction for unrepresentable character + * @see setUnRepFlags + */ + XMLFormatter& operator<< + ( + const UnRepFlags newFlags + ); + //@} + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Setter methods */ + //@{ + /** + * @return return the escape style for the formatted content + */ + EscapeFlags getEscapeFlags() const; + + /** + * @return return the reaction for unrepresentable character + */ + UnRepFlags getUnRepFlags() const; + //@} + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLFormatter(); + XMLFormatter(const XMLFormatter&); + XMLFormatter& operator=(const XMLFormatter&); + + + // ----------------------------------------------------------------------- + // Private class constants + // ----------------------------------------------------------------------- + enum Constants + { + kTmpBufSize = 16 * 1024 + }; + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + const XMLByte* getCharRef(XMLSize_t &count, + XMLByte* &ref, + const XMLCh * stdRef); + + void writeCharRef(const XMLCh &toWrite); + void writeCharRef(XMLSize_t toWrite); + + bool inEscapeList(const XMLFormatter::EscapeFlags escStyle + , const XMLCh toCheck); + + + XMLSize_t handleUnEscapedChars(const XMLCh * srcPtr, + const XMLSize_t count, + const UnRepFlags unrepFlags); + + void specialFormat + ( + const XMLCh* const toFormat + , const XMLSize_t count + , const EscapeFlags escapeFlags + ); + + + // ----------------------------------------------------------------------- + // Private, non-virtual methods + // + // fEscapeFlags + // The escape flags we were told to use in formatting. These are + // defaults set in the ctor, which can be overridden on a particular + // call. + // + // fOutEncoding + // This the name of the output encoding. Saved mainly for meaningful + // error messages. + // + // fTarget + // This is the target object for the formatting operation. + // + // fUnRepFlags + // The unrepresentable flags that indicate how to react when a + // character cannot be represented in the target encoding. + // + // fXCoder + // This the transcoder that we will use. It is created using the + // encoding name we were told to use. + // + // fTmpBuf + // An output buffer that we use to transcode chars into before we + // send them off to be output. + // + // fAposRef + // fAmpRef + // fGTRef + // fLTRef + // fQuoteRef + // These are character refs for the standard char refs, in the + // output encoding. They are faulted in as required, by transcoding + // them from fixed Unicode versions. + // + // fIsXML11 + // for performance reason, we do not store the actual version string + // and do the string comparison again and again. + // + // ----------------------------------------------------------------------- + EscapeFlags fEscapeFlags; + XMLCh* fOutEncoding; + XMLFormatTarget* fTarget; + UnRepFlags fUnRepFlags; + XMLTranscoder* fXCoder; + XMLByte fTmpBuf[kTmpBufSize + 4]; + XMLByte* fAposRef; + XMLSize_t fAposLen; + XMLByte* fAmpRef; + XMLSize_t fAmpLen; + XMLByte* fGTRef; + XMLSize_t fGTLen; + XMLByte* fLTRef; + XMLSize_t fLTLen; + XMLByte* fQuoteRef; + XMLSize_t fQuoteLen; + bool fIsXML11; + MemoryManager* fMemoryManager; +}; + + +class XMLPARSER_EXPORT XMLFormatTarget : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + virtual ~XMLFormatTarget() {} + + + // ----------------------------------------------------------------------- + // Virtual interface + // ----------------------------------------------------------------------- + virtual void writeChars + ( + const XMLByte* const toWrite + , const XMLSize_t count + , XMLFormatter* const formatter + ) = 0; + + virtual void flush() {}; + + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors and operators + // ----------------------------------------------------------------------- + XMLFormatTarget() {}; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLFormatTarget(const XMLFormatTarget&); + XMLFormatTarget& operator=(const XMLFormatTarget&); +}; + + +// --------------------------------------------------------------------------- +// XMLFormatter: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh* XMLFormatter::getEncodingName() const +{ + return fOutEncoding; +} + +inline const XMLTranscoder* XMLFormatter::getTranscoder() const +{ + return fXCoder; +} + +inline XMLTranscoder* XMLFormatter::getTranscoder() +{ + return fXCoder; +} + +// --------------------------------------------------------------------------- +// XMLFormatter: Setter methods +// --------------------------------------------------------------------------- +inline void XMLFormatter::setEscapeFlags(const EscapeFlags newFlags) +{ + fEscapeFlags = newFlags; +} + +inline void XMLFormatter::setUnRepFlags(const UnRepFlags newFlags) +{ + fUnRepFlags = newFlags; +} + + +inline XMLFormatter& XMLFormatter::operator<<(const EscapeFlags newFlags) +{ + fEscapeFlags = newFlags; + return *this; +} + +inline XMLFormatter& XMLFormatter::operator<<(const UnRepFlags newFlags) +{ + fUnRepFlags = newFlags; + return *this; +} + +// --------------------------------------------------------------------------- +// XMLFormatter: Getter methods +// --------------------------------------------------------------------------- +inline XMLFormatter::EscapeFlags XMLFormatter::getEscapeFlags() const +{ + return fEscapeFlags; +} + +inline XMLFormatter::UnRepFlags XMLFormatter::getUnRepFlags() const +{ + return fUnRepFlags; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLGrammarDescription.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLGrammarDescription.hpp new file mode 100644 index 000000000000..12e309d47d2b --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLGrammarDescription.hpp @@ -0,0 +1,105 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLGRAMMARDESCRIPTION_HPP) +#define XERCESC_INCLUDE_GUARD_XMLGRAMMARDESCRIPTION_HPP + +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT XMLGrammarDescription : public XSerializable, public XMemory +{ +public : + // ----------------------------------------------------------------------- + /** @name Virtual destructor for derived classes */ + // ----------------------------------------------------------------------- + //@{ + /** + * virtual destructor + * + */ + virtual ~XMLGrammarDescription(); + //@} + + // ----------------------------------------------------------------------- + /** @name The Grammar Description Interface */ + // ----------------------------------------------------------------------- + //@{ + /** + * getGrammarType + * + */ + virtual Grammar::GrammarType getGrammarType() const = 0; + + /** + * getGrammarKey + * + */ + virtual const XMLCh* getGrammarKey() const = 0; + //@} + + inline MemoryManager* getMemoryManager() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLGrammarDescription) + +protected : + // ----------------------------------------------------------------------- + /** Hidden Constructors */ + // ----------------------------------------------------------------------- + //@{ + XMLGrammarDescription(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); + //@} + +private : + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + XMLGrammarDescription(const XMLGrammarDescription& ); + XMLGrammarDescription& operator=(const XMLGrammarDescription& ); + //@} + + // ----------------------------------------------------------------------- + // + // fMemMgr: plugged-in (or defaulted-in) memory manager, + // not owned + // no reset after initialization + // allow derivatives to access directly + // + // ----------------------------------------------------------------------- + MemoryManager* const fMemMgr; +}; + +inline MemoryManager* XMLGrammarDescription::getMemoryManager() const +{ + return fMemMgr; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLGrammarPool.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLGrammarPool.hpp new file mode 100644 index 000000000000..ae9d654afae8 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLGrammarPool.hpp @@ -0,0 +1,322 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLGRAMMARPOOL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLGRAMMARPOOL_HPP + +#include +#include +#include +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +class Grammar; +class XMLGrammarDescription; +class DTDGrammar; +class SchemaGrammar; +class XMLDTDDescription; +class XMLSchemaDescription; +class XMLStringPool; +class BinInputStream; +class BinOutputStream; + +class XMLPARSER_EXPORT XMLGrammarPool : public XMemory +{ +public : + // ----------------------------------------------------------------------- + /** @name Virtual destructor for derived classes */ + // ----------------------------------------------------------------------- + //@{ + + /** + * virtual destructor + * + */ + virtual ~XMLGrammarPool(){}; + //@} + + // ----------------------------------------------------------------------- + /** @name The Grammar Pool Interface */ + // ----------------------------------------------------------------------- + //@{ + + /** + * cacheGrammar + * + * Provide the grammar pool with an opportunity + * to cache the given grammar. If the pool does not choose to do so, + * it should return false; otherwise, it should return true, so that + * the caller knows whether the grammar has been adopted. + * + * @param gramToCache the Grammar to be cached in the grammar pool + * @return true if the grammar pool has elected to cache the grammar (in which case + * it is assumed to have adopted it); false if it does not cache it + * + */ + virtual bool cacheGrammar(Grammar* const gramToCache) = 0; + + /** + * retrieveGrammar + * + * @param gramDesc the Grammar Description used to search for grammar + * cached in the grammar pool + * + */ + virtual Grammar* retrieveGrammar(XMLGrammarDescription* const gramDesc) = 0; + + + /** + * orphanGrammar + * + * grammar removed from the grammar pool and owned by the caller + * + * @param nameSpaceKey Key used to search for grammar in the grammar pool + * @return the grammar that was removed from the pool (0 if none) + */ + virtual Grammar* orphanGrammar(const XMLCh* const nameSpaceKey) = 0; + + + /** + * Get an enumeration of the cached Grammars in the Grammar pool + * + * @return enumeration of the cached Grammars in Grammar pool + */ + virtual RefHashTableOfEnumerator getGrammarEnumerator() const = 0; + + /** + * clear + * + * all grammars are removed from the grammar pool and deleted. + * @return true if the grammar pool was cleared. false if it did not. + */ + virtual bool clear() = 0; + + /** + * lockPool + * + * When this method is called by the application, the + * grammar pool should stop adding new grammars to the cache. + * This should result in the grammar pool being sharable + * among parsers operating in different threads. + * + */ + virtual void lockPool() = 0; + + /** + * unlockPool + * + * After this method has been called, the grammar pool implementation + * should return to its default behaviour when cacheGrammars(...) is called. + * One effect, depending on the underlying implementation, is that the grammar pool + * may no longer be thread-safe (even on read operations). + * + * For PSVI support any previous XSModel that was produced will be deleted. + */ + virtual void unlockPool() = 0; + + //@} + + // ----------------------------------------------------------------------- + /** @name Factory interface */ + // ----------------------------------------------------------------------- + //@{ + + /** + * createDTDGrammar + * + */ + virtual DTDGrammar* createDTDGrammar() = 0; + + /** + * createSchemaGrammar + * + */ + virtual SchemaGrammar* createSchemaGrammar() = 0; + + /** + * createDTDDescription + * + */ + virtual XMLDTDDescription* createDTDDescription(const XMLCh* const systemId) = 0; + /** + * createSchemaDescription + * + */ + virtual XMLSchemaDescription* createSchemaDescription(const XMLCh* const targetNamespace) = 0; + + //@} + + // ----------------------------------------------------------------------- + /** @name schema component model support */ + // ----------------------------------------------------------------------- + //@{ + + /*** + * Return an XSModel derived from the components of all SchemaGrammars + * in the grammar pool. If the pool is locked, this should + * be a thread-safe operation. + * + * NOTE: The function should NEVER return NULL. If there are no grammars in + * the pool it should return an XSModel containing the Schema for Schema. + * + * Calling getXSModel() on an unlocked grammar pool may result in the + * creation of a new XSModel with the old XSModel being deleted. + * The bool parameter will indicate if the XSModel was changed. + * + */ + virtual XSModel *getXSModel(bool& XSModelWasChanged) = 0; + + // @} + + // ----------------------------------------------------------------------- + /** @name Getter */ + // ----------------------------------------------------------------------- + //@{ + + /** + * getMemoryManager + * + */ + inline MemoryManager* getMemoryManager() + { + return fMemMgr; + } + + /** + * Return an XMLStringPool for use by validation routines. + * Implementations should not create a string pool on each call to this + * method, but should maintain one string pool for all grammars + * for which this pool is responsible. + */ + virtual XMLStringPool *getURIStringPool() = 0; + //@} + + // ----------------------------------------------------------------------- + /** serialization and deserialization support */ + // ----------------------------------------------------------------------- + + /*** + * + * 1. Context: Serialize/Deserialize All Grammars In One Session + * + * Since it is common that a declaration in one grammar may reference + * to definitions in other grammars, it is required to serialize those + * related (or interdependent) grammars in to one persistent data store + * in one serialization session (storing), and deserialize them from the + * persistent data store in one deserialization session (loading) back + * to the grammar pool. + * + * 2. Multiple serializations + * + * It is acceptable that client application requests more than one + * grammar serialization on a particular grammar pool, to track the + * different grammars cached, or for whatever reasons that client + * application is interested in. + * + * 3. Multiple deserializations + * + * Request for grammar deserialization either after the grammar pool has + * its own cached grammars, or request for more than one grammar + * deserialization, may cause undesired and unpredictable consequence + * and therefore client application shall be aware that individual + * implementationis may NOT support this. + * + * However it is strongly recommended that the client application requests + * no more than one grammar deserialization even a particular implementation + * may allow multiple deserializations. + * + * 4. Locking + * + * Both serialization and deserialization requires to lock the grammar pool + * before operation and unlock after operation. In the case the grammar pool + * is locked by a third party, the request for serialization/deserialization + * will NOT be entertained. + * + * 5. Versioning + * + * The Persistent data store has a version tag to be verified during + * deserialization, thus a grammar pool may decide if it supports + * a binary data created by a different release of Xerces. + * + * 6. Clean up + * + * The client application shall be aware that in the event of an exception + * thrown due to a corrupted data store during deserialization, implementation + * may not be able to clean up all resources allocated, and therefore it is + * client application's responsibility to clean up those unreleased resources. + * + * + */ + virtual void serializeGrammars(BinOutputStream* const) = 0; + virtual void deserializeGrammars(BinInputStream* const) = 0; + + /* + * Set/get a flag to not create XSAnnotations when deserializing the grammar. + * Defaults to false (create XSAnnotations when deserializing the grammar). + */ + inline void setIgnoreSerializedAnnotations(const bool flag) + { + fIgnoreSerializedAnnotations = flag; + }; + inline bool getIgnoreSerializedAnnotations() const + { + return fIgnoreSerializedAnnotations; + }; + +protected : + // ----------------------------------------------------------------------- + /** Hidden Constructors */ + // ----------------------------------------------------------------------- + //@{ + XMLGrammarPool(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager) + :fMemMgr(memMgr) + ,fIgnoreSerializedAnnotations(false) + { + }; + //@} + +private : + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + XMLGrammarPool(const XMLGrammarPool& ); + XMLGrammarPool& operator=(const XMLGrammarPool& ); + //@} + + // ----------------------------------------------------------------------- + // + // fMemMgr: plugged-in (or defaulted-in) memory manager + // not owned + // no reset after initialization + // + // ----------------------------------------------------------------------- + + MemoryManager* const fMemMgr; + bool fIgnoreSerializedAnnotations; + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLGrammarPoolImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLGrammarPoolImpl.hpp new file mode 100644 index 000000000000..877a1706ddb9 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLGrammarPoolImpl.hpp @@ -0,0 +1,279 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLGRAMMARPOOLIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLGRAMMARPOOLIMPL_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLSynchronizedStringPool; + +class XMLUTIL_EXPORT XMLGrammarPoolImpl : public XMLGrammarPool +{ +public : + // ----------------------------------------------------------------------- + /** @name constructor and destructor */ + // ----------------------------------------------------------------------- + //@{ + + XMLGrammarPoolImpl(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); + + ~XMLGrammarPoolImpl(); + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of Grammar Pool Interface */ + // ----------------------------------------------------------------------- + //@{ + + /** + * cacheGrammar + * + * Provide the grammar pool with an opportunity + * to cache the given grammar. If the pool does not choose to do so, + * it should return false; otherwise, it should return true, so that + * the caller knows whether the grammar has been adopted. + * + * @param gramToCache: the Grammar to be cached in the grammar pool + * @return true if the grammar pool has elected to cache the grammar (in which case + * it is assumed to have adopted it); false if it does not cache it + * + */ + virtual bool cacheGrammar(Grammar* const gramToCache); + + + /** + * retrieveGrammar + * + * @param gramDesc: the Grammar Description used to search for grammar + * cached in the grammar pool + * + */ + virtual Grammar* retrieveGrammar(XMLGrammarDescription* const gramDesc); + + + /** + * orphanGrammar + * + * grammar removed from the grammar pool and owned by the caller + * + * @param nameSpaceKey: Key used to search for grammar in the grammar pool + * + */ + virtual Grammar* orphanGrammar(const XMLCh* const nameSpaceKey); + + + /** + * Get an enumeration of the cached Grammars in the Grammar pool + * + * @return enumeration of the cached Grammars in Grammar pool + */ + virtual RefHashTableOfEnumerator getGrammarEnumerator() const; + + /** + * clear + * + * all grammars are removed from the grammar pool and deleted. + * @return true if the grammar pool was cleared. false if it did not. + */ + virtual bool clear(); + + /** + * lockPool + * + * When this method is called by the application, the + * grammar pool should stop adding new grammars to the cache. + */ + virtual void lockPool(); + + /** + * unlockPool + * + * After this method has been called, the grammar pool implementation + * should return to its default behaviour when cacheGrammars(...) is called. + * + * For PSVI support any previous XSModel that was produced will be deleted. + */ + virtual void unlockPool(); + + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of Factory interface */ + // ----------------------------------------------------------------------- + //@{ + + /** + * createDTDGrammar + * + */ + virtual DTDGrammar* createDTDGrammar(); + + /** + * createSchemaGrammar + * + */ + virtual SchemaGrammar* createSchemaGrammar(); + + /** + * createDTDDescription + * + */ + virtual XMLDTDDescription* createDTDDescription(const XMLCh* const systemId); + /** + * createSchemaDescription + * + */ + virtual XMLSchemaDescription* createSchemaDescription(const XMLCh* const targetNamespace); + //@} + + // ----------------------------------------------------------------------- + /** @name schema component model support */ + // ----------------------------------------------------------------------- + //@{ + + /*** + * Return an XSModel derived from the components of all SchemaGrammars + * in the grammar pool. If the pool is locked, this should + * be a thread-safe operation. + * + * NOTE: The function should NEVER return NULL. If there are no grammars in + * the pool it should return an XSModel containing the Schema for Schema. + * + * Calling getXSModel() on an unlocked grammar pool may result in the + * creation of a new XSModel with the old XSModel being deleted. + * The bool parameter will indicate if the XSModel was changed. + * + * In this implementation, when the pool is not locked a new XSModel will be + * computed each this time the pool is called if the pool has changed (and the + * previous one will be destroyed at that time). When the lockPool() + * method is called, an XSModel will be generated and returned whenever this method is called + * while the pool is in the locked state. This will be destroyed if the unlockPool() + * operation is called. The XSModel will not be serialized, + * but will be recreated if a deserialized pool is in the + * locked state. + * + */ + virtual XSModel *getXSModel(bool& XSModelWasChanged); + + // @} + // ----------------------------------------------------------------------- + /** @name Getter */ + // ----------------------------------------------------------------------- + //@{ + + /** + * Return an XMLStringPool for use by validation routines. + * Implementations should not create a string pool on each call to this + * method, but should maintain one string pool for all grammars + * for which this pool is responsible. + */ + virtual XMLStringPool *getURIStringPool(); + + // @} + + // ----------------------------------------------------------------------- + // serialization and deserialization support + // ----------------------------------------------------------------------- + + /*** + * + * Multiple serializations + * + * For multiple serializations, if the same file name is given, then the + * last result will be in the file (overwriting mode), if different file + * names are given, then there are multiple data stores for each serialization. + * + * Multiple deserializations + * + * Not supported + * + * Versioning + * + * Only binary data serialized with the current XercesC Version and + * SerializationLevel is supported. + * + * Clean up + * + * In the event of an exception thrown due to a corrupted data store during + * deserialization, this implementation may not be able to clean up all resources + * allocated, and therefore it is the client application's responsibility to + * clean up those unreleased resources. + * + * Coupling of Grammars and StringPool + * + * This implementation assumes that StringPool shall always be + * serialized/deserialized together with the grammars. In the case that such a + * coupling is not desired, client application can modify this behaviour by + * either derivate from this imlementation and overwrite the serializeGrammars() + * and/or deserializeGrammars() to decouple grammars and string pool, or + * Once deserializeGrammars() is done, insert another StringPool through + * setStringPool(). + * + * Client application shall be aware of the unpredicatable/undefined consequence + * of this decoupling. + */ + + virtual void serializeGrammars(BinOutputStream* const); + virtual void deserializeGrammars(BinInputStream* const); + +private: + + virtual void createXSModel(); + + void + cleanUp(); + + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + XMLGrammarPoolImpl(const XMLGrammarPoolImpl& ); + XMLGrammarPoolImpl& operator=(const XMLGrammarPoolImpl& ); + //@} + + // ----------------------------------------------------------------------- + // + // fGrammarRegistry: + // + // container + // fStringPool + // grammars need a string pool for URI -> int mappings + // fSynchronizedStringPool + // When the grammar pool is locked, provide a string pool + // that can be updated in a thread-safe manner. + // fLocked + // whether the pool has been locked + // + // ----------------------------------------------------------------------- + RefHashTableOf* fGrammarRegistry; + XMLStringPool* fStringPool; + XMLSynchronizedStringPool* fSynchronizedStringPool; + XSModel* fXSModel; + bool fLocked; + bool fXSModelIsValid; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLNotationDecl.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLNotationDecl.hpp new file mode 100644 index 000000000000..5f1e4acec6b2 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLNotationDecl.hpp @@ -0,0 +1,231 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLNOTATIONDECL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLNOTATIONDECL_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class represents the core information about a notation declaration + * that all validators must at least support. Each validator will create a + * derivative of this class which adds any information it requires for its + * own extra needs. + * + * At this common level, the information supported is the notation name + * and the public and sysetm ids indicated in the notation declaration. + */ +class XMLPARSER_EXPORT XMLNotationDecl : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors */ + //@{ + XMLNotationDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + XMLNotationDecl + ( + const XMLCh* const notName + , const XMLCh* const pubId + , const XMLCh* const sysId + , const XMLCh* const baseURI = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Destructor */ + //@{ + ~XMLNotationDecl(); + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t getId() const; + const XMLCh* getName() const; + const XMLCh* getPublicId() const; + const XMLCh* getSystemId() const; + const XMLCh* getBaseURI() const; + unsigned int getNameSpaceId() const; + MemoryManager* getMemoryManager() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setId(const XMLSize_t newId); + void setName + ( + const XMLCh* const notName + ); + void setPublicId(const XMLCh* const newId); + void setSystemId(const XMLCh* const newId); + void setBaseURI(const XMLCh* const newId); + void setNameSpaceId(const unsigned int newId); + + // ----------------------------------------------------------------------- + // Support named collection element semantics + // ----------------------------------------------------------------------- + const XMLCh* getKey() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLNotationDecl) + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLNotationDecl(const XMLNotationDecl&); + XMLNotationDecl& operator=(const XMLNotationDecl&); + + + // ----------------------------------------------------------------------- + // XMLNotationDecl: Private helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fId + // This is the unique id given to this notation decl. + // + // fName + // The notation's name, which identifies the type of notation it + // applies to. + // + // fPublicId + // The text of the notation's public id, if any. + // + // fSystemId + // The text of the notation's system id, if any. + // + // fBaseURI + // The text of the notation's base URI + // ----------------------------------------------------------------------- + XMLSize_t fId; + unsigned int fNameSpaceId; + XMLCh* fName; + XMLCh* fPublicId; + XMLCh* fSystemId; + XMLCh* fBaseURI; + MemoryManager* fMemoryManager; +}; + + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- +inline XMLSize_t XMLNotationDecl::getId() const +{ + return fId; +} + +inline const XMLCh* XMLNotationDecl::getName() const +{ + return fName; +} + +inline unsigned int XMLNotationDecl::getNameSpaceId() const +{ + return fNameSpaceId; +} + +inline const XMLCh* XMLNotationDecl::getPublicId() const +{ + return fPublicId; +} + +inline const XMLCh* XMLNotationDecl::getSystemId() const +{ + return fSystemId; +} + +inline const XMLCh* XMLNotationDecl::getBaseURI() const +{ + return fBaseURI; +} + +inline MemoryManager* XMLNotationDecl::getMemoryManager() const +{ + return fMemoryManager; +} + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- +inline void XMLNotationDecl::setId(const XMLSize_t newId) +{ + fId = newId; +} + +inline void XMLNotationDecl::setNameSpaceId(const unsigned int newId) +{ + fNameSpaceId = newId; +} + +inline void XMLNotationDecl::setPublicId(const XMLCh* const newId) +{ + if (fPublicId) + fMemoryManager->deallocate(fPublicId); + + fPublicId = XMLString::replicate(newId, fMemoryManager); +} + +inline void XMLNotationDecl::setSystemId(const XMLCh* const newId) +{ + if (fSystemId) + fMemoryManager->deallocate(fSystemId); + + fSystemId = XMLString::replicate(newId, fMemoryManager); +} + +inline void XMLNotationDecl::setBaseURI(const XMLCh* const newId) +{ + if (fBaseURI) + fMemoryManager->deallocate(fBaseURI); + + fBaseURI = XMLString::replicate(newId, fMemoryManager); +} + + +// --------------------------------------------------------------------------- +// XMLNotationDecl: Support named pool element semantics +// --------------------------------------------------------------------------- +inline const XMLCh* XMLNotationDecl::getKey() const +{ + return fName; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLPScanToken.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLPScanToken.hpp new file mode 100644 index 000000000000..f81639668bcc --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLPScanToken.hpp @@ -0,0 +1,151 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLPSCANTOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_XMLPSCANTOKEN_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLScanner; + +/** + * This simple class is used as a sanity check when the scanner is used to + * do progressive parsing. It insures that things are not done out of + * sequence and that sequences of scan calls are made correctly to the + * right scanner instances. + * + * To client code, it is just a magic cookie which is obtained when a + * progressive parse is begun, and which is passed back in on each subsequent + * call of the progressive parse. + */ +class XMLPARSER_EXPORT XMLPScanToken : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructor */ + //@{ + XMLPScanToken(); + XMLPScanToken(const XMLPScanToken& toCopy); + //@} + + /** @name Destructor */ + //@{ + ~XMLPScanToken(); + //@} + + + // ----------------------------------------------------------------------- + // Public operators + // ----------------------------------------------------------------------- + XMLPScanToken& operator=(const XMLPScanToken& toCopy); + + +protected : + // ----------------------------------------------------------------------- + // XMLScanner is our friend, can you say friend? Sure... + // ----------------------------------------------------------------------- + friend class XMLScanner; + + + // ----------------------------------------------------------------------- + // Hidden methods for use by XMLScanner + // ----------------------------------------------------------------------- + void set + ( + const XMLUInt32 scannerId + , const XMLUInt32 sequenceId + ); + + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fScannerId + // This field is set to the id of the scanner, to catch problems + // where a token is gotten from one scanner and passed to another. + // Each scanner is assigned an incrementing id. + // + // fSequenceId + // In order to avoid problems such as calling scanNext() without + // a call to scanFirst() and such, this value is set when scanFirst() + // is called and matches this token to the current sequence id of + // the scanner. + // ----------------------------------------------------------------------- + XMLUInt32 fScannerId; + XMLUInt32 fSequenceId; +}; + + +// --------------------------------------------------------------------------- +// XMLPScanToken: Constructors and Operators +// --------------------------------------------------------------------------- +inline XMLPScanToken::XMLPScanToken() : + + fScannerId(0) + , fSequenceId(0) +{ +} + +inline XMLPScanToken::XMLPScanToken(const XMLPScanToken& toCopy) : + XMemory(toCopy) + , fScannerId(toCopy.fScannerId) + , fSequenceId(toCopy.fSequenceId) +{ +} + +inline XMLPScanToken::~XMLPScanToken() +{ +} + + +// --------------------------------------------------------------------------- +// XMLPScanToken: Public operators +// --------------------------------------------------------------------------- +inline XMLPScanToken& XMLPScanToken::operator=(const XMLPScanToken& toCopy) +{ + if (this == &toCopy) + return *this; + + fScannerId = toCopy.fScannerId; + fSequenceId = toCopy.fSequenceId; + + return *this; +} + + +// --------------------------------------------------------------------------- +// XMLPScanToken: Hidden methods +// --------------------------------------------------------------------------- +inline void XMLPScanToken::set( const XMLUInt32 scannerId + , const XMLUInt32 sequenceId) +{ + fScannerId = scannerId; + fSequenceId = sequenceId; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLRecognizer.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLRecognizer.hpp new file mode 100644 index 000000000000..255e5b2bb9b8 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLRecognizer.hpp @@ -0,0 +1,138 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLRECOGNIZER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLRECOGNIZER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class provides some simple code to recognize the encodings of + * XML files. This recognition only does very basic sensing of the encoding + * in a broad sense. Basically its just enough to let us get started and + * read the XMLDecl line. The scanner, once it reads the XMLDecl, will + * tell the reader any actual encoding string it found and the reader can + * update itself to be more specific at that point. + */ +class XMLPARSER_EXPORT XMLRecognizer +{ +public : + // ----------------------------------------------------------------------- + // Class types + // + // This enum represents the various encoding families that we have to + // deal with individually at the scanner level. This does not indicate + // the exact encoding, just the rough family that would let us scan + // the XML/TextDecl to find the encoding string. + // + // The 'L's and 'B's stand for little or big endian. + // + // OtherEncoding means that its some transcoder based encoding, i.e. not + // one of the ones that we do internally. Its a special case and should + // never be used directly outside of the reader. + // + // NOTE: Keep this in sync with the name map array in the Cpp file!! + // ----------------------------------------------------------------------- + enum Encodings + { + EBCDIC = 0 + , UCS_4B = 1 + , UCS_4L = 2 + , US_ASCII = 3 + , UTF_8 = 4 + , UTF_16B = 5 + , UTF_16L = 6 + , XERCES_XMLCH = 7 + + , Encodings_Count + , Encodings_Min = EBCDIC + , Encodings_Max = XERCES_XMLCH + + , OtherEncoding = 999 + }; + + + // ----------------------------------------------------------------------- + // Public, const static data + // + // These are the byte sequences for each of the encodings that we can + // auto sense, and their lengths. + // ----------------------------------------------------------------------- + static const char fgASCIIPre[]; + static const XMLSize_t fgASCIIPreLen; + static const XMLByte fgEBCDICPre[]; + static const XMLSize_t fgEBCDICPreLen; + static const XMLByte fgUTF16BPre[]; + static const XMLByte fgUTF16LPre[]; + static const XMLSize_t fgUTF16PreLen; + static const XMLByte fgUCS4BPre[]; + static const XMLByte fgUCS4LPre[]; + static const XMLSize_t fgUCS4PreLen; + static const char fgUTF8BOM[]; + static const XMLSize_t fgUTF8BOMLen; + + + // ----------------------------------------------------------------------- + // Encoding recognition methods + // ----------------------------------------------------------------------- + static Encodings basicEncodingProbe + ( + const XMLByte* const rawBuffer + , const XMLSize_t rawByteCount + ); + + static Encodings encodingForName + ( + const XMLCh* const theEncName + ); + + static const XMLCh* nameForEncoding(const Encodings theEncoding + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + +protected : + // ----------------------------------------------------------------------- + // Unimplemented constructors, operators, and destructor + // + // This class is effectively being used as a namespace for some static + // methods. + // + // (these functions are protected rather than private only to get rid of + // some annoying compiler warnings.) + // + // ----------------------------------------------------------------------- + XMLRecognizer(); + ~XMLRecognizer(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLRecognizer(const XMLRecognizer&); + XMLRecognizer& operator=(const XMLRecognizer&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLRefInfo.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLRefInfo.hpp new file mode 100644 index 000000000000..f2c71371d47d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLRefInfo.hpp @@ -0,0 +1,181 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLREFINFO_HPP) +#define XERCESC_INCLUDE_GUARD_XMLREFINFO_HPP + +#include +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class provides a simple means to track ID Ref usage. Since id/idref + * semantics are part of XML 1.0, any validator will likely to be able to + * track them. Instances of this class represent a reference and two markers, + * one for its being declared and another for its being used. When the + * document is done, one can look at each instance and, if used but not + * declared, its an error. + * + * The getKey() method allows it to support keyed collection semantics. It + * returns the referenced name, so these objects will be stored via the hash + * of the name. This name will either be a standard QName if namespaces are + * not enabled/supported by the validator, or it will be in the form + * {url}name if namespace processing is enabled. + */ +class XMLPARSER_EXPORT XMLRefInfo : public XSerializable, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructor */ + //@{ + XMLRefInfo + ( + const XMLCh* const refName + , const bool fDeclared = false + , const bool fUsed = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Destructor */ + //@{ + ~XMLRefInfo(); + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getDeclared() const; + const XMLCh* getRefName() const; + bool getUsed() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setDeclared(const bool newValue); + void setUsed(const bool newValue); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLRefInfo) + + XMLRefInfo + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLRefInfo(const XMLRefInfo&); + XMLRefInfo& operator=(XMLRefInfo&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fDeclared + // The name was declared somewhere as an ID attribute. + // + // fRefName + // The name of the ref that this object represents. This is not a + // name of the attribute, but of the value of an ID or IDREF attr + // in content. + // + // fUsed + // The name was used somewhere in an IDREF/IDREFS attribute. If this + // is true, but fDeclared is false, then the ref does not refer to + // a declared ID. + // ----------------------------------------------------------------------- + bool fDeclared; + bool fUsed; + XMLCh* fRefName; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// XMLRefInfo: Constructors and Destructor +// --------------------------------------------------------------------------- +inline XMLRefInfo::XMLRefInfo( const XMLCh* const refName + , const bool declared + , const bool used + , MemoryManager* const manager) : + fDeclared(declared) + , fUsed(used) + , fRefName(0) + , fMemoryManager(manager) +{ + fRefName = XMLString::replicate(refName, fMemoryManager); +} + +inline XMLRefInfo::~XMLRefInfo() +{ + fMemoryManager->deallocate(fRefName); +} + + +// --------------------------------------------------------------------------- +// XMLRefInfo: Getter methods +// --------------------------------------------------------------------------- +inline bool XMLRefInfo::getDeclared() const +{ + return fDeclared; +} + +inline const XMLCh* XMLRefInfo::getRefName() const +{ + return fRefName; +} + +inline bool XMLRefInfo::getUsed() const +{ + return fUsed; +} + + +// --------------------------------------------------------------------------- +// XMLRefInfo: Setter methods +// --------------------------------------------------------------------------- +inline void XMLRefInfo::setDeclared(const bool newValue) +{ + fDeclared = newValue; +} + +inline void XMLRefInfo::setUsed(const bool newValue) +{ + fUsed = newValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLSchemaDescription.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLSchemaDescription.hpp new file mode 100644 index 000000000000..f0c2920888ce --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLSchemaDescription.hpp @@ -0,0 +1,178 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLSCHEMADESCRIPTION_HPP) +#define XERCESC_INCLUDE_GUARD_XMLSCHEMADESCRIPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +typedef const XMLCh* const LocationHint; + +class XMLPARSER_EXPORT XMLSchemaDescription : public XMLGrammarDescription +{ +public : + // ----------------------------------------------------------------------- + /** @name Virtual destructor for derived classes */ + // ----------------------------------------------------------------------- + //@{ + /** + * virtual destructor + * + */ + virtual ~XMLSchemaDescription(); + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of Grammar Description Interface */ + // ----------------------------------------------------------------------- + //@{ + /** + * getGrammarType + * + */ + virtual Grammar::GrammarType getGrammarType() const + { + return Grammar::SchemaGrammarType; + } + //@} + + // ----------------------------------------------------------------------- + /** @name The SchemaDescription Interface */ + // ----------------------------------------------------------------------- + //@{ + + enum ContextType + { + CONTEXT_INCLUDE, + CONTEXT_REDEFINE, + CONTEXT_IMPORT, + CONTEXT_PREPARSE, + CONTEXT_INSTANCE, + CONTEXT_ELEMENT, + CONTEXT_ATTRIBUTE, + CONTEXT_XSITYPE, + CONTEXT_UNKNOWN + }; + + /** + * getContextType + * + */ + virtual ContextType getContextType() const = 0; + + /** + * getTargetNamespace + * + */ + virtual const XMLCh* getTargetNamespace() const = 0; + + /** + * getLocationHints + * + */ + virtual const RefArrayVectorOf* getLocationHints() const = 0; + + /** + * getTriggeringComponent + * + */ + virtual const QName* getTriggeringComponent() const = 0; + + /** + * getenclosingElementName + * + */ + virtual const QName* getEnclosingElementName() const = 0; + + /** + * getAttributes + * + */ + virtual const XMLAttDef* getAttributes() const = 0; + + /** + * setContextType + * + */ + virtual void setContextType(ContextType) = 0; + + /** + * setTargetNamespace + * + */ + virtual void setTargetNamespace(const XMLCh* const) = 0; + + /** + * setLocationHints + * + */ + virtual void setLocationHints(const XMLCh* const) = 0; + + /** + * setTriggeringComponent + * + */ + virtual void setTriggeringComponent(QName* const) = 0; + + /** + * getenclosingElementName + * + */ + virtual void setEnclosingElementName(QName* const) = 0; + + /** + * setAttributes + * + */ + virtual void setAttributes(XMLAttDef* const) = 0; + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLSchemaDescription) + +protected : + // ----------------------------------------------------------------------- + /** Hidden Constructors */ + // ----------------------------------------------------------------------- + //@{ + XMLSchemaDescription(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); + //@} + +private : + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + XMLSchemaDescription(const XMLSchemaDescription& ); + XMLSchemaDescription& operator=(const XMLSchemaDescription& ); + //@} + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLValidator.hpp new file mode 100644 index 000000000000..959483ce1ad6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLValidator.hpp @@ -0,0 +1,426 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLVALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ReaderMgr; +class XMLBufferMgr; +class XMLElementDecl; +class XMLScanner; +class Grammar; + + +/** + * This abstract class provides the interface for all validators. This is + * the simple amount of API that all validators must honor, in order for + * the scanner to use them to do validation. All validators will actually + * contain much more functionality than is accessible via this common API, + * but that functionality requires that you know what type of validator you + * are dealing with. + * + * Basically, at this level, the primary concern is to be able to query + * core information about elements and attributes. Adding decls to the + * validator requires that you go through the derived interface because they + * all have their own decl types. At this level, we can return information + * via the base decl classes, from which each validator derives its own + * decl classes. + */ +class XMLPARSER_EXPORT XMLValidator : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors are hidden, just the virtual destructor is exposed + // ----------------------------------------------------------------------- + + /** @name Destructor */ + //@{ + + /** + * The derived class should clean up its allocated data, then this class + * will do the same for data allocated at this level. + */ + virtual ~XMLValidator() + { + } + //@} + + + // ----------------------------------------------------------------------- + // The virtual validator interface + // ----------------------------------------------------------------------- + + /** @name Virtual validator interface */ + //@{ + + /** + * The derived class should look up its declaration of the passed element + * from its element pool. It should then use the content model description + * contained in that element declaration to validate that the passed list + * of child elements are valid for that content model. The count can be + * zero, indicating no child elements. + * + * Note that whitespace and text content are not validated here. Those are + * handled by the scanner. So only element ids are provided here. + * + * @param elemDecl The element whose content is to be checked. + * + * @param children An array of element QName which represent the elements + * found within the parent element, i.e. the content + * to be validated. + * + * @param childCount The number of elements in the childIds array. It can + * be zero if the element had none. + * + * @param indexFailingChild On return, it will contain the index of the + * children failing validation, if the retun value + * is false + * + */ + virtual bool checkContent + ( + XMLElementDecl* const elemDecl + , QName** const children + , XMLSize_t childCount + , XMLSize_t* indexFailingChild + ) = 0; + + /** + * The derived class should fault in the passed XMLAttr value. It should + * use the passeed attribute definition (which is passed via the base + * type so it must often be downcast to the appropriate type for the + * derived validator class), to fill in the passed attribute. This is done + * as a performance enhancement since the derived class has more direct + * access to the information. + */ + virtual void faultInAttr + ( + XMLAttr& toFill + , const XMLAttDef& attDef + ) const = 0; + + /** + * This method is called by the scanner after a Grammar is scanned. + */ + virtual void preContentValidation(bool reuseGrammar, + bool validateDefAttr = false) = 0; + + /** + * This method is called by the scanner after the parse has completed. It + * gives the validator a chance to check certain things that can only be + * checked after the whole document has been parsed, such as referential + * integrity of ID/IDREF pairs and so forth. The validator should just + * issue errors for any problems it finds. + */ + virtual void postParseValidation() = 0; + + /** + * This method is called by the scanner before a new document is about + * to start. It gives the validator a change to reset itself in preparation + * for another validation pass. + */ + virtual void reset() = 0; + + /** + * The derived class should return a boolean that indicates whether it + * requires namespace processing or not. Some do and some allow it to be + * optional. This flag is used to control whether the client code's + * requests to disable namespace processing can be honored or not. + */ + virtual bool requiresNamespaces() const = 0; + + /** + * The derived class should apply any rules to the passed attribute value + * that are above and beyond those defined by XML 1.0. The scanner itself + * will impose XML 1.0 rules, based on the type of the attribute. This + * will generally be used to check things such as range checks and other + * datatype related validation. + * + * If the value breaks any rules as defined by the derived class, it + * should just issue errors as usual. + */ + virtual void validateAttrValue + ( + const XMLAttDef* attDef + , const XMLCh* const attrValue + , bool preValidation = false + , const XMLElementDecl* elemDecl = 0 + ) = 0; + + /** + * The derived class should apply any rules to the passed element decl + * that are above and beyond those defined by XML 1.0. + * + * If the value breaks any rules as defined by the derived class, it + * should just issue errors as usual. + */ + virtual void validateElement + ( + const XMLElementDecl* elemDef + ) = 0; + + /** + * Retrieve the Grammar used + */ + virtual Grammar* getGrammar() const =0; + + /** + * Set the Grammar + */ + virtual void setGrammar(Grammar* aGrammar) =0; + + + //@} + + // ----------------------------------------------------------------------- + // Virtual DTD handler interface. + // ----------------------------------------------------------------------- + + /** @name Virtual DTD handler interface */ + //@{ + + /** + * This method allows the scanner to ask the validator if it handles + * DTDs or not. + */ + virtual bool handlesDTD() const = 0; + + // ----------------------------------------------------------------------- + // Virtual Schema handler interface. + // ----------------------------------------------------------------------- + + /** @name Virtual Schema handler interface */ + + /** + * This method allows the scanner to ask the validator if it handles + * Schema or not. + */ + virtual bool handlesSchema() const = 0; + + //@} + + // ----------------------------------------------------------------------- + // Setter methods + // + // setScannerInfo() is called by the scanner to tell the validator + // about the stuff it needs to have access to. + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + + /** + * @param owningScanner This is a pointer to the scanner to which the + * validator belongs. The validator will often + * need to query state data from the scanner. + * + * @param readerMgr This is a pointer to the reader manager that is + * being used by the scanner. + * + * @param bufMgr This is the buffer manager of the scanner. This + * is provided as a convenience so that the validator + * doesn't have to create its own buffer manager + * during the parse process. + */ + void setScannerInfo + ( + XMLScanner* const owningScanner + , ReaderMgr* const readerMgr + , XMLBufferMgr* const bufMgr + ); + + /** + * This method is called to set an error reporter on the validator via + * which it will report any errors it sees during parsing or validation. + * This is generally called by the owning scanner. + * + * @param errorReporter A pointer to the error reporter to use. This + * is not adopted, just referenced so the caller + * remains responsible for its cleanup, if any. + */ + void setErrorReporter + ( + XMLErrorReporter* const errorReporter + ); + + //@} + + + // ----------------------------------------------------------------------- + // Error emitter methods + // ----------------------------------------------------------------------- + + /** @name Error emittor methods */ + //@{ + + /** + * This call is a convenience by which validators can emit errors. Most + * of the grunt work of loading the text, getting the current source + * location, ect... is handled here. + * + * If the loaded text has replacement parameters, then text strings can be + * passed. These will be used to replace the tokens {0}, {1}, {2}, and {3} + * in the order passed. So text1 will replace {0}, text2 will replace {1}, + * and so forth. + * + * textX Up to four replacement parameters. They can be provided + * as either XMLCh strings, or local code page strings which + * will be transcoded internally. + * + * @param toEmit The error code to emit. it must be one of the defined + * validator error codes. + * + */ + void emitError(const XMLValid::Codes toEmit); + void emitError + ( + const XMLValid::Codes toEmit + , const XMLCh* const text1 + , const XMLCh* const text2 = 0 + , const XMLCh* const text3 = 0 + , const XMLCh* const text4 = 0 + ); + void emitError + ( + const XMLValid::Codes toEmit + , const char* const text1 + , const char* const text2 = 0 + , const char* const text3 = 0 + , const char* const text4 = 0 + ); + void emitError + ( + const XMLValid::Codes toEmit + , const XMLExcepts::Codes originalErrorCode + , const XMLCh* const text1 = 0 + , const XMLCh* const text2 = 0 + , const XMLCh* const text3 = 0 + , const XMLCh* const text4 = 0 + + ); + + //@} + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XMLValidator + ( + XMLErrorReporter* const errReporter = 0 + ); + + + // ----------------------------------------------------------------------- + // Protected getters + // ----------------------------------------------------------------------- + const XMLBufferMgr* getBufMgr() const; + XMLBufferMgr* getBufMgr(); + const ReaderMgr* getReaderMgr() const; + ReaderMgr* getReaderMgr(); + const XMLScanner* getScanner() const; + XMLScanner* getScanner(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented Constructors and Operators + // ----------------------------------------------------------------------- + XMLValidator(const XMLValidator&); + XMLValidator& operator=(const XMLValidator&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fErrorReporter + // The error reporter we are to use, if any. + // + // ----------------------------------------------------------------------- + XMLBufferMgr* fBufMgr; + XMLErrorReporter* fErrorReporter; + ReaderMgr* fReaderMgr; + XMLScanner* fScanner; +}; + + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- +inline void +XMLValidator::setScannerInfo(XMLScanner* const owningScanner + , ReaderMgr* const readerMgr + , XMLBufferMgr* const bufMgr) +{ + // We don't own any of these, we just reference them + fScanner = owningScanner; + fReaderMgr = readerMgr; + fBufMgr = bufMgr; +} + +inline void +XMLValidator::setErrorReporter(XMLErrorReporter* const errorReporter) +{ + fErrorReporter = errorReporter; +} + + +// --------------------------------------------------------------------------- +// XMLValidator: Protected getter +// --------------------------------------------------------------------------- +inline const XMLBufferMgr* XMLValidator::getBufMgr() const +{ + return fBufMgr; +} + +inline XMLBufferMgr* XMLValidator::getBufMgr() +{ + return fBufMgr; +} + +inline const ReaderMgr* XMLValidator::getReaderMgr() const +{ + return fReaderMgr; +} + +inline ReaderMgr* XMLValidator::getReaderMgr() +{ + return fReaderMgr; +} + +inline const XMLScanner* XMLValidator::getScanner() const +{ + return fScanner; +} + +inline XMLScanner* XMLValidator::getScanner() +{ + return fScanner; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/XMLValidityCodes.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLValidityCodes.hpp new file mode 100644 index 000000000000..aed00fbee399 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/XMLValidityCodes.hpp @@ -0,0 +1,147 @@ +// This file is generated, don't edit it!! + +#if !defined(XERCESC_INCLUDE_GUARD_ERRHEADER_XMLValid) +#define XERCESC_INCLUDE_GUARD_ERRHEADER_XMLValid + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLValid +{ +public : + enum Codes + { + NoError = 0 + , E_LowBounds = 1 + , ElementNotDefined = 2 + , AttNotDefined = 3 + , NotationNotDeclared = 4 + , RootElemNotLikeDocType = 5 + , RequiredAttrNotProvided = 6 + , ElementNotValidForContent = 7 + , BadIDAttrDefType = 8 + , InvalidEmptyAttValue = 9 + , ElementAlreadyExists = 10 + , MultipleIdAttrs = 11 + , ReusedIDValue = 12 + , IDNotDeclared = 13 + , UnknownNotRefAttr = 14 + , UndeclaredElemInDocType = 15 + , EmptyNotValidForContent = 16 + , AttNotDefinedForElement = 17 + , BadEntityRefAttr = 18 + , UnknownEntityRefAttr = 19 + , ColonNotValidWithNS = 20 + , NotEnoughElemsForCM = 21 + , NoCharDataInCM = 22 + , DoesNotMatchEnumList = 23 + , AttrValNotName = 24 + , NoMultipleValues = 25 + , NotSameAsFixedValue = 26 + , RepElemInMixed = 27 + , FeatureUnsupported = 28 + , GroupContentRestricted = 29 + , UnknownBaseDatatype = 30 + , NoContentForRef = 31 + , DatatypeError = 32 + , ProhibitedAttributePresent = 33 + , IllegalXMLSpace = 34 + , WrongTargetNamespace = 35 + , SimpleTypeHasChild = 36 + , NoDatatypeValidatorForSimpleType = 37 + , GrammarNotFound = 38 + , DisplayErrorMessage = 39 + , NillNotAllowed = 40 + , NilAttrNotEmpty = 41 + , FixedDifferentFromActual = 42 + , NoDatatypeValidatorForAttribute = 43 + , GenericError = 44 + , ElementNotQualified = 45 + , ElementNotUnQualified = 46 + , VC_IllegalRefInStandalone = 47 + , NoDefAttForStandalone = 48 + , NoAttNormForStandalone = 49 + , NoWSForStandalone = 50 + , VC_EntityNotFound = 51 + , PartialMarkupInPE = 52 + , DatatypeValidationFailure = 53 + , UniqueParticleAttributionFail = 54 + , NoAbstractInXsiType = 55 + , NoDirectUseAbstractElement = 56 + , NoUseAbstractType = 57 + , BadXsiType = 58 + , NonDerivedXsiType = 59 + , ElemNoSubforBlock = 60 + , TypeNoSubforBlock = 61 + , AttributeNotQualified = 62 + , AttributeNotUnQualified = 63 + , IC_FieldMultipleMatch = 64 + , IC_UnknownField = 65 + , IC_AbsentKeyValue = 66 + , IC_KeyNotEnoughValues = 67 + , IC_KeyMatchesNillable = 68 + , IC_DuplicateUnique = 69 + , IC_DuplicateKey = 70 + , IC_KeyRefOutOfScope = 71 + , IC_KeyNotFound = 72 + , NonWSContent = 73 + , EmptyElemNotationAttr = 74 + , EmptyElemHasContent = 75 + , ElemOneNotationAttr = 76 + , AttrDupToken = 77 + , ElemChildrenHasInvalidWS = 78 + , E_HighBounds = 79 + , W_LowBounds = 80 + , W_HighBounds = 81 + , F_LowBounds = 82 + , F_HighBounds = 83 + }; + + static bool isFatal(const XMLValid::Codes toCheck) + { + return ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)); + } + + static bool isWarning(const XMLValid::Codes toCheck) + { + return ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)); + } + + static bool isError(const XMLValid::Codes toCheck) + { + return ((toCheck >= E_LowBounds) && (toCheck <= E_HighBounds)); + } + + static XMLErrorReporter::ErrTypes errorType(const XMLValid::Codes toCheck) + { + if ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)) + return XMLErrorReporter::ErrType_Warning; + else if ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)) + return XMLErrorReporter::ErrType_Fatal; + else if ((toCheck >= E_LowBounds) && (toCheck <= E_HighBounds)) + return XMLErrorReporter::ErrType_Error; + return XMLErrorReporter::ErrTypes_Unknown; + } + static DOMError::ErrorSeverity DOMErrorType(const XMLValid::Codes toCheck) + { + if ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)) + return DOMError::DOM_SEVERITY_WARNING; + else if ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)) + return DOMError::DOM_SEVERITY_FATAL_ERROR; + else return DOMError::DOM_SEVERITY_ERROR; + } + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLValid(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/PSVIAttribute.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/PSVIAttribute.hpp new file mode 100644 index 000000000000..ecc2100818b9 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/PSVIAttribute.hpp @@ -0,0 +1,179 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PSVIATTRIBUTE_HPP) +#define XERCESC_INCLUDE_GUARD_PSVIATTRIBUTE_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Represent the PSVI contributions for one attribute information item. + * This is *always* owned by the scanner/parser object from which + * it is obtained. The validator will specify + * under what conditions it may be relied upon to have meaningful contents. + */ + +// forward declarations +class XSAttributeDeclaration; + +class XMLPARSER_EXPORT PSVIAttribute : public PSVIItem +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param manager The configurable memory manager + */ + PSVIAttribute( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@}; + + /** @name Destructor */ + //@{ + ~PSVIAttribute(); + //@} + + //--------------------- + /** @name PSVIAttribute methods */ + + //@{ + + /** + * An item isomorphic to the attribute declaration used to validate + * this attribute. + * + * @return an attribute declaration + */ + XSAttributeDeclaration *getAttributeDeclaration(); + + /** + * An item isomorphic to the type definition used to validate this element. + * + * @return a type declaration + */ + XSTypeDefinition *getTypeDefinition(); + + /** + * If and only if that type definition is a simple type definition + * with {variety} union, or a complex type definition whose {content type} + * is a simple thype definition with {variety} union, then an item isomorphic + * to that member of the union's {member type definitions} which actually + * validated the element item's normalized value. + * + * @return a simple type declaration + */ + XSSimpleTypeDefinition *getMemberTypeDefinition(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + /** + * reset this object. Intended to be called by + * the implementation. + */ + void reset( + const XMLCh * const valContext + , PSVIItem::VALIDITY_STATE state + , PSVIItem::ASSESSMENT_TYPE assessmentType + , XSSimpleTypeDefinition * validatingType + , XSSimpleTypeDefinition * memberType + , const XMLCh * const defaultValue + , const bool isSpecified + , XSAttributeDeclaration * attrDecl + , DatatypeValidator * dv + ); + + /** + * set the schema normalized value (and + * implicitly the canonical value) of this object; intended to be used + * by the implementation. + */ + void setValue(const XMLCh * const normalizedValue); + + /** + * set VALIDITY_STATE to specified value; intended to be + * called by implementation. + */ + void updateValidity(VALIDITY_STATE newValue); + + //@} + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + PSVIAttribute(const PSVIAttribute&); + PSVIAttribute & operator=(const PSVIAttribute &); + + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fAttributeDecl + // attribute declaration component that validated this attribute + // fDV + // implementation-specific datatype validator used to validate this attribute + XSAttributeDeclaration * fAttributeDecl; + DatatypeValidator * fDV; +}; +inline PSVIAttribute::~PSVIAttribute() +{ + fMemoryManager->deallocate((void *)fCanonicalValue); +} + +inline XSAttributeDeclaration *PSVIAttribute::getAttributeDeclaration() +{ + return fAttributeDecl; +} + +inline XSTypeDefinition* PSVIAttribute::getTypeDefinition() +{ + return fType; +} + +inline XSSimpleTypeDefinition* PSVIAttribute::getMemberTypeDefinition() +{ + return fMemberType; +} + +inline void PSVIAttribute::updateValidity(VALIDITY_STATE newValue) +{ + fValidityState = newValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/PSVIAttributeList.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/PSVIAttributeList.hpp new file mode 100644 index 000000000000..2e0c59e87b47 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/PSVIAttributeList.hpp @@ -0,0 +1,215 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PSVIATTRIBUTE_LIST_HPP) +#define XERCESC_INCLUDE_GUARD_PSVIATTRIBUTE_LIST_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * A container for the PSVI contributions to attributes that occur + * on a particular element. + * This is always owned by the parser/validator from + * which it is obtained. The parser/validator will specify + * under what conditions it may be relied upon to have meaningful contents. + */ + +class XMLPARSER_EXPORT PSVIAttributeStorage : public XMemory +{ +public: + PSVIAttributeStorage() : + fPSVIAttribute(0) + , fAttributeName(0) + , fAttributeNamespace(0) + { + } + + ~PSVIAttributeStorage() + { + delete fPSVIAttribute; + } + + PSVIAttribute* fPSVIAttribute; + const XMLCh* fAttributeName; + const XMLCh* fAttributeNamespace; +}; + +class XMLPARSER_EXPORT PSVIAttributeList : public XMemory +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param manager The configurable memory manager + */ + PSVIAttributeList( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@}; + + /** @name Destructor */ + //@{ + ~PSVIAttributeList(); + //@} + + //--------------------- + /** @name PSVIAttributeList methods */ + + //@{ + + /* + * Get the number of attributes whose PSVI contributions + * are contained in this list. + */ + XMLSize_t getLength() const; + + /* + * Get the PSVI contribution of attribute at position i + * in this list. Indices start from 0. + * @param index index from which the attribute PSVI contribution + * is to come. + * @return PSVIAttribute containing the attributes PSVI contributions; + * null is returned if the index is out of range. + */ + PSVIAttribute *getAttributePSVIAtIndex(const XMLSize_t index); + + /* + * Get local part of attribute name at position index in the list. + * Indices start from 0. + * @param index index from which the attribute name + * is to come. + * @return local part of the attribute's name; null is returned if the index + * is out of range. + */ + const XMLCh *getAttributeNameAtIndex(const XMLSize_t index); + + /* + * Get namespace of attribute at position index in the list. + * Indices start from 0. + * @param index index from which the attribute namespace + * is to come. + * @return namespace of the attribute; + * null is returned if the index is out of range. + */ + const XMLCh *getAttributeNamespaceAtIndex(const XMLSize_t index); + + /* + * Get the PSVI contribution of attribute with given + * local name and namespace. + * @param attrName local part of the attribute's name + * @param attrNamespace namespace of the attribute + * @return null if the attribute PSVI does not exist + */ + PSVIAttribute *getAttributePSVIByName(const XMLCh *attrName + , const XMLCh * attrNamespace); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + /** + * returns a PSVI attribute of undetermined state and given name/namespace and + * makes that object part of the internal list. Intended to be called + * during validation of an element. + * @param attrName name of this attribute + * @param attrNS URI of the attribute + * @return new, uninitialized, PSVIAttribute object + */ + PSVIAttribute *getPSVIAttributeToFill( + const XMLCh * attrName + , const XMLCh * attrNS); + + /** + * reset the list + */ + void reset(); + + //@} + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + PSVIAttributeList(const PSVIAttributeList&); + PSVIAttributeList & operator=(const PSVIAttributeList &); + + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fMemoryManager + // handler to provide dynamically-need memory + // fAttrList + // list of PSVIAttributes contained by this object + // fAttrPos + // current number of initialized PSVIAttributes in fAttrList + MemoryManager* fMemoryManager; + RefVectorOf* fAttrList; + XMLSize_t fAttrPos; +}; + +inline PSVIAttributeList::~PSVIAttributeList() +{ + delete fAttrList; +} + +inline PSVIAttribute *PSVIAttributeList::getPSVIAttributeToFill( + const XMLCh *attrName + , const XMLCh * attrNS) +{ + PSVIAttributeStorage* storage = 0; + if(fAttrPos == fAttrList->size()) + { + storage = new (fMemoryManager) PSVIAttributeStorage(); + storage->fPSVIAttribute = new (fMemoryManager) PSVIAttribute(fMemoryManager); + fAttrList->addElement(storage); + } + else + { + storage = fAttrList->elementAt(fAttrPos); + } + storage->fAttributeName = attrName; + storage->fAttributeNamespace = attrNS; + fAttrPos++; + return storage->fPSVIAttribute; +} + +inline void PSVIAttributeList::reset() +{ + fAttrPos = 0; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/PSVIElement.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/PSVIElement.hpp new file mode 100644 index 000000000000..40a3991fcdd6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/PSVIElement.hpp @@ -0,0 +1,174 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PSVIELEMENT_HPP) +#define XERCESC_INCLUDE_GUARD_PSVIELEMENT_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Represent the PSVI contributions for one element information item. + * This is *always* owned by the scanner/parser object from which + * it is obtained. The validator will specify + * under what conditions it may be relied upon to have meaningful contents. + */ + +// forward declarations +class XSElementDeclaration; +class XSNotationDeclaration; +class XSModel; + +class XMLPARSER_EXPORT PSVIElement : public PSVIItem +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param manager The configurable memory manager + */ + PSVIElement( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@}; + + /** @name Destructor */ + //@{ + ~PSVIElement(); + //@} + + //--------------------- + /** @name PSVIElement methods */ + + //@{ + + /** + * An item isomorphic to the element declaration used to validate + * this element. + * + * @return an element declaration + */ + XSElementDeclaration *getElementDeclaration(); + + /** + * [notation] + * @see XML Schema Part 1: Structures [notation] + * @return The notation declaration. + */ + XSNotationDeclaration *getNotationDeclaration(); + + /** + * [schema information] + * @see XML Schema Part 1: Structures [schema information] + * @return The schema information property if it's the validation root, + * null otherwise. + */ + XSModel *getSchemaInformation(); + + /** + * An item isomorphic to the type definition used to validate this element. + * + * @return a type declaration + */ + XSTypeDefinition *getTypeDefinition(); + + /** + * If and only if that type definition is a simple type definition + * with {variety} union, or a complex type definition whose {content type} + * is a simple type definition with {variety} union, then an item isomorphic + * to that member of the union's {member type definitions} which actually + * validated the element item's normalized value. + * + * @return a simple type declaration + */ + XSSimpleTypeDefinition *getMemberTypeDefinition(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + void reset + ( + const VALIDITY_STATE validityState + , const ASSESSMENT_TYPE assessmentType + , const XMLCh* const validationContext + , bool isSpecified + , XSElementDeclaration* const elemDecl + , XSTypeDefinition* const typeDef + , XSSimpleTypeDefinition* const memberType + , XSModel* const schemaInfo + , const XMLCh* const defaultValue + , const XMLCh* const normalizedValue = 0 + , XMLCh* const canonicalValue = 0 + , XSNotationDeclaration* const notationDecl = 0 + ); + + //@} + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + PSVIElement(const PSVIElement&); + PSVIElement & operator=(const PSVIElement &); + + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fElementDecl + // element declaration component that validated this element + // fNotationDecl + // (optional) notation decl associated with this element + // fSchemaInfo + // Schema Information Item with which this validation episode is associated + XSElementDeclaration *fElementDecl; + XSNotationDeclaration *fNotationDecl; + XSModel *fSchemaInfo; +}; + +inline XSElementDeclaration *PSVIElement::getElementDeclaration() +{ + return fElementDecl; +} + +inline XSNotationDeclaration* PSVIElement::getNotationDeclaration() +{ + return fNotationDecl; +} + +inline XSModel* PSVIElement::getSchemaInformation() +{ + return fSchemaInfo; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/PSVIHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/PSVIHandler.hpp new file mode 100644 index 000000000000..07d4887d5048 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/PSVIHandler.hpp @@ -0,0 +1,148 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PSVIHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_PSVIHANDLER_HPP + + +XERCES_CPP_NAMESPACE_BEGIN + + +class PSVIElement; +class PSVIAttributeList; + + +/** + * This abstract class provides the interface for the scanner to return + * PSVI information to the application. + * + */ +class XMLPARSER_EXPORT PSVIHandler +{ +public: + // ----------------------------------------------------------------------- + // Constructors are hidden, just the virtual destructor is exposed + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + virtual ~PSVIHandler() + { + } + //@} + + /** @name The PSVI handler interface */ + //@{ + /** Receive notification of the PSVI properties of an element. + * The scanner will issue this call after the XMLDocumentHandler + * endElement call. Since the scanner will issue the psviAttributes + * call immediately after reading the start tag of an element, all element + * content will be effectively bracketed by these two calls. + * @param localName The name of the element whose end tag was just + * parsed. + * @param uri The namespace to which the element is bound + * @param elementInfo Object containing the element's PSVI properties + */ + virtual void handleElementPSVI + ( + const XMLCh* const localName + , const XMLCh* const uri + , PSVIElement * elementInfo + ) = 0; + + /** + * Receive notification of partial PSVI properties of an element. + * This callback is made right after the psviAttributes + * call for non-empty element. + * + * The PSVIElement passed in has all fields properly set and it + * can be safely accessed the same way as the one passed in handleElementPSVI. + * However, fields listed below always have default values. + * + * getValidity() PSVIItem::VALIDITY_NOTKNOWN + * getValidationAttemped() PSVIItem::VALIDATION_NONE + * getMemberTypeDefinition() 0 + * getSchemaNormalizedValue() 0 + * getCanonicalRepresentation() 0 + * getNotationDeclaration() 0 + * + * + * @param localName The name of the element upon which start tag + * these attributes were encountered. + * @param uri The namespace to which the element is bound + * @param elementInfo Object containing the element's partial PSVI properties + */ + virtual void handlePartialElementPSVI + ( + const XMLCh* const localName + , const XMLCh* const uri + , PSVIElement * elementInfo + ); + + /** + * Enables PSVI information about attributes to be passed back to the + * application. This callback will be made on *all* + * elements; on elements with no attributes, the final parameter will + * be null. + * @param localName The name of the element upon which start tag + * these attributes were encountered. + * @param uri The namespace to which the element is bound + * @param psviAttributes Object containing the attributes' PSVI properties + * with information to identify them. + */ + virtual void handleAttributesPSVI + ( + const XMLCh* const localName + , const XMLCh* const uri + , PSVIAttributeList * psviAttributes + ) = 0; + + + //@} + + + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + PSVIHandler() + { + } + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + PSVIHandler(const PSVIHandler&); + PSVIHandler& operator=(const PSVIHandler&); +}; + +inline void PSVIHandler::handlePartialElementPSVI(const XMLCh* const /*localName*/ + , const XMLCh* const /*uri*/ + , PSVIElement * /*elementInfo*/ + ) +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/PSVIItem.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/PSVIItem.hpp new file mode 100644 index 000000000000..ab8a13512613 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/PSVIItem.hpp @@ -0,0 +1,309 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PSVIITEM_HPP) +#define XERCESC_INCLUDE_GUARD_PSVIITEM_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Represent the PSVI contributions for one element or one attribute information item. + * This is *always* owned by the validator /parser object from which + * it is obtained. It is designed to be subclassed; subclasses will + * specify under what conditions it may be relied upon to have meaningful contents. + */ + +// forward declarations +class XSTypeDefinition; +class XSSimpleTypeDefinition; +class XSValue; + +class XMLPARSER_EXPORT PSVIItem : public XMemory +{ +public: + + enum VALIDITY_STATE { + /** Validity value indicating that validation has either not + been performed or that a strict assessment of validity could + not be performed + */ + VALIDITY_NOTKNOWN = 0, + + /** Validity value indicating that validation has been strictly + assessed and the element in question is invalid according to the + rules of schema validation. + */ + VALIDITY_INVALID = 1, + + /** Validity value indicating that validation has been strictly + assessed and the element in question is valid according to the rules + of schema validation. + */ + VALIDITY_VALID = 2 + }; + + enum ASSESSMENT_TYPE { + /** Validation status indicating that schema validation has been + performed and the element in question has specifically been skipped. + */ + VALIDATION_NONE = 0, + + /** Validation status indicating that schema validation has been + performed on the element in question under the rules of lax validation. + */ + VALIDATION_PARTIAL = 1, + + /** Validation status indicating that full schema validation has been + performed on the element. */ + VALIDATION_FULL = 2 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param manager The configurable memory manager + */ + PSVIItem(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@}; + + /** @name Destructor */ + //@{ + virtual ~PSVIItem(); + //@} + + //--------------------- + /** @name PSVIItem methods */ + + //@{ + + /** + * [validation context] + * + * @return A string identifying the nearest ancestor element + * information item with a [schema information] property + * (or this element item itself if it has such a property) + * (form to be determined) + * @see XML Schema Part 1: Structures [validation context] + */ + const XMLCh *getValidationContext(); + + /** + * Determine the validity of the node with respect + * to the validation being attempted + * + * @return return the [validity] property. Possible values are: + * VALIDITY_UNKNOWN, VALIDITY_INVALID, VALIDITY_VALID + */ + VALIDITY_STATE getValidity() const; + + /** + * Determines the extent to which the item has been validated + * + * @return return the [validation attempted] property. The possible values are + * VALIDATION_NONE, VALIDATION_ORDERED_PARTIAL and VALIDATION_FULL + */ + ASSESSMENT_TYPE getValidationAttempted() const; + + /** + * A list of error codes generated from validation attempts. + * Need to find all the possible sub-clause reports that need reporting + * + * @return list of error codes + */ + /*** + const XMLCh ** getErrorCodes(); + ****/ + + /** + * [schema normalized value] + * + * @see XML Schema Part 1: Structures [schema normalized value] + * @return the normalized value of this item after validation + */ + const XMLCh *getSchemaNormalizedValue(); + + /** + * An item isomorphic to the type definition used to validate this element. + * + * @return a type declaration + */ + virtual XSTypeDefinition *getTypeDefinition() = 0; + + /** + * If and only if that type definition is a simple type definition + * with {variety} union, or a complex type definition whose {content type} + * is a simple thype definition with {variety} union, then an item isomorphic + * to that member of the union's {member type definitions} which actually + * validated the element item's normalized value. + * + * @return a simple type declaration + */ + virtual XSSimpleTypeDefinition *getMemberTypeDefinition() = 0; + + /** + * [schema default] + * + * @return The canonical lexical representation of the declaration's {value constraint} value. + * @see XML Schema Part 1: Structures [schema default] + */ + const XMLCh *getSchemaDefault(); + + /** + * [schema specified] + * @see XML Schema Part 1: Structures [schema specified] + * @return true - value was specified in schema, false - value comes from the infoset + */ + bool getIsSchemaSpecified() const; + + /** + * Return the canonical representation of this value. + * Note that, formally, this is not a PSVI property. + * @return string representing the canonical representation, if this item + * was validated by a simple type definition for which canonical + * representations of values are defined. + */ + const XMLCh *getCanonicalRepresentation() const; + + //@} + + /** + * + * Get actual value in the form of XSValue, + * caller needs to delete the object returned. + * + * @return an XSValue + */ + virtual XSValue *getActualValue() const; + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + void setValidationAttempted(PSVIItem::ASSESSMENT_TYPE attemptType); + void setValidity(PSVIItem::VALIDITY_STATE validity); + + /** reset the object + * @param validationContext corresponds to schema validation context property + * @param normalizedValue corresponds to schema normalized value property + * @param validityState state of item's validity + * @param assessmentType type of assessment carried out on item + */ + void reset( + const XMLCh* const validationContext + , const XMLCh* const normalizedValue + , const VALIDITY_STATE validityState + , const ASSESSMENT_TYPE assessmentType + ); + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + PSVIItem(const PSVIItem&); + PSVIItem & operator=(const PSVIItem &); + + +protected: + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fMemoryManager: + // used for any memory allocations + // fValidationContext + // corresponds to the schema [validation context] property + // fNormalizedValue + // The schema normalized value (when present) + // fDefaultValue + // default value specified in the schema, if any + // fCanonicalValue + // canonicalized version of normalizedValue + // fValidityState + // Whether this item is valid or not + // fAssessmentType + // The kind of assessment that produced the given validity outcome + // fIsSpecified + // Whether this item exists because a default was specified in the schema + // fType + // type responsible for validating this item + // fMemberType + // If fType is a union type, the member type that validated this item + MemoryManager* const fMemoryManager; + const XMLCh* fValidationContext; + const XMLCh* fNormalizedValue; + const XMLCh* fDefaultValue; + XMLCh* fCanonicalValue; + VALIDITY_STATE fValidityState; + ASSESSMENT_TYPE fAssessmentType; + bool fIsSpecified; + XSTypeDefinition * fType; + XSSimpleTypeDefinition* fMemberType; +}; + +inline PSVIItem::~PSVIItem() {} + +inline const XMLCh *PSVIItem::getValidationContext() +{ + return fValidationContext; +} + +inline const XMLCh* PSVIItem::getSchemaNormalizedValue() +{ + return fNormalizedValue; +} + +inline const XMLCh* PSVIItem::getSchemaDefault() +{ + return fDefaultValue; +} + +inline const XMLCh* PSVIItem::getCanonicalRepresentation() const +{ + return fCanonicalValue; +} + +inline PSVIItem::VALIDITY_STATE PSVIItem::getValidity() const +{ + return fValidityState; +} + +inline bool PSVIItem::getIsSchemaSpecified() const +{ + return fIsSpecified; +} + +inline PSVIItem::ASSESSMENT_TYPE PSVIItem::getValidationAttempted() const +{ + return fAssessmentType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSAnnotation.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSAnnotation.hpp new file mode 100644 index 000000000000..f10755af7164 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSAnnotation.hpp @@ -0,0 +1,195 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSANNOTATION_HPP) +#define XERCESC_INCLUDE_GUARD_XSANNOTATION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Annotation + * component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class DOMNode; +class ContentHandler; + +class XMLPARSER_EXPORT XSAnnotation : public XSerializable, public XSObject +{ +public: + + // TargetType + enum ANNOTATION_TARGET { + /** + * The object type is org.w3c.dom.Element. + */ + W3C_DOM_ELEMENT = 1, + /** + * The object type is org.w3c.dom.Document. + */ + W3C_DOM_DOCUMENT = 2 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param contents The string that is to be the content of this XSAnnotation + * @param manager The configurable memory manager + */ + XSAnnotation + ( + const XMLCh* const contents + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSAnnotation(); + //@} + + //--------------------- + /** @name XSAnnotation methods */ + + //@{ + + /** + * Write contents of the annotation to the specified DOM object. In-scope + * namespace declarations for annotation element are added as + * attribute nodes of the serialized annotation. + * @param node A target pointer to the annotation target object, i.e. + * either DOMDocument or DOMElement cast as + * DOMNode. + * @param targetType A target type. + */ + + void writeAnnotation(DOMNode* node, ANNOTATION_TARGET targetType); + + /** + * Write contents of the annotation to the specified object. + * The corresponding events for all in-scope namespace declarations are + * sent via the specified document handler. + * @param handler A target pointer to the annotation target object, i.e. + * ContentHandler. + */ + void writeAnnotation(ContentHandler* handler); + + /** + * A text representation of annotation. + */ + const XMLCh *getAnnotationString() const; + XMLCh *getAnnotationString(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + //@{ + void setNext(XSAnnotation* const nextAnnotation); + XSAnnotation* getNext(); + //@} + + //----------------------------- + /** Getter */ + //@{ + inline void getLineCol(XMLFileLoc& line, XMLFileLoc& col) const; + inline const XMLCh* getSystemId() const; + //@} + + //----------------------------- + /** Setter */ + //@{ + inline void setLineCol(XMLFileLoc line, XMLFileLoc col); + void setSystemId(const XMLCh* const systemId); + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XSAnnotation) + XSAnnotation(MemoryManager* const manager); + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSAnnotation(const XSAnnotation&); + XSAnnotation & operator=(const XSAnnotation &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + XMLCh* fContents; + XSAnnotation* fNext; + +private: + + XMLCh* fSystemId; + XMLFileLoc fLine; + XMLFileLoc fCol; + +}; + +inline const XMLCh *XSAnnotation::getAnnotationString() const +{ + return fContents; +} + +inline XMLCh *XSAnnotation::getAnnotationString() +{ + return fContents; +} + +inline void XSAnnotation::getLineCol(XMLFileLoc& line, XMLFileLoc& col) const +{ + line = fLine; + col = fCol; +} + +inline const XMLCh* XSAnnotation::getSystemId() const +{ + return fSystemId; +} + +inline void XSAnnotation::setLineCol(XMLFileLoc line, XMLFileLoc col) +{ + fLine = line; + fCol = col; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSAttributeDeclaration.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSAttributeDeclaration.hpp new file mode 100644 index 000000000000..8a3fa6b70b8d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSAttributeDeclaration.hpp @@ -0,0 +1,210 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSATTRIBUTEDECLARATION_HPP) +#define XERCESC_INCLUDE_GUARD_XSATTRIBUTEDECLARATION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Attribute + * Declaration component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class XSComplexTypeDefinition; +class XSSimpleTypeDefinition; +class SchemaAttDef; + +class XMLPARSER_EXPORT XSAttributeDeclaration : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param attDef + * @param typeDef + * @param annot + * @param xsModel + * @param scope + * @param enclosingCTDefinition + * @param manager The configurable memory manager + */ + XSAttributeDeclaration + ( + SchemaAttDef* const attDef + , XSSimpleTypeDefinition* const typeDef + , XSAnnotation* const annot + , XSModel* const xsModel + , XSConstants::SCOPE scope + , XSComplexTypeDefinition* enclosingCTDefinition + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSAttributeDeclaration(); + //@} + + //--------------------- + /** @name overridden XSObject methods */ + + //@{ + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem* getNamespaceItem(); + + //@} + + /** @name XSAttributeDeclaration methods **/ + + //@{ + + /** + * [type definition]: A simple type definition + */ + XSSimpleTypeDefinition *getTypeDefinition() const; + + /** + * Optional. One of SCOPE_GLOBAL, SCOPE_LOCAL, + * or SCOPE_ABSENT. If the scope is local, then the + * enclosingCTDefinition is present. + */ + XSConstants::SCOPE getScope() const; + + /** + * The complex type definition for locally scoped declarations (see + * scope). + */ + XSComplexTypeDefinition *getEnclosingCTDefinition(); + + /** + * Value constraint: one of VC_NONE, VC_DEFAULT, VC_FIXED. + */ + XSConstants::VALUE_CONSTRAINT getConstraintType() const; + + /** + * Value constraint: The actual value with respect to the [type definition + * ]. + */ + const XMLCh *getConstraintValue(); + + /** + * Optional. Annotation. + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + bool getRequired() const; + //@} + +private: + + void setEnclosingCTDefinition(XSComplexTypeDefinition* const toSet); + friend class XSObjectFactory; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSAttributeDeclaration(const XSAttributeDeclaration&); + XSAttributeDeclaration & operator=(const XSAttributeDeclaration &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + SchemaAttDef* fAttDef; + XSSimpleTypeDefinition* fTypeDefinition; + XSAnnotation* fAnnotation; + XSConstants::SCOPE fScope; + XSComplexTypeDefinition* fEnclosingCTDefinition; +}; + +// --------------------------------------------------------------------------- +// XSAttributeDeclaration: inline methods +// --------------------------------------------------------------------------- +inline XSSimpleTypeDefinition* XSAttributeDeclaration::getTypeDefinition() const +{ + return fTypeDefinition; +} + +inline XSAnnotation *XSAttributeDeclaration::getAnnotation() const +{ + return fAnnotation; +} + +inline XSConstants::SCOPE XSAttributeDeclaration::getScope() const +{ + return fScope; +} + +inline XSComplexTypeDefinition *XSAttributeDeclaration::getEnclosingCTDefinition() +{ + return fEnclosingCTDefinition; +} + +inline void XSAttributeDeclaration::setEnclosingCTDefinition +( + XSComplexTypeDefinition* const toSet +) +{ + fEnclosingCTDefinition = toSet; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSAttributeGroupDefinition.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSAttributeGroupDefinition.hpp new file mode 100644 index 000000000000..fc610de6b6e9 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSAttributeGroupDefinition.hpp @@ -0,0 +1,167 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSATTRIBUTEGROUPDEFINITION_HPP) +#define XERCESC_INCLUDE_GUARD_XSATTRIBUTEGROUPDEFINITION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Attribute + * Group Definition component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class XSAttributeUse; +class XSWildcard; +class XercesAttGroupInfo; + +class XMLPARSER_EXPORT XSAttributeGroupDefinition : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param xercesAttGroupInfo + * @param xsAttList + * @param xsWildcard + * @param xsAnnot + * @param xsModel + * @param manager The configurable memory manager + */ + XSAttributeGroupDefinition + ( + XercesAttGroupInfo* const xercesAttGroupInfo + , XSAttributeUseList* const xsAttList + , XSWildcard* const xsWildcard + , XSAnnotation* const xsAnnot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSAttributeGroupDefinition(); + //@} + + //--------------------- + /** @name overridden XSObject methods */ + //@{ + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem* getNamespaceItem(); + + //@} + + //--------------------- + /** @name XSAttributeGroupDefinition methods */ + + //@{ + + /** + * A set of [attribute uses]. + */ + XSAttributeUseList *getAttributeUses(); + + /** + * Optional. A [wildcard]. + */ + XSWildcard *getAttributeWildcard() const; + + /** + * Optional. An [annotation]. + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSAttributeGroupDefinition(const XSAttributeGroupDefinition&); + XSAttributeGroupDefinition & operator=(const XSAttributeGroupDefinition &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + XercesAttGroupInfo* fXercesAttGroupInfo; + XSAttributeUseList* fXSAttributeUseList; + XSWildcard* fXSWildcard; + XSAnnotation* fAnnotation; +}; + +inline XSAttributeUseList* XSAttributeGroupDefinition::getAttributeUses() +{ + return fXSAttributeUseList; +} + +inline XSWildcard* XSAttributeGroupDefinition::getAttributeWildcard() const +{ + return fXSWildcard; +} + +inline XSAnnotation* XSAttributeGroupDefinition::getAnnotation() const +{ + return fAnnotation; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSAttributeUse.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSAttributeUse.hpp new file mode 100644 index 000000000000..a3b76291190f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSAttributeUse.hpp @@ -0,0 +1,156 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSATTRIBUTEUSE_HPP) +#define XERCESC_INCLUDE_GUARD_XSATTRIBUTEUSE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Attribute + * Use component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAttributeDeclaration; + +class XMLPARSER_EXPORT XSAttributeUse : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * @param xsAttDecl + * @param xsModel + * @param manager The configurable memory manager + */ + XSAttributeUse + ( + XSAttributeDeclaration* const xsAttDecl, + XSModel* const xsModel, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSAttributeUse(); + //@} + + //--------------------- + /** @name XSAttributeUse methods */ + + //@{ + + /** + * [required]: determines whether this use of an attribute declaration + * requires an appropriate attribute information item to be present, or + * merely allows it. + */ + bool getRequired() const; + + /** + * [attribute declaration]: provides the attribute declaration itself, + * which will in turn determine the simple type definition used. + */ + XSAttributeDeclaration *getAttrDeclaration() const; + + /** + * Value Constraint: one of default, fixed. + */ + XSConstants::VALUE_CONSTRAINT getConstraintType() const; + + /** + * Value Constraint: The actual value. + */ + const XMLCh *getConstraintValue(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} + +private: + + // set data + void set + ( + const bool isRequired + , XSConstants::VALUE_CONSTRAINT constraintType + , const XMLCh* const constraintValue + ); + + friend class XSObjectFactory; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSAttributeUse(const XSAttributeUse&); + XSAttributeUse & operator=(const XSAttributeUse &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + bool fRequired; + XSConstants::VALUE_CONSTRAINT fConstraintType; + const XMLCh* fConstraintValue; + XSAttributeDeclaration* fXSAttributeDeclaration; +}; + +inline XSAttributeDeclaration *XSAttributeUse::getAttrDeclaration() const +{ + return fXSAttributeDeclaration; +} + +inline bool XSAttributeUse::getRequired() const +{ + return fRequired; +} + +inline XSConstants::VALUE_CONSTRAINT XSAttributeUse::getConstraintType() const +{ + return fConstraintType; +} + +inline const XMLCh *XSAttributeUse::getConstraintValue() +{ + return fConstraintValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSComplexTypeDefinition.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSComplexTypeDefinition.hpp new file mode 100644 index 000000000000..8ee1a4f41927 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSComplexTypeDefinition.hpp @@ -0,0 +1,294 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSCOMPLEXTYPEDEFINITION_HPP) +#define XERCESC_INCLUDE_GUARD_XSCOMPLEXTYPEDEFINITION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class represents a complexType definition + * schema component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + * + */ + +// forward declarations +class XSAnnotation; +class XSAttributeUse; +class XSSimpleTypeDefinition; +class XSParticle; +class XSWildcard; +class ComplexTypeInfo; + +class XMLPARSER_EXPORT XSComplexTypeDefinition : public XSTypeDefinition +{ +public: + + // Content Model Types + enum CONTENT_TYPE { + /** + * Represents an empty content type. A content type with the distinguished + * value empty validates elements with no character or element + * information item children. + */ + CONTENTTYPE_EMPTY = 0, + /** + * Represents a simple content type. A content type which is a simple + * validates elements with character-only children. + */ + CONTENTTYPE_SIMPLE = 1, + /** + * Represents an element-only content type. An element-only content type + * validates elements with children that conform to the supplied content + * model. + */ + CONTENTTYPE_ELEMENT = 2, + /** + * Represents a mixed content type. + */ + CONTENTTYPE_MIXED = 3 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param complexTypeInfo + * @param xsWildcard + * @param xsSimpleType + * @param xsAttList + * @param xsBaseType + * @param xsParticle + * @param headAnnot + * @param xsModel + * @param manager The configurable memory manager + */ + XSComplexTypeDefinition + ( + ComplexTypeInfo* const complexTypeInfo + , XSWildcard* const xsWildcard + , XSSimpleTypeDefinition* const xsSimpleType + , XSAttributeUseList* const xsAttList + , XSTypeDefinition* const xsBaseType + , XSParticle* const xsParticle + , XSAnnotation* const headAnnot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSComplexTypeDefinition(); + //@} + + //--------------------- + /** @name XSComplexTypeDefinition methods */ + + //@{ + + /** + * [derivation method]: either DERIVATION_EXTENSION, + * DERIVATION_RESTRICTION, or DERIVATION_NONE + * (see XSObject). + */ + XSConstants::DERIVATION_TYPE getDerivationMethod() const; + + /** + * [abstract]: a boolean. Complex types for which abstract is + * true must not be used as the type definition for the validation of + * element information items. + */ + bool getAbstract() const; + + /** + * A set of attribute uses. + */ + XSAttributeUseList *getAttributeUses(); + + /** + * Optional.An attribute wildcard. + */ + XSWildcard *getAttributeWildcard() const; + + /** + * [content type]: one of empty (CONTENTTYPE_EMPTY), a simple + * type definition (CONTENTTYPE_SIMPLE), mixed ( + * CONTENTTYPE_MIXED), or element-only ( + * CONTENTTYPE_ELEMENT). + */ + CONTENT_TYPE getContentType() const; + + /** + * A simple type definition corresponding to simple content model, + * otherwise null + */ + XSSimpleTypeDefinition *getSimpleType() const; + + /** + * A particle for mixed or element-only content model, otherwise + * null + */ + XSParticle *getParticle() const; + + /** + * [prohibited substitutions]: a subset of {extension, restriction} + * @param toTest Extension or restriction constants (see + * XSObject). + * @return True if toTest is a prohibited substitution, otherwise + * false. + */ + bool isProhibitedSubstitution(XSConstants::DERIVATION_TYPE toTest); + + /** + * [prohibited substitutions]: A subset of {extension, restriction} or + * DERIVATION_NONE represented as a bit flag (see + * XSObject). + */ + short getProhibitedSubstitutions() const; + + /** + * A set of [annotations]. + */ + XSAnnotationList *getAnnotations(); + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem *getNamespaceItem(); + + /** + * A boolean that specifies if the type definition is + * anonymous. Convenience attribute. + */ + bool getAnonymous() const; + + /** + * {base type definition}: either a simple type definition or a complex + * type definition. + */ + XSTypeDefinition *getBaseType(); + + /** + * Convenience method: check if this type is derived from the given + * ancestorType. + * @param ancestorType An ancestor type definition. + * @return Return true if this type is derived from + * ancestorType. + */ + bool derivedFromType(const XSTypeDefinition* const ancestorType); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + + //@} + +private: + + /** + * Set the base type + */ + void setBaseType(XSTypeDefinition* const xsBaseType); + friend class XSObjectFactory; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSComplexTypeDefinition(const XSComplexTypeDefinition&); + XSComplexTypeDefinition & operator=(const XSComplexTypeDefinition &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + ComplexTypeInfo* fComplexTypeInfo; + XSWildcard* fXSWildcard; + XSAttributeUseList* fXSAttributeUseList; + XSSimpleTypeDefinition* fXSSimpleTypeDefinition; + XSAnnotationList* fXSAnnotationList; + XSParticle* fParticle; + short fProhibitedSubstitution; +}; + + +inline XSAttributeUseList* XSComplexTypeDefinition::getAttributeUses() +{ + return fXSAttributeUseList; +} + +inline XSWildcard* XSComplexTypeDefinition::getAttributeWildcard() const +{ + return fXSWildcard; +} + +inline XSSimpleTypeDefinition* XSComplexTypeDefinition::getSimpleType() const +{ + return fXSSimpleTypeDefinition; +} + +inline short XSComplexTypeDefinition::getProhibitedSubstitutions() const +{ + return fProhibitedSubstitution; +} + +inline XSParticle *XSComplexTypeDefinition::getParticle() const +{ + return fParticle; +} + +inline void +XSComplexTypeDefinition::setBaseType(XSTypeDefinition* const xsBaseType) +{ + fBaseType = xsBaseType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSConstants.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSConstants.hpp new file mode 100644 index 000000000000..897dea2f999f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSConstants.hpp @@ -0,0 +1,196 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSCONSTANTS_HPP) +#define XERCESC_INCLUDE_GUARD_XSCONSTANTS_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This contains constants needed in the schema component model. + */ + +// forward definitions for typedefs +class XSAnnotation; +class XSAttributeUse; +class XSFacet; +class XSMultiValueFacet; +class XSNamespaceItem; +class XSParticle; +class XSSimpleTypeDefinition; + +// these typedefs are intended to help hide dependence on utility +// classes, as well as to define more intuitive names for commonly +// used concepts. + +typedef RefVectorOf XSAnnotationList; +typedef RefVectorOf XSAttributeUseList; +typedef RefVectorOf XSFacetList; +typedef RefVectorOf XSMultiValueFacetList; +typedef RefVectorOf XSNamespaceItemList; +typedef RefVectorOf XSParticleList; +typedef RefVectorOf XSSimpleTypeDefinitionList; +typedef RefArrayVectorOf StringList; + +class XMLPARSER_EXPORT XSConstants +{ +public: + + // XML Schema Components + enum COMPONENT_TYPE { + /** + * The object describes an attribute declaration. + */ + ATTRIBUTE_DECLARATION = 1, + /** + * The object describes an element declaration. + */ + ELEMENT_DECLARATION = 2, + /** + * The object describes a complex type or simple type definition. + */ + TYPE_DEFINITION = 3, + /** + * The object describes an attribute use definition. + */ + ATTRIBUTE_USE = 4, + /** + * The object describes an attribute group definition. + */ + ATTRIBUTE_GROUP_DEFINITION= 5, + /** + * The object describes a model group definition. + */ + MODEL_GROUP_DEFINITION = 6, + /** + * A model group. + */ + MODEL_GROUP = 7, + /** + * The object describes a particle. + */ + PARTICLE = 8, + /** + * The object describes a wildcard. + */ + WILDCARD = 9, + /** + * The object describes an identity constraint definition. + */ + IDENTITY_CONSTRAINT = 10, + /** + * The object describes a notation declaration. + */ + NOTATION_DECLARATION = 11, + /** + * The object describes an annotation. + */ + ANNOTATION = 12, + /** + * The object describes a constraining facet. + */ + FACET = 13, + + /** + * The object describes enumeration/pattern facets. + */ + MULTIVALUE_FACET = 14 + }; + + // Derivation constants + enum DERIVATION_TYPE { + /** + * No constraint is available. + */ + DERIVATION_NONE = 0, + /** + * XSTypeDefinition final set or + * XSElementDeclaration disallowed substitution group. + */ + DERIVATION_EXTENSION = 1, + /** + * XSTypeDefinition final set or + * XSElementDeclaration disallowed substitution group. + */ + DERIVATION_RESTRICTION = 2, + /** + * XSTypeDefinition final set. + */ + DERIVATION_SUBSTITUTION = 4, + /** + * XSTypeDefinition final set. + */ + DERIVATION_UNION = 8, + /** + * XSTypeDefinition final set. + */ + DERIVATION_LIST = 16 + }; + + // Scope + enum SCOPE { + /** + * The scope of a declaration within named model groups or attribute + * groups is absent. The scope of such declaration is + * determined when it is used in the construction of complex type + * definitions. + */ + SCOPE_ABSENT = 0, + /** + * A scope of global identifies top-level declarations. + */ + SCOPE_GLOBAL = 1, + /** + * Locally scoped declarations are available for use only + * within the complex type. + */ + SCOPE_LOCAL = 2 + }; + + // Value Constraint + enum VALUE_CONSTRAINT { + /** + * Indicates that the component does not have any value constraint. + */ + VALUE_CONSTRAINT_NONE = 0, + /** + * Indicates that there is a default value constraint. + */ + VALUE_CONSTRAINT_DEFAULT = 1, + /** + * Indicates that there is a fixed value constraint for this attribute. + */ + VALUE_CONSTRAINT_FIXED = 2 + }; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSConstants(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSElementDeclaration.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSElementDeclaration.hpp new file mode 100644 index 000000000000..4bb100088d6a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSElementDeclaration.hpp @@ -0,0 +1,307 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSELEMENTDECLARATION_HPP) +#define XERCESC_INCLUDE_GUARD_XSELEMENTDECLARATION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Element Declaration + * component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class XSComplexTypeDefinition; +class XSIDCDefinition; +class XSTypeDefinition; +class SchemaElementDecl; + +class XMLPARSER_EXPORT XSElementDeclaration : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param schemaElementDecl + * @param typeDefinition + * @param substitutionGroupAffiliation + * @param annot + * @param identityConstraints + * @param xsModel + * @param elemScope + * @param enclosingTypeDefinition + * @param manager The configurable memory manager + */ + XSElementDeclaration + ( + SchemaElementDecl* const schemaElementDecl + , XSTypeDefinition* const typeDefinition + , XSElementDeclaration* const substitutionGroupAffiliation + , XSAnnotation* const annot + , XSNamedMap* const identityConstraints + , XSModel* const xsModel + , XSConstants::SCOPE elemScope = XSConstants::SCOPE_ABSENT + , XSComplexTypeDefinition* const enclosingTypeDefinition = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSElementDeclaration(); + //@} + + //--------------------- + /** @name overridden XSXSObject methods */ + + //@{ + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem *getNamespaceItem(); + + //@} + + //--------------------- + /** @name XSElementDeclaration methods */ + + //@{ + + /** + * [type definition]: either a simple type definition or a complex type + * definition. + */ + XSTypeDefinition *getTypeDefinition() const; + + /** + * Optional. One of SCOPE_GLOBAL, SCOPE_LOCAL, + * or SCOPE_ABSENT. If the scope is local, then the + * enclosingCTDefinition is present. + */ + XSConstants::SCOPE getScope() const; + + /** + * The complex type definition for locally scoped declarations (see + * scope). + */ + XSComplexTypeDefinition *getEnclosingCTDefinition() const; + + /** + * [Value constraint]: one of VC_NONE, VC_DEFAULT, VC_FIXED. + */ + XSConstants::VALUE_CONSTRAINT getConstraintType() const; + + /** + * [Value constraint]: the actual value with respect to the [type + * definition]. + */ + const XMLCh *getConstraintValue(); + + /** + * If nillable is true, then an element may also be valid if it carries + * the namespace qualified attribute with local name nil + * from namespace http://www.w3.org/2001/XMLSchema-instance + * and value true (xsi:nil) even if it has no text or + * element content despite a content type which would + * otherwise require content. + */ + bool getNillable() const; + + /** + * identity-constraint definitions: a set of constraint definitions. + */ + XSNamedMap *getIdentityConstraints(); + + /** + * [substitution group affiliation]: optional. A top-level element + * definition. + */ + XSElementDeclaration *getSubstitutionGroupAffiliation() const; + + /** + * Convenience method. Check if exclusion is a substitution + * group exclusion for this element declaration. + * @param exclusion + * DERIVATION_EXTENSION, DERIVATION_RESTRICTION or + * DERIVATION_NONE. Represents final set for the element. + * @return True if exclusion is a part of the substitution + * group exclusion subset. + */ + bool isSubstitutionGroupExclusion(XSConstants::DERIVATION_TYPE exclusion); + + /** + * [substitution group exclusions]: the returned value is a bit + * combination of the subset of { + * DERIVATION_EXTENSION, DERIVATION_RESTRICTION} or + * DERIVATION_NONE. + */ + short getSubstitutionGroupExclusions() const; + + /** + * Convenience method. Check if disallowed is a disallowed + * substitution for this element declaration. + * @param disallowed { + * DERIVATION_SUBSTITUTION, DERIVATION_EXTENSION, DERIVATION_RESTRICTION + * } or DERIVATION_NONE. Represents a block set for the + * element. + * @return True if disallowed is a part of the substitution + * group exclusion subset. + */ + bool isDisallowedSubstitution(XSConstants::DERIVATION_TYPE disallowed); + + /** + * [disallowed substitutions]: the returned value is a bit combination of + * the subset of { + * DERIVATION_SUBSTITUTION, DERIVATION_EXTENSION, DERIVATION_RESTRICTION + * } corresponding to substitutions disallowed by this + * XSElementDeclaration or DERIVATION_NONE. + */ + short getDisallowedSubstitutions() const; + + /** + * {abstract} A boolean. + */ + bool getAbstract() const; + + /** + * Optional. Annotation. + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + void setTypeDefinition(XSTypeDefinition* typeDefinition); + + //@} +private: + + void setEnclosingCTDefinition(XSComplexTypeDefinition* const toSet); + friend class XSObjectFactory; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSElementDeclaration(const XSElementDeclaration&); + XSElementDeclaration & operator=(const XSElementDeclaration &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + short fDisallowedSubstitutions; + short fSubstitutionGroupExclusions; + XSConstants::SCOPE fScope; + SchemaElementDecl* fSchemaElementDecl; + XSTypeDefinition* fTypeDefinition; + XSComplexTypeDefinition* fEnclosingTypeDefinition; + XSElementDeclaration* fSubstitutionGroupAffiliation; + XSAnnotation* fAnnotation; + XSNamedMap* fIdentityConstraints; +}; + +inline XSTypeDefinition* XSElementDeclaration::getTypeDefinition() const +{ + return fTypeDefinition; +} + +inline XSNamedMap* XSElementDeclaration::getIdentityConstraints() +{ + return fIdentityConstraints; +} + +inline XSElementDeclaration* XSElementDeclaration::getSubstitutionGroupAffiliation() const +{ + return fSubstitutionGroupAffiliation; +} + +inline short XSElementDeclaration::getSubstitutionGroupExclusions() const +{ + return fSubstitutionGroupExclusions; +} + +inline short XSElementDeclaration::getDisallowedSubstitutions() const +{ + return fDisallowedSubstitutions; +} + +inline XSAnnotation *XSElementDeclaration::getAnnotation() const +{ + return fAnnotation; +} + +inline XSConstants::SCOPE XSElementDeclaration::getScope() const +{ + return fScope; +} + +inline XSComplexTypeDefinition *XSElementDeclaration::getEnclosingCTDefinition() const +{ + return fEnclosingTypeDefinition; +} + +inline void XSElementDeclaration::setTypeDefinition(XSTypeDefinition* typeDefinition) +{ + fTypeDefinition = typeDefinition; +} + +inline void XSElementDeclaration::setEnclosingCTDefinition(XSComplexTypeDefinition* const toSet) +{ + fEnclosingTypeDefinition = toSet; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSFacet.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSFacet.hpp new file mode 100644 index 000000000000..51a618402659 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSFacet.hpp @@ -0,0 +1,151 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSFACET_HPP) +#define XERCESC_INCLUDE_GUARD_XSFACET_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This represents all Schema Facet components with the exception + * of Enumeration and Pattern Facets, which are represented by the + * XSMultiValueFacet interface. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; + +class XMLPARSER_EXPORT XSFacet : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param facetKind + * @param lexicalValue + * @param isFixed + * @param annot + * @param xsModel + * @param manager The configurable memory manager + */ + XSFacet + ( + XSSimpleTypeDefinition::FACET facetKind + , const XMLCh* const lexicalValue + , bool isFixed + , XSAnnotation* const annot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSFacet(); + //@} + + //--------------------- + /** @name XSFacet methods */ + + //@{ + + /** + * @return An indication as to the facet's type; see XSSimpleTypeDefinition::FACET + */ + XSSimpleTypeDefinition::FACET getFacetKind() const; + + /** + * @return Returns a value of a constraining facet. + */ + const XMLCh *getLexicalFacetValue() const; + + /** + * Check whether a facet value is fixed. + */ + bool isFixed() const; + + /** + * @return an annotation + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSFacet(const XSFacet&); + XSFacet & operator=(const XSFacet &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + XSSimpleTypeDefinition::FACET fFacetKind; + bool fIsFixed; + const XMLCh* fLexicalValue; + XSAnnotation* fAnnotation; +}; + +inline XSSimpleTypeDefinition::FACET XSFacet::getFacetKind() const +{ + return fFacetKind; +} + +inline const XMLCh* XSFacet::getLexicalFacetValue() const +{ + return fLexicalValue; +} + +inline bool XSFacet::isFixed() const +{ + return fIsFixed; +} + +inline XSAnnotation* XSFacet::getAnnotation() const +{ + return fAnnotation; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSIDCDefinition.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSIDCDefinition.hpp new file mode 100644 index 000000000000..ffeec1e09217 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSIDCDefinition.hpp @@ -0,0 +1,190 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSIDCDEFINITION_HPP) +#define XERCESC_INCLUDE_GUARD_XSIDCDEFINITION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Identity Constraint + * Definition component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class IdentityConstraint; + +class XMLPARSER_EXPORT XSIDCDefinition : public XSObject +{ +public: + + // Identity Constraints + enum IC_CATEGORY { + /** + * + */ + IC_KEY = 1, + /** + * + */ + IC_KEYREF = 2, + /** + * + */ + IC_UNIQUE = 3 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param identityConstraint + * @param keyIC + * @param headAnnot + * @param stringList + * @param xsModel + * @param manager The configurable memory manager + */ + XSIDCDefinition + ( + IdentityConstraint* const identityConstraint + , XSIDCDefinition* const keyIC + , XSAnnotation* const headAnnot + , StringList* const stringList + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSIDCDefinition(); + //@} + + //--------------------- + /** @name overridden XSXSObject methods */ + + //@{ + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem *getNamespaceItem(); + + //@} + + //--------------------- + /** @name XSIDCDefinition methods */ + + //@{ + + /** + * [identity-constraint category]: one of IC_KEY, IC_KEYREF or IC_UNIQUE. + */ + IC_CATEGORY getCategory() const; + + /** + * [selector]: a restricted XPath expression. + */ + const XMLCh *getSelectorStr(); + + /** + * [fields]: a non-empty list of restricted XPath ([XPath]) expressions. + */ + StringList *getFieldStrs(); + + /** + * [referenced key]: required if [identity-constraint category] is IC_KEYREF, + * forbidden otherwise (when an identity-constraint definition with [ + * identity-constraint category] equal to IC_KEY or IC_UNIQUE). + */ + XSIDCDefinition *getRefKey() const; + + /** + * A set of [annotations]. + */ + XSAnnotationList *getAnnotations(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSIDCDefinition(const XSIDCDefinition&); + XSIDCDefinition & operator=(const XSIDCDefinition &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + IdentityConstraint* fIdentityConstraint; + XSIDCDefinition* fKey; + StringList* fStringList; + XSAnnotationList* fXSAnnotationList; +}; + + +inline StringList* XSIDCDefinition::getFieldStrs() +{ + return fStringList; +} + +inline XSIDCDefinition* XSIDCDefinition::getRefKey() const +{ + return fKey; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSModel.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSModel.hpp new file mode 100644 index 000000000000..35b818a3d9ae --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSModel.hpp @@ -0,0 +1,338 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSMODEL_HPP) +#define XERCESC_INCLUDE_GUARD_XSMODEL_HPP + +#include +#include +#include + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class contains all properties of the Schema infoitem as determined + * after an entire validation episode. That is, it contains all the properties + * of all the Schema Namespace Information objects that went into + * the validation episode. + * Since it is not like other components, it does not + * inherit from the XSObject interface. + * This is *always* owned by the validator /parser object from which + * it is obtained. It is designed to be subclassed; subclasses will + * specify under what conditions it may be relied upon to have meaningful contents. + */ + +// forward declarations +class Grammar; +class XMLGrammarPool; +class XSAnnotation; +class XSAttributeDeclaration; +class XSAttributeGroupDefinition; +class XSElementDeclaration; +class XSModelGroupDefinition; +class XSNamespaceItem; +class XSNotationDeclaration; +class XSTypeDefinition; +class XSObjectFactory; + +class XMLPARSER_EXPORT XSModel : public XMemory +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The constructor to be used when a grammar pool contains all needed info + * @param grammarPool the grammar pool containing the underlying data structures + * @param manager The configurable memory manager + */ + XSModel( XMLGrammarPool *grammarPool + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * The constructor to be used when the XSModel must represent all + * components in the union of an existing XSModel and a newly-created + * Grammar(s) from the GrammarResolver + * + * @param baseModel the XSModel upon which this one is based + * @param grammarResolver the grammar(s) whose components are to be merged + * @param manager The configurable memory manager + */ + XSModel( XSModel *baseModel + , GrammarResolver *grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@}; + + /** @name Destructor */ + //@{ + ~XSModel(); + //@} + + //--------------------- + /** @name XSModel methods */ + + //@{ + + /** + * Convenience method. Returns a list of all namespaces that belong to + * this schema. The value null is not a valid namespace + * name, but if there are components that don't have a target namespace, + * null is included in this list. + */ + StringList *getNamespaces(); + + /** + * A set of namespace schema information information items ( of type + * XSNamespaceItem), one for each namespace name which + * appears as the target namespace of any schema component in the schema + * used for that assessment, and one for absent if any schema component + * in the schema had no target namespace. For more information see + * schema information. + */ + XSNamespaceItemList *getNamespaceItems(); + + /** + * [schema components]: a list of top-level components, i.e. element + * declarations, attribute declarations, etc. + * @param objectType The type of the declaration, i.e. + * ELEMENT_DECLARATION, + * TYPE_DEFINITION and any other component type that + * may be a property of a schema component. + * @return A list of top-level definition of the specified type in + * objectType or null. + */ + XSNamedMap *getComponents(XSConstants::COMPONENT_TYPE objectType); + + /** + * Convenience method. Returns a list of top-level component declarations + * that are defined within the specified namespace, i.e. element + * declarations, attribute declarations, etc. + * @param objectType The type of the declaration, i.e. + * ELEMENT_DECLARATION. + * @param compNamespace The namespace to which declaration belongs or + * null (for components with no target namespace). + * @return A list of top-level definitions of the specified type in + * objectType and defined in the specified + * namespace or null. + */ + XSNamedMap *getComponentsByNamespace(XSConstants::COMPONENT_TYPE objectType, + const XMLCh *compNamespace); + + /** + * [annotations]: a set of annotations. + */ + XSAnnotationList *getAnnotations(); + + /** + * Convenience method. Returns a top-level element declaration. + * @param name The name of the declaration. + * @param compNamespace The namespace of the declaration, null if absent. + * @return A top-level element declaration or null if such + * declaration does not exist. + */ + XSElementDeclaration *getElementDeclaration(const XMLCh *name + , const XMLCh *compNamespace); + + /** + * Convenience method. Returns a top-level attribute declaration. + * @param name The name of the declaration. + * @param compNamespace The namespace of the declaration, null if absent. + * @return A top-level attribute declaration or null if such + * declaration does not exist. + */ + XSAttributeDeclaration *getAttributeDeclaration(const XMLCh *name + , const XMLCh *compNamespace); + + /** + * Convenience method. Returns a top-level simple or complex type + * definition. + * @param name The name of the definition. + * @param compNamespace The namespace of the declaration, null if absent. + * @return An XSTypeDefinition or null if such + * definition does not exist. + */ + XSTypeDefinition *getTypeDefinition(const XMLCh *name + , const XMLCh *compNamespace); + + /** + * Convenience method. Returns a top-level attribute group definition. + * @param name The name of the definition. + * @param compNamespace The namespace of the declaration, null if absent. + * @return A top-level attribute group definition or null if + * such definition does not exist. + */ + XSAttributeGroupDefinition *getAttributeGroup(const XMLCh *name + , const XMLCh *compNamespace); + + /** + * Convenience method. Returns a top-level model group definition. + * @param name The name of the definition. + * @param compNamespace The namespace of the declaration, null if absent. + * @return A top-level model group definition definition or + * null if such definition does not exist. + */ + XSModelGroupDefinition *getModelGroupDefinition(const XMLCh *name + , const XMLCh *compNamespace); + + /** + * Convenience method. Returns a top-level notation declaration. + * @param name The name of the declaration. + * @param compNamespace The namespace of the declaration, null if absent. + * @return A top-level notation declaration or null if such + * declaration does not exist. + */ + XSNotationDeclaration *getNotationDeclaration(const XMLCh *name + , const XMLCh *compNamespace); + + /** + * Optional. Return a component given a component type and a unique Id. + * May not be supported for all component types. + * @param compId unique Id of the component within its type + * @param compType type of the component + * @return the component of the given type with the given Id, or 0 + * if no such component exists or this is unsupported for + * this type of component. + */ + XSObject *getXSObjectById(XMLSize_t compId, + XSConstants::COMPONENT_TYPE compType); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + XMLStringPool* getURIStringPool(); + + XSNamespaceItem* getNamespaceItem(const XMLCh* const key); + + /** + * Get the XSObject (i.e. XSElementDeclaration) that corresponds to + * to a schema grammar component (i.e. SchemaElementDecl) + * @param key schema component object + * + * @return the corresponding XSObject + */ + XSObject* getXSObject(void* key); + + //@} +private: + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void addGrammarToXSModel + ( + XSNamespaceItem* namespaceItem + ); + void addS4SToXSModel + ( + XSNamespaceItem* const namespaceItem + , RefHashTableOf* const builtInDV + ); + void addComponentToNamespace + ( + XSNamespaceItem* const namespaceItem + , XSObject* const component + , XMLSize_t componentIndex + , bool addToXSModel = true + ); + + void addComponentToIdVector + ( + XSObject* const component + , XMLSize_t componentIndex + ); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSModel(const XSModel&); + XSModel & operator=(const XSModel &); + +protected: + friend class XSObjectFactory; + friend class XSObject; + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fMemoryManager: + // used for any memory allocations + MemoryManager* const fMemoryManager; + + StringList* fNamespaceStringList; + XSNamespaceItemList* fXSNamespaceItemList; + + RefVectorOf* fIdVector[XSConstants::MULTIVALUE_FACET]; + + /* Need a XSNamedMap for each component top-level? + ATTRIBUTE_DECLARATION = 1, + ELEMENT_DECLARATION = 2, + TYPE_DEFINITION = 3, + ATTRIBUTE_USE = 4, no + ATTRIBUTE_GROUP_DEFINITION= 5, + MODEL_GROUP_DEFINITION = 6, + MODEL_GROUP = 7, no + PARTICLE = 8, no + WILDCARD = 9, no + IDENTITY_CONSTRAINT = 10, no + NOTATION_DECLARATION = 11, + ANNOTATION = 12, no + FACET = 13, no + MULTIVALUE_FACET = 14 no + */ + XSNamedMap* fComponentMap[XSConstants::MULTIVALUE_FACET]; + XMLStringPool* fURIStringPool; + XSAnnotationList* fXSAnnotationList; + RefHashTableOf* fHashNamespace; + XSObjectFactory* fObjFactory; + RefVectorOf* fDeleteNamespace; + XSModel* fParent; + bool fDeleteParent; + bool fAddedS4SGrammar; +}; + +inline XMLStringPool* XSModel::getURIStringPool() +{ + return fURIStringPool; +} + +inline StringList *XSModel::getNamespaces() +{ + return fNamespaceStringList; +} + +inline XSNamespaceItemList *XSModel::getNamespaceItems() +{ + return fXSNamespaceItemList; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSModelGroup.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSModelGroup.hpp new file mode 100644 index 000000000000..a7bce75ee4c9 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSModelGroup.hpp @@ -0,0 +1,156 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSMODELGROUP_HPP) +#define XERCESC_INCLUDE_GUARD_XSMODELGROUP_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Model Group + * component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class XSParticle; + +class XMLPARSER_EXPORT XSModelGroup : public XSObject +{ +public: + + // Content model compositors + enum COMPOSITOR_TYPE { + /** + * This constant value signifies a sequence operator. + */ + COMPOSITOR_SEQUENCE = 1, + /** + * This constant value signifies a choice operator. + */ + COMPOSITOR_CHOICE = 2, + /** + * This content model represents a simplified version of the SGML + * &-Connector and is limited to the top-level of any content model. + * No element in the all content model may appear more than once. + */ + COMPOSITOR_ALL = 3 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param compositorType + * @param particleList + * @param annot + * @param xsModel + * @param manager The configurable memory manager + */ + XSModelGroup + ( + COMPOSITOR_TYPE compositorType + , XSParticleList* const particleList + , XSAnnotation* const annot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSModelGroup(); + //@} + + //--------------------- + /** @name XSModelGroup methods */ + //@{ + + /** + * [compositor]: one of all, choice or sequence. The valid constants + * values are: + * COMPOSITOR_SEQUENCE, COMPOSITOR_CHOICE, COMPOSITOR_ALL. + */ + COMPOSITOR_TYPE getCompositor() const; + + /** + * A list of [particles]. + */ + XSParticleList *getParticles() const; + + /** + * Optional. An [annotation]. + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSModelGroup(const XSModelGroup&); + XSModelGroup & operator=(const XSModelGroup &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + COMPOSITOR_TYPE fCompositorType; + XSParticleList* fParticleList; + XSAnnotation* fAnnotation; +}; + +inline XSModelGroup::COMPOSITOR_TYPE XSModelGroup::getCompositor() const +{ + return fCompositorType; +} + +inline XSParticleList* XSModelGroup::getParticles() const +{ + return fParticleList; +} + +inline XSAnnotation* XSModelGroup::getAnnotation() const +{ + return fAnnotation; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSModelGroupDefinition.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSModelGroupDefinition.hpp new file mode 100644 index 000000000000..87b81b337c9f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSModelGroupDefinition.hpp @@ -0,0 +1,150 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSMODELGROUPDEFINITION_HPP) +#define XERCESC_INCLUDE_GUARD_XSMODELGROUPDEFINITION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Model Group + * Definition component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class XSModelGroup; +class XSParticle; +class XercesGroupInfo; + +class XMLPARSER_EXPORT XSModelGroupDefinition : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param groupInfo + * @param groupParticle + * @param annot + * @param xsModel + * @param manager The configurable memory manager + */ + XSModelGroupDefinition + ( + XercesGroupInfo* const groupInfo + , XSParticle* const groupParticle + , XSAnnotation* const annot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSModelGroupDefinition(); + //@} + + //--------------------- + /** @name overridden XSXSObject methods */ + //@{ + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem *getNamespaceItem(); + + //@} + + //--------------------- + /** @name XSModelGroupDefinition methods */ + + //@{ + + /** + * A model group. + */ + XSModelGroup *getModelGroup(); + + /** + * Optional. An [annotation]. + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSModelGroupDefinition(const XSModelGroupDefinition&); + XSModelGroupDefinition & operator=(const XSModelGroupDefinition &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + XercesGroupInfo* fGroupInfo; + XSParticle* fModelGroupParticle; + XSAnnotation* fAnnotation; +}; + +inline XSAnnotation* XSModelGroupDefinition::getAnnotation() const +{ + return fAnnotation; +} + + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSMultiValueFacet.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSMultiValueFacet.hpp new file mode 100644 index 000000000000..e22dc7ab0fc8 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSMultiValueFacet.hpp @@ -0,0 +1,152 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSMULTIVALUEFACET_HPP) +#define XERCESC_INCLUDE_GUARD_XSMULTIVALUEFACET_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class represents all Schema Facets which may possess multiple + * lexical values/annotations (i.e., Pattern and Enumeration facets). + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; + +class XMLPARSER_EXPORT XSMultiValueFacet : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param facetKind + * @param lexicalValues + * @param isFixed + * @param headAnnot + * @param xsModel + * @param manager The configurable memory manager + */ + XSMultiValueFacet + ( + XSSimpleTypeDefinition::FACET facetKind + , StringList* lexicalValues + , bool isFixed + , XSAnnotation* const headAnnot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSMultiValueFacet(); + //@} + + //--------------------- + /** @name XSMultiValueFacet methods */ + + //@{ + + /** + * @return An indication as to the facet's type; see XSSimpleTypeDefinition::FACET + */ + XSSimpleTypeDefinition::FACET getFacetKind() const; + + /** + * @return Returns the values of a constraining facet. + */ + StringList *getLexicalFacetValues(); + + /** + * Check whether a facet value is fixed. + */ + bool isFixed() const; + + /** + * @return the annotations belonging to this facet's values + */ + XSAnnotationList *getAnnotations(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSMultiValueFacet(const XSMultiValueFacet&); + XSMultiValueFacet & operator=(const XSMultiValueFacet &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + XSSimpleTypeDefinition::FACET fFacetKind; + bool fIsFixed; + StringList* fLexicalValues; // not owned by this class + XSAnnotationList* fXSAnnotationList; +}; + + +inline XSSimpleTypeDefinition::FACET XSMultiValueFacet::getFacetKind() const +{ + return fFacetKind; +} + +inline bool XSMultiValueFacet::isFixed() const +{ + return fIsFixed; +} + +inline StringList *XSMultiValueFacet::getLexicalFacetValues() +{ + return fLexicalValues; +} + +inline XSAnnotationList *XSMultiValueFacet::getAnnotations() +{ + return fXSAnnotationList; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSNamedMap.c b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSNamedMap.c new file mode 100644 index 000000000000..ad01e5910c64 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSNamedMap.c @@ -0,0 +1,124 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// XSNamedMap: Constructors and Destructor +// --------------------------------------------------------------------------- +template +XSNamedMap::XSNamedMap(const XMLSize_t maxElems, + const XMLSize_t modulus, + XMLStringPool* uriStringPool, + const bool adoptElems, + MemoryManager* const manager) + : fMemoryManager(manager) + , fURIStringPool(uriStringPool) +{ + // allow one of the Vector or Hash to own the data... but not both... + fVector = new (manager) RefVectorOf (maxElems, false, manager); + fHash = new (manager) RefHash2KeysTableOf (modulus, adoptElems, manager); +} +template XSNamedMap::~XSNamedMap() +{ + delete fVector; + delete fHash; +} + + +/** + * The number of XSObjects in the XSObjectList. + * The range of valid child object indices is 0 to + * mapLength-1 inclusive. + */ +template +XMLSize_t XSNamedMap::getLength() const +{ + return fVector->size(); +} + +/** + * Returns the indexth item in the collection. The index + * starts at 0. If index is greater than or equal to the + * number of objects in the list, this returns null. + * @param index index into the collection. + * @return The XSObject at the indexth + * position in the XSObjectList, or null if + * that is not a valid index. + */ +template +TVal* XSNamedMap::item(XMLSize_t index) +{ + if (index >= fVector->size()) + { + return 0; + } + return fVector->elementAt(index); +} + +template +const TVal* XSNamedMap::item(XMLSize_t index) const +{ + if (index >= fVector->size()) + { + return 0; + } + return fVector->elementAt(index); +} + +/** + * Retrieves a component specified by local name and namespace URI. + *
applications must use the value null as the + * compNamespace parameter for components whose targetNamespace property + * is absent. + * @param compNamespace The namespace URI of the component to retrieve. + * @param localName The local name of the component to retrieve. + * @return A component (of any type) with the specified local + * name and namespace URI, or null if they do not + * identify any node in this map. + */ +template +TVal *XSNamedMap::itemByName(const XMLCh *compNamespace, + const XMLCh *localName) +{ + return fHash->get((void*)localName, fURIStringPool->getId(compNamespace)); +} + + +template +void XSNamedMap::addElement(TVal* const toAdd, const XMLCh* key1, const XMLCh* key2) +{ + fVector->addElement(toAdd); + fHash->put((void*)key1, fURIStringPool->getId(key2), toAdd); +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSNamedMap.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSNamedMap.hpp new file mode 100644 index 000000000000..2fe5346402c6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSNamedMap.hpp @@ -0,0 +1,138 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSNAMEDMAP_HPP) +#define XERCESC_INCLUDE_GUARD_XSNAMEDMAP_HPP + + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLStringPool; + +/* + * This template provides convenient mappings between name,namespace + * pairs and individual components, as well as means to iterate through all the + * named components on some object. + */ + +template class XSNamedMap: public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + XSNamedMap(const XMLSize_t maxElems, + const XMLSize_t modulus, + XMLStringPool* uriStringPool, + const bool adoptElems, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Destructor */ + //@{ + ~XSNamedMap(); + + //@} + + // ----------------------------------------------------------------------- + // XSNamedMap methods + // ----------------------------------------------------------------------- + /** @name XSNamedMap methods */ + //@{ + + /** + * The number of XSObjects in the XSObjectList. + * The range of valid child object indices is 0 to + * mapLength-1 inclusive. + */ + XMLSize_t getLength() const; + + /** + * Returns the indexth item in the collection. The index + * starts at 0. If index is greater than or equal to the + * number of objects in the list, this returns null. + * @param index index into the collection. + * @return The XSObject at the indexth + * position in the XSObjectList, or null if + * that is not a valid index. + */ + TVal *item(XMLSize_t index); + const TVal *item(XMLSize_t index) const; + + /** + * Retrieves a component specified by local name and namespace URI. + *
applications must use the value null as the + * compNamespace parameter for components whose targetNamespace property + * is absent. + * @param compNamespace The namespace URI of the component to retrieve. + * @param localName The local name of the component to retrieve. + * @return A component (of any type) with the specified local + * name and namespace URI, or null if they do not + * identify any node in this map. + */ + TVal *itemByName(const XMLCh *compNamespace, + const XMLCh *localName); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + void addElement(TVal* const toAdd, const XMLCh* key1, const XMLCh* key2); + //@} + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSNamedMap(const XSNamedMap&); + XSNamedMap& operator=(const XSNamedMap&); + + // ----------------------------------------------------------------------- + // Data members + // + // fMemoryManager + // manager used to allocate memory needed by this object + MemoryManager *const fMemoryManager; + XMLStringPool* fURIStringPool; + RefVectorOf* fVector; + RefHash2KeysTableOf* fHash; +}; + + + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSNamespaceItem.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSNamespaceItem.hpp new file mode 100644 index 000000000000..8446cd094e03 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSNamespaceItem.hpp @@ -0,0 +1,245 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSNAMESPACEITEM_HPP) +#define XERCESC_INCLUDE_GUARD_XSNAMESPACEITEM_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class contains all properties of the Schema Namespace Information infoitem. + * These items correspond to the result of processing a schema document + * and all its included/redefined schema documents. It corresponds to the + * schema component discussed in the schema specifications, but since it + * is not like other components does not inherit from the XSObject interface. + * This is *always* owned by the validator /parser object from which + * it is obtained. It is designed to be subclassed; subclasses will + * specify under what conditions it may be relied upon to have meaningful contents. + */ + +// forward declarations +class XSAnnotation; +class XSAttributeDeclaration; +class XSAttributeGroupDefinition; +class XSElementDeclaration; +class XSModelGroupDefinition; +class XSNotationDeclaration; +class XSTypeDefinition; +class SchemaGrammar; +class XSModel; + +class XMLPARSER_EXPORT XSNamespaceItem : public XMemory +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param xsModel + * @param grammar + * @param manager The configurable memory manager + */ + XSNamespaceItem + ( + XSModel* const xsModel + , SchemaGrammar* const grammar + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XSNamespaceItem + ( + XSModel* const xsModel + , const XMLCh* const schemaNamespace + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSNamespaceItem(); + //@} + + //--------------------- + /** @name XSNamespaceItem methods */ + + //@{ + + /** + * [schema namespace]: A namespace name or null + * corresponding to the target namespace of the schema document. + */ + const XMLCh *getSchemaNamespace() const; + + /** + * [schema components]: a list of top-level components, i.e. element + * declarations, attribute declarations, etc. + * @param objectType The type of the declaration, i.e. + * ELEMENT_DECLARATION, + * TYPE_DEFINITION and any other component type that + * may be a property of a schema component. + * @return A list of top-level definition of the specified type in + * objectType or null. + */ + XSNamedMap *getComponents(XSConstants::COMPONENT_TYPE objectType); + + /** + * [annotations]: a set of annotations. + */ + XSAnnotationList *getAnnotations(); + const XSAnnotationList *getAnnotations() const; + + /** + * Convenience method. Returns a top-level element declaration. + * @param name The name of the declaration. + * @return A top-level element declaration or null if such + * declaration does not exist. + */ + XSElementDeclaration *getElementDeclaration(const XMLCh *name); + + /** + * Convenience method. Returns a top-level attribute declaration. + * @param name The name of the declaration. + * @return A top-level attribute declaration or null if such + * declaration does not exist. + */ + XSAttributeDeclaration *getAttributeDeclaration(const XMLCh *name); + + /** + * Convenience method. Returns a top-level simple or complex type + * definition. + * @param name The name of the definition. + * @return An XSTypeDefinition or null if such + * definition does not exist. + */ + XSTypeDefinition *getTypeDefinition(const XMLCh *name); + + /** + * Convenience method. Returns a top-level attribute group definition. + * @param name The name of the definition. + * @return A top-level attribute group definition or null if + * such definition does not exist. + */ + XSAttributeGroupDefinition *getAttributeGroup(const XMLCh *name); + + /** + * Convenience method. Returns a top-level model group definition. + * @param name The name of the definition. + * @return A top-level model group definition definition or + * null if such definition does not exist. + */ + XSModelGroupDefinition *getModelGroupDefinition(const XMLCh *name); + + /** + * Convenience method. Returns a top-level notation declaration. + * @param name The name of the declaration. + * @return A top-level notation declaration or null if such + * declaration does not exist. + */ + XSNotationDeclaration *getNotationDeclaration(const XMLCh *name); + + /** + * [document location] - a list of locations URI for the documents that + * contributed to the XSModel. + */ + const StringList *getDocumentLocations(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSNamespaceItem(const XSNamespaceItem&); + XSNamespaceItem & operator=(const XSNamespaceItem &); + +protected: + friend class XSModel; + friend class XSObjectFactory; + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fMemoryManager: + // used for any memory allocations + MemoryManager* const fMemoryManager; + SchemaGrammar* fGrammar; + XSModel* fXSModel; + + /* Need a XSNamedMap for each component top-level? + that is top level. + ATTRIBUTE_DECLARATION = 1, + ELEMENT_DECLARATION = 2, + TYPE_DEFINITION = 3, + ATTRIBUTE_USE = 4, no + ATTRIBUTE_GROUP_DEFINITION= 5, + MODEL_GROUP_DEFINITION = 6, + MODEL_GROUP = 7, no + PARTICLE = 8, no + WILDCARD = 9, no + IDENTITY_CONSTRAINT = 10, no + NOTATION_DECLARATION = 11, + ANNOTATION = 12, no + FACET = 13, no + MULTIVALUE_FACET = 14 no + */ + XSNamedMap* fComponentMap[XSConstants::MULTIVALUE_FACET]; + XSAnnotationList* fXSAnnotationList; + RefHashTableOf* fHashMap[XSConstants::MULTIVALUE_FACET]; + const XMLCh* fSchemaNamespace; +}; + +inline XSAnnotationList* XSNamespaceItem::getAnnotations() +{ + return fXSAnnotationList; +} + +inline const XSAnnotationList* XSNamespaceItem::getAnnotations() const +{ + return fXSAnnotationList; +} + +inline const XMLCh *XSNamespaceItem::getSchemaNamespace() const +{ + return fSchemaNamespace; +} + + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSNotationDeclaration.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSNotationDeclaration.hpp new file mode 100644 index 000000000000..2e2cf7485722 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSNotationDeclaration.hpp @@ -0,0 +1,154 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSNOTATIONDECLARATION_HPP) +#define XERCESC_INCLUDE_GUARD_XSNOTATIONDECLARATION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Notation Declaration + * component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class XMLNotationDecl; + +class XMLPARSER_EXPORT XSNotationDeclaration : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param xmlNotationDecl + * @param annot + * @param xsModel + * @param manager The configurable memory manager + */ + XSNotationDeclaration + ( + XMLNotationDecl* const xmlNotationDecl + , XSAnnotation* const annot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSNotationDeclaration(); + //@} + + //--------------------- + /** @name overridden XSXSObject methods */ + + //@{ + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem *getNamespaceItem(); + + //@} + + //--------------------- + /** @name XSNotationDeclaration methods */ + + //@{ + + /** + * The URI reference representing the system identifier for the notation + * declaration, if present, null otherwise. + */ + const XMLCh *getSystemId(); + + /** + * The string representing the public identifier for this notation + * declaration, if present; null otherwise. + */ + const XMLCh *getPublicId(); + + /** + * Optional. An [annotation]. + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSNotationDeclaration(const XSNotationDeclaration&); + XSNotationDeclaration & operator=(const XSNotationDeclaration &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + XMLNotationDecl* fXMLNotationDecl; + XSAnnotation* fAnnotation; +}; + +inline XSAnnotation* XSNotationDeclaration::getAnnotation() const +{ + return fAnnotation; +} + + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSObject.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSObject.hpp new file mode 100644 index 000000000000..b1e28a4ce8a4 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSObject.hpp @@ -0,0 +1,152 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSOBJECT_HPP) +#define XERCESC_INCLUDE_GUARD_XSOBJECT_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * The XSObject forms the base of the Schema Component Model. It contains + * all properties common to the majority of XML Schema components. + * This is *always* owned by the validator /parser object from which + * it is obtained. It is designed to be subclassed; subclasses will + * specify under what conditions it may be relied upon to have meaningful contents. + */ + +// forward declarations +class XSNamespaceItem; +class XSModel; + +class XMLPARSER_EXPORT XSObject : public XMemory +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param compType + * @param xsModel + * @param manager The configurable memory manager + */ + XSObject + ( + XSConstants::COMPONENT_TYPE compType + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + virtual ~XSObject(); + //@} + + //--------------------- + /** @name XSObject methods */ + + //@{ + + /** + * The type of this object, i.e. + * ELEMENT_DECLARATION. + */ + XSConstants::COMPONENT_TYPE getType() const; + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + virtual const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + virtual const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + virtual XSNamespaceItem *getNamespaceItem(); + + /** + * Optional. Return a unique identifier for a component within this XSModel, to + * optimize querying. May not be defined for all types of component. + * @return id unique for this type of component within this XSModel or 0 + * to indicate that this is not supported for this type of component. + */ + virtual XMLSize_t getId() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + /** + * Set the id to be returned on getId(). + */ + void setId(XMLSize_t id); + //@} + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSObject(const XSObject&); + XSObject & operator=(const XSObject &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fMemoryManager: + // used for any memory allocations + // fComponentType + // the type of the actual component + XSConstants::COMPONENT_TYPE fComponentType; + XSModel* fXSModel; + MemoryManager* fMemoryManager; + XMLSize_t fId; +}; + +inline XSConstants::COMPONENT_TYPE XSObject::getType() const +{ + return fComponentType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSParticle.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSParticle.hpp new file mode 100644 index 000000000000..8d3769b7aee7 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSParticle.hpp @@ -0,0 +1,198 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSPARTICLE_HPP) +#define XERCESC_INCLUDE_GUARD_XSPARTICLE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Particle + * component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSElementDeclaration; +class XSModelGroup; +class XSWildcard; + +class XMLPARSER_EXPORT XSParticle : public XSObject +{ +public: + + // possible terms of this particle + enum TERM_TYPE { + /* + * an empty particle + */ + TERM_EMPTY = 0, + /* + * the particle has element content + */ + TERM_ELEMENT = XSConstants::ELEMENT_DECLARATION, + /* + * the particle's content is a model group + */ + TERM_MODELGROUP = XSConstants::MODEL_GROUP_DEFINITION, + /* + * the particle's content is a wildcard + */ + TERM_WILDCARD = XSConstants::WILDCARD + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param termType + * @param xsModel + * @param particleTerm + * @param minOccurs + * @param maxOccurs + * @param unbounded + * @param manager The configurable memory manager + */ + XSParticle + ( + TERM_TYPE termType + , XSModel* const xsModel + , XSObject* const particleTerm + , XMLSize_t minOccurs + , XMLSize_t maxOccurs + , bool unbounded + , MemoryManager* const manager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSParticle(); + //@} + + //--------------------- + /** @name XSParticle methods */ + //@{ + + /** + * [min occurs]: determines the minimum number of terms that can occur. + */ + XMLSize_t getMinOccurs() const; + + /** + * [max occurs] determines the maximum number of terms that can occur. To + * query for value of unbounded use maxOccursUnbounded. + */ + XMLSize_t getMaxOccurs() const; + + /** + * [max occurs] whether the maxOccurs value is unbounded. + */ + bool getMaxOccursUnbounded() const; + + /** + * Returns the type of the [term]: one of + * TERM_EMPTY, TERM_ELEMENT, TERM_MODELGROUP, or TERM_WILDCARD. + */ + TERM_TYPE getTermType() const; + + /** + * If this particle has an [element declaration] for its term, + * this method returns that declaration; otherwise, it returns 0. + * @returns The element declaration that is the [term] of this Particle + * if and only if getTermType() == TERM_ELEMENT. + */ + XSElementDeclaration *getElementTerm(); + + /** + * If this particle has a [model group] for its term, + * this method returns that definition; otherwise, it returns 0. + * @returns The model group that is the [term] of this Particle + * if and only if getTermType() == TERM_MODELGROUP. + */ + XSModelGroup *getModelGroupTerm(); + + /** + * If this particle has an [wildcard] for its term, + * this method returns that declaration; otherwise, it returns 0. + * @returns The wildcard declaration that is the [term] of this Particle + * if and only if getTermType() == TERM_WILDCARD. + */ + XSWildcard *getWildcardTerm(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSParticle(const XSParticle&); + XSParticle & operator=(const XSParticle &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + TERM_TYPE fTermType; + XMLSize_t fMinOccurs; + XMLSize_t fMaxOccurs; + bool fUnbounded; + XSObject* fTerm; +}; + +inline XMLSize_t XSParticle::getMinOccurs() const +{ + return fMinOccurs; +} + +inline XMLSize_t XSParticle::getMaxOccurs() const +{ + return fMaxOccurs; +} + +inline bool XSParticle::getMaxOccursUnbounded() const +{ + return fUnbounded; +} + +inline XSParticle::TERM_TYPE XSParticle::getTermType() const +{ + return fTermType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSSimpleTypeDefinition.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSSimpleTypeDefinition.hpp new file mode 100644 index 000000000000..3c1f5e21ad85 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSSimpleTypeDefinition.hpp @@ -0,0 +1,458 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSSIMPLETYPEDEFINITION_HPP) +#define XERCESC_INCLUDE_GUARD_XSSIMPLETYPEDEFINITION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class represents a simpleType definition + * schema component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + * + */ + +// forward declarations +class XSAnnotation; +class XSFacet; +class XSMultiValueFacet; +class DatatypeValidator; + +class XMLPARSER_EXPORT XSSimpleTypeDefinition : public XSTypeDefinition +{ +public: + + // Variety definitions + enum VARIETY { + /** + * The variety is absent for the anySimpleType definition. + */ + VARIETY_ABSENT = 0, + /** + * Atomic type. + */ + VARIETY_ATOMIC = 1, + /** + * List type. + */ + VARIETY_LIST = 2, + /** + * Union type. + */ + VARIETY_UNION = 3 + }; + + // Facets + enum FACET { + /** + * No facets defined. + */ + FACET_NONE = 0, + /** + * 4.3.1 Length + */ + FACET_LENGTH = 1, + /** + * 4.3.2 minLength. + */ + FACET_MINLENGTH = 2, + /** + * 4.3.3 maxLength. + */ + FACET_MAXLENGTH = 4, + /** + * 4.3.4 pattern. + */ + FACET_PATTERN = 8, + /** + * 4.3.5 whitespace. + */ + FACET_WHITESPACE = 16, + /** + * 4.3.7 maxInclusive. + */ + FACET_MAXINCLUSIVE = 32, + /** + * 4.3.9 maxExclusive. + */ + FACET_MAXEXCLUSIVE = 64, + /** + * 4.3.9 minExclusive. + */ + FACET_MINEXCLUSIVE = 128, + /** + * 4.3.10 minInclusive. + */ + FACET_MININCLUSIVE = 256, + /** + * 4.3.11 totalDigits . + */ + FACET_TOTALDIGITS = 512, + /** + * 4.3.12 fractionDigits. + */ + FACET_FRACTIONDIGITS = 1024, + /** + * 4.3.5 enumeration. + */ + FACET_ENUMERATION = 2048 + }; + + // possible order relations + enum ORDERING { + /** + * A constant defined for the 'ordered' fundamental facet: Not ordered. + */ + ORDERED_FALSE = 0, + /** + * A constant defined for the 'ordered' fundamental facet: partially + * ordered. + */ + ORDERED_PARTIAL = 1, + /** + * A constant defined for the 'ordered' fundamental facet: total ordered. + */ + ORDERED_TOTAL = 2 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param datatypeValidator + * @param stVariety + * @param xsBaseType + * @param primitiveOrItemType + * @param memberTypes + * @param headAnnot + * @param xsModel + * @param manager The configurable memory manager + */ + XSSimpleTypeDefinition + ( + DatatypeValidator* const datatypeValidator + , VARIETY stVariety + , XSTypeDefinition* const xsBaseType + , XSSimpleTypeDefinition* const primitiveOrItemType + , XSSimpleTypeDefinitionList* const memberTypes + , XSAnnotation* headAnnot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSSimpleTypeDefinition(); + //@} + + //--------------------- + /** @name XSSimpleTypeDefinition methods */ + + //@{ + + /** + * [variety]: one of {atomic, list, union} or absent + */ + VARIETY getVariety() const; + + /** + * If variety is atomic the primitive type definition (a + * built-in primitive datatype definition or the simple ur-type + * definition) is available, otherwise null. + */ + XSSimpleTypeDefinition *getPrimitiveType(); + + /** + * If variety is list the item type definition (an atomic or + * union simple type definition) is available, otherwise + * null. + */ + XSSimpleTypeDefinition *getItemType(); + + /** + * If variety is union the list of member type definitions (a + * non-empty sequence of simple type definitions) is available, + * otherwise null. + */ + XSSimpleTypeDefinitionList *getMemberTypes() const; + + /** + * [facets]: get all facets defined on this type. The value is a bit + * combination of FACET_XXX constants of all defined facets. + */ + int getDefinedFacets() const; + + /** + * Convenience method. [Facets]: check whether a facet is defined on this + * type. + * @param facetName The name of the facet. + * @return True if the facet is defined, false otherwise. + */ + bool isDefinedFacet(FACET facetName); + + /** + * [facets]: get all facets defined and fixed on this type. + */ + int getFixedFacets() const; + + /** + * Convenience method. [Facets]: check whether a facet is defined and + * fixed on this type. + * @param facetName The name of the facet. + * @return True if the facet is fixed, false otherwise. + */ + bool isFixedFacet(FACET facetName); + + /** + * Convenience method. Returns a value of a single constraining facet for + * this simple type definition. This method must not be used to retrieve + * values for enumeration and pattern facets. + * @param facetName The name of the facet, i.e. + * FACET_LENGTH, FACET_TOTALDIGITS (see + * XSConstants).To retrieve value for pattern or + * enumeration, see enumeration and pattern. + * @return A value of the facet specified in facetName for + * this simple type definition or null. + */ + const XMLCh *getLexicalFacetValue(FACET facetName); + + /** + * Returns a list of enumeration values. + */ + StringList *getLexicalEnumeration(); + + /** + * Returns a list of pattern values. + */ + StringList *getLexicalPattern(); + + /** + * Fundamental Facet: ordered + */ + ORDERING getOrdered() const; + + /** + * Fundamental Facet: cardinality. + */ + bool getFinite() const; + + /** + * Fundamental Facet: bounded. + */ + bool getBounded() const; + + /** + * Fundamental Facet: numeric. + */ + bool getNumeric() const; + + /** + * Optional. A set of [annotation]s. + */ + XSAnnotationList *getAnnotations(); + /** + * @return list of constraining facets. + * This method must not be used to retrieve + * values for enumeration and pattern facets. + */ + XSFacetList *getFacets(); + + /** + * @return list of enumeration and pattern facets. + */ + XSMultiValueFacetList *getMultiValueFacets(); + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem *getNamespaceItem(); + + /** + * A boolean that specifies if the type definition is + * anonymous. Convenience attribute. + */ + bool getAnonymous() const; + + /** + * {base type definition}: either a simple type definition or a complex + * type definition. + */ + XSTypeDefinition *getBaseType(); + + /** + * Convenience method: check if this type is derived from the given + * ancestorType. + * @param ancestorType An ancestor type definition. + * @return Return true if this type is derived from + * ancestorType. + */ + bool derivedFromType(const XSTypeDefinition* const ancestorType); + + /** + * + */ + inline DatatypeValidator* getDatatypeValidator() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + + //@} + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSSimpleTypeDefinition(const XSSimpleTypeDefinition&); + XSSimpleTypeDefinition & operator=(const XSSimpleTypeDefinition &); + + /** + * Helper method for construct + */ + void setFacetInfo + ( + int definedFacets + , int fixedFacets + , XSFacetList* const xsFacetList + , XSMultiValueFacetList* const xsMultiValueFacetList + , StringList* const patternList + ); + void setPrimitiveType(XSSimpleTypeDefinition* const toSet); + + friend class XSObjectFactory; + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + int fDefinedFacets; + int fFixedFacets; + VARIETY fVariety; + DatatypeValidator* fDatatypeValidator; + XSFacetList* fXSFacetList; + XSMultiValueFacetList* fXSMultiValueFacetList; + StringList* fPatternList; + XSSimpleTypeDefinition* fPrimitiveOrItemType; + XSSimpleTypeDefinitionList* fMemberTypes; + XSAnnotationList* fXSAnnotationList; +}; + +inline XSSimpleTypeDefinition::VARIETY XSSimpleTypeDefinition::getVariety() const +{ + return fVariety; +} + +inline XSSimpleTypeDefinition* XSSimpleTypeDefinition::getPrimitiveType() +{ + if (fVariety == VARIETY_ATOMIC) + return fPrimitiveOrItemType; + + return 0; +} + +inline XSSimpleTypeDefinition* XSSimpleTypeDefinition::getItemType() +{ + if (fVariety == VARIETY_LIST) + return fPrimitiveOrItemType; + + return 0; +} + +inline XSSimpleTypeDefinitionList* XSSimpleTypeDefinition::getMemberTypes() const +{ + return fMemberTypes; +} + +inline int XSSimpleTypeDefinition::getDefinedFacets() const +{ + return fDefinedFacets; +} + +inline int XSSimpleTypeDefinition::getFixedFacets() const +{ + return fFixedFacets; +} + +inline StringList* XSSimpleTypeDefinition::getLexicalPattern() +{ + return fPatternList; +} + +inline XSFacetList* XSSimpleTypeDefinition::getFacets() +{ + return fXSFacetList; +} + +inline XSMultiValueFacetList* XSSimpleTypeDefinition::getMultiValueFacets() +{ + return fXSMultiValueFacetList; +} + +inline XSAnnotationList *XSSimpleTypeDefinition::getAnnotations() +{ + return fXSAnnotationList; +} + +inline void +XSSimpleTypeDefinition::setPrimitiveType(XSSimpleTypeDefinition* const toSet) +{ + fPrimitiveOrItemType = toSet; +} + +inline DatatypeValidator* +XSSimpleTypeDefinition::getDatatypeValidator() const +{ + return fDatatypeValidator; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSTypeDefinition.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSTypeDefinition.hpp new file mode 100644 index 000000000000..9f8bf9ca854d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSTypeDefinition.hpp @@ -0,0 +1,214 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSTYPEDEFINITION_HPP) +#define XERCESC_INCLUDE_GUARD_XSTYPEDEFINITION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// forward declarations +class XSNamespaceItem; + +/** + * This class represents a complexType or simpleType definition. + * This is *always* owned by the validator /parser object from which + * it is obtained. + * + */ + +class XMLPARSER_EXPORT XSTypeDefinition : public XSObject +{ +public: + + enum TYPE_CATEGORY { + /** + * This constant value signifies a complex type. + */ + COMPLEX_TYPE = 15, + /** + * This constant value signifies a simple type. + */ + SIMPLE_TYPE = 16 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param typeCategory + * @param xsBaseType + * @param xsModel + * @param manager The configurable memory manager + */ + XSTypeDefinition + ( + TYPE_CATEGORY typeCategory + , XSTypeDefinition* const xsBaseType + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + virtual ~XSTypeDefinition(); + //@} + + //--------------------- + /** @name overloaded XSObject methods */ + //@{ + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + virtual const XMLCh* getName() const = 0; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + virtual const XMLCh* getNamespace() const = 0; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + virtual XSNamespaceItem *getNamespaceItem() = 0; + + //@} + + //--------------------- + /** @name XSTypeDefinition methods */ + + //@{ + + /** + * Return whether this type definition is a simple type or complex type. + */ + TYPE_CATEGORY getTypeCategory() const; + + /** + * {base type definition}: either a simple type definition or a complex + * type definition. + */ + virtual XSTypeDefinition *getBaseType() = 0; + + /** + * {final}. For complex type definition it is a subset of {extension, + * restriction}. For simple type definition it is a subset of + * {extension, list, restriction, union}. + * @param toTest Extension, restriction, list, union constants + * (defined in XSObject). + * @return True if toTest is in the final set, otherwise false. + */ + bool isFinal(short toTest); + + /** + * For complex types the returned value is a bit combination of the subset + * of {DERIVATION_EXTENSION, DERIVATION_RESTRICTION} + * corresponding to final set of this type or + * DERIVATION_NONE. For simple types the returned value is + * a bit combination of the subset of { + * DERIVATION_RESTRICTION, DERIVATION_EXTENSION, DERIVATION_UNION, DERIVATION_LIST + * } corresponding to final set of this type or + * DERIVATION_NONE. + */ + short getFinal() const; + + /** + * A boolean that specifies if the type definition is + * anonymous. Convenience attribute. + */ + virtual bool getAnonymous() const = 0; + + /** + * Convenience method: check if this type is derived from the given + * ancestorType. + * @param ancestorType An ancestor type definition. + * @return Return true if this type is derived from + * ancestorType. + */ + virtual bool derivedFromType(const XSTypeDefinition* const ancestorType) = 0; + + /** + * Convenience method: check if this type is derived from the given + * ancestor type. + * @param typeNamespace An ancestor type namespace. + * @param name An ancestor type name. + * @return Return true if this type is derived from + * the ancestor defined by typeNamespace and name. + */ + bool derivedFrom(const XMLCh* typeNamespace, + const XMLCh* name); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSTypeDefinition(const XSTypeDefinition&); + XSTypeDefinition & operator=(const XSTypeDefinition &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fTypeCategory + // whether this is a simpleType or complexType + // fFinal + // the final properties which is set by the derived class. + TYPE_CATEGORY fTypeCategory; + short fFinal; + XSTypeDefinition* fBaseType; // owned by XSModel +}; + +inline XSTypeDefinition::TYPE_CATEGORY XSTypeDefinition::getTypeCategory() const +{ + return fTypeCategory; +} + +inline short XSTypeDefinition::getFinal() const +{ + return fFinal; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSValue.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSValue.hpp new file mode 100644 index 000000000000..2f131b93ee61 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSValue.hpp @@ -0,0 +1,406 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSVALUE_HPP) +#define XERCESC_INCLUDE_GUARD_XSVALUE_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class RegularExpression; + +class XMLPARSER_EXPORT XSValue : public XMemory +{ +public: + + enum DataType { + dt_string = 0, + dt_boolean = 1, + dt_decimal = 2, + dt_float = 3, + dt_double = 4, + dt_duration = 5, + dt_dateTime = 6, + dt_time = 7, + dt_date = 8, + dt_gYearMonth = 9, + dt_gYear = 10, + dt_gMonthDay = 11, + dt_gDay = 12, + dt_gMonth = 13, + dt_hexBinary = 14, + dt_base64Binary = 15, + dt_anyURI = 16, + dt_QName = 17, + dt_NOTATION = 18, + dt_normalizedString = 19, + dt_token = 20, + dt_language = 21, + dt_NMTOKEN = 22, + dt_NMTOKENS = 23, + dt_Name = 24, + dt_NCName = 25, + dt_ID = 26, + dt_IDREF = 27, + dt_IDREFS = 28, + dt_ENTITY = 29, + dt_ENTITIES = 30, + dt_integer = 31, + dt_nonPositiveInteger = 32, + dt_negativeInteger = 33, + dt_long = 34, + dt_int = 35, + dt_short = 36, + dt_byte = 37, + dt_nonNegativeInteger = 38, + dt_unsignedLong = 39, + dt_unsignedInt = 40, + dt_unsignedShort = 41, + dt_unsignedByte = 42, + dt_positiveInteger = 43, + dt_MAXCOUNT = 44 + }; + + enum XMLVersion { + ver_10, + ver_11 + }; + + enum Status { + st_Init, + st_NoContent, + st_NoCanRep, + st_NoActVal, + st_NotSupported, + st_CantCreateRegEx, + st_FOCA0002, //invalid lexical value + st_FOCA0001, //input value too large/too small for decimal + st_FOCA0003, //input value too large for integer + st_FODT0003, //invalid timezone value + st_UnknownType + }; + + enum DataGroup { + dg_numerics, + dg_datetimes, + dg_strings + }; + + enum DoubleFloatType + { + DoubleFloatType_NegINF, + DoubleFloatType_PosINF, + DoubleFloatType_NaN, + DoubleFloatType_Zero, + DoubleFloatType_Normal + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + ~XSValue(); + //@} + + //--------------------------------- + /** @name Externalization methods */ + //@{ + + /** + * Validate a given string of the data type specified + * + * @param content data to be validated + * @param datatype schema datatype + * @param status validation status which is set upon validation fails + * @param version xml version + * @param manager memory manager provided + */ + static + bool validate + ( + const XMLCh* const content + , DataType datatype + , Status& status + , XMLVersion version = ver_10 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Get the canonical representation for a given string of the + * data type specified + * + * @param content raw data + * @param datatype schema datatype + * @param status validation status which is set upon validation fails + * @param version xml version + * @param toValidate to validate the content before generate canonical representation + * @param manager memory manager provided + */ + static + XMLCh* getCanonicalRepresentation + ( + const XMLCh* const content + , DataType datatype + , Status& status + , XMLVersion version = ver_10 + , bool toValidate = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Get the actual value, in the form of XSValue, for a given string of the + * data type specified + * + * Client application is responsible for the deletion of the XSValue returned. + * + * @param content raw data + * @param datatype schema datatype + * @param status validation status which is set upon validation fails + * @param version xml version + * @param toValidate to validate the content before generate actual value + * @param manager memory manager provided + */ + static + XSValue* getActualValue + ( + const XMLCh* const content + , DataType datatype + , Status& status + , XMLVersion version = ver_10 + , bool toValidate = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + static + DataType getDataType (const XMLCh* const dtString); + + //@} + + //---------------------------------- + /** public data */ + + struct XSValue_Data { + + DataType f_datatype; + + union { + bool f_bool; + char f_char; + unsigned char f_uchar; + short f_short; + unsigned short f_ushort; + int f_int; + unsigned int f_uint; + long f_long; + unsigned long f_ulong; + float f_float; + double f_double; + XMLCh* f_strVal; + XMLByte* f_byteVal; + + struct decimal { + double f_dvalue; + } f_decimal; + + struct datetime { + int f_year; + int f_month; + int f_day; + int f_hour; + int f_min; + int f_second; + double f_milisec; + + } f_datetime; + + struct doubletype { + double f_double; + DoubleFloatType f_doubleEnum; + } f_doubleType; + + struct floattype { + float f_float; + DoubleFloatType f_floatEnum; + } f_floatType; + + + + } fValue; + + } fData; + +private: + + typedef union + { + long f_long; + unsigned long f_ulong; + } t_value; + + /** @name Constructors */ + //@{ + /** + * The default constructor + * + */ + XSValue( + DataType const dt + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSValue(const XSValue&); + XSValue & operator=(const XSValue &); + + //--------------------------------- + /** @name Helpers */ + + //@{ + + static const XSValue::DataGroup inGroup[]; + static const bool numericSign[]; + + //@} + + static + bool validateNumerics + ( + const XMLCh* const content + , DataType datatype + , Status& status + , MemoryManager* const manager + ); + + static + bool validateDateTimes + ( + const XMLCh* const content + , DataType datatype + , Status& status + , MemoryManager* const manager + ); + + static + bool validateStrings + ( + const XMLCh* const content + , DataType datatype + , Status& status + , XMLVersion version + , MemoryManager* const manager + ); + + static + XMLCh* getCanRepNumerics + ( + const XMLCh* const content + , DataType datatype + , Status& status + , bool toValidate + , MemoryManager* const manager + ); + + static + XMLCh* getCanRepDateTimes + ( + const XMLCh* const content + , DataType datatype + , Status& status + , bool toValidate + , MemoryManager* const manager + ); + + static + XMLCh* getCanRepStrings + ( + const XMLCh* const content + , DataType datatype + , Status& status + , XMLVersion version + , bool toValidate + , MemoryManager* const manager + ); + + static + XSValue* getActValNumerics + ( + const XMLCh* const content + , DataType datatype + , Status& status + , bool toValidate + , MemoryManager* const manager + ); + + static + XSValue* getActValDateTimes + ( + const XMLCh* const content + , DataType datatype + , Status& status + , MemoryManager* const manager + ); + + static + XSValue* getActValStrings + ( + const XMLCh* const content + , DataType datatype + , Status& status + , XMLVersion version + , bool toValidate + , MemoryManager* const manager + ); + + static + bool getActualNumericValue + ( + const XMLCh* const content + , Status& status + , t_value& retVal + , MemoryManager* const manager + , DataType datatype + ); + + static ValueHashTableOf* fDataTypeRegistry; + + // ----------------------------------------------------------------------- + // static helper methods + // ----------------------------------------------------------------------- + static void initializeRegistry(); + friend class XMLInitializer; + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + bool fMemAllocated; + MemoryManager* fMemoryManager; + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSWildcard.hpp b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSWildcard.hpp new file mode 100644 index 000000000000..f7090580b4be --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/framework/psvi/XSWildcard.hpp @@ -0,0 +1,201 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSWILDCARD_HPP) +#define XERCESC_INCLUDE_GUARD_XSWILDCARD_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Wildcard + * component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class SchemaAttDef; +class ContentSpecNode; + +class XMLPARSER_EXPORT XSWildcard : public XSObject +{ +public: + + // Namespace Constraint + enum NAMESPACE_CONSTRAINT { + /** + * Namespace Constraint: any namespace is allowed. + */ + NSCONSTRAINT_ANY = 1, + /** + * Namespace Constraint: namespaces in the list are not allowed. + */ + NSCONSTRAINT_NOT = 2, + /** + * Namespace Constraint: namespaces in the list are allowed. + */ + NSCONSTRAINT_DERIVATION_LIST = 3 + }; + + // Process contents + enum PROCESS_CONTENTS { + /** + * There must be a top-level declaration for the item available, or the + * item must have an xsi:type, and the item must be valid as appropriate. + */ + PC_STRICT = 1, + /** + * No constraints at all: the item must simply be well-formed XML. + */ + PC_SKIP = 2, + /** + * If the item, or any items among its [children] is an element + * information item, has a uniquely determined declaration available, it + * must be valid with respect to that definition, that is, validate + * where you can, don't worry when you can't. + */ + PC_LAX = 3 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param attWildCard + * @param annot + * @param xsModel + * @param manager The configurable memory manager + */ + XSWildcard + ( + SchemaAttDef* const attWildCard + , XSAnnotation* const annot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XSWildcard + ( + const ContentSpecNode* const elmWildCard + , XSAnnotation* const annot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** @name Destructor */ + //@{ + ~XSWildcard(); + //@} + + //--------------------- + /** @name XSWildcard methods */ + + //@{ + + /** + * Namespace constraint: A constraint type: any, not, list. + */ + NAMESPACE_CONSTRAINT getConstraintType() const; + + /** + * Namespace constraint. For constraintType + * NSCONSTRAINT_DERIVATION_LIST, the list contains allowed namespaces. + * For constraintType NSCONSTRAINT_NOT, the + * list contains disallowed namespaces. + */ + StringList *getNsConstraintList(); + + /** + * [process contents]: one of skip, lax or strict. Valid constants values + * are: PC_SKIP, PC_LAX, PC_STRICT. + */ + PROCESS_CONTENTS getProcessContents() const; + + /** + * Optional. An [annotation]. + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSWildcard(const XSWildcard&); + XSWildcard & operator=(const XSWildcard &); + + /** + * Build namespace list + */ + void buildNamespaceList(const ContentSpecNode* const rootNode); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + NAMESPACE_CONSTRAINT fConstraintType; + PROCESS_CONTENTS fProcessContents; + StringList* fNsConstraintList; + XSAnnotation* fAnnotation; +}; + +inline XSAnnotation *XSWildcard::getAnnotation() const +{ + return fAnnotation; +} + +inline XSWildcard::PROCESS_CONTENTS XSWildcard::getProcessContents() const +{ + return fProcessContents; +} + +inline StringList* XSWildcard::getNsConstraintList() +{ + return fNsConstraintList; +} + +inline XSWildcard::NAMESPACE_CONSTRAINT XSWildcard::getConstraintType() const +{ + return fConstraintType; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/BinFileOutputStream.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/BinFileOutputStream.hpp new file mode 100644 index 000000000000..ba4cb8526c18 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/BinFileOutputStream.hpp @@ -0,0 +1,100 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BINFILEOUTPUTSTREAM_HPP) +#define XERCESC_INCLUDE_GUARD_BINFILEOUTPUTSTREAM_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BinFileOutputStream : public BinOutputStream +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + ~BinFileOutputStream(); + + BinFileOutputStream + ( + const XMLCh* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + BinFileOutputStream + ( + const char* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getIsOpen() const; + XMLFilePos getSize() const; + void reset(); + + + // ----------------------------------------------------------------------- + // Implementation of the input stream interface + // ----------------------------------------------------------------------- + virtual XMLFilePos curPos() const; + + virtual void writeBytes + ( + const XMLByte* const toGo + , const XMLSize_t maxToWrite + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + BinFileOutputStream(const BinFileOutputStream&); + BinFileOutputStream& operator=(const BinFileOutputStream&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fSource + // The source file that we represent. The FileHandle type is defined + // per platform. + // ----------------------------------------------------------------------- + FileHandle fSource; + MemoryManager* const fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// BinFileOutputStream: Getter methods +// --------------------------------------------------------------------------- +inline bool BinFileOutputStream::getIsOpen() const +{ + return (fSource != (FileHandle) XERCES_Invalid_File_Handle); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/BinMemOutputStream.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/BinMemOutputStream.hpp new file mode 100644 index 000000000000..13e9885bb38e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/BinMemOutputStream.hpp @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BINMEMOUTPUTSTREAM_HPP) +#define XERCESC_INCLUDE_GUARD_BINMEMOUTPUTSTREAM_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BinMemOutputStream : public BinOutputStream +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + ~BinMemOutputStream(); + + BinMemOutputStream + ( + XMLSize_t initCapacity = 1023 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // ----------------------------------------------------------------------- + // Implementation of the output stream interface + // ----------------------------------------------------------------------- + virtual XMLFilePos curPos() const; + + virtual void writeBytes + ( + const XMLByte* const toGo + , const XMLSize_t maxToWrite + ) ; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const XMLByte* getRawBuffer() const; + + XMLFilePos getSize() const; + void reset(); + +private : + // ----------------------------------------------------------------------- + // Unimplemented methods. + // ----------------------------------------------------------------------- + BinMemOutputStream(const BinMemOutputStream&); + BinMemOutputStream& operator=(const BinMemOutputStream&); + + // ----------------------------------------------------------------------- + // Private helpers + // ----------------------------------------------------------------------- + void ensureCapacity(const XMLSize_t extraNeeded); + + // ----------------------------------------------------------------------- + // Private data members + // + // fDataBuf + // The pointer to the buffer data. Its grown as needed. Its always + // one larger than fCapacity, to leave room for the null terminator. + // + // fIndex + // The current index into the buffer, as characters are appended + // to it. If its zero, then the buffer is empty. + // + // fCapacity + // The current capacity of the buffer. Its actually always one + // larger, to leave room for the null terminator. + // + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + XMLByte* fDataBuf; + XMLSize_t fIndex; + XMLSize_t fCapacity; + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/CharTypeTables.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/CharTypeTables.hpp new file mode 100644 index 000000000000..fca46d87662f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/CharTypeTables.hpp @@ -0,0 +1,257 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CHARTYPETABLES_HPP) +#define XERCESC_INCLUDE_GUARD_CHARTYPETABLES_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// These are character type lookup tables. They are included into XMLReader +// but are in their own private header in order to keep from making that +// file unreadable. +// +// THE RANGES and SINGLES MUST BE IN NUMERICAL ORDER, because the lookup +// method will use this info to short circuit the search! +// --------------------------------------------------------------------------- +static const XMLCh gBaseChars[] = +{ + // Ranges + 0x0041, 0x005A, 0x0061, 0x007A, 0x00C0, 0x00D6, 0x00D8, 0x00F6 + , 0x00F8, 0x00FF + , 0x0100, 0x0131, 0x0134, 0x013E, 0x0141, 0x0148, 0x014A, 0x017E + , 0x0180, 0x01C3, 0x01CD, 0x01F0, 0x01F4, 0x01F5, 0x01FA, 0x0217 + , 0x0250, 0x02A8, 0x02BB, 0x02C1, 0x0388, 0x038A, 0x038E, 0x03A1 + , 0x03A3, 0x03CE, 0x03D0, 0x03D6, 0x03E2, 0x03F3, 0x0401, 0x040C + , 0x040E, 0x044F, 0x0451, 0x045C, 0x045E, 0x0481, 0x0490, 0x04C4 + , 0x04C7, 0x04C8, 0x04CB, 0x04CC, 0x04D0, 0x04EB, 0x04EE, 0x04F5 + , 0x04F8, 0x04F9, 0x0531, 0x0556, 0x0561, 0x0586, 0x05D0, 0x05EA + , 0x05F0, 0x05F2, 0x0621, 0x063A, 0x0641, 0x064A, 0x0671, 0x06B7 + , 0x06BA, 0x06BE, 0x06C0, 0x06CE, 0x06D0, 0x06D3, 0x06E5, 0x06E6 + , 0x0905, 0x0939, 0x0958, 0x0961, 0x0985, 0x098C, 0x098F, 0x0990 + , 0x0993, 0x09A8, 0x09AA, 0x09B0, 0x09B6, 0x09B9, 0x09DC, 0x09DD + , 0x09DF, 0x09E1, 0x09F0, 0x09F1, 0x0A05, 0x0A0A, 0x0A0F, 0x0A10 + , 0x0A13, 0x0A28, 0x0A2A, 0x0A30, 0x0A32, 0x0A33, 0x0A35, 0x0A36 + , 0x0A38, 0x0A39, 0x0A59, 0x0A5C, 0x0A72, 0x0A74, 0x0A85, 0x0A8B + , 0x0A8F, 0x0A91, 0x0A93, 0x0AA8, 0x0AAA, 0x0AB0, 0x0AB2, 0x0AB3 + , 0x0AB5, 0x0AB9, 0x0B05, 0x0B0C, 0x0B0F, 0x0B10, 0x0B13, 0x0B28 + , 0x0B2A, 0x0B30, 0x0B32, 0x0B33, 0x0B36, 0x0B39, 0x0B5C, 0x0B5D + , 0x0B5F, 0x0B61, 0x0B85, 0x0B8A, 0x0B8E, 0x0B90, 0x0B92, 0x0B95 + , 0x0B99, 0x0B9A, 0x0B9E, 0x0B9F, 0x0BA3, 0x0BA4, 0x0BA8, 0x0BAA + , 0x0BAE, 0x0BB5, 0x0BB7, 0x0BB9, 0x0C05, 0x0C0C, 0x0C0E, 0x0C10 + , 0x0C12, 0x0C28, 0x0C2A, 0x0C33, 0x0C35, 0x0C39, 0x0C60, 0x0C61 + , 0x0C85, 0x0C8C, 0x0C8E, 0x0C90, 0x0C92, 0x0CA8, 0x0CAA, 0x0CB3 + , 0x0CB5, 0x0CB9, 0x0CE0, 0x0CE1, 0x0D05, 0x0D0C, 0x0D0E, 0x0D10 + , 0x0D12, 0x0D28, 0x0D2A, 0x0D39, 0x0D60, 0x0D61, 0x0E01, 0x0E2E + , 0x0E32, 0x0E33, 0x0E40, 0x0E45, 0x0E81, 0x0E82, 0x0E87, 0x0E88 + , 0x0E94, 0x0E97, 0x0E99, 0x0E9F, 0x0EA1, 0x0EA3, 0x0EAA, 0x0EAB + , 0x0EAD, 0x0EAE, 0x0EB2, 0x0EB3, 0x0EC0, 0x0EC4, 0x0F40, 0x0F47 + , 0x0F49, 0x0F69, 0x10A0, 0x10C5, 0x10D0, 0x10F6, 0x1102, 0x1103 + , 0x1105, 0x1107, 0x110B, 0x110C, 0x110E, 0x1112, 0x1154, 0x1155 + , 0x115F, 0x1161, 0x116D, 0x116E, 0x1172, 0x1173, 0x11AE, 0x11AF + , 0x11B7, 0x11B8, 0x11BC, 0x11C2, 0x1E00, 0x1E9B, 0x1EA0, 0x1EF9 + , 0x1F00, 0x1F15, 0x1F18, 0x1F1D, 0x1F20, 0x1F45, 0x1F48, 0x1F4D + , 0x1F50, 0x1F57, 0x1F5F, 0x1F7D, 0x1F80, 0x1FB4, 0x1FB6, 0x1FBC + , 0x1FC2, 0x1FC4, 0x1FC6, 0x1FCC, 0x1FD0, 0x1FD3, 0x1FD6, 0x1FDB + , 0x1FE0, 0x1FEC, 0x1FF2, 0x1FF4, 0x1FF6, 0x1FFC, 0x212A, 0x212B + , 0x2180, 0x2182, 0x3041, 0x3094, 0x30A1, 0x30FA, 0x3105, 0x312C + , 0xAC00, 0xD7A3 + , 0x00 + + // Singles + , 0x0386, 0x038C, 0x03DA, 0x03DC, 0x03DE, 0x03E0, 0x0559, 0x06D5 + , 0x093D, 0x09B2, 0x0A5E, 0x0A8D, 0x0ABD, 0x0AE0, 0x0B3D, 0x0B9C + , 0x0CDE, 0x0E30, 0x0E84, 0x0E8A, 0x0E8D, 0x0EA5, 0x0EA7, 0x0EB0 + , 0x0EBD, 0x1100, 0x1109, 0x113C, 0x113E, 0x1140, 0x114C, 0x114E + , 0x1150, 0x1159, 0x1163, 0x1165, 0x1167, 0x1169, 0x1175, 0x119E + , 0x11A8, 0x11AB, 0x11BA, 0x11EB, 0x11F0, 0x11F9, 0x1F59, 0x1F5B + , 0x1F5D, 0x1FBE, 0x2126, 0x212E + , 0x00 +}; + + +static const XMLCh gCombiningChars[] = +{ + // Ranges + 0x0300, 0x0345, 0x0360, 0x0361, 0x0483, 0x0486, 0x0591, 0x05A1 + , 0x05A3, 0x05B9, 0x05BB, 0x05BD, 0x05C1, 0x05C2, 0x064B, 0x0652 + , 0x06D6, 0x06DC, 0x06DD, 0x06DF, 0x06E0, 0x06E4 + , 0x06E7, 0x06E8, 0x06EA, 0x06ED, 0x0901, 0x0903, 0x093E, 0x094C + , 0x0951, 0x0954, 0x0962, 0x0963, 0x0981, 0x0983, 0x09C0, 0x09C4 + , 0x09C7, 0x09C8, 0x09CB, 0x09CD, 0x09E2, 0x09E3, 0x0A40, 0x0A42 + , 0x0A47, 0x0A48, 0x0A4B, 0x0A4D, 0x0A70, 0x0A71, 0x0A81, 0x0A83 + , 0x0ABE, 0x0AC5, 0x0AC7, 0x0AC9, 0x0ACB, 0x0ACD, 0x0B01, 0x0B03 + , 0x0B3E, 0x0B43, 0x0B47, 0x0B48, 0x0B4B, 0x0B4D, 0x0B56, 0x0B57 + , 0x0B82, 0x0B83, 0x0BBE, 0x0BC2, 0x0BC6, 0x0BC8, 0x0BCA, 0x0BCD + , 0x0C01, 0x0C03, 0x0C3E, 0x0C44, 0x0C46, 0x0C48, 0x0C4A, 0x0C4D + , 0x0C55, 0x0C56, 0x0C82, 0x0C83, 0x0CBE, 0x0CC4, 0x0CC6, 0x0CC8 + , 0x0CCA, 0x0CCD, 0x0CD5, 0x0CD6, 0x0D02, 0x0D03, 0x0D3E, 0x0D43 + , 0x0D46, 0x0D48, 0x0D4A, 0x0D4D, 0x0E34, 0x0E3A, 0x0E47, 0x0E4E + , 0x0EB4, 0x0EB9, 0x0EBB, 0x0EBC, 0x0EC8, 0x0ECD, 0x0F18, 0x0F19 + , 0x0F71, 0x0F84, 0x0F86, 0x0F8B, 0x0F90, 0x0F95, 0x0F99, 0x0FAD + , 0x0FB1, 0x0FB7, 0x20D0, 0x20DC, 0x302A, 0x302F + , 0x00 + + // Singles + , 0x05BF, 0x05C4, 0x0670 + , 0x093C, 0x094D, 0x09BC, 0x09BE, 0x09BF, 0x09D7, 0x0A02 + , 0x0A3C, 0x0A3E, 0x0A3F, 0x0ABC, 0x0B3C, 0x0BD7, 0x0D57, 0x0E31 + , 0x0EB1, 0x0F35, 0x0F37, 0x0F39, 0x0F3E, 0x0F3F, 0x0F97, 0x0FB9 + , 0x20E1, 0x3099, 0x309A + , 0x00 +}; + + +static const XMLCh gDigitChars[] = +{ + // Ranges + 0x0030, 0x0039, 0x0660, 0x0669, 0x06F0, 0x06F9, 0x0966, 0x096F + , 0x09E6, 0x09EF, 0x0A66, 0x0A6F, 0x0AE6, 0x0AEF, 0x0B66, 0x0B6F + , 0x0BE7, 0x0BEF, 0x0C66, 0x0C6F, 0x0CE6, 0x0CEF, 0x0D66, 0x0D6F + , 0x0E50, 0x0E59, 0x0ED0, 0x0ED9, 0x0F20, 0x0F29 + , 0x00 + + // Singles + , 0x00 +}; + + +static const XMLCh gIdeographicChars[] = +{ + // Ranges + 0x3021, 0x3029, 0x4E00, 0x9FA5 + , 0x00 + + // Singles + , 0x3007 + , 0x00 +}; + +static const XMLCh gExtenderChars[] = +{ + // Ranges + 0x3031, 0x3035, 0x309D, 0x309E, 0x30FC, 0x30FE + , 0x00 + + // Singles + , 0x00B7, 0x02D0, 0x02D1, 0x0387, 0x0640, 0x0E46, 0x0EC6, 0x3005 + , 0x00 +}; + + +static const XMLCh gPublicIdChars[] = +{ + // Ranges + 0x0023, 0x0025, 0x0027, 0x003B, 0x003F, 0x005A, 0x0061, 0x007A + , 0x00 + + // Singles + , 0x000A, 0x000D, 0x0020, 0x0021, 0x003D, 0x005F + , 0x00 +}; + + +static const XMLCh gWhitespaceChars[] = +{ + // Ranges + 0x00 + + , 0x0020, 0x0009, 0x000D, 0x000A + , 0x00 +}; + + +static const XMLCh gXMLChars[] = +{ + // Ranges + 0x0020, 0xD7FF, 0xE000, 0xFFFD + , 0x00 + + , 0x0009, 0x000D, 0x000A + , 0x00 +}; + +// The following are for XML 1.1 +static const XMLCh gWhitespaceChars1_1[] = +{ + // Ranges + 0x00 + + , 0x0020, 0x0009, 0x000D, 0x000A, 0x0085, 0x2028 + , 0x00 +}; + +static const XMLCh gFirstNameChars[] = +{ + // Ranges + // Note: 0x10000 to 0xEFFFF are also allowed, need to separately check + 0x0041, 0x005A, 0x0061, 0x007A, 0x00C0, 0x00D6, 0x00D8, 0x00F6 + , 0x00F8, 0x02FF, 0x0370, 0x037D, 0x037F, 0x1FFF, 0x200C, 0x200D + , 0x2070, 0x218F, 0x2C00, 0x2FEF, 0x3001, 0xD7FF, 0xF900, 0xFDCF + , 0xFDF0, 0xFFFD + , 0x00 + + // : _ + , 0x003A, 0x005F + , 0x00 + +}; + +static const XMLCh gNameChars[] = +{ + // Ranges + // Note: 0x10000 to 0xEFFFF are also allowed, need to separately check + 0x0030, 0x0039, 0x0041, 0x005A, 0x0061, 0x007A, 0x00C0, 0x00D6 + , 0x00D8, 0x00F6, 0x00F8, 0x037D, 0x037F, 0x1FFF, 0x200C, 0x200D + , 0x203F, 0x2040, 0x2070, 0x218F, 0x2C00, 0x2FEF, 0x3001, 0xD7FF + , 0xF900, 0xFDCF, 0xFDF0, 0xFFFD + , 0x00 + + // - . : _ + , 0x002D, 0x002E, 0x003A, 0x005F, 0x00B7 + , 0x00 +}; + +static const XMLCh gXMLChars1_1[] = +{ + // Ranges + 0x0020, 0x007E, 0x00A0, 0xD7FF, 0xE000, 0xFFFD + , 0x00 + + , 0x0009, 0x000D, 0x000A, 0x0085 + , 0x00 +}; + +static const XMLCh gControl_Chars1_1[] = +{ + // Ranges + 0x0001, 0x001F, 0x007F, 0x009F + , 0x00 + + , 0x00 +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/DGXMLScanner.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/DGXMLScanner.hpp new file mode 100644 index 000000000000..68e1463216c1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/DGXMLScanner.hpp @@ -0,0 +1,192 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DGXMLSCANNER_HPP) +#define XERCESC_INCLUDE_GUARD_DGXMLSCANNER_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DTDElementDecl; +class DTDGrammar; +class DTDValidator; + +// This is an integrated scanner class, which does DTD/XML Schema grammar +// processing. +class XMLPARSER_EXPORT DGXMLScanner : public XMLScanner +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DGXMLScanner + ( + XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DGXMLScanner + ( + XMLDocumentHandler* const docHandler + , DocTypeHandler* const docTypeHandler + , XMLEntityHandler* const entityHandler + , XMLErrorReporter* const errReporter + , XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~DGXMLScanner(); + + // ----------------------------------------------------------------------- + // XMLScanner public virtual methods + // ----------------------------------------------------------------------- + virtual const XMLCh* getName() const; + virtual NameIdPool* getEntityDeclPool(); + virtual const NameIdPool* getEntityDeclPool() const; + virtual void scanDocument + ( + const InputSource& src + ); + virtual bool scanNext(XMLPScanToken& toFill); + virtual Grammar* loadGrammar + ( + const InputSource& src + , const short grammarType + , const bool toCache = false + ); + + virtual Grammar::GrammarType getCurrentGrammarType() const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DGXMLScanner(); + DGXMLScanner(const DGXMLScanner&); + DGXMLScanner& operator=(const DGXMLScanner&); + + // ----------------------------------------------------------------------- + // XMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual void scanCDSection(); + virtual void scanCharData(XMLBuffer& toToUse); + virtual EntityExpRes scanEntityRef + ( + const bool inAttVal + , XMLCh& firstCh + , XMLCh& secondCh + , bool& escaped + ); + virtual void scanDocTypeDecl(); + virtual void scanReset(const InputSource& src); + virtual void sendCharData(XMLBuffer& toSend); + virtual InputSource* resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void commonInit(); + void cleanUp(); + + XMLSize_t buildAttList + ( + const XMLSize_t attCount + , XMLElementDecl* elemDecl + , RefVectorOf& toFill + ); + void updateNSMap + ( + const XMLCh* const attrPrefix + , const XMLCh* const attrLocalName + , const XMLCh* const attrValue + ); + void scanAttrListforNameSpaces(RefVectorOf* theAttrList, XMLSize_t attCount, XMLElementDecl* elemDecl); + + // ----------------------------------------------------------------------- + // Private scanning methods + // ----------------------------------------------------------------------- + bool scanAttValue + ( + const XMLAttDef* const attDef + , const XMLCh *const attrName + , XMLBuffer& toFill + ); + bool scanContent(); + void scanEndTag(bool& gotData); + bool scanStartTag(bool& gotData); + bool scanStartTagNS(bool& gotData); + + // ----------------------------------------------------------------------- + // Grammar preparsing methods + // ----------------------------------------------------------------------- + Grammar* loadDTDGrammar(const InputSource& src, const bool toCache = false); + + // ----------------------------------------------------------------------- + // Data members + // + // fRawAttrList + // During the initial scan of the attributes we can only do a raw + // scan for key/value pairs. So this vector is used to store them + // until they can be processed (and put into fAttrList.) + // + // fDTDValidator + // The DTD validator instance. + // + // fDTDElemNonDeclPool + // registry of "faulted-in" DTD element decls + // fElemCount + // count of the number of start tags seen so far (starts at 1). + // Used for duplicate attribute detection/processing of required/defaulted attributes + // fAttDefRegistry + // mapping from XMLAttDef instances to the count of the last + // start tag where they were utilized. + // fUndeclaredAttrRegistry + // mapping of attr QNames to detect duplicates + // + // ----------------------------------------------------------------------- + ValueVectorOf* fAttrNSList; + DTDValidator* fDTDValidator; + DTDGrammar* fDTDGrammar; + NameIdPool* fDTDElemNonDeclPool; + unsigned int fElemCount; + RefHashTableOf* fAttDefRegistry; + Hash2KeysSetOf* fUndeclaredAttrRegistry; +}; + +inline const XMLCh* DGXMLScanner::getName() const +{ + return XMLUni::fgDGXMLScanner; +} + +inline Grammar::GrammarType DGXMLScanner::getCurrentGrammarType() const +{ + return Grammar::DTDGrammarType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/ElemStack.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/ElemStack.hpp new file mode 100644 index 000000000000..4634ae0a236b --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/ElemStack.hpp @@ -0,0 +1,592 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ELEMSTACK_HPP) +#define XERCESC_INCLUDE_GUARD_ELEMSTACK_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLElementDecl; +class Grammar; + +struct PrefMapElem : public XMemory +{ + unsigned int fPrefId; + unsigned int fURIId; +}; + +// +// During the scan of content, we have to keep up with the nesting of +// elements (for validation and wellformedness purposes) and we have to +// have places to remember namespace (prefix to URI) mappings. +// +// We only have to keep a stack of the current path down through the tree +// that we are currently scanning, and keep track of any children of any +// elements along that path. +// +// So, this data structure is a stack, which represents the current path +// through the tree that we've worked our way down to. For each node in +// the stack, there is an array of element ids that represent the ids of +// the child elements scanned so far. Upon exit from that element, its +// array of child elements is validated. +// +// Since we have the actual XMLElementDecl in the stack nodes, when its time +// to validate, we just extract the content model from that element decl +// and validate. All the required data falls easily to hand. Note that we +// actually have some derivative of XMLElementDecl, which is specific to +// the validator used, but the abstract API is sufficient for the needs of +// the scanner. +// +// Since the namespace support also requires the storage of information on +// a nested element basis, this structure also holds the namespace info. For +// each level, the prefixes defined at that level (and the namespaces that +// they map to) are stored. +// +class XMLPARSER_EXPORT ElemStack : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Class specific data types + // + // These really should be private, but some of the compilers we have to + // support are too dumb to deal with that. + // + // PrefMapElem + // fURIId is the id of the URI from the validator's URI map. The + // fPrefId is the id of the prefix from our own prefix pool. The + // namespace stack consists of these elements. + // + // StackElem + // fThisElement is the basic element decl for the current element. + // The fRowCapacity is how large fChildIds has grown so far. + // fChildCount is how many of them are valid right now. + // + // The fMapCapacity is how large fMap has grown so far. fMapCount + // is how many of them are valid right now. + // + // Note that we store the reader number we were in when we found the + // start tag. We'll use this at the end tag to test for unbalanced + // markup in entities. + // + // MapModes + // When a prefix is mapped to a namespace id, it matters whether the + // QName being mapped is an attribute or name. Attributes are not + // affected by an sibling xmlns attributes, whereas elements are + // affected by its own xmlns attributes. + // ----------------------------------------------------------------------- + struct StackElem : public XMemory + { + XMLElementDecl* fThisElement; + XMLSize_t fReaderNum; + + XMLSize_t fChildCapacity; + XMLSize_t fChildCount; + QName** fChildren; + + PrefMapElem* fMap; + XMLSize_t fMapCapacity; + XMLSize_t fMapCount; + + bool fValidationFlag; + bool fCommentOrPISeen; + bool fReferenceEscaped; + unsigned int fCurrentScope; + Grammar* fCurrentGrammar; + unsigned int fCurrentURI; + XMLCh * fSchemaElemName; + XMLSize_t fSchemaElemNameMaxLen; + + int fPrefixColonPos; + }; + + enum MapModes + { + Mode_Attribute + , Mode_Element + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ElemStack(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ElemStack(); + + + // ----------------------------------------------------------------------- + // Stack access + // ----------------------------------------------------------------------- + XMLSize_t addLevel(); + XMLSize_t addLevel(XMLElementDecl* const toSet, const XMLSize_t readerNum); + const StackElem* popTop(); + + + // ----------------------------------------------------------------------- + // Stack top access + // ----------------------------------------------------------------------- + XMLSize_t addChild(QName* const child, const bool toParent); + const StackElem* topElement() const; + void setElement(XMLElementDecl* const toSet, const XMLSize_t readerNum); + + void setValidationFlag(bool validationFlag); + bool getValidationFlag(); + + inline void setCommentOrPISeen(); + inline bool getCommentOrPISeen() const; + + inline void setReferenceEscaped(); + inline bool getReferenceEscaped() const; + + void setCurrentScope(int currentScope); + int getCurrentScope(); + + void setCurrentGrammar(Grammar* currentGrammar); + Grammar* getCurrentGrammar(); + + void setCurrentURI(unsigned int uri); + unsigned int getCurrentURI(); + + inline void setCurrentSchemaElemName(const XMLCh * const schemaElemName); + inline XMLCh *getCurrentSchemaElemName(); + + void setPrefixColonPos(int colonPos); + int getPrefixColonPos() const; + + // ----------------------------------------------------------------------- + // Prefix map methods + // ----------------------------------------------------------------------- + void addGlobalPrefix + ( + const XMLCh* const prefixToAdd + , const unsigned int uriId + ); + void addPrefix + ( + const XMLCh* const prefixToAdd + , const unsigned int uriId + ); + unsigned int mapPrefixToURI + ( + const XMLCh* const prefixToMap + , bool& unknown + ) const; + ValueVectorOf* getNamespaceMap() const; + unsigned int getPrefixId(const XMLCh* const prefix) const; + const XMLCh* getPrefixForId(unsigned int prefId) const; + + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + bool isEmpty() const; + void reset + ( + const unsigned int emptyId + , const unsigned int unknownId + , const unsigned int xmlId + , const unsigned int xmlNSId + ); + + unsigned int getEmptyNamespaceId(); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ElemStack(const ElemStack&); + ElemStack& operator=(const ElemStack&); + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void expandMap(StackElem* const toExpand); + void expandStack(); + + + // ----------------------------------------------------------------------- + // Data members + // + // fEmptyNamespaceId + // This is the special URI id for the "" namespace, which is magic + // because of the xmlns="" operation. + // + // fGlobalPoolId + // This is a special URI id that is returned when the namespace + // prefix is "" and no one has explicitly mapped that prefix to an + // explicit URI (or when they explicitly clear any such mapping, + // which they can also do.) And also its prefix pool id, which is + // stored here for fast access. + // + // fPrefixPool + // This is the prefix pool where prefixes are hashed and given unique + // ids. These ids are used to track prefixes in the element stack. + // + // fGlobalNamespaces + // This object contains the namespace bindings that are globally valid + // + // fStack + // fStackCapacity + // fStackTop + // This the stack array. Its an array of pointers to StackElem + // structures. The capacity is the current high water mark of the + // stack. The top is the current top of stack (i.e. the part of it + // being used.) + // + // fUnknownNamespaceId + // This is the URI id for the special URI that is assigned to any + // prefix which has not been mapped. This lets us keep going after + // issuing the error. + // + // fXMLNamespaceId + // fXMLPoolId + // fXMLNSNamespaceId + // fXMLNSPoolId + // These are the URI ids for the special URIs that are assigned to + // the 'xml' and 'xmlns' namespaces. And also its prefix pool id, + // which is stored here for fast access. + // ----------------------------------------------------------------------- + unsigned int fEmptyNamespaceId; + unsigned int fGlobalPoolId; + XMLStringPool fPrefixPool; + StackElem* fGlobalNamespaces; + StackElem** fStack; + XMLSize_t fStackCapacity; + XMLSize_t fStackTop; + unsigned int fUnknownNamespaceId; + unsigned int fXMLNamespaceId; + unsigned int fXMLPoolId; + unsigned int fXMLNSNamespaceId; + unsigned int fXMLNSPoolId; + ValueVectorOf* fNamespaceMap; + MemoryManager* fMemoryManager; +}; + + +class XMLPARSER_EXPORT WFElemStack : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Class specific data types + // + // These really should be private, but some of the compilers we have to + // support are too dumb to deal with that. + // + // PrefMapElem + // fURIId is the id of the URI from the validator's URI map. The + // fPrefId is the id of the prefix from our own prefix pool. The + // namespace stack consists of these elements. + // + // StackElem + // fThisElement is the basic element decl for the current element. + // The fRowCapacity is how large fChildIds has grown so far. + // fChildCount is how many of them are valid right now. + // + // The fMapCapacity is how large fMap has grown so far. fMapCount + // is how many of them are valid right now. + // + // Note that we store the reader number we were in when we found the + // start tag. We'll use this at the end tag to test for unbalanced + // markup in entities. + // + // MapModes + // When a prefix is mapped to a namespace id, it matters whether the + // QName being mapped is an attribute or name. Attributes are not + // affected by an sibling xmlns attributes, whereas elements are + // affected by its own xmlns attributes. + // ----------------------------------------------------------------------- + struct StackElem : public XMemory + { + int fTopPrefix; + unsigned int fCurrentURI; + unsigned int fReaderNum; + unsigned int fElemMaxLength; + XMLCh* fThisElement; + }; + + enum MapModes + { + Mode_Attribute + , Mode_Element + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + WFElemStack(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~WFElemStack(); + + + // ----------------------------------------------------------------------- + // Stack access + // ----------------------------------------------------------------------- + XMLSize_t addLevel(); + XMLSize_t addLevel(const XMLCh* const toSet, const unsigned int toSetLen, + const unsigned int readerNum); + const StackElem* popTop(); + + + // ----------------------------------------------------------------------- + // Stack top access + // ----------------------------------------------------------------------- + const StackElem* topElement() const; + void setElement(const XMLCh* const toSet, const unsigned int toSetLen, + const unsigned int readerNum); + + void setCurrentURI(unsigned int uri); + unsigned int getCurrentURI(); + + // ----------------------------------------------------------------------- + // Prefix map methods + // ----------------------------------------------------------------------- + void addPrefix + ( + const XMLCh* const prefixToAdd + , const unsigned int uriId + ); + unsigned int mapPrefixToURI + ( + const XMLCh* const prefixToMap + , bool& unknown + ) const; + + + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + bool isEmpty() const; + void reset + ( + const unsigned int emptyId + , const unsigned int unknownId + , const unsigned int xmlId + , const unsigned int xmlNSId + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + WFElemStack(const WFElemStack&); + WFElemStack& operator=(const WFElemStack&); + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void expandMap(); + void expandStack(); + + + // ----------------------------------------------------------------------- + // Data members + // + // fEmptyNamespaceId + // This is the special URI id for the "" namespace, which is magic + // because of the xmlns="" operation. + // + // fGlobalPoolId + // This is a special URI id that is returned when the namespace + // prefix is "" and no one has explicitly mapped that prefix to an + // explicit URI (or when they explicitly clear any such mapping, + // which they can also do.) And also its prefix pool id, which is + // stored here for fast access. + // + // fPrefixPool + // This is the prefix pool where prefixes are hashed and given unique + // ids. These ids are used to track prefixes in the element stack. + // + // fStack + // fStackCapacity + // fStackTop + // This the stack array. Its an array of pointers to StackElem + // structures. The capacity is the current high water mark of the + // stack. The top is the current top of stack (i.e. the part of it + // being used.) + // + // fUnknownNamespaceId + // This is the URI id for the special URI that is assigned to any + // prefix which has not been mapped. This lets us keep going after + // issuing the error. + // + // fXMLNamespaceId + // fXMLPoolId + // fXMLNSNamespaceId + // fXMLNSPoolId + // These are the URI ids for the special URIs that are assigned to + // the 'xml' and 'xmlns' namespaces. And also its prefix pool id, + // which is stored here for fast access. + // ----------------------------------------------------------------------- + unsigned int fEmptyNamespaceId; + unsigned int fGlobalPoolId; + XMLSize_t fStackCapacity; + XMLSize_t fStackTop; + unsigned int fUnknownNamespaceId; + unsigned int fXMLNamespaceId; + unsigned int fXMLPoolId; + unsigned int fXMLNSNamespaceId; + unsigned int fXMLNSPoolId; + XMLSize_t fMapCapacity; + PrefMapElem* fMap; + StackElem** fStack; + XMLStringPool fPrefixPool; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// ElemStack: Miscellaneous methods +// --------------------------------------------------------------------------- +inline bool ElemStack::isEmpty() const +{ + return (fStackTop == 0); +} + +inline bool ElemStack::getValidationFlag() +{ + return fStack[fStackTop-1]->fValidationFlag; +} + +inline void ElemStack::setValidationFlag(bool validationFlag) +{ + fStack[fStackTop-1]->fValidationFlag = validationFlag; +} + +inline bool ElemStack::getCommentOrPISeen() const +{ + return fStack[fStackTop-1]->fCommentOrPISeen; +} + +inline void ElemStack::setCommentOrPISeen() +{ + fStack[fStackTop-1]->fCommentOrPISeen = true; +} + +inline bool ElemStack::getReferenceEscaped() const +{ + return fStack[fStackTop-1]->fReferenceEscaped; +} + +inline void ElemStack::setReferenceEscaped() +{ + fStack[fStackTop-1]->fReferenceEscaped = true; +} + +inline void ElemStack::setCurrentSchemaElemName(const XMLCh * const schemaElemName) +{ + XMLSize_t schemaElemNameLen = XMLString::stringLen(schemaElemName); + XMLSize_t stackPos = fStackTop-1; + + if(fStack[stackPos]->fSchemaElemNameMaxLen <= schemaElemNameLen) + { + XMLCh *tempStr = fStack[stackPos]->fSchemaElemName; + fStack[stackPos]->fSchemaElemNameMaxLen = schemaElemNameLen << 1; + fStack[stackPos]->fSchemaElemName = (XMLCh *)fMemoryManager->allocate((fStack[stackPos]->fSchemaElemNameMaxLen)*sizeof(XMLCh)); + fMemoryManager->deallocate(tempStr); + } + XMLString::copyString(fStack[stackPos]->fSchemaElemName, schemaElemName); +} + +inline XMLCh *ElemStack::getCurrentSchemaElemName() +{ + return fStack[fStackTop-1]->fSchemaElemName; +} + +inline int ElemStack::getCurrentScope() +{ + return fStack[fStackTop-1]->fCurrentScope; +} + +inline void ElemStack::setCurrentScope(int currentScope) +{ + fStack[fStackTop-1]->fCurrentScope = currentScope; +} + +inline Grammar* ElemStack::getCurrentGrammar() +{ + return fStack[fStackTop-1]->fCurrentGrammar; +} + +inline void ElemStack::setCurrentGrammar(Grammar* currentGrammar) +{ + fStack[fStackTop-1]->fCurrentGrammar = currentGrammar; +} + +inline unsigned int ElemStack::getCurrentURI() +{ + return fStack[fStackTop-1]->fCurrentURI; +} + +inline void ElemStack::setCurrentURI(unsigned int uri) +{ + fStack[fStackTop-1]->fCurrentURI = uri; +} + +inline unsigned int ElemStack::getPrefixId(const XMLCh* const prefix) const +{ + return fPrefixPool.getId(prefix); +} + +inline const XMLCh* ElemStack::getPrefixForId(unsigned int prefId) const +{ + return fPrefixPool.getValueForId(prefId); +} + +inline void ElemStack::setPrefixColonPos(int colonPos) +{ + fStack[fStackTop-1]->fPrefixColonPos = colonPos; +} + +inline int ElemStack::getPrefixColonPos() const { + return fStack[fStackTop-1]->fPrefixColonPos; +} + +inline unsigned int ElemStack::getEmptyNamespaceId() { + return fEmptyNamespaceId; +} + +// --------------------------------------------------------------------------- +// WFElemStack: Miscellaneous methods +// --------------------------------------------------------------------------- +inline bool WFElemStack::isEmpty() const +{ + return (fStackTop == 0); +} + +inline unsigned int WFElemStack::getCurrentURI() +{ + return fStack[fStackTop-1]->fCurrentURI; +} + +inline void WFElemStack::setCurrentURI(unsigned int uri) +{ + fStack[fStackTop-1]->fCurrentURI = uri; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/EndOfEntityException.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/EndOfEntityException.hpp new file mode 100644 index 000000000000..25039d577658 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/EndOfEntityException.hpp @@ -0,0 +1,116 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ENDOFENTITYEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_ENDOFENTITYEXCEPTION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLEntityDecl; + +// +// This class is only used internally. Its thrown by the ReaderMgr class, +// when an entity ends, and is caught in the scanner. This tells the scanner +// that an entity has ended, and allows it to do the right thing according +// to what was going on when the entity ended. +// +// Since its internal, it does not bother implementing XMLException. +// +class XMLPARSER_EXPORT EndOfEntityException +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + EndOfEntityException( XMLEntityDecl* entityThatEnded + , const XMLSize_t readerNum) : + + fEntity(entityThatEnded) + , fReaderNum(readerNum) + { + } + + EndOfEntityException(const EndOfEntityException& toCopy) : + + fEntity(toCopy.fEntity) + , fReaderNum(toCopy.fReaderNum) + { + } + + ~EndOfEntityException() + { + } + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLEntityDecl& getEntity(); + const XMLEntityDecl& getEntity() const; + XMLSize_t getReaderNum() const; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + EndOfEntityException& operator = (const EndOfEntityException&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fEntity + // This is a reference to the entity that ended, causing this + // exception. + // + // fReaderNum + // The unique reader number of the reader that was handling this + // entity. This is used to know whether a particular entity has + // ended. + // ----------------------------------------------------------------------- + XMLEntityDecl* fEntity; + XMLSize_t fReaderNum; +}; + + +// --------------------------------------------------------------------------- +// EndOfEntityException: Getter methods +// --------------------------------------------------------------------------- +inline XMLEntityDecl& EndOfEntityException::getEntity() +{ + return *fEntity; +} + +inline const XMLEntityDecl& EndOfEntityException::getEntity() const +{ + return *fEntity; +} + +inline XMLSize_t EndOfEntityException::getReaderNum() const +{ + return fReaderNum; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/IANAEncodings.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/IANAEncodings.hpp new file mode 100644 index 000000000000..c8c546a167dd --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/IANAEncodings.hpp @@ -0,0 +1,834 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IANAENCODINGS_HPP) +#define XERCESC_INCLUDE_GUARD_IANAENCODINGS_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// ---------------------------------------------------------------- +// This file was generated from the IANA charset source. +// so do not edit this file directly!! +// ---------------------------------------------------------------- + +const XMLCh gEncodingArray[][46] = +{ + { 0x0041,0x004E,0x0053,0x0049,0x005F,0x0058,0x0033,0x002E,0x0034,0x002D,0x0031,0x0039,0x0036,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0036,0x00 } + , { 0x0041,0x004E,0x0053,0x0049,0x005F,0x0058,0x0033,0x002E,0x0034,0x002D,0x0031,0x0039,0x0038,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0036,0x0034,0x0036,0x002E,0x0069,0x0072,0x0076,0x003A,0x0031,0x0039,0x0039,0x0031,0x00 } + , { 0x0041,0x0053,0x0043,0x0049,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0055,0x0053,0x00 } + , { 0x0055,0x0053,0x002D,0x0041,0x0053,0x0043,0x0049,0x0049,0x00 } + , { 0x0075,0x0073,0x00 } + , { 0x0049,0x0042,0x004D,0x0033,0x0036,0x0037,0x00 } + , { 0x0063,0x0070,0x0033,0x0036,0x0037,0x00 } + , { 0x0063,0x0073,0x0041,0x0053,0x0043,0x0049,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x0055,0x0054,0x0046,0x002D,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0030,0x0036,0x0034,0x0036,0x0055,0x0054,0x0046,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0036,0x0034,0x0036,0x002E,0x0062,0x0061,0x0073,0x0069,0x0063,0x003A,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x0072,0x0065,0x0066,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x0062,0x0061,0x0073,0x0069,0x0063,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x0049,0x004E,0x0056,0x0041,0x0052,0x0049,0x0041,0x004E,0x0054,0x00 } + , { 0x0063,0x0073,0x0049,0x004E,0x0056,0x0041,0x0052,0x0049,0x0041,0x004E,0x0054,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0036,0x0034,0x0036,0x002E,0x0069,0x0072,0x0076,0x003A,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0032,0x00 } + , { 0x0069,0x0072,0x0076,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0049,0x006E,0x0074,0x006C,0x0052,0x0065,0x0066,0x0056,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0042,0x0053,0x005F,0x0034,0x0037,0x0033,0x0030,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0034,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0047,0x0042,0x00 } + , { 0x0067,0x0062,0x00 } + , { 0x0075,0x006B,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0034,0x0055,0x006E,0x0069,0x0074,0x0065,0x0064,0x004B,0x0069,0x006E,0x0067,0x0064,0x006F,0x006D,0x00 } + , { 0x004E,0x0041,0x0054,0x0053,0x002D,0x0053,0x0045,0x0046,0x0049,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x002D,0x0031,0x00 } + , { 0x0063,0x0073,0x004E,0x0041,0x0054,0x0053,0x0053,0x0045,0x0046,0x0049,0x00 } + , { 0x004E,0x0041,0x0054,0x0053,0x002D,0x0053,0x0045,0x0046,0x0049,0x002D,0x0041,0x0044,0x0044,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x002D,0x0032,0x00 } + , { 0x0063,0x0073,0x004E,0x0041,0x0054,0x0053,0x0053,0x0045,0x0046,0x0049,0x0041,0x0044,0x0044,0x00 } + , { 0x004E,0x0041,0x0054,0x0053,0x002D,0x0044,0x0041,0x004E,0x004F,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x002D,0x0031,0x00 } + , { 0x0063,0x0073,0x004E,0x0041,0x0054,0x0053,0x0044,0x0041,0x004E,0x004F,0x00 } + , { 0x004E,0x0041,0x0054,0x0053,0x002D,0x0044,0x0041,0x004E,0x004F,0x002D,0x0041,0x0044,0x0044,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x002D,0x0032,0x00 } + , { 0x0063,0x0073,0x004E,0x0041,0x0054,0x0053,0x0044,0x0041,0x004E,0x004F,0x0041,0x0044,0x0044,0x00 } + , { 0x0053,0x0045,0x004E,0x005F,0x0038,0x0035,0x0030,0x0032,0x0030,0x0030,0x005F,0x0042,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x00 } + , { 0x0046,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0046,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0053,0x0045,0x00 } + , { 0x0073,0x0065,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0030,0x0053,0x0077,0x0065,0x0064,0x0069,0x0073,0x0068,0x00 } + , { 0x0053,0x0045,0x004E,0x005F,0x0038,0x0035,0x0030,0x0032,0x0030,0x0030,0x005F,0x0043,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0053,0x0045,0x0032,0x00 } + , { 0x0073,0x0065,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0031,0x0053,0x0077,0x0065,0x0064,0x0069,0x0073,0x0068,0x0046,0x006F,0x0072,0x004E,0x0061,0x006D,0x0065,0x0073,0x00 } + , { 0x004B,0x0053,0x005F,0x0043,0x005F,0x0035,0x0036,0x0030,0x0031,0x002D,0x0031,0x0039,0x0038,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0039,0x00 } + , { 0x004B,0x0053,0x005F,0x0043,0x005F,0x0035,0x0036,0x0030,0x0031,0x002D,0x0031,0x0039,0x0038,0x0039,0x00 } + , { 0x004B,0x0053,0x0043,0x005F,0x0035,0x0036,0x0030,0x0031,0x00 } + , { 0x006B,0x006F,0x0072,0x0065,0x0061,0x006E,0x00 } + , { 0x0063,0x0073,0x004B,0x0053,0x0043,0x0035,0x0036,0x0030,0x0031,0x0031,0x0039,0x0038,0x0037,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0032,0x0030,0x0032,0x0032,0x002D,0x004B,0x0052,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0030,0x0032,0x0032,0x004B,0x0052,0x00 } + , { 0x0045,0x0055,0x0043,0x002D,0x004B,0x0052,0x00 } + , { 0x0063,0x0073,0x0045,0x0055,0x0043,0x004B,0x0052,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0032,0x0030,0x0032,0x0032,0x002D,0x004A,0x0050,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0030,0x0032,0x0032,0x004A,0x0050,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0032,0x0030,0x0032,0x0032,0x002D,0x004A,0x0050,0x002D,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0030,0x0032,0x0032,0x004A,0x0050,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0032,0x0030,0x0032,0x0032,0x002D,0x0043,0x004E,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0032,0x0030,0x0032,0x0032,0x002D,0x0043,0x004E,0x002D,0x0045,0x0058,0x0054,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0030,0x002D,0x0031,0x0039,0x0036,0x0039,0x002D,0x006A,0x0070,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0030,0x002D,0x0031,0x0039,0x0036,0x0039,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0033,0x00 } + , { 0x006B,0x0061,0x0074,0x0061,0x006B,0x0061,0x006E,0x0061,0x00 } + , { 0x0078,0x0030,0x0032,0x0030,0x0031,0x002D,0x0037,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0033,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0032,0x0030,0x006A,0x0070,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0030,0x002D,0x0031,0x0039,0x0036,0x0039,0x002D,0x0072,0x006F,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x00 } + , { 0x006A,0x0070,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x004A,0x0050,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0034,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0032,0x0030,0x0072,0x006F,0x00 } + , { 0x0049,0x0054,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0049,0x0054,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0049,0x0074,0x0061,0x006C,0x0069,0x0061,0x006E,0x00 } + , { 0x0050,0x0054,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0050,0x0054,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0036,0x0050,0x006F,0x0072,0x0074,0x0075,0x0067,0x0075,0x0065,0x0073,0x0065,0x00 } + , { 0x0045,0x0053,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0037,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0045,0x0053,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0037,0x0053,0x0070,0x0061,0x006E,0x0069,0x0073,0x0068,0x00 } + , { 0x0067,0x0072,0x0065,0x0065,0x006B,0x0037,0x002D,0x006F,0x006C,0x0064,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0038,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0038,0x0047,0x0072,0x0065,0x0065,0x006B,0x0037,0x004F,0x006C,0x0064,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0067,0x0072,0x0065,0x0065,0x006B,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0039,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0039,0x004C,0x0061,0x0074,0x0069,0x006E,0x0047,0x0072,0x0065,0x0065,0x006B,0x00 } + , { 0x0044,0x0049,0x004E,0x005F,0x0036,0x0036,0x0030,0x0030,0x0033,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0032,0x0031,0x00 } + , { 0x0064,0x0065,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0044,0x0045,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0031,0x0047,0x0065,0x0072,0x006D,0x0061,0x006E,0x00 } + , { 0x004E,0x0046,0x005F,0x005A,0x005F,0x0036,0x0032,0x002D,0x0030,0x0031,0x0030,0x005F,0x0028,0x0031,0x0039,0x0037,0x0033,0x0029,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0032,0x0035,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0046,0x0052,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0035,0x0046,0x0072,0x0065,0x006E,0x0063,0x0068,0x00 } + , { 0x004C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0067,0x0072,0x0065,0x0065,0x006B,0x002D,0x0031,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0032,0x0037,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0037,0x004C,0x0061,0x0074,0x0069,0x006E,0x0047,0x0072,0x0065,0x0065,0x006B,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0035,0x0034,0x0032,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0033,0x0037,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0034,0x0032,0x0037,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0036,0x002D,0x0031,0x0039,0x0037,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0034,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0034,0x0032,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0032,0x0036,0x0031,0x0039,0x0037,0x0038,0x00 } + , { 0x0042,0x0053,0x005F,0x0076,0x0069,0x0065,0x0077,0x0064,0x0061,0x0074,0x0061,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0034,0x0037,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0034,0x0037,0x0042,0x0053,0x0056,0x0069,0x0065,0x0077,0x0064,0x0061,0x0074,0x0061,0x00 } + , { 0x0049,0x004E,0x0049,0x0053,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0034,0x0039,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0034,0x0039,0x0049,0x004E,0x0049,0x0053,0x00 } + , { 0x0049,0x004E,0x0049,0x0053,0x002D,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0030,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0030,0x0049,0x004E,0x0049,0x0053,0x0038,0x00 } + , { 0x0049,0x004E,0x0049,0x0053,0x002D,0x0063,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0031,0x0049,0x004E,0x0049,0x0053,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0035,0x0034,0x0032,0x0037,0x003A,0x0031,0x0039,0x0038,0x0031,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0034,0x00 } + , { 0x0049,0x0053,0x004F,0x0035,0x0034,0x0032,0x0037,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x0031,0x0039,0x0038,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0035,0x0034,0x0032,0x0038,0x003A,0x0031,0x0039,0x0038,0x0030,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0035,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0034,0x0032,0x0038,0x0047,0x0072,0x0065,0x0065,0x006B,0x00 } + , { 0x0047,0x0042,0x005F,0x0031,0x0039,0x0038,0x0038,0x002D,0x0038,0x0030,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0037,0x00 } + , { 0x0063,0x006E,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0043,0x004E,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0037,0x0047,0x0042,0x0031,0x0039,0x0038,0x0038,0x00 } + , { 0x0047,0x0042,0x005F,0x0032,0x0033,0x0031,0x0032,0x002D,0x0038,0x0030,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0038,0x00 } + , { 0x0063,0x0068,0x0069,0x006E,0x0065,0x0073,0x0065,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0038,0x0047,0x0042,0x0032,0x0033,0x0031,0x0032,0x0038,0x0030,0x00 } + , { 0x004E,0x0053,0x005F,0x0034,0x0035,0x0035,0x0031,0x002D,0x0031,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0036,0x0030,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x004E,0x004F,0x00 } + , { 0x006E,0x006F,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0030,0x0044,0x0061,0x006E,0x0069,0x0073,0x0068,0x004E,0x006F,0x0072,0x0077,0x0065,0x0067,0x0069,0x0061,0x006E,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0030,0x004E,0x006F,0x0072,0x0077,0x0065,0x0067,0x0069,0x0061,0x006E,0x0031,0x00 } + , { 0x004E,0x0053,0x005F,0x0034,0x0035,0x0035,0x0031,0x002D,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x004E,0x004F,0x0032,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0036,0x0031,0x00 } + , { 0x006E,0x006F,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0031,0x004E,0x006F,0x0072,0x0077,0x0065,0x0067,0x0069,0x0061,0x006E,0x0032,0x00 } + , { 0x004E,0x0046,0x005F,0x005A,0x005F,0x0036,0x0032,0x002D,0x0030,0x0031,0x0030,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0036,0x0039,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0046,0x0052,0x00 } + , { 0x0066,0x0072,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0039,0x0046,0x0072,0x0065,0x006E,0x0063,0x0068,0x00 } + , { 0x0076,0x0069,0x0064,0x0065,0x006F,0x0074,0x0065,0x0078,0x002D,0x0073,0x0075,0x0070,0x0070,0x006C,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0037,0x0030,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0037,0x0030,0x0056,0x0069,0x0064,0x0065,0x006F,0x0074,0x0065,0x0078,0x0053,0x0075,0x0070,0x0070,0x0031,0x00 } + , { 0x0050,0x0054,0x0032,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0034,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0050,0x0054,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0034,0x0050,0x006F,0x0072,0x0074,0x0075,0x0067,0x0075,0x0065,0x0073,0x0065,0x0032,0x00 } + , { 0x0045,0x0053,0x0032,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0035,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0045,0x0053,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0035,0x0053,0x0070,0x0061,0x006E,0x0069,0x0073,0x0068,0x0032,0x00 } + , { 0x004D,0x0053,0x005A,0x005F,0x0037,0x0037,0x0039,0x0035,0x002E,0x0033,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0048,0x0055,0x00 } + , { 0x0068,0x0075,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0036,0x0048,0x0075,0x006E,0x0067,0x0061,0x0072,0x0069,0x0061,0x006E,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0036,0x002D,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0037,0x00 } + , { 0x0078,0x0030,0x0032,0x0030,0x0038,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0058,0x0030,0x0032,0x0030,0x0038,0x002D,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0037,0x004A,0x0049,0x0053,0x0058,0x0030,0x0032,0x0030,0x0038,0x00 } + , { 0x0067,0x0072,0x0065,0x0065,0x006B,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0038,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0047,0x0072,0x0065,0x0065,0x006B,0x0037,0x00 } + , { 0x0041,0x0053,0x004D,0x004F,0x005F,0x0034,0x0034,0x0039,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0039,0x0030,0x0033,0x0036,0x00 } + , { 0x0061,0x0072,0x0061,0x0062,0x0069,0x0063,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0039,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0039,0x0041,0x0053,0x004D,0x004F,0x0034,0x0034,0x0039,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0030,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0030,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x0061,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0031,0x00 } + , { 0x006A,0x0070,0x002D,0x006F,0x0063,0x0072,0x002D,0x0061,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0031,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0032,0x0039,0x0031,0x0039,0x0038,0x0034,0x0061,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x0062,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x004A,0x0050,0x002D,0x004F,0x0043,0x0052,0x002D,0x0042,0x00 } + , { 0x006A,0x0070,0x002D,0x006F,0x0063,0x0072,0x002D,0x0062,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0032,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0039,0x0039,0x0031,0x0039,0x0038,0x0034,0x0062,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x0062,0x002D,0x0061,0x0064,0x0064,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0033,0x00 } + , { 0x006A,0x0070,0x002D,0x006F,0x0063,0x0072,0x002D,0x0062,0x002D,0x0061,0x0064,0x0064,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0033,0x004A,0x0049,0x0053,0x0036,0x0032,0x0032,0x0039,0x0031,0x0039,0x0038,0x0034,0x0062,0x0061,0x0064,0x0064,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x0068,0x0061,0x006E,0x0064,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0034,0x00 } + , { 0x006A,0x0070,0x002D,0x006F,0x0063,0x0072,0x002D,0x0068,0x0061,0x006E,0x0064,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0034,0x004A,0x0049,0x0053,0x0036,0x0032,0x0032,0x0039,0x0031,0x0039,0x0038,0x0034,0x0068,0x0061,0x006E,0x0064,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x0068,0x0061,0x006E,0x0064,0x002D,0x0061,0x0064,0x0064,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0035,0x00 } + , { 0x006A,0x0070,0x002D,0x006F,0x0063,0x0072,0x002D,0x0068,0x0061,0x006E,0x0064,0x002D,0x0061,0x0064,0x0064,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0035,0x004A,0x0049,0x0053,0x0036,0x0032,0x0032,0x0039,0x0031,0x0039,0x0038,0x0034,0x0068,0x0061,0x006E,0x0064,0x0061,0x0064,0x0064,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x006B,0x0061,0x006E,0x0061,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0036,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0036,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0032,0x0039,0x0031,0x0039,0x0038,0x0034,0x006B,0x0061,0x006E,0x0061,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0032,0x0030,0x0033,0x0033,0x002D,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0038,0x00 } + , { 0x0065,0x0031,0x0033,0x0062,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0030,0x0033,0x0033,0x00 } + , { 0x0041,0x004E,0x0053,0x0049,0x005F,0x0058,0x0033,0x002E,0x0031,0x0031,0x0030,0x002D,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0039,0x00 } + , { 0x0043,0x0053,0x0041,0x005F,0x0054,0x0035,0x0030,0x0030,0x002D,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x004E,0x0041,0x0050,0x004C,0x0050,0x0053,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0039,0x004E,0x0041,0x0050,0x004C,0x0050,0x0053,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x003A,0x0031,0x0039,0x0038,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x0030,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } + , { 0x006C,0x0031,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0031,0x0039,0x00 } + , { 0x0043,0x0050,0x0038,0x0031,0x0039,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0032,0x003A,0x0031,0x0039,0x0038,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0032,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0032,0x00 } + , { 0x006C,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0032,0x00 } + , { 0x0054,0x002E,0x0036,0x0031,0x002D,0x0037,0x0062,0x0069,0x0074,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0030,0x0032,0x0054,0x0036,0x0031,0x0037,0x0062,0x0069,0x0074,0x00 } + , { 0x0054,0x002E,0x0036,0x0031,0x002D,0x0038,0x0062,0x0069,0x0074,0x00 } + , { 0x0054,0x002E,0x0036,0x0031,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0030,0x0033,0x0054,0x0036,0x0031,0x0038,0x0062,0x0069,0x0074,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0033,0x003A,0x0031,0x0039,0x0038,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x0039,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0033,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0033,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0033,0x00 } + , { 0x006C,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0033,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0034,0x003A,0x0031,0x0039,0x0038,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0031,0x0030,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0034,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0034,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0034,0x00 } + , { 0x006C,0x0034,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0034,0x00 } + , { 0x0045,0x0043,0x004D,0x0041,0x002D,0x0063,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0031,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0031,0x0031,0x0045,0x0043,0x004D,0x0041,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x0043,0x0053,0x0041,0x005F,0x005A,0x0032,0x0034,0x0033,0x002E,0x0034,0x002D,0x0031,0x0039,0x0038,0x0035,0x002D,0x0031,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0043,0x0041,0x00 } + , { 0x0063,0x0073,0x0061,0x0037,0x002D,0x0031,0x00 } + , { 0x0063,0x0061,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0032,0x0031,0x0043,0x0061,0x006E,0x0061,0x0064,0x0069,0x0061,0x006E,0x0031,0x00 } + , { 0x0043,0x0053,0x0041,0x005F,0x005A,0x0032,0x0034,0x0033,0x002E,0x0034,0x002D,0x0031,0x0039,0x0038,0x0035,0x002D,0x0032,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0043,0x0041,0x0032,0x00 } + , { 0x0063,0x0073,0x0061,0x0037,0x002D,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0032,0x0032,0x0043,0x0061,0x006E,0x0061,0x0064,0x0069,0x0061,0x006E,0x0032,0x00 } + , { 0x0043,0x0053,0x0041,0x005F,0x005A,0x0032,0x0034,0x0033,0x002E,0x0034,0x002D,0x0031,0x0039,0x0038,0x0035,0x002D,0x0067,0x0072,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0032,0x0033,0x0043,0x0053,0x0041,0x005A,0x0032,0x0034,0x0033,0x0034,0x0031,0x0039,0x0038,0x0035,0x0067,0x0072,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x003A,0x0031,0x0039,0x0038,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0037,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x00 } + , { 0x0045,0x0043,0x004D,0x0041,0x002D,0x0031,0x0031,0x0034,0x00 } + , { 0x0041,0x0053,0x004D,0x004F,0x002D,0x0037,0x0030,0x0038,0x00 } + , { 0x0061,0x0072,0x0061,0x0062,0x0069,0x0063,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0041,0x0072,0x0061,0x0062,0x0069,0x0063,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x002D,0x0045,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0035,0x0039,0x0036,0x0045,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x002D,0x0045,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x002D,0x0049,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0035,0x0039,0x0036,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x002D,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0037,0x003A,0x0031,0x0039,0x0038,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0037,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0037,0x00 } + , { 0x0045,0x004C,0x004F,0x0054,0x005F,0x0039,0x0032,0x0038,0x00 } + , { 0x0045,0x0043,0x004D,0x0041,0x002D,0x0031,0x0031,0x0038,0x00 } + , { 0x0067,0x0072,0x0065,0x0065,0x006B,0x00 } + , { 0x0067,0x0072,0x0065,0x0065,0x006B,0x0038,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0047,0x0072,0x0065,0x0065,0x006B,0x00 } + , { 0x0054,0x002E,0x0031,0x0030,0x0031,0x002D,0x0047,0x0032,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0038,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0032,0x0038,0x0054,0x0031,0x0030,0x0031,0x0047,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x003A,0x0031,0x0039,0x0038,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0033,0x0038,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x00 } + , { 0x0068,0x0065,0x0062,0x0072,0x0065,0x0077,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0048,0x0065,0x0062,0x0072,0x0065,0x0077,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x002D,0x0045,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0035,0x0039,0x0038,0x0045,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x002D,0x0045,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x002D,0x0049,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0035,0x0039,0x0038,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x002D,0x0049,0x00 } + , { 0x0043,0x0053,0x004E,0x005F,0x0033,0x0036,0x0039,0x0031,0x0030,0x0033,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0033,0x0039,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0033,0x0039,0x0043,0x0053,0x004E,0x0033,0x0036,0x0039,0x0031,0x0030,0x0033,0x00 } + , { 0x004A,0x0055,0x0053,0x005F,0x0049,0x002E,0x0042,0x0031,0x002E,0x0030,0x0030,0x0032,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0059,0x0055,0x00 } + , { 0x006A,0x0073,0x00 } + , { 0x0079,0x0075,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0034,0x0031,0x004A,0x0055,0x0053,0x0049,0x0042,0x0031,0x0030,0x0030,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0036,0x0039,0x0033,0x0037,0x002D,0x0032,0x002D,0x0061,0x0064,0x0064,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0054,0x0065,0x0078,0x0074,0x0043,0x006F,0x006D,0x006D,0x00 } + , { 0x0049,0x0045,0x0043,0x005F,0x0050,0x0032,0x0037,0x002D,0x0031,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0034,0x0033,0x0049,0x0045,0x0043,0x0050,0x0032,0x0037,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0035,0x003A,0x0031,0x0039,0x0038,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0034,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0035,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0035,0x00 } + , { 0x0063,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x004A,0x0055,0x0053,0x005F,0x0049,0x002E,0x0042,0x0031,0x002E,0x0030,0x0030,0x0033,0x002D,0x0073,0x0065,0x0072,0x0062,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0036,0x00 } + , { 0x0073,0x0065,0x0072,0x0062,0x0069,0x0061,0x006E,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0034,0x0036,0x0053,0x0065,0x0072,0x0062,0x0069,0x0061,0x006E,0x00 } + , { 0x004A,0x0055,0x0053,0x005F,0x0049,0x002E,0x0042,0x0031,0x002E,0x0030,0x0030,0x0033,0x002D,0x006D,0x0061,0x0063,0x00 } + , { 0x006D,0x0061,0x0063,0x0065,0x0064,0x006F,0x006E,0x0069,0x0061,0x006E,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0037,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0034,0x0037,0x004D,0x0061,0x0063,0x0065,0x0064,0x006F,0x006E,0x0069,0x0061,0x006E,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0039,0x003A,0x0031,0x0039,0x0038,0x0039,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0038,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0039,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0039,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0035,0x00 } + , { 0x006C,0x0035,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0035,0x00 } + , { 0x0067,0x0072,0x0065,0x0065,0x006B,0x002D,0x0063,0x0063,0x0069,0x0074,0x0074,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0030,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0030,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0030,0x0047,0x0072,0x0065,0x0065,0x006B,0x0043,0x0043,0x0049,0x0054,0x0054,0x00 } + , { 0x004E,0x0043,0x005F,0x004E,0x0043,0x0030,0x0030,0x002D,0x0031,0x0030,0x003A,0x0038,0x0031,0x00 } + , { 0x0063,0x0075,0x0062,0x0061,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0043,0x0055,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0031,0x0043,0x0075,0x0062,0x0061,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0036,0x0039,0x0033,0x0037,0x002D,0x0032,0x002D,0x0032,0x0035,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0039,0x0033,0x0037,0x0041,0x0064,0x0064,0x00 } + , { 0x0047,0x004F,0x0053,0x0054,0x005F,0x0031,0x0039,0x0037,0x0036,0x0038,0x002D,0x0037,0x0034,0x00 } + , { 0x0053,0x0054,0x005F,0x0053,0x0045,0x0056,0x005F,0x0033,0x0035,0x0038,0x002D,0x0038,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0033,0x0047,0x004F,0x0053,0x0054,0x0031,0x0039,0x0037,0x0036,0x0038,0x0037,0x0034,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0073,0x0075,0x0070,0x0070,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0034,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0031,0x002D,0x0032,0x002D,0x0035,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0035,0x0039,0x0053,0x0075,0x0070,0x0070,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0031,0x0030,0x0033,0x0036,0x0037,0x002D,0x0062,0x006F,0x0078,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0035,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0030,0x0033,0x0036,0x0037,0x0042,0x006F,0x0078,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0030,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0037,0x00 } + , { 0x006C,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0030,0x003A,0x0031,0x0039,0x0039,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0036,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0036,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x002D,0x006C,0x0061,0x0070,0x00 } + , { 0x006C,0x0061,0x0070,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0038,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0038,0x004C,0x0061,0x0070,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0058,0x0030,0x0032,0x0031,0x0032,0x002D,0x0031,0x0039,0x0039,0x0030,0x00 } + , { 0x0078,0x0030,0x0032,0x0031,0x0032,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0039,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0039,0x004A,0x0049,0x0053,0x0058,0x0030,0x0032,0x0031,0x0032,0x0031,0x0039,0x0039,0x0030,0x00 } + , { 0x0044,0x0053,0x005F,0x0032,0x0030,0x0038,0x0039,0x00 } + , { 0x0044,0x0053,0x0032,0x0030,0x0038,0x0039,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0044,0x004B,0x00 } + , { 0x0064,0x006B,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x0044,0x0061,0x006E,0x0069,0x0073,0x0068,0x00 } + , { 0x0075,0x0073,0x002D,0x0064,0x006B,0x00 } + , { 0x0063,0x0073,0x0055,0x0053,0x0044,0x004B,0x00 } + , { 0x0064,0x006B,0x002D,0x0075,0x0073,0x00 } + , { 0x0063,0x0073,0x0044,0x004B,0x0055,0x0053,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0058,0x0030,0x0032,0x0030,0x0031,0x00 } + , { 0x0058,0x0030,0x0032,0x0030,0x0031,0x00 } + , { 0x0063,0x0073,0x0048,0x0061,0x006C,0x0066,0x0057,0x0069,0x0064,0x0074,0x0068,0x004B,0x0061,0x0074,0x0061,0x006B,0x0061,0x006E,0x0061,0x00 } + , { 0x004B,0x0053,0x0043,0x0035,0x0036,0x0033,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x004B,0x0052,0x00 } + , { 0x0063,0x0073,0x004B,0x0053,0x0043,0x0035,0x0036,0x0033,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x0055,0x0043,0x0053,0x002D,0x0032,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x0055,0x0043,0x0053,0x002D,0x0034,0x00 } + , { 0x0063,0x0073,0x0055,0x0043,0x0053,0x0034,0x00 } + , { 0x0044,0x0045,0x0043,0x002D,0x004D,0x0043,0x0053,0x00 } + , { 0x0064,0x0065,0x0063,0x00 } + , { 0x0063,0x0073,0x0044,0x0045,0x0043,0x004D,0x0043,0x0053,0x00 } + , { 0x0068,0x0070,0x002D,0x0072,0x006F,0x006D,0x0061,0x006E,0x0038,0x00 } + , { 0x0072,0x006F,0x006D,0x0061,0x006E,0x0038,0x00 } + , { 0x0072,0x0038,0x00 } + , { 0x0063,0x0073,0x0048,0x0050,0x0052,0x006F,0x006D,0x0061,0x006E,0x0038,0x00 } + , { 0x006D,0x0061,0x0063,0x0069,0x006E,0x0074,0x006F,0x0073,0x0068,0x00 } + , { 0x006D,0x0061,0x0063,0x00 } + , { 0x0063,0x0073,0x004D,0x0061,0x0063,0x0069,0x006E,0x0074,0x006F,0x0073,0x0068,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0033,0x0037,0x00 } + , { 0x0063,0x0070,0x0030,0x0033,0x0037,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0075,0x0073,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0063,0x0061,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0077,0x0074,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x006E,0x006C,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0030,0x0033,0x0037,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0033,0x0038,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0049,0x004E,0x0054,0x00 } + , { 0x0063,0x0070,0x0030,0x0033,0x0038,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0030,0x0033,0x0038,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0037,0x0033,0x00 } + , { 0x0043,0x0050,0x0032,0x0037,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0037,0x0033,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0037,0x0034,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0042,0x0045,0x00 } + , { 0x0043,0x0050,0x0032,0x0037,0x0034,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0037,0x0034,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0037,0x0035,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0042,0x0052,0x00 } + , { 0x0063,0x0070,0x0032,0x0037,0x0035,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0037,0x0035,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0037,0x0037,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0043,0x0050,0x002D,0x0044,0x004B,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0043,0x0050,0x002D,0x004E,0x004F,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0037,0x0037,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0037,0x0038,0x00 } + , { 0x0043,0x0050,0x0032,0x0037,0x0038,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0066,0x0069,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0073,0x0065,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0037,0x0038,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0038,0x0030,0x00 } + , { 0x0043,0x0050,0x0032,0x0038,0x0030,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0069,0x0074,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0038,0x0030,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0038,0x0031,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x004A,0x0050,0x002D,0x0045,0x00 } + , { 0x0063,0x0070,0x0032,0x0038,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0038,0x0031,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0038,0x0034,0x00 } + , { 0x0043,0x0050,0x0032,0x0038,0x0034,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0065,0x0073,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0038,0x0034,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0038,0x0035,0x00 } + , { 0x0043,0x0050,0x0032,0x0038,0x0035,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0067,0x0062,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0038,0x0035,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0039,0x0030,0x00 } + , { 0x0063,0x0070,0x0032,0x0039,0x0030,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x004A,0x0050,0x002D,0x006B,0x0061,0x006E,0x0061,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0039,0x0030,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0039,0x0037,0x00 } + , { 0x0063,0x0070,0x0032,0x0039,0x0037,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0066,0x0072,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0039,0x0037,0x00 } + , { 0x0049,0x0042,0x004D,0x0034,0x0032,0x0030,0x00 } + , { 0x0063,0x0070,0x0034,0x0032,0x0030,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0061,0x0072,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0034,0x0032,0x0030,0x00 } + , { 0x0049,0x0042,0x004D,0x0034,0x0032,0x0033,0x00 } + , { 0x0063,0x0070,0x0034,0x0032,0x0033,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0067,0x0072,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0034,0x0032,0x0033,0x00 } + , { 0x0049,0x0042,0x004D,0x0034,0x0032,0x0034,0x00 } + , { 0x0063,0x0070,0x0034,0x0032,0x0034,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0068,0x0065,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0034,0x0032,0x0034,0x00 } + , { 0x0049,0x0042,0x004D,0x0034,0x0033,0x0037,0x00 } + , { 0x0063,0x0070,0x0034,0x0033,0x0037,0x00 } + , { 0x0034,0x0033,0x0037,0x00 } + , { 0x0063,0x0073,0x0050,0x0043,0x0038,0x0043,0x006F,0x0064,0x0065,0x0050,0x0061,0x0067,0x0065,0x0034,0x0033,0x0037,0x00 } + , { 0x0049,0x0042,0x004D,0x0035,0x0030,0x0030,0x00 } + , { 0x0043,0x0050,0x0035,0x0030,0x0030,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0062,0x0065,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0063,0x0068,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0035,0x0030,0x0030,0x00 } + , { 0x0049,0x0042,0x004D,0x0037,0x0037,0x0035,0x00 } + , { 0x0063,0x0070,0x0037,0x0037,0x0035,0x00 } + , { 0x0063,0x0073,0x0050,0x0043,0x0037,0x0037,0x0035,0x0042,0x0061,0x006C,0x0074,0x0069,0x0063,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0035,0x0030,0x00 } + , { 0x0063,0x0070,0x0038,0x0035,0x0030,0x00 } + , { 0x0038,0x0035,0x0030,0x00 } + , { 0x0063,0x0073,0x0050,0x0043,0x0038,0x0035,0x0030,0x004D,0x0075,0x006C,0x0074,0x0069,0x006C,0x0069,0x006E,0x0067,0x0075,0x0061,0x006C,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0035,0x0031,0x00 } + , { 0x0063,0x0070,0x0038,0x0035,0x0031,0x00 } + , { 0x0038,0x0035,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0035,0x0031,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0035,0x0032,0x00 } + , { 0x0063,0x0070,0x0038,0x0035,0x0032,0x00 } + , { 0x0038,0x0035,0x0032,0x00 } + , { 0x0063,0x0073,0x0050,0x0043,0x0070,0x0038,0x0035,0x0032,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0035,0x0035,0x00 } + , { 0x0063,0x0070,0x0038,0x0035,0x0035,0x00 } + , { 0x0038,0x0035,0x0035,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0035,0x0035,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0035,0x0037,0x00 } + , { 0x0063,0x0070,0x0038,0x0035,0x0037,0x00 } + , { 0x0038,0x0035,0x0037,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0035,0x0037,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0030,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0030,0x00 } + , { 0x0038,0x0036,0x0030,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0030,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0031,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0031,0x00 } + , { 0x0038,0x0036,0x0031,0x00 } + , { 0x0063,0x0070,0x002D,0x0069,0x0073,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0031,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0032,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0032,0x00 } + , { 0x0038,0x0036,0x0032,0x00 } + , { 0x0063,0x0073,0x0050,0x0043,0x0038,0x0036,0x0032,0x004C,0x0061,0x0074,0x0069,0x006E,0x0048,0x0065,0x0062,0x0072,0x0065,0x0077,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0033,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0033,0x00 } + , { 0x0038,0x0036,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0033,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0034,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0034,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0034,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0035,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0035,0x00 } + , { 0x0038,0x0036,0x0035,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0035,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0036,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0036,0x00 } + , { 0x0038,0x0036,0x0036,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0036,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0038,0x00 } + , { 0x0043,0x0050,0x0038,0x0036,0x0038,0x00 } + , { 0x0063,0x0070,0x002D,0x0061,0x0072,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0038,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0039,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0039,0x00 } + , { 0x0038,0x0036,0x0039,0x00 } + , { 0x0063,0x0070,0x002D,0x0067,0x0072,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0039,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0037,0x0030,0x00 } + , { 0x0043,0x0050,0x0038,0x0037,0x0030,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0072,0x006F,0x0065,0x0063,0x0065,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0079,0x0075,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0037,0x0030,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0037,0x0031,0x00 } + , { 0x0043,0x0050,0x0038,0x0037,0x0031,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0069,0x0073,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0037,0x0031,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0038,0x0030,0x00 } + , { 0x0063,0x0070,0x0038,0x0038,0x0030,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0038,0x0030,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0039,0x0031,0x00 } + , { 0x0063,0x0070,0x0038,0x0039,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0039,0x0031,0x00 } + , { 0x0049,0x0042,0x004D,0x0039,0x0030,0x0033,0x00 } + , { 0x0063,0x0070,0x0039,0x0030,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0039,0x0030,0x0033,0x00 } + , { 0x0049,0x0042,0x004D,0x0039,0x0030,0x0034,0x00 } + , { 0x0063,0x0070,0x0039,0x0030,0x0034,0x00 } + , { 0x0039,0x0030,0x0034,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x0042,0x004D,0x0039,0x0030,0x0034,0x00 } + , { 0x0049,0x0042,0x004D,0x0039,0x0030,0x0035,0x00 } + , { 0x0043,0x0050,0x0039,0x0030,0x0035,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0074,0x0072,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0039,0x0030,0x0035,0x00 } + , { 0x0049,0x0042,0x004D,0x0039,0x0031,0x0038,0x00 } + , { 0x0043,0x0050,0x0039,0x0031,0x0038,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0061,0x0072,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0039,0x0031,0x0038,0x00 } + , { 0x0049,0x0042,0x004D,0x0031,0x0030,0x0032,0x0036,0x00 } + , { 0x0043,0x0050,0x0031,0x0030,0x0032,0x0036,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0031,0x0030,0x0032,0x0036,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0041,0x0054,0x002D,0x0044,0x0045,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0041,0x0054,0x0044,0x0045,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0041,0x0054,0x002D,0x0044,0x0045,0x002D,0x0041,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0041,0x0054,0x0044,0x0045,0x0041,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0043,0x0041,0x002D,0x0046,0x0052,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0043,0x0041,0x0046,0x0052,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0044,0x004B,0x002D,0x004E,0x004F,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0044,0x004B,0x004E,0x004F,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0044,0x004B,0x002D,0x004E,0x004F,0x002D,0x0041,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0044,0x004B,0x004E,0x004F,0x0041,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0046,0x0049,0x002D,0x0053,0x0045,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0046,0x0049,0x0053,0x0045,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0046,0x0049,0x002D,0x0053,0x0045,0x002D,0x0041,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0046,0x0049,0x0053,0x0045,0x0041,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0046,0x0052,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0046,0x0052,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0049,0x0054,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0049,0x0054,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0050,0x0054,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0050,0x0054,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0045,0x0053,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0045,0x0053,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0045,0x0053,0x002D,0x0041,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0045,0x0053,0x0041,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0045,0x0053,0x002D,0x0053,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0045,0x0053,0x0053,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0055,0x004B,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0055,0x004B,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0055,0x0053,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0055,0x0053,0x00 } + , { 0x0055,0x004E,0x004B,0x004E,0x004F,0x0057,0x004E,0x002D,0x0038,0x0042,0x0049,0x0054,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0038,0x0042,0x0069,0x0054,0x00 } + , { 0x004D,0x004E,0x0045,0x004D,0x004F,0x004E,0x0049,0x0043,0x00 } + , { 0x0063,0x0073,0x004D,0x006E,0x0065,0x006D,0x006F,0x006E,0x0069,0x0063,0x00 } + , { 0x004D,0x004E,0x0045,0x004D,0x00 } + , { 0x0063,0x0073,0x004D,0x006E,0x0065,0x006D,0x00 } + , { 0x0056,0x0049,0x0053,0x0043,0x0049,0x0049,0x00 } + , { 0x0063,0x0073,0x0056,0x0049,0x0053,0x0043,0x0049,0x0049,0x00 } + , { 0x0056,0x0049,0x0051,0x0052,0x00 } + , { 0x0063,0x0073,0x0056,0x0049,0x0051,0x0052,0x00 } + , { 0x004B,0x004F,0x0049,0x0038,0x002D,0x0052,0x00 } + , { 0x0063,0x0073,0x004B,0x004F,0x0049,0x0038,0x0052,0x00 } + , { 0x004B,0x004F,0x0049,0x0038,0x002D,0x0055,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0030,0x0038,0x0035,0x0038,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0030,0x0038,0x0035,0x0038,0x00 } + , { 0x0043,0x0050,0x0030,0x0030,0x0038,0x0035,0x0038,0x00 } + , { 0x0050,0x0043,0x002D,0x004D,0x0075,0x006C,0x0074,0x0069,0x006C,0x0069,0x006E,0x0067,0x0075,0x0061,0x006C,0x002D,0x0038,0x0035,0x0030,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0030,0x0039,0x0032,0x0034,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0030,0x0039,0x0032,0x0034,0x00 } + , { 0x0043,0x0050,0x0030,0x0030,0x0039,0x0032,0x0034,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x0039,0x002D,0x002D,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0030,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0030,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0030,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0075,0x0073,0x002D,0x0033,0x0037,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0031,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0031,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0031,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0064,0x0065,0x002D,0x0032,0x0037,0x0033,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0032,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0032,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0032,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0064,0x006B,0x002D,0x0032,0x0037,0x0037,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x006E,0x006F,0x002D,0x0032,0x0037,0x0037,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0033,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0033,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0033,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0066,0x0069,0x002D,0x0032,0x0037,0x0038,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0073,0x0065,0x002D,0x0032,0x0037,0x0038,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0034,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0034,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0034,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0069,0x0074,0x002D,0x0032,0x0038,0x0030,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0035,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0035,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0035,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0065,0x0073,0x002D,0x0032,0x0038,0x0034,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0036,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0036,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0036,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0067,0x0062,0x002D,0x0032,0x0038,0x0035,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0037,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0037,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0037,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0066,0x0072,0x002D,0x0032,0x0039,0x0037,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0038,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0038,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0038,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x002D,0x0035,0x0030,0x0030,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0039,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0039,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0039,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0069,0x0073,0x002D,0x0038,0x0037,0x0031,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0042,0x0069,0x0067,0x0035,0x002D,0x0048,0x004B,0x0053,0x0043,0x0053,0x00 } + , { 0x0055,0x004E,0x0049,0x0043,0x004F,0x0044,0x0045,0x002D,0x0031,0x002D,0x0031,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0031,0x0031,0x00 } + , { 0x0053,0x0043,0x0053,0x0055,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0037,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0031,0x0036,0x0042,0x0045,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0031,0x0036,0x004C,0x0045,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0031,0x0036,0x00 } + , { 0x0043,0x0045,0x0053,0x0055,0x002D,0x0038,0x00 } + , { 0x0063,0x0073,0x0043,0x0045,0x0053,0x0055,0x002D,0x0038,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0033,0x0032,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0033,0x0032,0x0042,0x0045,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0033,0x0032,0x004C,0x0045,0x00 } + , { 0x0055,0x004E,0x0049,0x0043,0x004F,0x0044,0x0045,0x002D,0x0031,0x002D,0x0031,0x002D,0x0055,0x0054,0x0046,0x002D,0x0037,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0031,0x0031,0x0055,0x0054,0x0046,0x0037,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0038,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0033,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0034,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0039,0x0039,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0034,0x003A,0x0031,0x0039,0x0039,0x0038,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0034,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0063,0x0065,0x006C,0x0074,0x0069,0x0063,0x00 } + , { 0x006C,0x0038,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0035,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0035,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0036,0x00 } + , { 0x00 } + , { 0x0047,0x0042,0x004B,0x00 } + , { 0x0043,0x0050,0x0039,0x0033,0x0036,0x00 } + , { 0x004D,0x0053,0x0039,0x0033,0x0036,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0039,0x0033,0x0036,0x00 } + , { 0x0047,0x0042,0x0031,0x0038,0x0030,0x0033,0x0030,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0045,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x0063,0x0073,0x004A,0x0049,0x0053,0x0045,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x0053,0x0068,0x0069,0x0066,0x0074,0x005F,0x004A,0x0049,0x0053,0x00 } + , { 0x004D,0x0053,0x005F,0x004B,0x0061,0x006E,0x006A,0x0069,0x00 } + , { 0x0063,0x0073,0x0053,0x0068,0x0069,0x0066,0x0074,0x004A,0x0049,0x0053,0x00 } + , { 0x0045,0x0078,0x0074,0x0065,0x006E,0x0064,0x0065,0x0064,0x005F,0x0055,0x004E,0x0049,0x0058,0x005F,0x0043,0x006F,0x0064,0x0065,0x005F,0x0050,0x0061,0x0063,0x006B,0x0065,0x0064,0x005F,0x0046,0x006F,0x0072,0x006D,0x0061,0x0074,0x005F,0x0066,0x006F,0x0072,0x005F,0x004A,0x0061,0x0070,0x0061,0x006E,0x0065,0x0073,0x0065,0x00 } + , { 0x0063,0x0073,0x0045,0x0055,0x0043,0x0050,0x006B,0x0064,0x0046,0x006D,0x0074,0x004A,0x0061,0x0070,0x0061,0x006E,0x0065,0x0073,0x0065,0x00 } + , { 0x0045,0x0055,0x0043,0x002D,0x004A,0x0050,0x00 } + , { 0x0045,0x0078,0x0074,0x0065,0x006E,0x0064,0x0065,0x0064,0x005F,0x0055,0x004E,0x0049,0x0058,0x005F,0x0043,0x006F,0x0064,0x0065,0x005F,0x0046,0x0069,0x0078,0x0065,0x0064,0x005F,0x0057,0x0069,0x0064,0x0074,0x0068,0x005F,0x0066,0x006F,0x0072,0x005F,0x004A,0x0061,0x0070,0x0061,0x006E,0x0065,0x0073,0x0065,0x00 } + , { 0x0063,0x0073,0x0045,0x0055,0x0043,0x0046,0x0069,0x0078,0x0057,0x0069,0x0064,0x004A,0x0061,0x0070,0x0061,0x006E,0x0065,0x0073,0x0065,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x0055,0x0043,0x0053,0x002D,0x0042,0x0061,0x0073,0x0069,0x0063,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0041,0x0053,0x0043,0x0049,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x004C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x004A,0x002D,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x0049,0x0042,0x004D,0x002D,0x0031,0x0032,0x0036,0x0031,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0049,0x0042,0x004D,0x0031,0x0032,0x0036,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x0049,0x0042,0x004D,0x002D,0x0031,0x0032,0x0036,0x0038,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0049,0x0042,0x004D,0x0031,0x0032,0x0036,0x0038,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x0049,0x0042,0x004D,0x002D,0x0031,0x0032,0x0037,0x0036,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0049,0x0042,0x004D,0x0031,0x0032,0x0037,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x0049,0x0042,0x004D,0x002D,0x0031,0x0032,0x0036,0x0034,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0049,0x0042,0x004D,0x0031,0x0032,0x0036,0x0034,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x0049,0x0042,0x004D,0x002D,0x0031,0x0032,0x0036,0x0035,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0049,0x0042,0x004D,0x0031,0x0032,0x0036,0x0035,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x002D,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0033,0x002E,0x0030,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0031,0x00 } + , { 0x0063,0x0073,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x0033,0x0030,0x004C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x002D,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0033,0x002E,0x0031,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0031,0x00 } + , { 0x0063,0x0073,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x0033,0x0031,0x004C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0032,0x002D,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0032,0x00 } + , { 0x0063,0x0073,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x0033,0x0031,0x004C,0x0061,0x0074,0x0069,0x006E,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0039,0x002D,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0035,0x00 } + , { 0x0063,0x0073,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x0033,0x0031,0x004C,0x0061,0x0074,0x0069,0x006E,0x0035,0x00 } + , { 0x0041,0x0064,0x006F,0x0062,0x0065,0x002D,0x0053,0x0074,0x0061,0x006E,0x0064,0x0061,0x0072,0x0064,0x002D,0x0045,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x0063,0x0073,0x0041,0x0064,0x006F,0x0062,0x0065,0x0053,0x0074,0x0061,0x006E,0x0064,0x0061,0x0072,0x0064,0x0045,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x002D,0x0055,0x0053,0x00 } + , { 0x0063,0x0073,0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x0055,0x0053,0x00 } + , { 0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x002D,0x0049,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x00 } + , { 0x0063,0x0073,0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x0049,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x00 } + , { 0x0050,0x0043,0x0038,0x002D,0x0044,0x0061,0x006E,0x0069,0x0073,0x0068,0x002D,0x004E,0x006F,0x0072,0x0077,0x0065,0x0067,0x0069,0x0061,0x006E,0x00 } + , { 0x0063,0x0073,0x0050,0x0043,0x0038,0x0044,0x0061,0x006E,0x0069,0x0073,0x0068,0x004E,0x006F,0x0072,0x0077,0x0065,0x0067,0x0069,0x0061,0x006E,0x00 } + , { 0x0050,0x0043,0x0038,0x002D,0x0054,0x0075,0x0072,0x006B,0x0069,0x0073,0x0068,0x00 } + , { 0x0063,0x0073,0x0050,0x0043,0x0038,0x0054,0x0075,0x0072,0x006B,0x0069,0x0073,0x0068,0x00 } + , { 0x0049,0x0042,0x004D,0x002D,0x0053,0x0079,0x006D,0x0062,0x006F,0x006C,0x0073,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0053,0x0079,0x006D,0x0062,0x006F,0x006C,0x0073,0x00 } + , { 0x0049,0x0042,0x004D,0x002D,0x0054,0x0068,0x0061,0x0069,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0054,0x0068,0x0061,0x0069,0x00 } + , { 0x0048,0x0050,0x002D,0x004C,0x0065,0x0067,0x0061,0x006C,0x00 } + , { 0x0063,0x0073,0x0048,0x0050,0x004C,0x0065,0x0067,0x0061,0x006C,0x00 } + , { 0x0048,0x0050,0x002D,0x0050,0x0069,0x002D,0x0066,0x006F,0x006E,0x0074,0x00 } + , { 0x0063,0x0073,0x0048,0x0050,0x0050,0x0069,0x0046,0x006F,0x006E,0x0074,0x00 } + , { 0x0048,0x0050,0x002D,0x004D,0x0061,0x0074,0x0068,0x0038,0x00 } + , { 0x0063,0x0073,0x0048,0x0050,0x004D,0x0061,0x0074,0x0068,0x0038,0x00 } + , { 0x0041,0x0064,0x006F,0x0062,0x0065,0x002D,0x0053,0x0079,0x006D,0x0062,0x006F,0x006C,0x002D,0x0045,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x0063,0x0073,0x0048,0x0050,0x0050,0x0053,0x004D,0x0061,0x0074,0x0068,0x00 } + , { 0x0048,0x0050,0x002D,0x0044,0x0065,0x0073,0x006B,0x0054,0x006F,0x0070,0x00 } + , { 0x0063,0x0073,0x0048,0x0050,0x0044,0x0065,0x0073,0x006B,0x0074,0x006F,0x0070,0x00 } + , { 0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x002D,0x004D,0x0061,0x0074,0x0068,0x00 } + , { 0x0063,0x0073,0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x004D,0x0061,0x0074,0x0068,0x00 } + , { 0x004D,0x0069,0x0063,0x0072,0x006F,0x0073,0x006F,0x0066,0x0074,0x002D,0x0050,0x0075,0x0062,0x006C,0x0069,0x0073,0x0068,0x0069,0x006E,0x0067,0x00 } + , { 0x0063,0x0073,0x004D,0x0069,0x0063,0x0072,0x006F,0x0073,0x006F,0x0066,0x0074,0x0050,0x0075,0x0062,0x006C,0x0069,0x0073,0x0068,0x0069,0x006E,0x0067,0x00 } + , { 0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0033,0x0031,0x004A,0x00 } + , { 0x0063,0x0073,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x0033,0x0031,0x004A,0x00 } + , { 0x0047,0x0042,0x0032,0x0033,0x0031,0x0032,0x00 } + , { 0x0063,0x0073,0x0047,0x0042,0x0032,0x0033,0x0031,0x0032,0x00 } + , { 0x0042,0x0069,0x0067,0x0035,0x00 } + , { 0x0063,0x0073,0x0042,0x0069,0x0067,0x0035,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0030,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0031,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0032,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0033,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0034,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0035,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0036,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0037,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0038,0x00 } + , { 0x0054,0x0049,0x0053,0x002D,0x0036,0x0032,0x0030,0x00 } + , { 0x0048,0x005A,0x002D,0x0047,0x0042,0x002D,0x0032,0x0033,0x0031,0x0032,0x00 } + +}; +const unsigned int gEncodingArraySize = 791; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/IGXMLScanner.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/IGXMLScanner.hpp new file mode 100644 index 000000000000..d3e1046a0f9c --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/IGXMLScanner.hpp @@ -0,0 +1,308 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IGXMLSCANNER_HPP) +#define XERCESC_INCLUDE_GUARD_IGXMLSCANNER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DTDElementDecl; +class DTDGrammar; +class DTDValidator; +class SchemaValidator; +class IdentityConstraintHandler; +class IdentityConstraint; +class ContentLeafNameTypeVector; +class SchemaAttDef; +class XMLContentModel; +class XSModel; +class PSVIAttributeList; +class PSVIElement; + +// This is an integrated scanner class, which does DTD/XML Schema grammar +// processing. +class XMLPARSER_EXPORT IGXMLScanner : public XMLScanner +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + IGXMLScanner + ( + XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + IGXMLScanner + ( + XMLDocumentHandler* const docHandler + , DocTypeHandler* const docTypeHandler + , XMLEntityHandler* const entityHandler + , XMLErrorReporter* const errReporter + , XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~IGXMLScanner(); + + // ----------------------------------------------------------------------- + // XMLScanner public virtual methods + // ----------------------------------------------------------------------- + virtual const XMLCh* getName() const; + virtual NameIdPool* getEntityDeclPool(); + virtual const NameIdPool* getEntityDeclPool() const; + virtual void scanDocument + ( + const InputSource& src + ); + virtual bool scanNext(XMLPScanToken& toFill); + virtual Grammar* loadGrammar + ( + const InputSource& src + , const short grammarType + , const bool toCache = false + ); + + virtual void resetCachedGrammar (); + virtual Grammar::GrammarType getCurrentGrammarType() const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IGXMLScanner(); + IGXMLScanner(const IGXMLScanner&); + IGXMLScanner& operator=(const IGXMLScanner&); + + // ----------------------------------------------------------------------- + // XMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual void scanCDSection(); + virtual void scanCharData(XMLBuffer& toToUse); + virtual EntityExpRes scanEntityRef + ( + const bool inAttVal + , XMLCh& firstCh + , XMLCh& secondCh + , bool& escaped + ); + virtual void scanDocTypeDecl(); + virtual void scanReset(const InputSource& src); + virtual void sendCharData(XMLBuffer& toSend); + virtual InputSource* resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void commonInit(); + void cleanUp(); + + XMLSize_t buildAttList + ( + const RefVectorOf& providedAttrs + , const XMLSize_t attCount + , XMLElementDecl* elemDecl + , RefVectorOf& toFill + ); + bool normalizeAttValue + ( + const XMLAttDef* const attDef + , const XMLCh* const name + , const XMLCh* const value + , XMLBuffer& toFill + ); + bool normalizeAttRawValue + ( + const XMLCh* const attrName + , const XMLCh* const value + , XMLBuffer& toFill + ); + void updateNSMap + ( + const XMLCh* const attrName + , const XMLCh* const attrValue + ); + void updateNSMap + ( + const XMLCh* const attrName + , const XMLCh* const attrValue + , const int colonPosition + ); + void scanRawAttrListforNameSpaces(XMLSize_t attCount); + void parseSchemaLocation(const XMLCh* const schemaLocationStr, bool ignoreLoadSchema = false); + void resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri, bool ignoreLoadSchema = false); + bool switchGrammar(const XMLCh* const newGrammarNameSpace); + bool laxElementValidation(QName* element, ContentLeafNameTypeVector* cv, + const XMLContentModel* const cm, + const XMLSize_t parentElemDepth); + bool anyAttributeValidation(SchemaAttDef* attWildCard, + unsigned int uriId, + bool& skipThisOne, + bool& laxThisOne); + void resizeElemState(); + void processSchemaLocation(XMLCh* const schemaLoc); + + void resizeRawAttrColonList(); + + // ----------------------------------------------------------------------- + // Private scanning methods + // ----------------------------------------------------------------------- + bool basicAttrValueScan + ( + const XMLCh* const attrName + , XMLBuffer& toFill + ); + XMLSize_t rawAttrScan + ( + const XMLCh* const elemName + , RefVectorOf& toFill + , bool& isEmpty + ); + bool scanAttValue + ( + const XMLAttDef* const attDef + , const XMLCh* const attrName + , XMLBuffer& toFill + ); + bool scanContent(); + void scanEndTag(bool& gotData); + bool scanStartTag(bool& gotData); + bool scanStartTagNS(bool& gotData); + + // ----------------------------------------------------------------------- + // IdentityConstraints Activation methods + // ----------------------------------------------------------------------- + inline bool toCheckIdentityConstraint() const; + + // ----------------------------------------------------------------------- + // Grammar preparsing methods + // ----------------------------------------------------------------------- + Grammar* loadXMLSchemaGrammar(const InputSource& src, const bool toCache = false); + Grammar* loadDTDGrammar(const InputSource& src, const bool toCache = false); + + // ----------------------------------------------------------------------- + // PSVI handling methods + // ----------------------------------------------------------------------- + void endElementPSVI(SchemaElementDecl* const elemDecl, + DatatypeValidator* const memberDV); + void resetPSVIElemContext(); + + // ----------------------------------------------------------------------- + // Data members + // + // fRawAttrList + // During the initial scan of the attributes we can only do a raw + // scan for key/value pairs. So this vector is used to store them + // until they can be processed (and put into fAttrList.) + // + // fDTDValidator + // The DTD validator instance. + // + // fSchemaValidator + // The Schema validator instance. + // + // fSeeXsi + // This flag indicates a schema has been seen. + // + // fElemState + // fElemLoopState + // fElemStateSize + // Stores an element next state from DFA content model - used for + // wildcard validation + // + // fDTDElemNonDeclPool + // registry of "faulted-in" DTD element decls + // fSchemaElemNonDeclPool + // registry for elements without decls in the grammar + // fElemCount + // count of the number of start tags seen so far (starts at 1). + // Used for duplicate attribute detection/processing of required/defaulted attributes + // fAttDefRegistry + // mapping from XMLAttDef instances to the count of the last + // start tag where they were utilized. + // fUndeclaredAttrRegistry + // set of attr QNames to detect duplicates + // fPSVIAttrList + // PSVI attribute list implementation that needs to be + // filled when a PSVIHandler is registered + // fSchemaInfoList + // Transient schema info list that is passed to TraverseSchema instances. + // fCachedSchemaInfoList + // Cached Schema info list that is passed to TraverseSchema instances. + // + // ----------------------------------------------------------------------- + bool fSeeXsi; + Grammar::GrammarType fGrammarType; + unsigned int fElemStateSize; + unsigned int* fElemState; + unsigned int* fElemLoopState; + XMLBuffer fContent; + RefVectorOf* fRawAttrList; + unsigned int fRawAttrColonListSize; + int* fRawAttrColonList; + DTDValidator* fDTDValidator; + SchemaValidator* fSchemaValidator; + DTDGrammar* fDTDGrammar; + IdentityConstraintHandler* fICHandler; + ValueVectorOf* fLocationPairs; + NameIdPool* fDTDElemNonDeclPool; + RefHash3KeysIdPool* fSchemaElemNonDeclPool; + unsigned int fElemCount; + RefHashTableOf*fAttDefRegistry; + Hash2KeysSetOf* fUndeclaredAttrRegistry; + PSVIAttributeList * fPSVIAttrList; + XSModel* fModel; + PSVIElement* fPSVIElement; + ValueStackOf* fErrorStack; + PSVIElemContext fPSVIElemContext; + RefHash2KeysTableOf* fSchemaInfoList; + RefHash2KeysTableOf* fCachedSchemaInfoList; +}; + +inline const XMLCh* IGXMLScanner::getName() const +{ + return XMLUni::fgIGXMLScanner; +} + +inline bool IGXMLScanner::toCheckIdentityConstraint() const +{ + return fValidate && fIdentityConstraintChecking && fICHandler; +} + +inline Grammar::GrammarType IGXMLScanner::getCurrentGrammarType() const +{ + return fGrammarType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/MemoryManagerImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/MemoryManagerImpl.hpp new file mode 100644 index 000000000000..5aeb1682e439 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/MemoryManagerImpl.hpp @@ -0,0 +1,106 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_MEMORYMANAGERIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_MEMORYMANAGERIMPL_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Configurable memory manager + * + *

This is Xerces default implementation of the memory + * manager interface, which will be instantiated and used + * in the absence of an application's memory manager. + *

+ */ + +class XMLUTIL_EXPORT MemoryManagerImpl : public MemoryManager +{ +public: + + /** @name Constructor */ + //@{ + + /** + * Default constructor + */ + MemoryManagerImpl() + { + } + //@} + + /** @name Destructor */ + //@{ + + /** + * Default destructor + */ + virtual ~MemoryManagerImpl() + { + } + //@} + + + /** + * This method is called to obtain the memory manager that should be + * used to allocate memory used in exceptions. + * + * @return A pointer to the memory manager + */ + virtual MemoryManager* getExceptionMemoryManager(); + + + /** @name The virtual methods in MemoryManager */ + //@{ + + /** + * This method allocates requested memory. + * + * @param size The requested memory size + * + * @return A pointer to the allocated memory + */ + virtual void* allocate(XMLSize_t size); + + /** + * This method deallocates memory + * + * @param p The pointer to the allocated memory to be deleted + */ + virtual void deallocate(void* p); + + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + MemoryManagerImpl(const MemoryManagerImpl&); + MemoryManagerImpl& operator=(const MemoryManagerImpl&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/ReaderMgr.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/ReaderMgr.hpp new file mode 100644 index 000000000000..f63b2194e075 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/ReaderMgr.hpp @@ -0,0 +1,447 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_READERMGR_HPP) +#define XERCESC_INCLUDE_GUARD_READERMGR_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLEntityDecl; +class XMLEntityHandler; +class XMLDocumentHandler; +class XMLScanner; + + +// --------------------------------------------------------------------------- +// This class is used by the scanner. The scanner must deal with expansion +// of entities, some of which are totally different files (external parsed +// entities.) It does so by pushing readers onto a stack. The top reader is +// the one it wants to read out of, but that one must be popped when it is +// empty. To keep that logic from being all over the place, the scanner +// talks to the reader manager, which handles the stack and popping off +// used up readers. +// --------------------------------------------------------------------------- +class XMLPARSER_EXPORT ReaderMgr : public XMemory + , public Locator +{ +public : + // ----------------------------------------------------------------------- + // Class specific types + // ----------------------------------------------------------------------- + struct LastExtEntityInfo : public XMemory + { + const XMLCh* systemId; + const XMLCh* publicId; + XMLFileLoc lineNumber; + XMLFileLoc colNumber; + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ReaderMgr(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ReaderMgr(); + + + // ----------------------------------------------------------------------- + // Convenience scanning methods + // + // This are all convenience methods that work in terms of the core + // character spooling methods. + // ----------------------------------------------------------------------- + bool atEOF() const; + bool getName(XMLBuffer& toFill); + bool getQName(XMLBuffer& toFill, int* colonPosition); + bool getNameToken(XMLBuffer& toFill); + XMLCh getNextChar(); + bool getNextCharIfNot(const XMLCh chNotToGet, XMLCh& chGotten); + void movePlainContentChars(XMLBuffer &dest); + void getSpaces(XMLBuffer& toFill); + void getUpToCharOrWS(XMLBuffer& toFill, const XMLCh toCheck); + bool isEmpty() const; + bool lookingAtChar(const XMLCh toCheck); + bool lookingAtSpace(); + XMLCh peekNextChar(); + bool skipIfQuote(XMLCh& chGotten); + void skipPastChar(const XMLCh toSkip); + void skipPastSpaces(bool& skippedSomething, bool inDecl = false); + void skipPastSpaces(); + void skipToChar(const XMLCh toSkipTo); + bool skippedChar(const XMLCh toSkip); + bool skippedSpace(); + bool skippedString(const XMLCh* const toSkip); + bool skippedStringLong(const XMLCh* const toSkip); + void skipQuotedString(const XMLCh quoteCh); + XMLCh skipUntilIn(const XMLCh* const listToSkip); + XMLCh skipUntilInOrWS(const XMLCh* const listToSkip); + bool peekString(const XMLCh* const toPeek); + + + // ----------------------------------------------------------------------- + // Control methods + // ----------------------------------------------------------------------- + void cleanStackBackTo(const XMLSize_t readerNum); + XMLReader* createReader + ( + const InputSource& src + , const bool xmlDecl + , const XMLReader::RefFrom refFrom + , const XMLReader::Types type + , const XMLReader::Sources source + , const bool calcSrsOfs = true + , XMLSize_t lowWaterMark = 100 + ); + XMLReader* createReader + ( + const XMLCh* const sysId + , const XMLCh* const pubId + , const bool xmlDecl + , const XMLReader::RefFrom refFrom + , const XMLReader::Types type + , const XMLReader::Sources source + , InputSource*& srcToFill + , const bool calcSrcOfs = true + , XMLSize_t lowWaterMark = 100 + , const bool disableDefaultEntityResolution = false + ); + XMLReader* createReader + ( + const XMLCh* const baseURI + , const XMLCh* const sysId + , const XMLCh* const pubId + , const bool xmlDecl + , const XMLReader::RefFrom refFrom + , const XMLReader::Types type + , const XMLReader::Sources source + , InputSource*& srcToFill + , const bool calcSrcOfs = true + , XMLSize_t lowWaterMark = 100 + , const bool disableDefaultEntityResolution = false + ); + XMLReader* createIntEntReader + ( + const XMLCh* const sysId + , const XMLReader::RefFrom refFrom + , const XMLReader::Types type + , const XMLCh* const dataBuf + , const XMLSize_t dataLen + , const bool copyBuf + , const bool calcSrcOfs = true + , XMLSize_t lowWaterMark = 100 + ); + bool isScanningPERefOutOfLiteral() const; + bool pushReader + ( + XMLReader* const reader + , XMLEntityDecl* const entity + ); + void reset(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const XMLCh* getCurrentEncodingStr() const; + const XMLEntityDecl* getCurrentEntity() const; + XMLEntityDecl* getCurrentEntity(); + const XMLReader* getCurrentReader() const; + XMLReader* getCurrentReader(); + XMLSize_t getCurrentReaderNum() const; + XMLSize_t getReaderDepth() const; + void getLastExtEntityInfo(LastExtEntityInfo& lastInfo) const; + XMLFilePos getSrcOffset() const; + bool getThrowEOE() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setEntityHandler(XMLEntityHandler* const newHandler); + void setThrowEOE(const bool newValue); + void setXMLVersion(const XMLReader::XMLVersion version); + void setStandardUriConformant(const bool newValue); + + // ----------------------------------------------------------------------- + // Implement the SAX Locator interface + // ----------------------------------------------------------------------- + virtual const XMLCh* getPublicId() const; + virtual const XMLCh* getSystemId() const; + virtual XMLFileLoc getLineNumber() const; + virtual XMLFileLoc getColumnNumber() const; + + +private : + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + const XMLReader* getLastExtEntity(const XMLEntityDecl*& itsEntity) const; + bool popReader(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ReaderMgr(const ReaderMgr&); + ReaderMgr& operator=(const ReaderMgr&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fCurEntity + // This is the current top of stack entity. We pull it off the stack + // and store it here for efficiency. + // + // fCurReader + // This is the current top of stack reader. We pull it off the + // stack and store it here for efficiency. + // + // fEntityHandler + // This is the installed entity handler. Its installed via the + // scanner but he passes it on to us since we need it the most, in + // process of creating external entity readers. + // + // fEntityStack + // We need to keep up with which of the pushed readers are pushed + // entity values that are being spooled. This is done to avoid the + // problem of recursive definitions. This stack consists of refs to + // EntityDecl objects for the pushed entities. + // + // fNextReaderNum + // This is the reader serial number value. Each new reader that is + // created from this reader is given a successive number. This lets + // us catch things like partial markup errors and such. + // + // fReaderStack + // This is the stack of reader references. We own all the readers + // and destroy them when they are used up. + // + // fThrowEOE + // This flag controls whether we throw an exception when we hit an + // end of entity. The scanner doesn't really need to know about ends + // of entities in the int/ext subsets, so it will turn this flag off + // until it gets into the content usually. + // + // fXMLVersion + // Enum to indicate if each Reader should be created as XML 1.1 or + // XML 1.0 conformant + // + // fStandardUriConformant + // This flag controls whether we force conformant URI + // ----------------------------------------------------------------------- + XMLEntityDecl* fCurEntity; + XMLReader* fCurReader; + XMLEntityHandler* fEntityHandler; + RefStackOf* fEntityStack; + unsigned int fNextReaderNum; + RefStackOf* fReaderStack; + bool fThrowEOE; + XMLReader::XMLVersion fXMLVersion; + bool fStandardUriConformant; + MemoryManager* fMemoryManager; +}; + + + +// --------------------------------------------------------------------------- +// ReaderMgr: Inlined methods +// +// NOTE: We cannot put these in alphabetical and type order as we usually +// do because some of the compilers we have to support are too stupid to +// understand out of order inlines! +// --------------------------------------------------------------------------- +inline XMLSize_t ReaderMgr::getCurrentReaderNum() const +{ + return fCurReader->getReaderNum(); +} + +inline const XMLReader* ReaderMgr::getCurrentReader() const +{ + return fCurReader; +} + +inline XMLReader* ReaderMgr::getCurrentReader() +{ + return fCurReader; +} + +inline bool ReaderMgr::getName(XMLBuffer& toFill) +{ + toFill.reset(); + return fCurReader->getName(toFill, false); +} + +inline bool ReaderMgr::getQName(XMLBuffer& toFill, int *colonPosition) +{ + toFill.reset(); + return fCurReader->getQName(toFill, colonPosition); +} + +inline bool ReaderMgr::getNameToken(XMLBuffer& toFill) +{ + toFill.reset(); + return fCurReader->getName(toFill, true); +} + +inline bool ReaderMgr::getNextCharIfNot(const XMLCh chNotToGet, XMLCh& chGotten) +{ + return fCurReader->getNextCharIfNot(chNotToGet, chGotten); +} + +inline void ReaderMgr::movePlainContentChars(XMLBuffer &dest) +{ + fCurReader->movePlainContentChars(dest); +} + +inline bool ReaderMgr::getThrowEOE() const +{ + return fThrowEOE; +} + +inline XMLFilePos ReaderMgr::getSrcOffset() const +{ + return fCurReader? fCurReader->getSrcOffset() : 0; +} + +inline bool ReaderMgr::lookingAtChar(const XMLCh chToCheck) +{ + return (chToCheck == peekNextChar()); +} + +inline bool ReaderMgr::lookingAtSpace() +{ + XMLCh c = peekNextChar(); + return fCurReader->isWhitespace(c); +} + +inline void ReaderMgr::setThrowEOE(const bool newValue) +{ + fThrowEOE = newValue; +} + +inline void ReaderMgr::setStandardUriConformant(const bool newValue) +{ + fStandardUriConformant = newValue; +} + +inline bool ReaderMgr::skippedString(const XMLCh* const toSkip) +{ + return fCurReader->skippedString(toSkip); +} + +inline bool ReaderMgr::skippedStringLong(const XMLCh* const toSkip) +{ + return fCurReader->skippedStringLong(toSkip); +} + +inline void ReaderMgr::skipToChar(const XMLCh toSkipTo) +{ + XMLCh nextCh = 0; + do + { + // Get chars until we find the one to skip + nextCh = getNextChar(); + } + // Break out at end of input or the char to skip + while((nextCh != toSkipTo) && nextCh!=0); +} + +inline void ReaderMgr::skipPastChar(const XMLCh toSkipPast) +{ + XMLCh nextCh = 0; + do + { + // Get chars until we find the one to skip + nextCh = getNextChar(); + } + while((nextCh != toSkipPast) && nextCh!=0); +} + +inline bool ReaderMgr::peekString(const XMLCh* const toPeek) +{ + return fCurReader->peekString(toPeek); +} + +inline void ReaderMgr::setEntityHandler(XMLEntityHandler* const newHandler) +{ + fEntityHandler = newHandler; +} + +inline void ReaderMgr::setXMLVersion(const XMLReader::XMLVersion version) +{ + fXMLVersion = version; + fCurReader->setXMLVersion(version); +} + +// +// This is a simple class to temporarily change the 'throw at end of entity' +// flag of the reader manager. There are some places where we need to +// turn this on and off on a scoped basis. +// +class XMLPARSER_EXPORT ThrowEOEJanitor +{ +public : + // ----------------------------------------------------------------------- + // Constructors and destructor + // ----------------------------------------------------------------------- + ThrowEOEJanitor(ReaderMgr* mgrTarget, const bool newValue) : + + fOld(mgrTarget->getThrowEOE()) + , fMgr(mgrTarget) + { + mgrTarget->setThrowEOE(newValue); + } + + ~ThrowEOEJanitor() + { + fMgr->setThrowEOE(fOld); + }; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ThrowEOEJanitor(const ThrowEOEJanitor&); + ThrowEOEJanitor& operator=(const ThrowEOEJanitor&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fOld + // The previous value of the flag, which we replaced during ctor, + // and will replace during dtor. + // + // fMgr + // A pointer to the reader manager we are going to set/reset the + // flag on. + // ----------------------------------------------------------------------- + bool fOld; + ReaderMgr* fMgr; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/SGXMLScanner.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/SGXMLScanner.hpp new file mode 100644 index 000000000000..fe280b0a7c45 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/SGXMLScanner.hpp @@ -0,0 +1,307 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SGXMLSCANNER_HPP) +#define XERCESC_INCLUDE_GUARD_SGXMLSCANNER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +class SchemaGrammar; +class SchemaValidator; +class IdentityConstraintHandler; +class IdentityConstraint; +class ContentLeafNameTypeVector; +class SchemaAttDef; +class XMLContentModel; +class XSModel; +class PSVIAttributeList; +class PSVIElement; + +// This is a scanner class, which process XML Schema grammar. +class XMLPARSER_EXPORT SGXMLScanner : public XMLScanner +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + SGXMLScanner + ( + XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + SGXMLScanner + ( + XMLDocumentHandler* const docHandler + , DocTypeHandler* const docTypeHandler + , XMLEntityHandler* const entityHandler + , XMLErrorReporter* const errReporter + , XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~SGXMLScanner(); + + // ----------------------------------------------------------------------- + // XMLScanner public virtual methods + // ----------------------------------------------------------------------- + virtual const XMLCh* getName() const; + virtual NameIdPool* getEntityDeclPool(); + virtual const NameIdPool* getEntityDeclPool() const; + virtual void scanDocument + ( + const InputSource& src + ); + virtual bool scanNext(XMLPScanToken& toFill); + virtual Grammar* loadGrammar + ( + const InputSource& src + , const short grammarType + , const bool toCache = false + ); + + virtual void resetCachedGrammar (); + virtual Grammar::GrammarType getCurrentGrammarType() const; + +protected: + // ----------------------------------------------------------------------- + // XMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual void scanReset(const InputSource& src); + + // ----------------------------------------------------------------------- + // SGXMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual bool scanStartTag(bool& gotData); + virtual void scanEndTag(bool& gotData); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + XMLSize_t buildAttList + ( + const RefVectorOf& providedAttrs + , const XMLSize_t attCount + , XMLElementDecl* elemDecl + , RefVectorOf& toFill + ); + bool laxElementValidation(QName* element, ContentLeafNameTypeVector* cv, + const XMLContentModel* const cm, + const XMLSize_t parentElemDepth); + XMLSize_t rawAttrScan + ( + const XMLCh* const elemName + , RefVectorOf& toFill + , bool& isEmpty + ); + void updateNSMap + ( + const XMLCh* const attrName + , const XMLCh* const attrValue + ); + void resizeElemState(); + + void updateNSMap + ( + const XMLCh* const attrName + , const XMLCh* const attrValue + , const int colonPosition + ); + void resizeRawAttrColonList(); + // ----------------------------------------------------------------------- + // Data members + // + // fRawAttrList + // During the initial scan of the attributes we can only do a raw + // scan for key/value pairs. So this vector is used to store them + // until they can be processed (and put into fAttrList.) + // + // fSchemaValidator + // The Schema validator instance. + // + // fSeeXsi + // This flag indicates a schema has been seen. + // + // fElemState + // fElemLoopState + // fElemStateSize + // Stores an element next state from DFA content model - used for + // wildcard validation + // + // fElemNonDeclPool + // registry for elements without decls in the grammar + // fElemCount + // count of the number of start tags seen so far (starts at 1). + // Used for duplicate attribute detection/processing of required/defaulted attributes + // fAttDefRegistry + // mapping from XMLAttDef instances to the count of the last + // start tag where they were utilized. + // fUndeclaredAttrRegistry + // set of namespaceId/localName pairs to detect duplicates + // fPSVIAttrList + // PSVI attribute list implementation that needs to be + // filled when a PSVIHandler is registered + // fSchemaInfoList + // Transient schema info list that is passed to TraverseSchema instances. + // fCachedSchemaInfoList + // Cached Schema info list that is passed to TraverseSchema instances. + // + // ----------------------------------------------------------------------- + bool fSeeXsi; + Grammar::GrammarType fGrammarType; + unsigned int fElemStateSize; + unsigned int* fElemState; + unsigned int* fElemLoopState; + XMLBuffer fContent; + ValueHashTableOf* fEntityTable; + RefVectorOf* fRawAttrList; + unsigned int fRawAttrColonListSize; + int* fRawAttrColonList; + SchemaGrammar* fSchemaGrammar; + SchemaValidator* fSchemaValidator; + IdentityConstraintHandler* fICHandler; + RefHash3KeysIdPool* fElemNonDeclPool; + unsigned int fElemCount; + RefHashTableOf*fAttDefRegistry; + Hash2KeysSetOf* fUndeclaredAttrRegistry; + PSVIAttributeList * fPSVIAttrList; + XSModel* fModel; + PSVIElement* fPSVIElement; + ValueStackOf* fErrorStack; + PSVIElemContext fPSVIElemContext; + RefHash2KeysTableOf* fSchemaInfoList; + RefHash2KeysTableOf* fCachedSchemaInfoList; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SGXMLScanner(); + SGXMLScanner(const SGXMLScanner&); + SGXMLScanner& operator=(const SGXMLScanner&); + + // ----------------------------------------------------------------------- + // XMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual void scanCDSection(); + virtual void scanCharData(XMLBuffer& toToUse); + virtual EntityExpRes scanEntityRef + ( + const bool inAttVal + , XMLCh& firstCh + , XMLCh& secondCh + , bool& escaped + ); + virtual void scanDocTypeDecl(); + virtual void sendCharData(XMLBuffer& toSend); + virtual InputSource* resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void commonInit(); + void cleanUp(); + + bool normalizeAttValue + ( + const XMLAttDef* const attDef + , const XMLCh* const attrName + , const XMLCh* const value + , XMLBuffer& toFill + ); + bool normalizeAttRawValue + ( + const XMLCh* const attrName + , const XMLCh* const value + , XMLBuffer& toFill + ); + void scanRawAttrListforNameSpaces(XMLSize_t attCount); + void parseSchemaLocation(const XMLCh* const schemaLocationStr, bool ignoreLoadSchema = false); + void resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri, bool ignoreLoadSchema = false); + bool switchGrammar(const XMLCh* const newGrammarNameSpace); + bool anyAttributeValidation(SchemaAttDef* attWildCard, + unsigned int uriId, + bool& skipThisOne, + bool& laxThisOne); + + // ----------------------------------------------------------------------- + // Private scanning methods + // ----------------------------------------------------------------------- + bool basicAttrValueScan + ( + const XMLCh* const attrName + , XMLBuffer& toFill + ); + bool scanAttValue + ( + const XMLAttDef* const attDef + , XMLBuffer& toFill + ); + bool scanContent(); + + // ----------------------------------------------------------------------- + // IdentityConstraints Activation methods + // ----------------------------------------------------------------------- + inline bool toCheckIdentityConstraint() const; + + // ----------------------------------------------------------------------- + // Grammar preparsing methods + // ----------------------------------------------------------------------- + Grammar* loadXMLSchemaGrammar(const InputSource& src, const bool toCache = false); + + // ----------------------------------------------------------------------- + // PSVI handling methods + // ----------------------------------------------------------------------- + void endElementPSVI(SchemaElementDecl* const elemDecl, + DatatypeValidator* const memberDV); + void resetPSVIElemContext(); +}; + +inline const XMLCh* SGXMLScanner::getName() const +{ + return XMLUni::fgSGXMLScanner; +} + +inline bool SGXMLScanner::toCheckIdentityConstraint() const +{ + return fValidate && fIdentityConstraintChecking && fICHandler; +} + +inline Grammar::GrammarType SGXMLScanner::getCurrentGrammarType() const +{ + return fGrammarType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/ValidationContextImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/ValidationContextImpl.hpp new file mode 100644 index 000000000000..3cdc0d88ec03 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/ValidationContextImpl.hpp @@ -0,0 +1,173 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALIDATION_CONTEXTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_VALIDATION_CONTEXTIMPL_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN +class ElemStack; +class NamespaceScope; + +class XMLPARSER_EXPORT ValidationContextImpl : public ValidationContext +{ +public : + // ----------------------------------------------------------------------- + /** @name Virtual destructor for derived classes */ + // ----------------------------------------------------------------------- + //@{ + + /** + * virtual destructor + * + */ + virtual ~ValidationContextImpl(); + + ValidationContextImpl(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); + + //@} + + // ----------------------------------------------------------------------- + /** @name The ValidationContextImpl Interface */ + // ----------------------------------------------------------------------- + //@{ + + /** + * IDRefList + * + */ + virtual RefHashTableOf* getIdRefList() const; + + virtual void setIdRefList(RefHashTableOf* const); + + virtual void clearIdRefList(); + + virtual void addId(const XMLCh * const ); + + virtual void addIdRef(const XMLCh * const ); + + virtual void toCheckIdRefList(bool); + + /** + * EntityDeclPool + * + */ + virtual const NameIdPool* getEntityDeclPool() const; + + virtual const NameIdPool* setEntityDeclPool(const NameIdPool* const); + + virtual void checkEntity(const XMLCh * const ) const; + + + /** + * Union datatype handling + * + */ + + virtual DatatypeValidator * getValidatingMemberType() const; + virtual void setValidatingMemberType(DatatypeValidator * validatingMemberType) ; + + /** + * QName datatype handling + * Create default implementations for source code compatibility + */ + virtual bool isPrefixUnknown(XMLCh* prefix); + virtual void setElemStack(ElemStack* elemStack); + virtual const XMLCh* getURIForPrefix(XMLCh* prefix); + virtual void setScanner(XMLScanner* scanner); + virtual void setNamespaceScope(NamespaceScope* nsStack); + + + //@} + +private: + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + ValidationContextImpl(const ValidationContextImpl& ); + ValidationContextImpl& operator=(const ValidationContextImpl& ); + //@} + + // ----------------------------------------------------------------------- + // Data members + // + // fIDRefList: owned/adopted + // This is a list of XMLRefInfo objects. This member lets us do all + // needed ID-IDREF balancing checks. + // + // fEntityDeclPool: referenced only + // This is a pool of EntityDecl objects, which contains all of the + // general entities that are declared in the DTD subsets, plus the + // default entities (such as > < ...) defined by the XML Standard. + // + // fToAddToList + // fValidatingMemberType + // The member type in a union that actually + // validated some text. Note that the validationContext does not + // own this object, and the value of getValidatingMemberType + // will not be accurate unless the type of the most recently-validated + // element/attribute is in fact a union datatype. + // fElemStack + // Need access to elemstack to look up URI's that are inscope (while validating an XML). + // fNamespaceScope + // Need access to namespace scope to look up URI's that are inscope (while loading a schema). + // ----------------------------------------------------------------------- + + RefHashTableOf* fIdRefList; + const NameIdPool* fEntityDeclPool; + bool fToCheckIdRefList; + DatatypeValidator * fValidatingMemberType; + ElemStack* fElemStack; + XMLScanner* fScanner; + NamespaceScope* fNamespaceScope; + +}; + + + +inline DatatypeValidator * ValidationContextImpl::getValidatingMemberType() const +{ + return fValidatingMemberType; +} + +inline void ValidationContextImpl::setValidatingMemberType(DatatypeValidator * validatingMemberType) +{ + fValidatingMemberType = validatingMemberType; +} + +inline void ValidationContextImpl::setElemStack(ElemStack* elemStack) { + fElemStack = elemStack; +} + +inline void ValidationContextImpl::setScanner(XMLScanner* scanner) { + fScanner = scanner; +} + +inline void ValidationContextImpl::setNamespaceScope(NamespaceScope* nsStack) { + fNamespaceScope = nsStack; +} + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/VecAttrListImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/VecAttrListImpl.hpp new file mode 100644 index 000000000000..2d28a9090d19 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/VecAttrListImpl.hpp @@ -0,0 +1,96 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VECATTRLISTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_VECATTRLISTIMPL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT VecAttrListImpl : public XMemory, public AttributeList +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + VecAttrListImpl(); + ~VecAttrListImpl(); + + + // ----------------------------------------------------------------------- + // Implementation of the attribute list interface + // ----------------------------------------------------------------------- + virtual XMLSize_t getLength() const; + virtual const XMLCh* getName(const XMLSize_t index) const; + virtual const XMLCh* getType(const XMLSize_t index) const; + virtual const XMLCh* getValue(const XMLSize_t index) const; + virtual const XMLCh* getType(const XMLCh* const name) const; + virtual const XMLCh* getValue(const XMLCh* const name) const; + virtual const XMLCh* getValue(const char* const name) const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setVector + ( + const RefVectorOf* const srcVec + , const XMLSize_t count + , const bool adopt = false + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + VecAttrListImpl(const VecAttrListImpl&); + VecAttrListImpl& operator=(const VecAttrListImpl&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fAdopt + // Indicates whether the passed vector is to be adopted or not. If + // so, we destroy it when we are destroyed (and when a new vector is + // set!) + // + // fCount + // The count of elements in the vector that should be considered + // valid. This is an optimization to allow vector elements to be + // reused over and over but a different count of them be valid for + // each use. + // + // fVector + // The vector that provides the backing for the list. + // ----------------------------------------------------------------------- + bool fAdopt; + XMLSize_t fCount; + const RefVectorOf* fVector; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/VecAttributesImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/VecAttributesImpl.hpp new file mode 100644 index 000000000000..d0d412c97886 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/VecAttributesImpl.hpp @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VECATTRIBUTESIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_VECATTRIBUTESIMPL_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT VecAttributesImpl : public Attributes +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + VecAttributesImpl(); + ~VecAttributesImpl(); + + + // ----------------------------------------------------------------------- + // Implementation of the attributes interface + // ----------------------------------------------------------------------- + virtual XMLSize_t getLength() const ; + + virtual const XMLCh* getURI(const XMLSize_t index) const; + virtual const XMLCh* getLocalName(const XMLSize_t index) const ; + virtual const XMLCh* getQName(const XMLSize_t index) const ; + virtual const XMLCh* getType(const XMLSize_t index) const ; + virtual const XMLCh* getValue(const XMLSize_t index) const ; + + virtual bool getIndex(const XMLCh* const uri, const XMLCh* const localPart, XMLSize_t& index) const; + virtual int getIndex(const XMLCh* const uri, const XMLCh* const localPart ) const ; + virtual bool getIndex(const XMLCh* const qName, XMLSize_t& index) const; + virtual int getIndex(const XMLCh* const qName ) const ; + + virtual const XMLCh* getType(const XMLCh* const uri, const XMLCh* const localPart ) const ; + virtual const XMLCh* getType(const XMLCh* const qName) const ; + + virtual const XMLCh* getValue(const XMLCh* const qName) const; + virtual const XMLCh* getValue(const XMLCh* const uri, const XMLCh* const localPart ) const ; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setVector + ( + const RefVectorOf* const srcVec + , const XMLSize_t count + , const XMLScanner * const scanner + , const bool adopt = false + ); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + VecAttributesImpl(const VecAttributesImpl&); + VecAttributesImpl& operator=(const VecAttributesImpl&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fAdopt + // Indicates whether the passed vector is to be adopted or not. If + // so, we destroy it when we are destroyed (and when a new vector is + // set!) + // + // fCount + // The count of elements in the vector that should be considered + // valid. This is an optimization to allow vector elements to be + // reused over and over but a different count of them be valid for + // each use. + // + // fVector + // The vector that provides the backing for the list. + // + // fScanner + // This is a pointer to the in use Scanner, so that we can resolve + // namespace URIs from UriIds + // + // fURIBuffer + // A temporary buffer which is re-used when getting namespace URI's + // ----------------------------------------------------------------------- + bool fAdopt; + XMLSize_t fCount; + const RefVectorOf* fVector; + const XMLScanner * fScanner ; +}; + +XERCES_CPP_NAMESPACE_END + +#endif // ! VECATTRIBUTESIMPL_HPP diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/WFXMLScanner.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/WFXMLScanner.hpp new file mode 100644 index 000000000000..b88b0346e54c --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/WFXMLScanner.hpp @@ -0,0 +1,153 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_WFXMLSCANNER_HPP) +#define XERCESC_INCLUDE_GUARD_WFXMLSCANNER_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +// This is a a non-validating scanner. No DOCTYPE or XML Schema processing +// will take place. +class XMLPARSER_EXPORT WFXMLScanner : public XMLScanner +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + WFXMLScanner + ( + XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + WFXMLScanner + ( + XMLDocumentHandler* const docHandler + , DocTypeHandler* const docTypeHandler + , XMLEntityHandler* const entityHandler + , XMLErrorReporter* const errReporter + , XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~WFXMLScanner(); + + // ----------------------------------------------------------------------- + // XMLScanner public virtual methods + // ----------------------------------------------------------------------- + virtual const XMLCh* getName() const; + virtual NameIdPool* getEntityDeclPool(); + virtual const NameIdPool* getEntityDeclPool() const; + virtual void scanDocument + ( + const InputSource& src + ); + virtual bool scanNext(XMLPScanToken& toFill); + virtual Grammar* loadGrammar + ( + const InputSource& src + , const short grammarType + , const bool toCache = false + ); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + WFXMLScanner(); + WFXMLScanner(const WFXMLScanner&); + WFXMLScanner& operator=(const WFXMLScanner&); + + // ----------------------------------------------------------------------- + // XMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual void scanCDSection(); + virtual void scanCharData(XMLBuffer& toToUse); + virtual EntityExpRes scanEntityRef + ( + const bool inAttVal + , XMLCh& firstCh + , XMLCh& secondCh + , bool& escaped + ); + virtual void scanDocTypeDecl(); + virtual void scanReset(const InputSource& src); + virtual void sendCharData(XMLBuffer& toSend); + virtual InputSource* resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void commonInit(); + void cleanUp(); + + // ----------------------------------------------------------------------- + // Private scanning methods + // ----------------------------------------------------------------------- + bool scanAttValue + ( + const XMLCh* const attrName + , XMLBuffer& toFill + ); + bool scanContent(); + void scanEndTag(bool& gotData); + bool scanStartTag(bool& gotData); + bool scanStartTagNS(bool& gotData); + + // ----------------------------------------------------------------------- + // Data members + // + // fEntityTable + // This the table that contains the default entity entries. + // + // fAttrNameHashList + // This contains the hash value for attribute names. It's used when + // checking for duplicate attributes. + // + // fAttrNSList + // This contains XMLAttr objects that we need to map their prefixes + // to URIs when namespace is enabled. + // + // ----------------------------------------------------------------------- + unsigned int fElementIndex; + RefVectorOf* fElements; + ValueHashTableOf* fEntityTable; + ValueVectorOf* fAttrNameHashList; + ValueVectorOf* fAttrNSList; + RefHashTableOf* fElementLookup; +}; + +inline const XMLCh* WFXMLScanner::getName() const +{ + return XMLUni::fgWFXMLScanner; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/XMLInternalErrorHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/XMLInternalErrorHandler.hpp new file mode 100644 index 000000000000..d56c229807d2 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/XMLInternalErrorHandler.hpp @@ -0,0 +1,139 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLINTERNALERRORHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLINTERNALERRORHANDLER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLInternalErrorHandler : public ErrorHandler +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLInternalErrorHandler(ErrorHandler* userHandler = 0) : + fSawWarning(false), + fSawError(false), + fSawFatal(false), + fUserErrorHandler(userHandler) + { + } + + ~XMLInternalErrorHandler() + { + } + + // ----------------------------------------------------------------------- + // Implementation of the error handler interface + // ----------------------------------------------------------------------- + void warning(const SAXParseException& toCatch); + void error(const SAXParseException& toCatch); + void fatalError(const SAXParseException& toCatch); + void resetErrors(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getSawWarning() const; + bool getSawError() const; + bool getSawFatal() const; + + // ----------------------------------------------------------------------- + // Private data members + // + // fSawWarning + // This is set if we get any warning, and is queryable via a getter + // method. + // + // fSawError + // This is set if we get any errors, and is queryable via a getter + // method. + // + // fSawFatal + // This is set if we get any fatal, and is queryable via a getter + // method. + // + // fUserErrorHandler + // This is the error handler from user + // ----------------------------------------------------------------------- + bool fSawWarning; + bool fSawError; + bool fSawFatal; + ErrorHandler* fUserErrorHandler; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLInternalErrorHandler(const XMLInternalErrorHandler&); + XMLInternalErrorHandler& operator=(const XMLInternalErrorHandler&); +}; + +inline bool XMLInternalErrorHandler::getSawWarning() const +{ + return fSawWarning; +} + +inline bool XMLInternalErrorHandler::getSawError() const +{ + return fSawError; +} + +inline bool XMLInternalErrorHandler::getSawFatal() const +{ + return fSawFatal; +} + +inline void XMLInternalErrorHandler::warning(const SAXParseException& toCatch) +{ + fSawWarning = true; + if (fUserErrorHandler) + fUserErrorHandler->warning(toCatch); +} + +inline void XMLInternalErrorHandler::error(const SAXParseException& toCatch) +{ + fSawError = true; + if (fUserErrorHandler) + fUserErrorHandler->error(toCatch); +} + +inline void XMLInternalErrorHandler::fatalError(const SAXParseException& toCatch) +{ + fSawFatal = true; + if (fUserErrorHandler) + fUserErrorHandler->fatalError(toCatch); +} + +inline void XMLInternalErrorHandler::resetErrors() +{ + fSawWarning = false; + fSawError = false; + fSawFatal = false; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/XMLReader.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/XMLReader.hpp new file mode 100644 index 000000000000..966ca224d6bf --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/XMLReader.hpp @@ -0,0 +1,790 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLREADER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLREADER_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class InputSource; +class BinInputStream; +class ReaderMgr; +class XMLScanner; +class XMLTranscoder; + + +// --------------------------------------------------------------------------- +// Instances of this class are used to manage the content of entities. The +// scanner maintains a stack of these, one for each entity (this means entity +// in the sense of any parsed file or internal entity) currently being +// scanned. This class, given a binary input stream will handle reading in +// the data and decoding it from its external decoding into the internal +// Unicode format. Once internallized, this class provides the access +// methods to read in the data in various ways, maintains line and column +// information, and provides high performance character attribute checking +// methods. +// +// This is NOT to be derived from. +// +// --------------------------------------------------------------------------- +class XMLPARSER_EXPORT XMLReader : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public types + // ----------------------------------------------------------------------- + enum Types + { + Type_PE + , Type_General + }; + + enum Sources + { + Source_Internal + , Source_External + }; + + enum RefFrom + { + RefFrom_Literal + , RefFrom_NonLiteral + }; + + enum XMLVersion + { + XMLV1_0 + , XMLV1_1 + , XMLV_Unknown + }; + + + // ----------------------------------------------------------------------- + // Public, query methods + // ----------------------------------------------------------------------- + bool isAllSpaces + ( + const XMLCh* const toCheck + , const XMLSize_t count + ) const; + + bool containsWhiteSpace + ( + const XMLCh* const toCheck + , const XMLSize_t count + ) const; + + + bool isXMLLetter(const XMLCh toCheck) const; + bool isFirstNameChar(const XMLCh toCheck) const; + bool isNameChar(const XMLCh toCheck) const; + bool isPlainContentChar(const XMLCh toCheck) const; + bool isSpecialStartTagChar(const XMLCh toCheck) const; + bool isXMLChar(const XMLCh toCheck) const; + bool isWhitespace(const XMLCh toCheck) const; + bool isControlChar(const XMLCh toCheck) const; + bool isPublicIdChar(const XMLCh toCheck) const; + bool isFirstNCNameChar(const XMLCh toCheck) const; + bool isNCNameChar(const XMLCh toCheck) const; + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLReader + ( + const XMLCh* const pubId + , const XMLCh* const sysId + , BinInputStream* const streamToAdopt + , const RefFrom from + , const Types type + , const Sources source + , const bool throwAtEnd = false + , const bool calculateSrcOfs = true + , XMLSize_t lowWaterMark = 100 + , const XMLVersion xmlVersion = XMLV1_0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XMLReader + ( + const XMLCh* const pubId + , const XMLCh* const sysId + , BinInputStream* const streamToAdopt + , const XMLCh* const encodingStr + , const RefFrom from + , const Types type + , const Sources source + , const bool throwAtEnd = false + , const bool calculateSrcOfs = true + , XMLSize_t lowWaterMark = 100 + , const XMLVersion xmlVersion = XMLV1_0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XMLReader + ( + const XMLCh* const pubId + , const XMLCh* const sysId + , BinInputStream* const streamToAdopt + , XMLRecognizer::Encodings encodingEnum + , const RefFrom from + , const Types type + , const Sources source + , const bool throwAtEnd = false + , const bool calculateSrcOfs = true + , XMLSize_t lowWaterMark = 100 + , const XMLVersion xmlVersion = XMLV1_0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~XMLReader(); + + + // ----------------------------------------------------------------------- + // Character buffer management methods + // ----------------------------------------------------------------------- + XMLSize_t charsLeftInBuffer() const; + bool refreshCharBuffer(); + + + // ----------------------------------------------------------------------- + // Scanning methods + // ----------------------------------------------------------------------- + bool getName(XMLBuffer& toFill, const bool token); + bool getQName(XMLBuffer& toFill, int* colonPosition); + bool getNCName(XMLBuffer& toFill); + bool getNextChar(XMLCh& chGotten); + bool getNextCharIfNot(const XMLCh chNotToGet, XMLCh& chGotten); + void movePlainContentChars(XMLBuffer &dest); + bool getSpaces(XMLBuffer& toFill); + bool getUpToCharOrWS(XMLBuffer& toFill, const XMLCh toCheck); + bool peekNextChar(XMLCh& chGotten); + bool skipIfQuote(XMLCh& chGotten); + bool skipSpaces(bool& skippedSomething, bool inDecl = false); + bool skippedChar(const XMLCh toSkip); + bool skippedSpace(); + bool skippedString(const XMLCh* const toSkip); + bool skippedStringLong(const XMLCh* toSkip); + bool peekString(const XMLCh* const toPeek); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLFileLoc getColumnNumber() const; + const XMLCh* getEncodingStr() const; + XMLFileLoc getLineNumber() const; + bool getNoMoreFlag() const; + const XMLCh* getPublicId() const; + XMLSize_t getReaderNum() const; + RefFrom getRefFrom() const; + Sources getSource() const; + XMLFilePos getSrcOffset() const; + const XMLCh* getSystemId() const; + bool getThrowAtEnd() const; + Types getType() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + bool setEncoding + ( + const XMLCh* const newEncoding + ); + void setReaderNum(const XMLSize_t newNum); + void setThrowAtEnd(const bool newValue); + void setXMLVersion(const XMLVersion version); + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLReader(const XMLReader&); + XMLReader& operator=(const XMLReader&); + + // --------------------------------------------------------------------------- + // Class Constants + // + // kCharBufSize + // The size of the character spool buffer that we use. Its not terribly + // large because its just getting filled with data from a raw byte + // buffer as we go along. We don't want to decode all the text at + // once before we find out that there is an error. + // + // NOTE: This is a size in characters, not bytes. + // + // kRawBufSize + // The size of the raw buffer from which raw bytes are spooled out + // as we transcode chunks of data. As it is emptied, it is filled back + // in again from the source stream. + // --------------------------------------------------------------------------- + enum Constants + { + kCharBufSize = 16 * 1024 + , kRawBufSize = 48 * 1024 + }; + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void checkForSwapped(); + + void doInitCharSizeChecks(); + + void doInitDecode(); + + XMLByte getNextRawByte + ( + const bool eoiOk + ); + + void refreshRawBuffer(); + + void setTranscoder + ( + const XMLCh* const newEncoding + ); + + XMLSize_t xcodeMoreChars + ( + XMLCh* const bufToFill + , unsigned char* const charSizes + , const XMLSize_t maxChars + ); + + void handleEOL + ( + XMLCh& curCh + , bool inDecl = false + ); + + // ----------------------------------------------------------------------- + // Data members + // + // fCharIndex + // The index into the character buffer. When this hits fCharsAvail + // then its time to refill. + // + // fCharBuf + // A buffer that the reader manager fills up with transcoded + // characters a small amount at a time. + // + // fCharsAvail + // The characters currently available in the character buffer. + // + // fCharSizeBuf + // This buffer is an array that contains the number of source chars + // eaten to create each char in the fCharBuf buffer. So the entry + // fCharSizeBuf[x] is the number of source chars that were eaten + // to make the internalized char fCharBuf[x]. This only contains + // useful data if fSrcOfsSupported is true. + // + // fCharOfsBuf + // This buffer is an array that contains the offset in the + // fRawByteBuf buffer of each char in the fCharBuf buffer. It + // only contains useful data if fSrcOfsSupported is true. + // + // fCurCol + // fCurLine + // The current line and column that we are in within this reader's + // text. + // + // fEncoding + // This is the rough encoding setting. This enum is set during + // construction and just tells us the rough family of encoding that + // we are doing. + // + // fEncodingStr + // This is the name of the encoding we are using. It will be + // provisionally set during construction, from the auto-sensed + // encoding. But it might be overridden when the XMLDecl is finally + // seen by the scanner. It can also be forced to a particular + // encoding, in which case fForcedEncoding is set. + // + // fForcedEncoding + // If the encoding if forced then this is set and all other + // information will be ignored. This encoding will be taken as + // gospel. This is done by calling an alternate constructor. + // + // fNoMore + // This is set when the source text is exhausted. It lets us know + // quickly that no more text is available. + // + // fRawBufIndex + // The current index into the raw byte buffer. When its equal to + // fRawBytesAvail then we need to read another buffer. + // + // fRawByteBuf + // This is the raw byte buffer that is used to spool out bytes + // from into the fCharBuf buffer, as we transcode in blocks. + // + // fRawBytesAvail + // The number of bytes currently available in the raw buffer. This + // helps deal with the last buffer's worth, which will usually not + // be a full one. + // + // fLowWaterMark + // The low water mark for the raw byte buffer. + // + // + // fReaderNum + // Each reader from a particular reader manager (which means from a + // particular document) is given a unique number. The reader manager + // sets these numbers. They are used to catch things like partial + // markup errors. + // + // fRefFrom + // This flag is provided in the ctor, and tells us if we represent + // some entity being expanded inside a literal. Sometimes things + // happen differently inside and outside literals. + // + // fPublicId + // fSystemId + // These are the system and public ids of the source that this + // reader is reading. + // + // fSentTrailingSpace + // If we are a PE entity being read and we not referenced from a + // literal, then a leading and trailing space must be faked into the + // data. This lets us know we've done the trailing space already (so + // we don't just keep doing it again and again.) + // + // fSource + // Indicates whether the content this reader is spooling as already + // been internalized. This will prevent multiple processing of + // whitespace when an already internalized entity is being spooled + // out. + // + // fSpareChar + // Some encodings can create two chars in an atomic way, e.g. + // surrogate pairs. We might not be able to store both, so we store + // it here until the next buffer transcoding operation. + // + // fSrcOfsBase + // This is the base offset within the source of this entity. Values + // in the curent fCharSizeBuf array are relative to this value. + // + // fSrcOfsSupported + // This flag is set to indicate whether source byte offset info + // is supported. For intrinsic encodings, its always set since we + // can always support it. For transcoder based encodings, we ask + // the transcoder if it supports it or not. + // + // fStream + // This is the input stream that provides the data for the reader. + // Its always treated as a raw byte stream. The derived class will + // ask for buffers of text from it and will handle making some + // sense of it. + // + // fSwapped + // If the encoding is one of the ones we do intrinsically, and its + // in a different byte order from our native order, then this is + // set to remind us to byte swap it during transcoding. + // + // fThrowAtEnd + // Indicates whether the reader manager should throw an end of entity + // exception at the end of this reader instance. This is usually + // set for top level external entity references. It overrides the + // reader manager's global flag that controls throwing at the end + // of entities. Defaults to false. + // + // fTranscoder + // If the encoding is not one that we handle intrinsically, then + // we use an an external transcoder to do it. This class is an + // abstraction that allows us to use pluggable external transcoding + // services (via XMLTransService in util.) + // + // fType + // Indicates whether this reader represents a PE or not. If this + // flag is true and the fInLiteral flag is false, then we will put + // out an extra space at the end. + // + // fgCharCharsTable; + // Pointer to XMLChar table, depends on XML version + // + // fNEL + // Boolean indicates if NEL and LSEP should be recognized as NEL + // + // fXMLVersion + // Enum to indicate if this Reader is conforming to XML 1.0 or XML 1.1 + // ----------------------------------------------------------------------- + XMLSize_t fCharIndex; + XMLCh fCharBuf[kCharBufSize]; + XMLSize_t fCharsAvail; + unsigned char fCharSizeBuf[kCharBufSize]; + unsigned int fCharOfsBuf[kCharBufSize]; + XMLFileLoc fCurCol; + XMLFileLoc fCurLine; + XMLRecognizer::Encodings fEncoding; + XMLCh* fEncodingStr; + bool fForcedEncoding; + bool fNoMore; + XMLCh* fPublicId; + XMLSize_t fRawBufIndex; + XMLByte fRawByteBuf[kRawBufSize]; + XMLSize_t fRawBytesAvail; + XMLSize_t fLowWaterMark; + XMLSize_t fReaderNum; + RefFrom fRefFrom; + bool fSentTrailingSpace; + Sources fSource; + XMLFilePos fSrcOfsBase; + bool fSrcOfsSupported; + bool fCalculateSrcOfs; + XMLCh* fSystemId; + BinInputStream* fStream; + bool fSwapped; + bool fThrowAtEnd; + XMLTranscoder* fTranscoder; + Types fType; + XMLByte* fgCharCharsTable; + bool fNEL; + XMLVersion fXMLVersion; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// XMLReader: Public, query methods +// --------------------------------------------------------------------------- +inline bool XMLReader::isNameChar(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gNameCharMask) != 0); +} + +inline bool XMLReader::isNCNameChar(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gNCNameCharMask) != 0); +} + +inline bool XMLReader::isPlainContentChar(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gPlainContentCharMask) != 0); +} + + +inline bool XMLReader::isFirstNameChar(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gFirstNameCharMask) != 0); +} + +inline bool XMLReader::isFirstNCNameChar(const XMLCh toCheck) const +{ + return (((fgCharCharsTable[toCheck] & gFirstNameCharMask) != 0) + && (toCheck != chColon)); +} + +inline bool XMLReader::isSpecialStartTagChar(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gSpecialStartTagCharMask) != 0); +} + +inline bool XMLReader::isXMLChar(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gXMLCharMask) != 0); +} + +inline bool XMLReader::isXMLLetter(const XMLCh toCheck) const +{ + return (((fgCharCharsTable[toCheck] & gFirstNameCharMask) != 0) + && (toCheck != chColon) && (toCheck != chUnderscore)); +} + +inline bool XMLReader::isWhitespace(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gWhitespaceCharMask) != 0); +} + +inline bool XMLReader::isControlChar(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gControlCharMask) != 0); +} + +// --------------------------------------------------------------------------- +// XMLReader: Buffer management methods +// --------------------------------------------------------------------------- +inline XMLSize_t XMLReader::charsLeftInBuffer() const +{ + return fCharsAvail - fCharIndex; +} + + +// --------------------------------------------------------------------------- +// XMLReader: Getter methods +// --------------------------------------------------------------------------- +inline XMLFileLoc XMLReader::getColumnNumber() const +{ + return fCurCol; +} + +inline const XMLCh* XMLReader::getEncodingStr() const +{ + return fEncodingStr; +} + +inline XMLFileLoc XMLReader::getLineNumber() const +{ + return fCurLine; +} + +inline bool XMLReader::getNoMoreFlag() const +{ + return fNoMore; +} + +inline const XMLCh* XMLReader::getPublicId() const +{ + return fPublicId; +} + +inline XMLSize_t XMLReader::getReaderNum() const +{ + return fReaderNum; +} + +inline XMLReader::RefFrom XMLReader::getRefFrom() const +{ + return fRefFrom; +} + +inline XMLReader::Sources XMLReader::getSource() const +{ + return fSource; +} + +inline const XMLCh* XMLReader::getSystemId() const +{ + return fSystemId; +} + +inline bool XMLReader::getThrowAtEnd() const +{ + return fThrowAtEnd; +} + +inline XMLReader::Types XMLReader::getType() const +{ + return fType; +} + +// --------------------------------------------------------------------------- +// XMLReader: Setter methods +// --------------------------------------------------------------------------- +inline void XMLReader::setReaderNum(const XMLSize_t newNum) +{ + fReaderNum = newNum; +} + +inline void XMLReader::setThrowAtEnd(const bool newValue) +{ + fThrowAtEnd = newValue; +} + +inline void XMLReader::setXMLVersion(const XMLVersion version) +{ + fXMLVersion = version; + if (version == XMLV1_1) { + fNEL = true; + fgCharCharsTable = XMLChar1_1::fgCharCharsTable1_1; + } + else { + fNEL = XMLChar1_0::enableNEL; + fgCharCharsTable = XMLChar1_0::fgCharCharsTable1_0; + } + +} + + + +// --------------------------------------------------------------------------- +// +// XMLReader: movePlainContentChars() +// +// Move as many plain (no special handling of any sort required) content +// characters as possible from this reader to the supplied destination buffer. +// +// This is THE hottest performance spot in the parser. +// +// --------------------------------------------------------------------------- +inline void XMLReader::movePlainContentChars(XMLBuffer &dest) +{ + const XMLSize_t chunkSize = fCharsAvail - fCharIndex; + const XMLCh* cursor = &fCharBuf[fCharIndex]; + XMLSize_t count=0; + for(;count= fCharsAvail) + { + // If fNoMore is set, then we have nothing else to give + if (fNoMore) + return false; + + // Try to refresh + if (!refreshCharBuffer()) + return false; + } + + // Check the next char + if (fCharBuf[fCharIndex] == chNotToGet) + return false; + + // Its not the one we want to skip so bump the index + chGotten = fCharBuf[fCharIndex++]; + + // Handle end of line normalization and line/col member maintenance. + // + // we can have end-of-line combinations with a leading + // chCR(xD), chLF(xA), chNEL(x85), or chLineSeparator(x2028) + // + // 0000000000001101 chCR + // 0000000000001010 chLF + // 0000000010000101 chNEL + // 0010000000101000 chLineSeparator + // ----------------------- + // 1101111101010000 == ~(chCR|chLF|chNEL|chLineSeparator) + // + // if the result of the logical-& operation is + // true : 'curCh' can not be chCR, chLF, chNEL or chLineSeparator + // false : 'curCh' can be chCR, chLF, chNEL or chLineSeparator + // + if ( chGotten & (XMLCh) ~(chCR|chLF|chNEL|chLineSeparator) ) + { + fCurCol++; + } else + { + handleEOL(chGotten, false); + } + + return true; +} + +// --------------------------------------------------------------------------- +// XMLReader: getNextChar() method inlined for speed +// --------------------------------------------------------------------------- +inline bool XMLReader::getNextChar(XMLCh& chGotten) +{ + // + // See if there is at least a char in the buffer. Else, do the buffer + // reload logic. + // + if (fCharIndex >= fCharsAvail) + { + // If fNoMore is set, then we have nothing else to give + if (fNoMore) + return false; + + // Try to refresh + if (!refreshCharBuffer()) + return false; + } + + chGotten = fCharBuf[fCharIndex++]; + + // Handle end of line normalization and line/col member maintenance. + // + // we can have end-of-line combinations with a leading + // chCR(xD), chLF(xA), chNEL(x85), or chLineSeparator(x2028) + // + // 0000000000001101 chCR + // 0000000000001010 chLF + // 0000000010000101 chNEL + // 0010000000101000 chLineSeparator + // ----------------------- + // 1101111101010000 == ~(chCR|chLF|chNEL|chLineSeparator) + // + // if the result of the logical-& operation is + // true : 'curCh' can not be chCR, chLF, chNEL or chLineSeparator + // false : 'curCh' can be chCR, chLF, chNEL or chLineSeparator + // + if ( chGotten & (XMLCh) ~(chCR|chLF|chNEL|chLineSeparator) ) + { + fCurCol++; + } else + { + handleEOL(chGotten, false); + } + + return true; +} + + +// --------------------------------------------------------------------------- +// XMLReader: peekNextChar() method inlined for speed +// --------------------------------------------------------------------------- +inline bool XMLReader::peekNextChar(XMLCh& chGotten) +{ + // + // If there is something still in the buffer, get it. Else do the reload + // scenario. + // + if (fCharIndex >= fCharsAvail) + { + // Try to refresh the buffer + if (!refreshCharBuffer()) + { + chGotten = chNull; + return false; + } + } + + chGotten = fCharBuf[fCharIndex]; + + // + // Even though we are only peeking, we have to act the same as the + // normal char get method in regards to newline normalization, though + // its not as complicated as the actual character getting method's. + // + if ((chGotten == chCR || (fNEL && (chGotten == chNEL || chGotten == chLineSeparator))) + && (fSource == Source_External)) + chGotten = chLF; + + return true; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/XMLScanner.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/XMLScanner.hpp new file mode 100644 index 000000000000..c8bdaf1fcfad --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/XMLScanner.hpp @@ -0,0 +1,1448 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLSCANNER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLSCANNER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class InputSource; +class XMLDocumentHandler; +class XMLEntityHandler; +class ErrorHandler; +class DocTypeHandler; +class XMLPScanToken; +class XMLStringPool; +class Grammar; +class XMLValidator; +class MemoryManager; +class PSVIHandler; + + +struct PSVIElemContext +{ + bool fIsSpecified; + bool fErrorOccurred; + int fElemDepth; + int fFullValidationDepth; + int fNoneValidationDepth; + DatatypeValidator* fCurrentDV; + ComplexTypeInfo* fCurrentTypeInfo; + const XMLCh* fNormalizedValue; +}; + +// This is the mondo scanner class, which does the vast majority of the +// work of parsing. It handles reading in input and spitting out events +// to installed handlers. +class XMLPARSER_EXPORT XMLScanner : public XMemory, public XMLBufferFullHandler +{ +public : + // ----------------------------------------------------------------------- + // Public class types + // + // NOTE: These should really be private, but some of the compilers we + // have to deal with are too stupid to understand this. + // + // DeclTypes + // Used by scanXMLDecl() to know what type of decl it should scan. + // Text decls have slightly different rules from XMLDecls. + // + // EntityExpRes + // These are the values returned from the entity expansion method, + // to indicate how it went. + // + // XMLTokens + // These represent the possible types of input we can get while + // scanning content. + // + // ValScheme + // This indicates what the scanner should do in terms of validation. + // 'Auto' means if there is any int/ext subset, then validate. Else, + // don't. + // ----------------------------------------------------------------------- + enum DeclTypes + { + Decl_Text + , Decl_XML + }; + + enum EntityExpRes + { + EntityExp_Pushed + , EntityExp_Returned + , EntityExp_Failed + }; + + enum XMLTokens + { + Token_CData + , Token_CharData + , Token_Comment + , Token_EndTag + , Token_EOF + , Token_PI + , Token_StartTag + , Token_Unknown + }; + + enum ValSchemes + { + Val_Never + , Val_Always + , Val_Auto + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLScanner + ( + XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + XMLScanner + ( + XMLDocumentHandler* const docHandler + , DocTypeHandler* const docTypeHandler + , XMLEntityHandler* const entityHandler + , XMLErrorReporter* const errReporter + , XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~XMLScanner(); + + + // ----------------------------------------------------------------------- + // Error emitter methods + // ----------------------------------------------------------------------- + bool emitErrorWillThrowException(const XMLErrs::Codes toEmit); + void emitError(const XMLErrs::Codes toEmit); + void emitError + ( + const XMLErrs::Codes toEmit + , const XMLCh* const text1 + , const XMLCh* const text2 = 0 + , const XMLCh* const text3 = 0 + , const XMLCh* const text4 = 0 + ); + void emitError + ( + const XMLErrs::Codes toEmit + , const char* const text1 + , const char* const text2 = 0 + , const char* const text3 = 0 + , const char* const text4 = 0 + ); + void emitError + ( + const XMLErrs::Codes toEmit + , const XMLExcepts::Codes originalErrorCode + , const XMLCh* const text1 = 0 + , const XMLCh* const text2 = 0 + , const XMLCh* const text3 = 0 + , const XMLCh* const text4 = 0 + + ); + + // ----------------------------------------------------------------------- + // Implementation of XMLBufferFullHandler interface + // ----------------------------------------------------------------------- + + virtual bool bufferFull(XMLBuffer& toSend) + { + sendCharData(toSend); + return true; + } + + virtual Grammar::GrammarType getCurrentGrammarType() const; + + // ----------------------------------------------------------------------- + // Public pure virtual methods + // ----------------------------------------------------------------------- + virtual const XMLCh* getName() const = 0; + virtual NameIdPool* getEntityDeclPool() = 0; + virtual const NameIdPool* getEntityDeclPool() const = 0; + virtual void scanDocument + ( + const InputSource& src + ) = 0; + virtual bool scanNext(XMLPScanToken& toFill) = 0; + virtual Grammar* loadGrammar + ( + const InputSource& src + , const short grammarType + , const bool toCache = false + ) = 0; + + virtual void resetCachedGrammar (); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const XMLDocumentHandler* getDocHandler() const; + XMLDocumentHandler* getDocHandler(); + const DocTypeHandler* getDocTypeHandler() const; + DocTypeHandler* getDocTypeHandler(); + bool getDoNamespaces() const; + ValSchemes getValidationScheme() const; + bool getDoSchema() const; + bool getValidationSchemaFullChecking() const; + bool getIdentityConstraintChecking() const; + const XMLEntityHandler* getEntityHandler() const; + XMLEntityHandler* getEntityHandler(); + const XMLErrorReporter* getErrorReporter() const; + XMLErrorReporter* getErrorReporter(); + const ErrorHandler* getErrorHandler() const; + ErrorHandler* getErrorHandler(); + const PSVIHandler* getPSVIHandler() const; + PSVIHandler* getPSVIHandler(); + bool getExitOnFirstFatal() const; + bool getValidationConstraintFatal() const; + RefHashTableOf* getIDRefList(); + const RefHashTableOf* getIDRefList() const; + + ValidationContext* getValidationContext(); + + bool getInException() const; + /*bool getLastExtLocation + ( + XMLCh* const sysIdToFill + , const unsigned int maxSysIdChars + , XMLCh* const pubIdToFill + , const unsigned int maxPubIdChars + , XMLSSize_t& lineToFill + , XMLSSize_t& colToFill + ) const;*/ + const Locator* getLocator() const; + const ReaderMgr* getReaderMgr() const; + XMLFilePos getSrcOffset() const; + bool getStandalone() const; + const XMLValidator* getValidator() const; + XMLValidator* getValidator(); + int getErrorCount(); + const XMLStringPool* getURIStringPool() const; + XMLStringPool* getURIStringPool(); + bool getHasNoDTD() const; + XMLCh* getExternalSchemaLocation() const; + XMLCh* getExternalNoNamespaceSchemaLocation() const; + SecurityManager* getSecurityManager() const; + bool getDisallowDTD() const; + bool getLoadExternalDTD() const; + bool getLoadSchema() const; + bool getNormalizeData() const; + bool isCachingGrammarFromParse() const; + bool isUsingCachedGrammarInParse() const; + bool getCalculateSrcOfs() const; + Grammar* getRootGrammar() const; + XMLReader::XMLVersion getXMLVersion() const; + MemoryManager* getMemoryManager() const; + ValueVectorOf* getNamespaceContext() const; + unsigned int getPrefixId(const XMLCh* const prefix) const; + const XMLCh* getPrefixForId(unsigned int prefId) const; + + // Return is a reference so that we can return it as void* from + // getProperty. + // + const XMLSize_t& getLowWaterMark() const; + + bool getGenerateSyntheticAnnotations() const; + bool getValidateAnnotations() const; + bool getIgnoreCachedDTD() const; + bool getIgnoreAnnotations() const; + bool getDisableDefaultEntityResolution() const; + bool getSkipDTDValidation() const; + bool getHandleMultipleImports() const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * When an attribute name has no prefix, unlike elements, it is not mapped + * to the global namespace. So, in order to have something to map it to + * for practical purposes, a id for an empty URL is created and used for + * such names. + * + * @return The URL pool id of the URL for an empty URL "". + */ + unsigned int getEmptyNamespaceId() const; + + /** + * When a prefix is found that has not been mapped, an error is issued. + * However, if the parser has been instructed not to stop on the first + * fatal error, it needs to be able to continue. To do so, it will map + * that prefix tot his magic unknown namespace id. + * + * @return The URL pool id of the URL for the unknown prefix + * namespace. + */ + unsigned int getUnknownNamespaceId() const; + + /** + * The prefix 'xml' is a magic prefix, defined by the XML spec and + * requiring no prior definition. This method returns the id for the + * intrinsically defined URL for this prefix. + * + * @return The URL pool id of the URL for the 'xml' prefix. + */ + unsigned int getXMLNamespaceId() const; + + /** + * The prefix 'xmlns' is a magic prefix, defined by the namespace spec + * and requiring no prior definition. This method returns the id for the + * intrinsically defined URL for this prefix. + * + * @return The URL pool id of the URL for the 'xmlns' prefix. + */ + unsigned int getXMLNSNamespaceId() const; + + /** + * This method find the passed URI id in its URI pool and + * copy the text of that URI into the passed buffer. + */ + bool getURIText + ( + const unsigned int uriId + , XMLBuffer& uriBufToFill + ) const; + + const XMLCh* getURIText(const unsigned int uriId) const; + + /* tell if the validator comes from user */ + bool isValidatorFromUser(); + + /* tell if standard URI are forced */ + bool getStandardUriConformant() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void addGlobalPrefix(const XMLCh* const prefix, const unsigned int uriId); + void setDocHandler(XMLDocumentHandler* const docHandler); + void setDocTypeHandler(DocTypeHandler* const docTypeHandler); + void setDoNamespaces(const bool doNamespaces); + void setEntityHandler(XMLEntityHandler* const docTypeHandler); + void setErrorReporter(XMLErrorReporter* const errHandler); + void setErrorHandler(ErrorHandler* const handler); + void setPSVIHandler(PSVIHandler* const handler); + void setURIStringPool(XMLStringPool* const stringPool); + void setExitOnFirstFatal(const bool newValue); + void setValidationConstraintFatal(const bool newValue); + void setValidationScheme(const ValSchemes newScheme); + void setValidator(XMLValidator* const valToAdopt); + void setDoSchema(const bool doSchema); + void setValidationSchemaFullChecking(const bool schemaFullChecking); + void setIdentityConstraintChecking(const bool identityConstraintChecking); + void setHasNoDTD(const bool hasNoDTD); + void cacheGrammarFromParse(const bool newValue); + void useCachedGrammarInParse(const bool newValue); + void setRootElemName(XMLCh* rootElemName); + void setExternalSchemaLocation(const XMLCh* const schemaLocation); + void setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation); + void setExternalSchemaLocation(const char* const schemaLocation); + void setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation); + void setSecurityManager(SecurityManager* const securityManager); + void setDisallowDTD(const bool disallowDTD); + void setLoadExternalDTD(const bool loadDTD); + void setLoadSchema(const bool loadSchema); + void setNormalizeData(const bool normalizeData); + void setCalculateSrcOfs(const bool newValue); + void setParseSettings(XMLScanner* const refScanner); + void setStandardUriConformant(const bool newValue); + void setInputBufferSize(const XMLSize_t bufferSize); + void setLowWaterMark(XMLSize_t newValue); + + void setGenerateSyntheticAnnotations(const bool newValue); + void setValidateAnnotations(const bool newValue); + void setIgnoredCachedDTD(const bool newValue); + void setIgnoreAnnotations(const bool newValue); + void setDisableDefaultEntityResolution(const bool newValue); + void setSkipDTDValidation(const bool newValue); + void setHandleMultipleImports(const bool newValue); + + // ----------------------------------------------------------------------- + // Mutator methods + // ----------------------------------------------------------------------- + void incrementErrorCount(void); // For use by XMLValidator + + // ----------------------------------------------------------------------- + // Document scanning methods + // + // scanDocument() does the entire source document. scanFirst(), + // scanNext(), and scanReset() support a progressive parse. + // ----------------------------------------------------------------------- + void scanDocument + ( + const XMLCh* const systemId + ); + void scanDocument + ( + const char* const systemId + ); + + bool scanFirst + ( + const InputSource& src + , XMLPScanToken& toFill + ); + bool scanFirst + ( + const XMLCh* const systemId + , XMLPScanToken& toFill + ); + bool scanFirst + ( + const char* const systemId + , XMLPScanToken& toFill + ); + + void scanReset(XMLPScanToken& toFill); + + bool checkXMLDecl(bool startWithAngle); + + // ----------------------------------------------------------------------- + // Grammar preparsing methods + // ----------------------------------------------------------------------- + Grammar* loadGrammar + ( + const XMLCh* const systemId + , const short grammarType + , const bool toCache = false + ); + Grammar* loadGrammar + ( + const char* const systemId + , const short grammarType + , const bool toCache = false + ); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + unsigned int resolveQName + ( + const XMLCh* const qName + , XMLBuffer& prefixBufToFill + , const ElemStack::MapModes mode + , int& prefixColonPos + ); + +protected: + // ----------------------------------------------------------------------- + // Protected pure virtual methods + // ----------------------------------------------------------------------- + virtual void scanCDSection() = 0; + virtual void scanCharData(XMLBuffer& toToUse) = 0; + virtual EntityExpRes scanEntityRef + ( + const bool inAttVal + , XMLCh& firstCh + , XMLCh& secondCh + , bool& escaped + ) = 0; + virtual void scanDocTypeDecl() = 0; + virtual void scanReset(const InputSource& src) = 0; + virtual void sendCharData(XMLBuffer& toSend) = 0; + + //return owned by the caller + virtual InputSource* resolveSystemId(const XMLCh* const /*sysId*/ + ,const XMLCh* const /*pubId*/) {return 0;}; + + // ----------------------------------------------------------------------- + // Protected scanning methods + // ----------------------------------------------------------------------- + bool scanCharRef(XMLCh& toFill, XMLCh& second); + void scanComment(); + bool scanEq(bool inDecl = false); + void scanMiscellaneous(); + void scanPI(); + void scanProlog(); + void scanXMLDecl(const DeclTypes type); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void checkInternalDTD(bool hasExtSubset, const XMLCh* const sysId, const XMLCh* const pubId); + void checkIDRefs(); + bool isLegalToken(const XMLPScanToken& toCheck); + XMLTokens senseNextToken(XMLSize_t& orgReader); + void initValidator(XMLValidator* theValidator); + inline void resetValidationContext(); + unsigned int *getNewUIntPtr(); + void resetUIntPool(); + void recreateUIntPool(); + unsigned int resolvePrefix + ( + const XMLCh* const prefix + , const ElemStack::MapModes mode + ); + unsigned int resolveQNameWithColon + ( + const XMLCh* const qName + , XMLBuffer& prefixBufToFill + , const ElemStack::MapModes mode + , const int prefixColonPos + ); + + inline + void setAttrDupChkRegistry + ( + const XMLSize_t &attrNumber + , bool &toUseHashTable + ); + + // ----------------------------------------------------------------------- + // Data members + // + // fBufferSize + // Maximum input buffer size + // + // fLowWaterMark + // The low water mark for the raw byte buffer. + // + // fAttrList + // Every time we get a new element start tag, we have to pass to + // the document handler the attributes found. To make it more + // efficient we keep this ref vector of XMLAttr objects around. We + // just reuse it over and over, allowing it to grow to meet the + // peak need. + // + // fBufMgr + // This is a manager for temporary buffers used during scanning. + // For efficiency we must use a set of static buffers, but we have + // to insure that they are not incorrectly reused. So this manager + // provides the smarts to hand out buffers as required. + // + // fDocHandler + // The client code's document handler. If zero, then no document + // handler callouts are done. We don't adopt it. + // + // fDocTypeHandler + // The client code's document type handler (used by DTD Validator). + // + // fDoNamespaces + // This flag indicates whether the client code wants us to do + // namespaces or not. If the installed validator indicates that it + // has to do namespaces, then this is ignored. + // + // fEntityHandler + // The client code's entity handler. If zero, then no entity handler + // callouts are done. We don't adopt it. + // + // fErrorReporter + // The client code's error reporter. If zero, then no error reporter + // callouts are done. We don't adopt it. + // + // fErrorHandler + // The client code's error handler. Need to store this info for + // Schema parse error handling. + // + // fPSVIHandler + // The client code's PSVI handler. + // + // fExitOnFirstFatal + // This indicates whether we bail out on the first fatal XML error + // or not. It defaults to true, which is the strict XML way, but it + // can be changed. + // + // fValidationConstraintFatal + // This indicates whether we treat validation constraint errors as + // fatal errors or not. It defaults to false, but it can be changed. + // + // fIDRefList + // This is a list of XMLRefInfo objects. This member lets us do all + // needed ID-IDREF balancing checks. + // + // fInException + // To avoid a circular freakout when we catch an exception and emit + // it, which would normally throw again if the 'fail on first error' + // flag is one. + // + // fReaderMgr + // This is the reader manager, from which we get characters. It + // manages the reader stack for us, and provides a lot of convenience + // methods to do specialized checking for chars, sequences of chars, + // skipping chars, etc... + // + // fScannerId + // fSequenceId + // These are used for progressive parsing, to make sure that the + // client code does the right thing at the right time. + // + // fStandalone + // Indicates whether the document is standalone or not. Defaults to + // no, but can be overridden in the XMLDecl. + // + // fHasNoDTD + // Indicates the document has no DTD or has only an internal DTD subset + // which contains no parameter entity references. + // + // fValidate + // Indicates whether any validation should be done. This is defined + // by the existence of a Grammar together with fValScheme. + // + // fValidator + // The installed validator. We look at them via the abstract + // validator interface, and don't know what it actual is. + // Either point to user's installed validator, or fDTDValidator + // or fSchemaValidator. + // + // fValidatorFromUser + // This flag indicates whether the validator was installed from + // user. If false, then the validator was created by the Scanner. + // + // fValScheme + // This is the currently set validation scheme. It defaults to + // 'never', but can be set by the client. + // + // fErrorCount + // The number of errors we've encountered. + // + // fDoSchema + // This flag indicates whether the client code wants Schema to + // be processed or not. + // + // fSchemaFullChecking + // This flag indicates whether the client code wants full Schema + // constraint checking. + // + // fIdentityConstraintChecking + // This flag indicates whether the client code wants Identity + // Constraint checking, defaulted to true to maintain backward + // compatibility (to minimize supprise) + // + // fAttName + // fAttValue + // fCDataBuf + // fNameBuf + // fQNameBuf + // fPrefixBuf + // For the most part, buffers are obtained from the fBufMgr object + // on the fly. However, for the start tag scan, we have a set of + // fixed buffers for performance reasons. These are used a lot and + // there are a number of them, so asking the buffer manager each + // time for new buffers is a bit too much overhead. + // + // fEmptyNamespaceId + // This is the id of the empty namespace URI. This is a special one + // because of the xmlns="" type of deal. We have to quickly sense + // that its the empty namespace. + // + // fUnknownNamespaceId + // This is the id of the namespace URI which is assigned to the + // global namespace. Its for debug purposes only, since there is no + // real global namespace URI. Its set by the derived class. + // + // fXMLNamespaceId + // fXMLNSNamespaceId + // These are the ids of the namespace URIs which are assigned to the + // 'xml' and 'xmlns' special prefixes. The former is officially + // defined but the latter is not, so we just provide one for debug + // purposes. + // + // fSchemaNamespaceId + // This is the id of the schema namespace URI. + // + // fGrammarResolver + // Grammar Pool that stores all the grammars. Key is namespace for + // schema and system id for external DTD. When caching a grammar, if + // a grammar is already in the pool, it will be replaced with the + // new parsed one. + // + // fGrammar + // Current Grammar used by the Scanner and Validator + // + // fRootGrammar + // The grammar where the root element is declared. + // + // fGrammarType + // Current Grammar Type. Store this value instead of calling getGrammarType + // all the time for faster performance. + // + // fURIStringPool + // This is a pool for URIs with unique ids assigned. We use a standard + // string pool class. This pool is going to be shared by all Grammar. + // Use only if namespace is turned on. + // + // fRootElemName + // No matter we are using DTD or Schema Grammar, if a DOCTYPE exists, + // we need to verify the root element name. So store the rootElement + // that is used in the DOCTYPE in the Scanner instead of in the DTDGrammar + // where it used to + // + // fExternalSchemaLocation + // The list of Namespace/SchemaLocation that was specified externally + // using setExternalSchemaLocation. + // + // fExternalNoNamespaceSchemaLocation + // The no target namespace XML Schema Location that was specified + // externally using setExternalNoNamespaceSchemaLocation. + // + // fSecurityManager + // The SecurityManager instance; as and when set by the application. + // + // fEntityExpansionLimit + // The number of entity expansions to be permitted while processing this document + // Only meaningful when fSecurityManager != 0 + // + // fEntityExpansionCount + // The number of general entities expanded so far in this document. + // Only meaningful when fSecurityManager != null + // + // fDisallowDTD + // This flag indicates whether the presence of a DTD should be fatal + // + // fLoadExternalDTD + // This flag indicates whether the external DTD be loaded or not + // + // fLoadSchema + // This flag indicates whether the parser should attempt to load + // schemas if they cannot be found in the grammar pool. + // + // fNormalizeData + // This flag indicates whether the parser should perform datatype + // normalization that is defined in the schema. + // + // fCalculateSrcOfs + // This flag indicates the parser should calculate the source offset. + // Turning this on may impact performance. + // + // fStandardUriConformant + // This flag controls whether we force conformant URI + // + // fXMLVersion + // Enum to indicate if the main doc is XML 1.1 or XML 1.0 conformant + // fUIntPool + // pool of unsigned integers to help with duplicate attribute + // detection and filling in default/fixed attributes + // fUIntPoolRow + // current row in fUIntPool + // fUIntPoolCol + // current column in row + // fUIntPoolRowTotal + // total number of rows in table + // + // fMemoryManager + // Pluggable memory manager for dynamic allocation/deallocation. + // + // ----------------------------------------------------------------------- + XMLSize_t fBufferSize; + XMLSize_t fLowWaterMark; + bool fStandardUriConformant; + bool fCalculateSrcOfs; + bool fDoNamespaces; + bool fExitOnFirstFatal; + bool fValidationConstraintFatal; + bool fInException; + bool fStandalone; + bool fHasNoDTD; + bool fValidate; + bool fValidatorFromUser; + bool fDoSchema; + bool fSchemaFullChecking; + bool fIdentityConstraintChecking; + bool fToCacheGrammar; + bool fUseCachedGrammar; + bool fDisallowDTD; + bool fLoadExternalDTD; + bool fLoadSchema; + bool fNormalizeData; + bool fGenerateSyntheticAnnotations; + bool fValidateAnnotations; + bool fIgnoreCachedDTD; + bool fIgnoreAnnotations; + bool fDisableDefaultEntityResolution; + bool fSkipDTDValidation; + bool fHandleMultipleImports; + int fErrorCount; + XMLSize_t fEntityExpansionLimit; + XMLSize_t fEntityExpansionCount; + unsigned int fEmptyNamespaceId; + unsigned int fUnknownNamespaceId; + unsigned int fXMLNamespaceId; + unsigned int fXMLNSNamespaceId; + unsigned int fSchemaNamespaceId; + unsigned int ** fUIntPool; + unsigned int fUIntPoolRow; + unsigned int fUIntPoolCol; + unsigned int fUIntPoolRowTotal; + XMLUInt32 fScannerId; + XMLUInt32 fSequenceId; + RefVectorOf* fAttrList; + RefHash2KeysTableOf* fAttrDupChkRegistry; + XMLDocumentHandler* fDocHandler; + DocTypeHandler* fDocTypeHandler; + XMLEntityHandler* fEntityHandler; + XMLErrorReporter* fErrorReporter; + ErrorHandler* fErrorHandler; + PSVIHandler* fPSVIHandler; + ValidationContext *fValidationContext; + bool fEntityDeclPoolRetrieved; + ReaderMgr fReaderMgr; + XMLValidator* fValidator; + ValSchemes fValScheme; + GrammarResolver* const fGrammarResolver; + MemoryManager* const fGrammarPoolMemoryManager; + Grammar* fGrammar; + Grammar* fRootGrammar; + XMLStringPool* fURIStringPool; + XMLCh* fRootElemName; + XMLCh* fExternalSchemaLocation; + XMLCh* fExternalNoNamespaceSchemaLocation; + SecurityManager* fSecurityManager; + XMLReader::XMLVersion fXMLVersion; + MemoryManager* fMemoryManager; + XMLBufferMgr fBufMgr; + XMLBuffer fAttNameBuf; + XMLBuffer fAttValueBuf; + XMLBuffer fCDataBuf; + XMLBuffer fQNameBuf; + XMLBuffer fPrefixBuf; + XMLBuffer fURIBuf; + XMLBuffer fWSNormalizeBuf; + ElemStack fElemStack; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLScanner(); + XMLScanner(const XMLScanner&); + XMLScanner& operator=(const XMLScanner&); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void commonInit(); + void cleanUp(); + + // ----------------------------------------------------------------------- + // Private scanning methods + // ----------------------------------------------------------------------- + bool getQuotedString(XMLBuffer& toFill); + XMLSize_t scanUpToWSOr + ( + XMLBuffer& toFill + , const XMLCh chEndChar + ); +}; + +// --------------------------------------------------------------------------- +// XMLScanner: Getter methods +// --------------------------------------------------------------------------- +inline const XMLDocumentHandler* XMLScanner::getDocHandler() const +{ + return fDocHandler; +} + +inline XMLDocumentHandler* XMLScanner::getDocHandler() +{ + return fDocHandler; +} + +inline const DocTypeHandler* XMLScanner::getDocTypeHandler() const +{ + return fDocTypeHandler; +} + +inline DocTypeHandler* XMLScanner::getDocTypeHandler() +{ + return fDocTypeHandler; +} + +inline bool XMLScanner::getDoNamespaces() const +{ + return fDoNamespaces; +} + +inline const XMLEntityHandler* XMLScanner::getEntityHandler() const +{ + return fEntityHandler; +} + +inline XMLEntityHandler* XMLScanner::getEntityHandler() +{ + return fEntityHandler; +} + +inline const XMLErrorReporter* XMLScanner::getErrorReporter() const +{ + return fErrorReporter; +} + +inline XMLErrorReporter* XMLScanner::getErrorReporter() +{ + return fErrorReporter; +} + +inline const ErrorHandler* XMLScanner::getErrorHandler() const +{ + return fErrorHandler; +} + +inline ErrorHandler* XMLScanner::getErrorHandler() +{ + return fErrorHandler; +} + +inline const PSVIHandler* XMLScanner::getPSVIHandler() const +{ + return fPSVIHandler; +} + +inline PSVIHandler* XMLScanner::getPSVIHandler() +{ + return fPSVIHandler; +} + +inline bool XMLScanner::getExitOnFirstFatal() const +{ + return fExitOnFirstFatal; +} + +inline bool XMLScanner::getValidationConstraintFatal() const +{ + return fValidationConstraintFatal; +} + +inline bool XMLScanner::getInException() const +{ + return fInException; +} + +inline RefHashTableOf* XMLScanner::getIDRefList() +{ + return fValidationContext->getIdRefList(); +} + +inline const RefHashTableOf* XMLScanner::getIDRefList() const +{ + return fValidationContext->getIdRefList(); +} + +inline ValidationContext* XMLScanner::getValidationContext() +{ + if (!fEntityDeclPoolRetrieved) + { + fValidationContext->setEntityDeclPool(getEntityDeclPool()); + fEntityDeclPoolRetrieved = true; + } + + return fValidationContext; +} + +inline const Locator* XMLScanner::getLocator() const +{ + return &fReaderMgr; +} + +inline const ReaderMgr* XMLScanner::getReaderMgr() const +{ + return &fReaderMgr; +} + +inline XMLFilePos XMLScanner::getSrcOffset() const +{ + return fReaderMgr.getSrcOffset(); +} + +inline bool XMLScanner::getStandalone() const +{ + return fStandalone; +} + +inline XMLScanner::ValSchemes XMLScanner::getValidationScheme() const +{ + return fValScheme; +} + +inline const XMLValidator* XMLScanner::getValidator() const +{ + return fValidator; +} + +inline XMLValidator* XMLScanner::getValidator() +{ + return fValidator; +} + +inline bool XMLScanner::getDoSchema() const +{ + return fDoSchema; +} + +inline bool XMLScanner::getValidationSchemaFullChecking() const +{ + return fSchemaFullChecking; +} + +inline bool XMLScanner::getIdentityConstraintChecking() const +{ + return fIdentityConstraintChecking; +} + +inline int XMLScanner::getErrorCount() +{ + return fErrorCount; +} + +inline bool XMLScanner::isValidatorFromUser() +{ + return fValidatorFromUser; +} + +inline unsigned int XMLScanner::getEmptyNamespaceId() const +{ + return fEmptyNamespaceId; +} + +inline unsigned int XMLScanner::getUnknownNamespaceId() const +{ + return fUnknownNamespaceId; +} + +inline unsigned int XMLScanner::getXMLNamespaceId() const +{ + return fXMLNamespaceId; +} + +inline unsigned int XMLScanner::getXMLNSNamespaceId() const +{ + return fXMLNSNamespaceId; +} + +inline const XMLStringPool* XMLScanner::getURIStringPool() const +{ + return fURIStringPool; +} + +inline XMLStringPool* XMLScanner::getURIStringPool() +{ + return fURIStringPool; +} + +inline bool XMLScanner::getHasNoDTD() const +{ + return fHasNoDTD; +} + +inline XMLCh* XMLScanner::getExternalSchemaLocation() const +{ + return fExternalSchemaLocation; +} + +inline XMLCh* XMLScanner::getExternalNoNamespaceSchemaLocation() const +{ + return fExternalNoNamespaceSchemaLocation; +} + +inline SecurityManager* XMLScanner::getSecurityManager() const +{ + return fSecurityManager; +} + +inline bool XMLScanner::getDisallowDTD() const +{ + return fDisallowDTD; +} + +inline bool XMLScanner::getLoadExternalDTD() const +{ + return fLoadExternalDTD; +} + +inline bool XMLScanner::getLoadSchema() const +{ + return fLoadSchema; +} + +inline bool XMLScanner::getNormalizeData() const +{ + return fNormalizeData; +} + +inline bool XMLScanner::isCachingGrammarFromParse() const +{ + return fToCacheGrammar; +} + +inline bool XMLScanner::isUsingCachedGrammarInParse() const +{ + return fUseCachedGrammar; +} + +inline bool XMLScanner::getCalculateSrcOfs() const +{ + return fCalculateSrcOfs; +} + +inline Grammar* XMLScanner::getRootGrammar() const +{ + return fRootGrammar; +} + +inline bool XMLScanner::getStandardUriConformant() const +{ + return fStandardUriConformant; +} + +inline XMLReader::XMLVersion XMLScanner::getXMLVersion() const +{ + return fXMLVersion; +} + +inline MemoryManager* XMLScanner::getMemoryManager() const +{ + return fMemoryManager; +} + +inline ValueVectorOf* XMLScanner::getNamespaceContext() const +{ + return fElemStack.getNamespaceMap(); +} + +inline unsigned int XMLScanner::getPrefixId(const XMLCh* const prefix) const +{ + return fElemStack.getPrefixId(prefix); +} + +inline const XMLCh* XMLScanner::getPrefixForId(unsigned int prefId) const +{ + return fElemStack.getPrefixForId(prefId); +} + +inline bool XMLScanner::getGenerateSyntheticAnnotations() const +{ + return fGenerateSyntheticAnnotations; +} + +inline bool XMLScanner::getValidateAnnotations() const +{ + return fValidateAnnotations; +} + +inline const XMLSize_t& XMLScanner::getLowWaterMark() const +{ + return fLowWaterMark; +} + +inline bool XMLScanner::getIgnoreCachedDTD() const +{ + return fIgnoreCachedDTD; +} + +inline bool XMLScanner::getIgnoreAnnotations() const +{ + return fIgnoreAnnotations; +} + +inline bool XMLScanner::getDisableDefaultEntityResolution() const +{ + return fDisableDefaultEntityResolution; +} + +inline bool XMLScanner::getSkipDTDValidation() const +{ + return fSkipDTDValidation; +} + +inline bool XMLScanner::getHandleMultipleImports() const +{ + return fHandleMultipleImports; +} + +// --------------------------------------------------------------------------- +// XMLScanner: Setter methods +// --------------------------------------------------------------------------- +inline void XMLScanner::addGlobalPrefix(const XMLCh* const prefix, const unsigned int uriId) +{ + fElemStack.addGlobalPrefix(prefix, uriId); +} + +inline void XMLScanner::setDocHandler(XMLDocumentHandler* const docHandler) +{ + fDocHandler = docHandler; +} + +inline void XMLScanner::setDocTypeHandler(DocTypeHandler* const docTypeHandler) +{ + fDocTypeHandler = docTypeHandler; +} + +inline void XMLScanner::setErrorHandler(ErrorHandler* const handler) +{ + fErrorHandler = handler; +} + +inline void XMLScanner::setPSVIHandler(PSVIHandler* const handler) +{ + fPSVIHandler = handler; +} + +inline void XMLScanner::setEntityHandler(XMLEntityHandler* const entityHandler) +{ + fEntityHandler = entityHandler; + fReaderMgr.setEntityHandler(entityHandler); +} + +inline void XMLScanner::setErrorReporter(XMLErrorReporter* const errHandler) +{ + fErrorReporter = errHandler; +} + +inline void XMLScanner::setExitOnFirstFatal(const bool newValue) +{ + fExitOnFirstFatal = newValue; +} + + +inline void XMLScanner::setValidationConstraintFatal(const bool newValue) +{ + fValidationConstraintFatal = newValue; +} + +inline void XMLScanner::setValidationScheme(const ValSchemes newScheme) +{ + fValScheme = newScheme; + + // validation flag for Val_Auto is set to false by default, + // and will be turned to true if a grammar is seen + if (fValScheme == Val_Always) + fValidate = true; + else + fValidate = false; +} + +inline void XMLScanner::setDoSchema(const bool doSchema) +{ + fDoSchema = doSchema; +} + +inline void XMLScanner::setDoNamespaces(const bool doNamespaces) +{ + fDoNamespaces = doNamespaces; +} + +inline void XMLScanner::setValidationSchemaFullChecking(const bool schemaFullChecking) +{ + fSchemaFullChecking = schemaFullChecking; +} + +inline void XMLScanner::setIdentityConstraintChecking(const bool identityConstraintChecking) +{ + fIdentityConstraintChecking = identityConstraintChecking; +} + +inline void XMLScanner::setHasNoDTD(const bool hasNoDTD) +{ + fHasNoDTD = hasNoDTD; +} + +inline void XMLScanner::setRootElemName(XMLCh* rootElemName) +{ + fMemoryManager->deallocate(fRootElemName);//delete [] fRootElemName; + fRootElemName = XMLString::replicate(rootElemName, fMemoryManager); +} + +inline void XMLScanner::setExternalSchemaLocation(const XMLCh* const schemaLocation) +{ + fMemoryManager->deallocate(fExternalSchemaLocation);//delete [] fExternalSchemaLocation; + fExternalSchemaLocation = XMLString::replicate(schemaLocation, fMemoryManager); +} + +inline void XMLScanner::setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation) +{ + fMemoryManager->deallocate(fExternalNoNamespaceSchemaLocation);//delete [] fExternalNoNamespaceSchemaLocation; + fExternalNoNamespaceSchemaLocation = XMLString::replicate(noNamespaceSchemaLocation, fMemoryManager); +} + +inline void XMLScanner::setExternalSchemaLocation(const char* const schemaLocation) +{ + fMemoryManager->deallocate(fExternalSchemaLocation);//delete [] fExternalSchemaLocation; + fExternalSchemaLocation = XMLString::transcode(schemaLocation, fMemoryManager); +} + +inline void XMLScanner::setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation) +{ + fMemoryManager->deallocate(fExternalNoNamespaceSchemaLocation);//delete [] fExternalNoNamespaceSchemaLocation; + fExternalNoNamespaceSchemaLocation = XMLString::transcode(noNamespaceSchemaLocation, fMemoryManager); +} + +inline void XMLScanner::setSecurityManager(SecurityManager* const securityManager) +{ + fSecurityManager = securityManager; + if(securityManager != 0) + { + fEntityExpansionLimit = securityManager->getEntityExpansionLimit(); + fEntityExpansionCount = 0; + } +} + +inline void XMLScanner::setDisallowDTD(const bool disallowDTD) +{ + fDisallowDTD = disallowDTD; +} + +inline void XMLScanner::setLoadExternalDTD(const bool loadDTD) +{ + fLoadExternalDTD = loadDTD; +} + +inline void XMLScanner::setLoadSchema(const bool loadSchema) +{ + fLoadSchema = loadSchema; +} + +inline void XMLScanner::setNormalizeData(const bool normalizeData) +{ + fNormalizeData = normalizeData; +} + +inline void XMLScanner::cacheGrammarFromParse(const bool newValue) +{ + fToCacheGrammar = newValue; +} + +inline void XMLScanner::useCachedGrammarInParse(const bool newValue) +{ + fUseCachedGrammar = newValue; +} + +inline void XMLScanner::setCalculateSrcOfs(const bool newValue) +{ + fCalculateSrcOfs = newValue; +} + +inline void XMLScanner::setStandardUriConformant(const bool newValue) +{ + fStandardUriConformant = newValue; + fReaderMgr.setStandardUriConformant(newValue); +} + +inline void XMLScanner::setGenerateSyntheticAnnotations(const bool newValue) +{ + fGenerateSyntheticAnnotations = newValue; +} + +inline void XMLScanner::setValidateAnnotations(const bool newValue) +{ + fValidateAnnotations = newValue; +} + +inline void XMLScanner::setInputBufferSize(const XMLSize_t bufferSize) +{ + fBufferSize = bufferSize; + fCDataBuf.setFullHandler(this, fBufferSize); +} + +inline void XMLScanner::setLowWaterMark(XMLSize_t newValue) +{ + fLowWaterMark = newValue; +} + +inline void XMLScanner::setIgnoredCachedDTD(const bool newValue) +{ + fIgnoreCachedDTD = newValue; +} + +inline void XMLScanner::setIgnoreAnnotations(const bool newValue) +{ + fIgnoreAnnotations = newValue; +} + +inline void XMLScanner::setDisableDefaultEntityResolution(const bool newValue) +{ + fDisableDefaultEntityResolution = newValue; +} + +inline void XMLScanner::setSkipDTDValidation(const bool newValue) +{ + fSkipDTDValidation = newValue; +} + +inline void XMLScanner::setHandleMultipleImports(const bool newValue) +{ + fHandleMultipleImports = newValue; +} + +// --------------------------------------------------------------------------- +// XMLScanner: Mutator methods +// --------------------------------------------------------------------------- +inline void XMLScanner::incrementErrorCount() +{ + ++fErrorCount; +} + +inline void XMLScanner::resetValidationContext() +{ + fValidationContext->clearIdRefList(); + fValidationContext->setEntityDeclPool(0); + fEntityDeclPoolRetrieved = false; +} + +inline void XMLScanner::setAttrDupChkRegistry(const XMLSize_t &attrNumber + , bool &toUseHashTable) +{ + // once the attribute exceed 100, we use hash table to check duplication + if (attrNumber > 100) + { + toUseHashTable = true; + + if (!fAttrDupChkRegistry) + { + fAttrDupChkRegistry = new (fMemoryManager) RefHash2KeysTableOf + ( + 2*attrNumber+1, false, fMemoryManager + ); + } + else + { + fAttrDupChkRegistry->removeAll(); + } + } + +} + +inline Grammar::GrammarType XMLScanner::getCurrentGrammarType() const +{ + return Grammar::UnKnown; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/XMLScannerResolver.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/XMLScannerResolver.hpp new file mode 100644 index 000000000000..26b7e396b0a3 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/XMLScannerResolver.hpp @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLSCANNERRESOLVER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLSCANNERRESOLVER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLValidator; +class XMLDocumentHandler; +class XMLErrorReporter; +class DocTypeHandler; +class XMLEntityHandler; + +class XMLPARSER_EXPORT XMLScannerResolver +{ +public: + // ----------------------------------------------------------------------- + // Public class methods + // ----------------------------------------------------------------------- + static XMLScanner* resolveScanner + ( + const XMLCh* const scannerName + , XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + static XMLScanner* resolveScanner + ( + const XMLCh* const scannerName + , XMLDocumentHandler* const docHandler + , DocTypeHandler* const docTypeHandler + , XMLEntityHandler* const entityHandler + , XMLErrorReporter* const errReporter + , XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + static XMLScanner* getDefaultScanner + ( + XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + +private : + + // ----------------------------------------------------------------------- + // Unimplemented constructor and destructor + // ----------------------------------------------------------------------- + XMLScannerResolver(); + ~XMLScannerResolver(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/XProtoType.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/XProtoType.hpp new file mode 100644 index 000000000000..5af22a158c7d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/XProtoType.hpp @@ -0,0 +1,93 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XPROTOTYPE_HPP) +#define XERCESC_INCLUDE_GUARD_XPROTOTYPE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XSerializeEngine; +class XSerializable; + +class XMLUTIL_EXPORT XProtoType +{ +public: + + void store(XSerializeEngine& serEng) const; + + static void load(XSerializeEngine& serEng + , XMLByte* const name + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // ------------------------------------------------------------------------------- + // data + // + // fClassName: + // name of the XSerializable derivatives + // + // fCreateObject: + // pointer to the factory method (createObject()) + // of the XSerializable derivatives + // + // ------------------------------------------------------------------------------- + + XMLByte* fClassName; + + XSerializable* (*fCreateObject)(MemoryManager*); + +}; + +#define DECL_XPROTOTYPE(class_name) \ +static XProtoType class##class_name; \ +static XSerializable* createObject(MemoryManager* manager); + +/*** + * For non-abstract class + ***/ +#define IMPL_XPROTOTYPE_TOCREATE(class_name) \ +IMPL_XPROTOTYPE_INSTANCE(class_name) \ +XSerializable* class_name::createObject(MemoryManager* manager) \ +{return new (manager) class_name(manager);} + +/*** +* For abstract class + ***/ +#define IMPL_XPROTOTYPE_NOCREATE(class_name) \ +IMPL_XPROTOTYPE_INSTANCE(class_name) \ +XSerializable* class_name::createObject(MemoryManager*) \ +{return 0;} + + +/*** + * Helper Macro + ***/ +#define XPROTOTYPE_CLASS(class_name) ((XProtoType*)(&class_name::class##class_name)) + +#define IMPL_XPROTOTYPE_INSTANCE(class_name) \ +XProtoType class_name::class##class_name = \ +{const_cast(reinterpret_cast(#class_name)), class_name::createObject }; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/XSAXMLScanner.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/XSAXMLScanner.hpp new file mode 100644 index 000000000000..4935e6cd552c --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/XSAXMLScanner.hpp @@ -0,0 +1,98 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSAXMLSCANNER_HPP) +#define XERCESC_INCLUDE_GUARD_XSAXMLSCANNER_HPP + +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This is a scanner class, which processes/validates contents of XML Schema +// Annotations. It's intended for internal use only. +// +class XMLPARSER_EXPORT XSAXMLScanner : public SGXMLScanner +{ +public : + // ----------------------------------------------------------------------- + // Destructor + // ----------------------------------------------------------------------- + virtual ~XSAXMLScanner(); + + // ----------------------------------------------------------------------- + // XMLScanner public virtual methods + // ----------------------------------------------------------------------- + virtual const XMLCh* getName() const; + +protected: + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + /** + * The grammar representing the XML Schema annotation (xsaGrammar) is + * passed in by the caller. The scanner will own it and is responsible + * for deleting it. + */ + XSAXMLScanner + ( + GrammarResolver* const grammarResolver + , XMLStringPool* const uriStringPool + , SchemaGrammar* const xsaGrammar + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + friend class TraverseSchema; + + // ----------------------------------------------------------------------- + // XMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual void scanReset(const InputSource& src); + + // ----------------------------------------------------------------------- + // SGXMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual bool scanStartTag(bool& gotData); + virtual void scanEndTag(bool& gotData); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSAXMLScanner(); + XSAXMLScanner(const XSAXMLScanner&); + XSAXMLScanner& operator=(const XSAXMLScanner&); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void scanRawAttrListforNameSpaces(XMLSize_t attCount); + void switchGrammar(const XMLCh* const newGrammarNameSpace, bool laxValidate); +}; + +inline const XMLCh* XSAXMLScanner::getName() const +{ + return XMLUni::fgXSAXMLScanner; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/XSObjectFactory.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/XSObjectFactory.hpp new file mode 100644 index 000000000000..e42d32e096ce --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/XSObjectFactory.hpp @@ -0,0 +1,237 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSOBJECTFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_XSOBJECTFACTORY_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XSObject; +class XSAttributeUse; +class XSAttributeDeclaration; +class XSModel; +class XSElementDeclaration; +class XSSimpleTypeDefinition; +class XSComplexTypeDefinition; +class XSModelGroupDefinition; +class XSAttributeGroupDefinition; +class XSWildcard; +class XSParticle; +class XSAnnotation; +class XSNamespaceItem; +class XSNotationDeclaration; +class SchemaAttDef; +class SchemaElementDecl; +class DatatypeValidator; +class ContentSpecNode; +class ComplexTypeInfo; +class XercesGroupInfo; +class XercesAttGroupInfo; +class XSIDCDefinition; +class IdentityConstraint; +class XMLNotationDecl; + +/** + * Factory class to create various XSObject(s) + * Used by XSModel + */ +class XMLPARSER_EXPORT XSObjectFactory : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XSObjectFactory(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~XSObjectFactory(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and destructor + // ----------------------------------------------------------------------- + XSObjectFactory(const XSObjectFactory&); + XSObjectFactory& operator=(const XSObjectFactory&); + + // ----------------------------------------------------------------------- + // factory methods + // ----------------------------------------------------------------------- + XSParticle* createModelGroupParticle + ( + const ContentSpecNode* const node + , XSModel* const xsModel + ); + + XSAttributeDeclaration* addOrFind + ( + SchemaAttDef* const attDef + , XSModel* const xsModel + , XSComplexTypeDefinition* const enclosingTypeDef = 0 + ); + + XSSimpleTypeDefinition* addOrFind + ( + DatatypeValidator* const validator + , XSModel* const xsModel + , bool isAnySimpleType = false + ); + + XSElementDeclaration* addOrFind + ( + SchemaElementDecl* const elemDecl + , XSModel* const xsModel + , XSComplexTypeDefinition* const enclosingTypeDef = 0 + ); + + XSComplexTypeDefinition* addOrFind + ( + ComplexTypeInfo* const typeInfo + , XSModel* const xsModel + ); + + XSIDCDefinition* addOrFind + ( + IdentityConstraint* const ic + , XSModel* const xsModel + ); + + XSNotationDeclaration* addOrFind + ( + XMLNotationDecl* const notDecl + , XSModel* const xsModel + ); + + XSAttributeUse* createXSAttributeUse + ( + XSAttributeDeclaration* const xsAttDecl + , XSModel* const xsModel + ); + XSWildcard* createXSWildcard + ( + SchemaAttDef* const attDef + , XSModel* const xsModel + ); + + XSWildcard* createXSWildcard + ( + const ContentSpecNode* const rootNode + , XSModel* const xsModel + ); + + XSModelGroupDefinition* createXSModelGroupDefinition + ( + XercesGroupInfo* const groupInfo + , XSModel* const xsModel + ); + + XSAttributeGroupDefinition* createXSAttGroupDefinition + ( + XercesAttGroupInfo* const attGroupInfo + , XSModel* const xsModel + ); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + // creates a particle corresponding to an element + XSParticle* createElementParticle + ( + const ContentSpecNode* const rootNode + , XSModel* const xsModel + ); + + // creates a particle corresponding to a wildcard + XSParticle* createWildcardParticle + ( + const ContentSpecNode* const rootNode + , XSModel* const xsModel + ); + + XSAnnotation* getAnnotationFromModel + ( + XSModel* const xsModel + , const void* const key + ); + + void buildAllParticles + ( + const ContentSpecNode* const rootNode + , XSParticleList* const particleList + , XSModel* const xsModel + ); + + void buildChoiceSequenceParticles + ( + const ContentSpecNode* const rootNode + , XSParticleList* const particleList + , XSModel* const xsModel + ); + + void putObjectInMap + ( + void* key + , XSObject* const object + ); + + XSObject* getObjectFromMap + ( + void* key + ); + + void processFacets + ( + DatatypeValidator* const dv + , XSModel* const xsModel + , XSSimpleTypeDefinition* const xsST + ); + + void processAttUse + ( + SchemaAttDef* const attDef + , XSAttributeUse* const xsAttUse + ); + + bool isMultiValueFacetDefined(DatatypeValidator* const dv); + + // make XSModel our friend + friend class XSModel; + + // ----------------------------------------------------------------------- + // Private Data Members + // + // fMemoryManager + // The memory manager used to create various XSObject(s). + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + RefHashTableOf* fXercesToXSMap; + RefVectorOf* fDeleteVector; +}; + +inline XSObject* XSObjectFactory::getObjectFromMap(void* key) +{ + return fXercesToXSMap->get(key); +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/XSerializable.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/XSerializable.hpp new file mode 100644 index 000000000000..1b0fb7a73db3 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/XSerializable.hpp @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSERIALIZABLE_HPP) +#define XERCESC_INCLUDE_GUARD_XSERIALIZABLE_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XSerializable +{ +public : + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + virtual ~XSerializable() {} ; + + // ----------------------------------------------------------------------- + // Serialization Interface + // ----------------------------------------------------------------------- + virtual bool isSerializable() const = 0; + + virtual void serialize(XSerializeEngine& ) = 0; + + virtual XProtoType* getProtoType() const = 0; + +protected: + XSerializable() {} + XSerializable(const XSerializable& ) {} + +private: + // ----------------------------------------------------------------------- + // Unimplemented assignment operator + // ----------------------------------------------------------------------- + XSerializable& operator=(const XSerializable&); + +}; + +inline void XSerializable::serialize(XSerializeEngine& ) +{ +} + +/*** + * Macro to be included in XSerializable derivatives' + * declaration's public section + ***/ +#define DECL_XSERIALIZABLE(class_name) \ +public: \ +\ +DECL_XPROTOTYPE(class_name) \ +\ +virtual bool isSerializable() const ; \ +virtual XProtoType* getProtoType() const; \ +virtual void serialize(XSerializeEngine&); \ +\ +inline friend XSerializeEngine& operator>>(XSerializeEngine& serEng \ + , class_name*& objPtr) \ +{objPtr = (class_name*) serEng.read(XPROTOTYPE_CLASS(class_name)); \ + return serEng; \ +}; + +/*** + * Macro to be included in the implementation file + * of XSerializable derivatives' which is instantiable + ***/ +#define IMPL_XSERIALIZABLE_TOCREATE(class_name) \ +IMPL_XPROTOTYPE_TOCREATE(class_name) \ +IMPL_XSERIAL(class_name) + +/*** + * Macro to be included in the implementation file + * of XSerializable derivatives' which is UN-instantiable + ***/ +#define IMPL_XSERIALIZABLE_NOCREATE(class_name) \ +IMPL_XPROTOTYPE_NOCREATE(class_name) \ +IMPL_XSERIAL(class_name) + +/*** + * Helper Macro + ***/ +#define IMPL_XSERIAL(class_name) \ +bool class_name::isSerializable() const \ +{return true; } \ +XProtoType* class_name::getProtoType() const \ +{return XPROTOTYPE_CLASS(class_name); } + +#define IS_EQUIVALENT(lptr, rptr) \ + if (lptr == rptr) \ + return true; \ + if (( lptr && !rptr) || (!lptr && rptr)) \ + return false; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/XSerializationException.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/XSerializationException.hpp new file mode 100644 index 000000000000..62dbc3d298bd --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/XSerializationException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSERIALIZATION_EXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_XSERIALIZATION_EXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(XSerializationException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/XSerializeEngine.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/XSerializeEngine.hpp new file mode 100644 index 000000000000..025dc11a8a31 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/XSerializeEngine.hpp @@ -0,0 +1,841 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSERIALIZE_ENGINE_HPP) +#define XERCESC_INCLUDE_GUARD_XSERIALIZE_ENGINE_HPP + +#include +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XSerializable; +class XProtoType; +class MemoryManager; +class XSerializedObjectId; +class BinOutputStream; +class BinInputStream; +class XMLGrammarPool; +class XMLGrammarPoolImpl; +class XMLStringPool; + +class XMLUTIL_EXPORT XSerializeEngine +{ +public: + + enum { mode_Store + , mode_Load + }; + + + static const bool toReadBufferLen; + + typedef unsigned int XSerializedObjectId_t; + + /*** + * + * Destructor + * + ***/ + ~XSerializeEngine(); + + /*** + * + * Constructor for de-serialization(loading) + * + * Application needs to make sure that the instance of + * BinInputStream, persists beyond the life of this + * SerializeEngine. + * + * Param + * inStream input stream + * gramPool Grammar Pool + * bufSize the size of the internal buffer + * + ***/ + XSerializeEngine(BinInputStream* inStream + , XMLGrammarPool* const gramPool + , XMLSize_t bufSize = 8192 ); + + + /*** + * + * Constructor for serialization(storing) + * + * Application needs to make sure that the instance of + * BinOutputStream, persists beyond the life of this + * SerializeEngine. + * + * Param + * outStream output stream + * gramPool Grammar Pool + * bufSize the size of the internal buffer + * + ***/ + XSerializeEngine(BinOutputStream* outStream + , XMLGrammarPool* const gramPool + , XMLSize_t bufSize = 8192 ); + + /*** + * + * When serialization, flush out the internal buffer + * + * Return: + * + ***/ + void flush(); + + /*** + * + * Checking if the serialize engine is doing serialization(storing) + * + * Return: true, if it is + * false, otherwise + * + ***/ + inline bool isStoring() const; + + /*** + * + * Checking if the serialize engine is doing de-serialization(loading) + * + * Return: true, if it is + * false, otherwise + * + ***/ + inline bool isLoading() const; + + /*** + * + * Get the GrammarPool + * + * Return: XMLGrammarPool + * + ***/ + XMLGrammarPool* getGrammarPool() const; + + /*** + * + * Get the StringPool + * + * Return: XMLStringPool + * + ***/ + XMLStringPool* getStringPool() const; + + /*** + * + * Get the embeded Memory Manager + * + * Return: MemoryManager + * + ***/ + MemoryManager* getMemoryManager() const; + + /*** + * + * Get the storer level (the level of the serialize engine + * which created the binary stream that this serialize engine + * is loading). + * + * The level returned is meaningful only when + * the engine isLoading. + * + * Return: level + * + ***/ + inline unsigned int getStorerLevel() const; + + /*** + * + * Write object to the internal buffer. + * + * Param + * objectToWrite: the object to be serialized + * + * Return: + * + ***/ + void write(XSerializable* const objectToWrite); + + /*** + * + * Write prototype info to the internal buffer. + * + * Param + * protoType: instance of prototype + * + * Return: + * + ***/ + void write(XProtoType* const protoType); + + /*** + * + * Write a stream of XMLByte to the internal buffer. + * + * Param + * toWrite: the stream of XMLByte to write + * writeLen: the length of the stream + * + * Return: + * + ***/ + void write(const XMLByte* const toWrite + , XMLSize_t writeLen); + + /*** + * + * Write a stream of XMLCh to the internal buffer. + * + * Param + * toWrite: the stream of XMLCh to write + * writeLen: the length of the stream + * + * Return: + * + ***/ + void write(const XMLCh* const toWrite + , XMLSize_t writeLen); + + /*** + * + * Write a stream of XMLCh to the internal buffer. + * + * Write the bufferLen first if requested, then the length + * of the stream followed by the stream. + * + * Param + * toWrite: the stream of XMLCh to write + * bufferLen: the maximum size of the buffer + * toWriteBufLen: specify if the bufferLen need to be written or not + * + * Return: + * + ***/ + void writeString(const XMLCh* const toWrite + , const XMLSize_t bufferLen = 0 + , bool toWriteBufLen = false); + + /*** + * + * Write a stream of XMLByte to the internal buffer. + * + * Write the bufferLen first if requested, then the length + * of the stream followed by the stream. + * + * Param + * toWrite: the stream of XMLByte to write + * bufferLen: the maximum size of the buffer + * toWriteBufLen: specify if the bufferLen need to be written or not + * + * Return: + * + ***/ + void writeString(const XMLByte* const toWrite + , const XMLSize_t bufferLen = 0 + , bool toWriteBufLen = false); + + static const bool toWriteBufferLen; + + /*** + * + * Read/Create object from the internal buffer. + * + * Param + * protoType: an instance of prototype of the object anticipated + * + * Return: to object read/created + * + ***/ + XSerializable* read(XProtoType* const protoType); + + /*** + * + * Read prototype object from the internal buffer. + * Verify if the same prototype object found in buffer. + * + * Param + * protoType: an instance of prototype of the object anticipated + * objTag: the object Tag to an existing object + * + * Return: true : if matching found + * false : otherwise + * + ***/ + bool read(XProtoType* const protoType + , XSerializedObjectId_t* objTag); + + /*** + * + * Read XMLByte stream from the internal buffer. + * + * Param + * toRead: the buffer to hold the XMLByte stream + * readLen: the length of the XMLByte to read in + * + * Return: + * + ***/ + void read(XMLByte* const toRead + , XMLSize_t readLen); + + /*** + * + * Read XMLCh stream from the internal buffer. + * + * Param + * toRead: the buffer to hold the XMLCh stream + * readLen: the length of the XMLCh to read in + * + * Return: + * + ***/ + void read(XMLCh* const toRead + , XMLSize_t readLen); + + /*** + * + * Read a stream of XMLCh from the internal buffer. + * + * Read the bufferLen first if requested, then the length + * of the stream followed by the stream. + * + * Param + * toRead: the pointer to the buffer to hold the XMLCh stream + * bufferLen: the size of the buffer created + * dataLen: the length of the stream + * toReadBufLen: specify if the bufferLen need to be read or not + * + * Return: + * + ***/ + void readString(XMLCh*& toRead + , XMLSize_t& bufferLen + , XMLSize_t& dataLen + , bool toReadBufLen = false); + + /*** + * + * Read a stream of XMLCh from the internal buffer. + * + * Read the bufferLen first if requested, then the length + * of the stream followed by the stream. + * + * Param + * toRead: the pointer to the buffer to hold the XMLCh stream + * bufferLen: the size of the buffer created + * + * Return: + * + ***/ + inline void readString(XMLCh*& toRead + , XMLSize_t& bufferLen); + + /*** + * + * Read a stream of XMLCh from the internal buffer. + * + * Param + * toRead: the pointer to the buffer to hold the XMLCh stream + * + * Return: + * + ***/ + inline void readString(XMLCh*& toRead); + + /*** + * + * Read a stream of XMLByte from the internal buffer. + * + * Read the bufferLen first if requested, then the length + * of the stream followed by the stream. + * + * Param + * toRead: the pointer to the buffer to hold the XMLByte stream + * bufferLen: the size of the buffer created + * dataLen: the length of the stream + * toReadBufLen: specify if the bufferLen need to be read or not + * + * Return: + * + ***/ + void readString(XMLByte*& toRead + , XMLSize_t& bufferLen + , XMLSize_t& dataLen + , bool toReadBufLen = false); + + + /*** + * + * Read a stream of XMLByte from the internal buffer. + * + * Read the bufferLen first if requested, then the length + * of the stream followed by the stream. + * + * Param + * toRead: the pointer to the buffer to hold the XMLByte stream + * bufferLen: the size of the buffer created + * + * Return: + * + ***/ + inline void readString(XMLByte*& toRead + , XMLSize_t& bufferLen); + + /*** + * + * Read a stream of XMLByte from the internal buffer. + * + * Read the bufferLen first if requested, then the length + * of the stream followed by the stream. + * + * Param + * toRead: the pointer to the buffer to hold the XMLByte stream + * bufferLen: the size of the buffer created + * dataLen: the length of the stream + * toReadBufLen: specify if the bufferLen need to be read or not + * + * Return: + * + ***/ + inline void readString(XMLByte*& toRead); + + /*** + * + * Check if the template object has been stored or not + * + * Param + * objectPtr: the template object pointer + * + * Return: true : the object has NOT been stored yet + * false : otherwise + * + ***/ + bool needToStoreObject(void* const templateObjectToWrite); + + /*** + * + * Check if the template object has been loaded or not + * + * Param + * objectPtr: the address of the template object pointer + * + * Return: true : the object has NOT been loaded yet + * false : otherwise + * + ***/ + bool needToLoadObject(void** templateObjectToRead); + + /*** + * + * In the case of needToLoadObject() return true, the client + * application needs to instantiate an expected template object, and + * register the address to the engine. + * + * Param + * objectPtr: the template object pointer newly instantiated + * + * Return: + * + ***/ + void registerObject(void* const templateObjectToRegister); + + /*** + * + * Insertion operator for serializable classes + * + ***/ + + friend XSerializeEngine& operator<<(XSerializeEngine& + , XSerializable* const ); + + /*** + * + * Insertion operators for + * . basic Xerces data types + * . built-in types + * + ***/ + XSerializeEngine& operator<<(XMLByte); + XSerializeEngine& operator<<(XMLCh); + + XSerializeEngine& operator<<(char); + XSerializeEngine& operator<<(short); + XSerializeEngine& operator<<(int); + XSerializeEngine& operator<<(unsigned int); + XSerializeEngine& operator<<(long); + XSerializeEngine& operator<<(unsigned long); + XSerializeEngine& operator<<(float); + XSerializeEngine& operator<<(double); + XSerializeEngine& operator<<(bool); + + // These cannot be done as operators since on some platforms they + // may collide with int/long types. + // + void writeSize (XMLSize_t); + void writeInt64 (XMLInt64); + void writeUInt64 (XMLUInt64); + + + /*** + * + * Extraction operators for + * . basic Xerces data types + * . built-in types + * + ***/ + XSerializeEngine& operator>>(XMLByte&); + XSerializeEngine& operator>>(XMLCh&); + + XSerializeEngine& operator>>(char&); + XSerializeEngine& operator>>(short&); + XSerializeEngine& operator>>(int&); + XSerializeEngine& operator>>(unsigned int&); + XSerializeEngine& operator>>(long&); + XSerializeEngine& operator>>(unsigned long&); + XSerializeEngine& operator>>(float&); + XSerializeEngine& operator>>(double&); + XSerializeEngine& operator>>(bool&); + + void readSize (XMLSize_t&); + void readInt64 (XMLInt64&); + void readUInt64 (XMLUInt64&); + + /*** + * + * Getters + * + ***/ + inline + XMLSize_t getBufSize() const; + + inline + XMLSize_t getBufCur() const; + + inline + XMLSize_t getBufCurAccumulated() const; + + inline + unsigned long getBufCount() const; + + void trace(char*) const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSerializeEngine(); + XSerializeEngine(const XSerializeEngine&); + XSerializeEngine& operator=(const XSerializeEngine&); + + /*** + * + * Store Pool Opertions + * + ***/ + XSerializedObjectId_t lookupStorePool(void* const objectPtr) const; + void addStorePool(void* const objectPtr); + + /*** + * + * Load Pool Opertions + * + ***/ + XSerializable* lookupLoadPool(XSerializedObjectId_t objectTag) const; + void addLoadPool(void* const objectPtr); + + /*** + * + * Intenal Buffer Operations + * + ***/ + inline void checkAndFillBuffer(XMLSize_t bytesNeedToRead); + + inline void checkAndFlushBuffer(XMLSize_t bytesNeedToWrite); + + void fillBuffer(); + + void flushBuffer(); + + void pumpCount(); + + inline void resetBuffer(); + + /*** + * + * Helper + * + ***/ + inline void ensureStoring() const; + + inline void ensureLoading() const; + + inline void ensureStoreBuffer() const; + + inline void ensureLoadBuffer() const; + + inline void ensurePointer(void* const) const; + + inline void Assert(bool toEval + , const XMLExcepts::Codes toThrow) const; + + + inline XMLSize_t calBytesNeeded(XMLSize_t) const; + + inline XMLSize_t alignAdjust(XMLSize_t) const; + + inline void alignBufCur(XMLSize_t); + + // Make XTemplateSerializer friend of XSerializeEngine so that + // we can call lookupStorePool and lookupLoadPool in the case of + // annotations. + friend class XTemplateSerializer; + + // ------------------------------------------------------------------------------- + // data + // + // fStoreLoad: + // Indicator: storing(serialization) or loading(de-serialization) + // + // fStorerLevel: + // The level of the serialize engine which created the binary + // stream that this serialize engine is loading + // + // It is set by GrammarPool when loading + // + // fGrammarPool: + // Thw owning GrammarPool which instantiate this SerializeEngine + // instance + // + // fInputStream: + // Binary stream to read from (de-serialization), provided + // by client application, not owned. + // + // fOutputStream: + // Binary stream to write to (serialization), provided + // by client application, not owned. + // + // fBufSize: + // The size of the internal buffer + // + // fBufStart/fBufEnd: + // + // The internal buffer. + // fBufEnd: + // one beyond the last valid cell + // fBufEnd === (fBufStart + fBufSize) + // + // fBufCur: + // The cursor of the buffer + // + // fBufLoadMax: + // Indicating the end of the valid content in the buffer + // + // fStorePool: + // Object collection for storing + // + // fLoadPool: + // Object collection for loading + // + // fMapCount: + // ------------------------------------------------------------------------------- + const short fStoreLoad; + unsigned int fStorerLevel; + + XMLGrammarPool* const fGrammarPool; + BinInputStream* const fInputStream; + BinOutputStream* const fOutputStream; + + unsigned long fBufCount; + + //buffer + const XMLSize_t fBufSize; + XMLByte* const fBufStart; + XMLByte* const fBufEnd; + XMLByte* fBufCur; + XMLByte* fBufLoadMax; + + + + /*** + * Map for storing object + * + * key: XSerializable* + * XProtoType* + * + * value: XMLInteger*, owned + * + ***/ + RefHashTableOf* fStorePool; + + /*** + * Vector for loading object, objects are NOT owned + * + * data: XSerializable* + * XProtoType* + * + ***/ + ValueVectorOf* fLoadPool; + + /*** + * object counter + ***/ + XSerializedObjectId_t fObjectCount; + + //to allow grammar pool to set storer level when loading + friend class XMLGrammarPoolImpl; +}; + +inline bool XSerializeEngine::isStoring() const +{ + return (fStoreLoad == mode_Store); +} + +inline bool XSerializeEngine::isLoading() const +{ + return (fStoreLoad == mode_Load); +} + +inline XSerializeEngine& operator<<(XSerializeEngine& serEng + , XSerializable* const serObj) +{ + serEng.write(serObj); + return serEng; +} + +inline void XSerializeEngine::ensureStoring() const +{ + Assert(isStoring(), XMLExcepts::XSer_Storing_Violation); +} + +inline void XSerializeEngine::ensureLoading() const +{ + Assert(isLoading(), XMLExcepts::XSer_Loading_Violation); +} + + + +inline void XSerializeEngine::Assert(bool toEval + , const XMLExcepts::Codes toThrow) const +{ + if (!toEval) + { + ThrowXMLwithMemMgr(XSerializationException, toThrow, getMemoryManager()); + } + +} + +inline void XSerializeEngine::readString(XMLCh*& toRead + , XMLSize_t& bufferLen) +{ + XMLSize_t dummyDataLen; + readString(toRead, bufferLen, dummyDataLen); +} + +inline void XSerializeEngine::readString(XMLCh*& toRead) +{ + XMLSize_t dummyBufferLen; + XMLSize_t dummyDataLen; + readString(toRead, dummyBufferLen, dummyDataLen); +} + +inline void XSerializeEngine::readString(XMLByte*& toRead + , XMLSize_t& bufferLen) +{ + XMLSize_t dummyDataLen; + readString(toRead, bufferLen, dummyDataLen); +} + +inline void XSerializeEngine::readString(XMLByte*& toRead) +{ + XMLSize_t dummyBufferLen; + XMLSize_t dummyDataLen; + readString(toRead, dummyBufferLen, dummyDataLen); +} + +inline +XMLSize_t XSerializeEngine::getBufSize() const +{ + return fBufSize; +} + +inline +XMLSize_t XSerializeEngine::getBufCur() const +{ + return (fBufCur-fBufStart); +} + +inline +XMLSize_t XSerializeEngine::getBufCurAccumulated() const +{ + return (fBufCount - (isStoring() ? 0: 1)) * fBufSize + (fBufCur-fBufStart); +} + +inline +unsigned long XSerializeEngine::getBufCount() const +{ + return fBufCount; +} + +inline +unsigned int XSerializeEngine::getStorerLevel() const +{ + return fStorerLevel; +} + +/*** + * Ought to be nested class + ***/ +class XSerializedObjectId : public XMemory +{ +public: + + ~XSerializedObjectId(){}; + +private: + + inline XSerializedObjectId(XSerializeEngine::XSerializedObjectId_t val): + fData(val) { }; + + inline XSerializeEngine::XSerializedObjectId_t getValue() const {return fData; }; + + friend class XSerializeEngine; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSerializedObjectId(); + XSerializedObjectId(const XSerializedObjectId&); + XSerializedObjectId& operator=(const XSerializedObjectId&); + + XSerializeEngine::XSerializedObjectId_t fData; + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/internal/XTemplateSerializer.hpp b/src/libs/xerces-c/mingw/include/xercesc/internal/XTemplateSerializer.hpp new file mode 100644 index 000000000000..108d90008078 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/internal/XTemplateSerializer.hpp @@ -0,0 +1,365 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XTEMPLATE_SERIALIZER_HPP) +#define XERCESC_INCLUDE_GUARD_XTEMPLATE_SERIALIZER_HPP + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XTemplateSerializer +{ +public: + + /********************************************************** + * + * ValueVectorOf + * + * SchemaElementDecl* + * unsigned int + * + ***********************************************************/ + static void storeObject(ValueVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(ValueVectorOf** tempObjToRead + , int initSize + , bool toCallDestructor + , XSerializeEngine& serEng); + + static void storeObject(ValueVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(ValueVectorOf** tempObjToRead + , int initSize + , bool toCallDestructor + , XSerializeEngine& serEng); + + /********************************************************** + * + * RefArrayVectorOf + * + * XMLCh + * + ***********************************************************/ + static void storeObject(RefArrayVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefArrayVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + /********************************************************** + * + * RefVectorOf + * + * SchemaAttDef + * SchemaElementDecl + * ContentSpecNode + * IC_Field + * DatatypeValidator + * IdentityConstraint + * XMLNumber + * XercesLocationPath + * XercesStep + * + ***********************************************************/ + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XMLNumber::NumberType numType + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + /********************************************************** + * + * RefHashTableOf + * + * KVStringPair + * XMLAttDef + * DTDAttDef + * ComplexTypeInfo + * XercesGroupInfo + * XercesAttGroupInfo + * XMLRefInfo + * DatatypeValidator + * Grammar + * XSAnnotation + * + ***********************************************************/ + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + /********************************************************** + * + * RefHash2KeysTableOf + * + * SchemaAttDef + * ElemVector + * + ***********************************************************/ + static void storeObject(RefHash2KeysTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHash2KeysTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHash2KeysTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHash2KeysTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + /********************************************************** + * + * RefHash3KeysIdPool + * + * SchemaElementDecl + * + ***********************************************************/ + static void storeObject(RefHash3KeysIdPool* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHash3KeysIdPool** tempObjToRead + , int initSize + , bool toAdopt + , int initSize2 + , XSerializeEngine& serEng); + + /********************************************************** + * + * NameIdPool + * + * DTDElementDecl + * DTDEntityDecl + * XMLNotationDecl + * + ***********************************************************/ + static void storeObject(NameIdPool* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(NameIdPool** tempObjToRead + , int initSize + , int initSize2 + , XSerializeEngine& serEng); + + static void storeObject(NameIdPool* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(NameIdPool** tempObjToRead + , int initSize + , int initSize2 + , XSerializeEngine& serEng); + + static void storeObject(NameIdPool* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(NameIdPool** tempObjToRead + , int initSize + , int initSize2 + , XSerializeEngine& serEng); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ~XTemplateSerializer(); + XTemplateSerializer(); + XTemplateSerializer(const XTemplateSerializer&); + XTemplateSerializer& operator=(const XTemplateSerializer&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/parsers/AbstractDOMParser.hpp b/src/libs/xerces-c/mingw/include/xercesc/parsers/AbstractDOMParser.hpp new file mode 100644 index 000000000000..be4e0eacf759 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/parsers/AbstractDOMParser.hpp @@ -0,0 +1,1900 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ABSTRACTDOMPARSER_HPP) +#define XERCESC_INCLUDE_GUARD_ABSTRACTDOMPARSER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPScanToken; +class XMLScanner; +class XMLValidator; +class DOMDocumentImpl; +class DOMDocumentTypeImpl; +class DOMEntityImpl; +class DOMElement; +class GrammarResolver; +class XMLGrammarPool; +class PSVIHandler; + +/** + * This class implements the Document Object Model (DOM) interface. + * It is used as a base for DOM parsers (i.e. XercesDOMParser, DOMLSParser). + */ +class PARSERS_EXPORT AbstractDOMParser : + + public XMemory + , public XMLDocumentHandler + , public XMLErrorReporter + , public XMLEntityHandler + , public DocTypeHandler + , public PSVIHandler +{ +public : + // ----------------------------------------------------------------------- + // Class types + // ----------------------------------------------------------------------- + /** @name Public constants */ + //@{ + + /** ValScheme enum used in setValidationScheme + * Val_Never: Do not report validation errors. + * Val_Always: The parser will always report validation errors. + * Val_Auto: The parser will report validation errors only if a grammar is specified. + * + * @see #setValidationScheme + */ + enum ValSchemes + { + Val_Never + , Val_Always + , Val_Auto + }; + + //@} + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + + /** + * Destructor + */ + virtual ~AbstractDOMParser(); + + //@} + + // ----------------------------------------------------------------------- + // Utility methods + // ----------------------------------------------------------------------- + + /** @name Utility methods */ + //@{ + /** Reset the parser + * + * This method resets the state of the DOM driver and makes + * it ready for a fresh parse run. + */ + void reset(); + + /** Adopt the DOM document + * + * This method returns the DOMDocument object representing the + * root of the document tree. + * + * The caller will adopt the DOMDocument and thus is responsible to + * call DOMDocument::release() to release the associated memory. + * The parser will not delete it. The ownership is transferred + * from the parser to the caller. + * + * @return The adopted DOMDocument object which represents the entire + * XML document. + */ + DOMDocument* adoptDocument(); + + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** Get the DOM document + * + * This method returns the DOMDocument object representing the + * root of the document tree. This object provides the primary + * access to the document's data. + * + * The returned DOMDocument object is owned by the parser. + * + * @return The DOMDocument object which represents the entire + * XML document. + */ + DOMDocument* getDocument(); + + /** Get a const reference to the validator + * + * This method returns a reference to the parser's installed + * validator. + * + * @return A const reference to the installed validator object. + */ + const XMLValidator& getValidator() const; + + /** + * This method returns an enumerated value that indicates the current + * validation scheme set on this parser. + * + * @return The ValSchemes value current set on this parser. + * @see #setValidationScheme + */ + ValSchemes getValidationScheme() const; + + /** Get the 'do schema' flag + * + * This method returns the state of the parser's schema processing + * flag. + * + * @return true, if the parser is currently configured to + * understand schema, false otherwise. + * + * @see #setDoSchema + */ + bool getDoSchema() const; + + /** Get the 'full schema constraint checking' flag + * + * This method returns the state of the parser's full schema constraint + * checking flag. + * + * @return true, if the parser is currently configured to + * have full schema constraint checking, false otherwise. + * + * @see #setValidationSchemaFullChecking + */ + bool getValidationSchemaFullChecking() const; + + /** Get the identity constraint checking' flag + * + * This method returns the state of the parser's identity constraint + * checking flag. + * + * @return true, if the parser is currently configured to + * have identity constraint checking, false otherwise. + * + * @see setIdentityConstraintChecking + */ + bool getIdentityConstraintChecking() const; + + /** Get error count from the last parse operation. + * + * This method returns the error count from the last parse + * operation. Note that this count is actually stored in the + * scanner, so this method simply returns what the + * scanner reports. + * + * @return number of errors encountered during the latest + * parse operation. + * + */ + XMLSize_t getErrorCount() const; + + /** Get the 'do namespaces' flag + * + * This method returns the state of the parser's namespace processing + * flag. + * + * @return true, if the parser is currently configured to + * understand namespaces, false otherwise. + * + * @see #setDoNamespaces + */ + bool getDoNamespaces() const; + + /** Get the 'exit on first error' flag + * + * This method returns the state of the parser's + * exit-on-First-Fatal-Error flag. If this flag is true, then the + * parse will exit the first time it sees any non-wellformed XML or + * any validity error. The default state is true. + * + * @return true, if the parser is currently configured to + * exit on the first fatal error, false otherwise. + * + * @see #setExitOnFirstFatalError + */ + bool getExitOnFirstFatalError() const; + + /** + * This method returns the state of the parser's + * validation-constraint-fatal flag. + * + * @return true, if the parser is currently configured to + * set validation constraint errors as fatal, false + * otherwise. + * + * @see #setValidationConstraintFatal + */ + bool getValidationConstraintFatal() const; + + /** Get the 'include entity references' flag + * + * This method returns the flag that specifies whether the parser is + * creating entity reference nodes in the DOM tree being produced. + * + * @return The state of the create entity reference node + * flag. + * @see #setCreateEntityReferenceNodes + */ + bool getCreateEntityReferenceNodes()const; + + /** Get the 'include ignorable whitespace' flag. + * + * This method returns the state of the parser's include ignorable + * whitespace flag. + * + * @return 'true' if the include ignorable whitespace flag is set on + * the parser, 'false' otherwise. + * + * @see #setIncludeIgnorableWhitespace + */ + bool getIncludeIgnorableWhitespace() const; + + /** Get the set of Namespace/SchemaLocation that is specified externally. + * + * This method returns the list of Namespace/SchemaLocation that was + * specified using setExternalSchemaLocation. + * + * The parser owns the returned string, and the memory allocated for + * the returned string will be destroyed when the parser is deleted. + * + * To ensure accessibility of the returned information after the parser + * is deleted, callers need to copy and store the returned information + * somewhere else. + * + * @return a pointer to the list of Namespace/SchemaLocation that was + * specified externally. The pointer spans the same life-time as + * the parser. A null pointer is returned if nothing + * was specified externally. + * + * @see #setExternalSchemaLocation(const XMLCh* const) + */ + XMLCh* getExternalSchemaLocation() const; + + /** Get the noNamespace SchemaLocation that is specified externally. + * + * This method returns the no target namespace XML Schema Location + * that was specified using setExternalNoNamespaceSchemaLocation. + * + * The parser owns the returned string, and the memory allocated for + * the returned string will be destroyed when the parser is deleted. + * + * To ensure accessibility of the returned information after the parser + * is deleted, callers need to copy and store the returned information + * somewhere else. + * + * @return a pointer to the no target namespace Schema Location that was + * specified externally. The pointer spans the same life-time as + * the parser. A null pointer is returned if nothing + * was specified externally. + * + * @see #setExternalNoNamespaceSchemaLocation(const XMLCh* const) + */ + XMLCh* getExternalNoNamespaceSchemaLocation() const; + + /** Get the SecurityManager instance attached to this parser. + * + * This method returns the security manager + * that was specified using setSecurityManager. + * + * The SecurityManager instance must have been specified by the application; + * this should not be deleted until after the parser has been deleted (or + * a new SecurityManager instance has been supplied to the parser). + * + * @return a pointer to the SecurityManager instance + * specified externally. A null pointer is returned if nothing + * was specified externally. + * + * @see #setSecurityManager + */ + SecurityManager* getSecurityManager() const; + + /** Get the raw buffer low water mark for this parser. + * + * If the number of available bytes in the raw buffer is less than + * the low water mark the parser will attempt to read more data before + * continuing parsing. By default the value for this parameter is 100 + * bytes. You may want to set this parameter to 0 if you would like + * the parser to parse the available data immediately without + * potentially blocking while waiting for more date. + * + * @return current low water mark + * + * @see #setSecurityManager + */ + const XMLSize_t& getLowWaterMark() const; + + /** Get the 'Loading External DTD' flag + * + * This method returns the state of the parser's loading external DTD + * flag. + * + * @return false, if the parser is currently configured to + * ignore external DTD completely, true otherwise. + * + * @see #setLoadExternalDTD + * @see #getValidationScheme + */ + bool getLoadExternalDTD() const; + + /** Get the 'Loading Schema' flag + * + * This method returns the state of the parser's loading schema + * flag. + * + * @return true, if the parser is currently configured to + * automatically load schemas that are not in the + * grammar pool, false otherwise. + * + * @see #setLoadSchema + */ + bool getLoadSchema() const; + + /** Get the 'create comment node' flag + * + * This method returns the flag that specifies whether the parser is + * creating comment nodes in the DOM tree being produced. + * + * @return The state of the create comment node flag. + * @see #setCreateCommentNodes + */ + bool getCreateCommentNodes()const; + + /** + * Get the 'calculate src offset flag' + * + * This method returns the state of the parser's src offset calculation + * when parsing an XML document. + * + * @return true, if the parser is currently configured to + * calculate src offsets, false otherwise. + * + * @see #setCalculateSrcOfs + */ + bool getCalculateSrcOfs() const; + + /** + * Get the 'force standard uri flag' + * + * This method returns the state if the parser forces standard uri + * + * @return true, if the parser is currently configured to + * force standard uri, i.e. malformed uri will be rejected. + * + * @see #setStandardUriConformant + */ + bool getStandardUriConformant() const; + + /** + * This method returns the installed PSVI handler. Suitable + * for 'lvalue' usages. + * + * @return The pointer to the installed PSVI handler object. + */ + PSVIHandler* getPSVIHandler(); + + /** + * This method returns the installed PSVI handler. Suitable + * for 'rvalue' usages. + * + * @return A const pointer to the installed PSVI handler object. + */ + const PSVIHandler* getPSVIHandler() const; + + /** Get the 'associate schema info' flag + * + * This method returns the flag that specifies whether + * the parser is storing schema informations in the element + * and attribute nodes in the DOM tree being produced. + * + * @return The state of the associate schema info flag. + * @see #setCreateSchemaInfo + */ + bool getCreateSchemaInfo() const; + + /** Get the 'do XInclude' flag + * + * This method returns the flag that specifies whether + * the parser will process XInclude nodes + * in the DOM tree being produced. + * + * @return The state of the 'do XInclude' flag. + * @see #setDoXInclude + */ + bool getDoXInclude() const; + + /** Get the 'generate synthetic annotations' flag + * + * @return true, if the parser is currently configured to + * generate synthetic annotations, false otherwise. + * A synthetic XSAnnotation is created when a schema + * component has non-schema attributes but has no + * child annotations so that the non-schema attributes + * can be recovered under PSVI. + * + * @see #setGenerateSyntheticAnnotations + */ + bool getGenerateSyntheticAnnotations() const; + + /** Get the 'validate annotations' flag + * + * @return true, if the parser is currently configured to + * validate annotations, false otherwise. + * + * @see #setValidateAnnotations + */ + bool getValidateAnnotations() const; + + /** Get the 'ignore annotations' flag + * + * @return true, if the parser is currently configured to + * ignore annotations, false otherwise. + * + * @see #setIgnoreAnnotations + */ + bool getIgnoreAnnotations() const; + + /** Get the 'disable default entity resolution' flag + * + * @return true, if the parser is currently configured to + * not perform default entity resolution, false otherwise. + * + * @see #setDisableDefaultEntityResolution + */ + bool getDisableDefaultEntityResolution() const; + + /** Get the 'skip DTD validation' flag + * + * @return true, if the parser is currently configured to + * skip DTD validation, false otherwise. + * + * @see #setSkipDTDValidation + */ + bool getSkipDTDValidation() const; + + /** Get the 'handle multiple schema imports' flag + * + * @return true, if the parser is currently configured to + * import multiple schemas with the same namespace, false otherwise. + * + * @see #setHandleMultipleImports + */ + bool getHandleMultipleImports() const; + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + /** set the 'generate synthetic annotations' flag + * + * @param newValue The value for specifying whether Synthetic Annotations + * should be generated or not. + * A synthetic XSAnnotation is created when a schema + * component has non-schema attributes but has no + * child annotations so that the non-schema attributes + * can be recovered under PSVI. + * + * @see #getGenerateSyntheticAnnotations + */ + void setGenerateSyntheticAnnotations(const bool newValue); + + /** set the 'validlate annotations' flag + * + * @param newValue The value for specifying whether Annotations + * should be validated or not. + * + * @see #getValidateAnnotations + */ + void setValidateAnnotations(const bool newValue); + + /** Set the 'do namespaces' flag + * + * This method allows users to enable or disable the parser's + * namespace processing. When set to true, parser starts enforcing + * all the constraints and rules specified by the NameSpace + * specification. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether NameSpace rules should + * be enforced or not. + * + * @see #getDoNamespaces + */ + void setDoNamespaces(const bool newState); + + /** Set the 'exit on first error' flag + * + * This method allows users to set the parser's behaviour when it + * encounters the first fatal error. If set to true, the parser + * will exit at the first fatal error. If false, then it will + * report the error and continue processing. + * + * The default value is 'true' and the parser exits on the + * first fatal error. + * + * @param newState The value specifying whether the parser should + * continue or exit when it encounters the first + * fatal error. + * + * @see #getExitOnFirstFatalError + */ + void setExitOnFirstFatalError(const bool newState); + + /** + * This method allows users to set the parser's behaviour when it + * encounters a validation constraint error. If set to true, and the + * the parser will treat validation error as fatal and will exit depends on the + * state of "getExitOnFirstFatalError". If false, then it will + * report the error and continue processing. + * + * Note: setting this true does not mean the validation error will be printed with + * the word "Fatal Error". It is still printed as "Error", but the parser + * will exit if "setExitOnFirstFatalError" is set to true. + * + *

The default value is 'false'.

+ * + * @param newState If true, the parser will exit if "setExitOnFirstFatalError" + * is set to true. + * + * @see #getValidationConstraintFatal + * @see #setExitOnFirstFatalError + */ + void setValidationConstraintFatal(const bool newState); + + /** Set the 'include entity references' flag + * + * This method allows the user to specify whether the parser should + * create entity reference nodes in the DOM tree being produced. + * When the 'create' flag is + * true, the parser will create EntityReference nodes in the DOM tree. + * The EntityReference nodes and their child nodes will be read-only. + * When the 'create' flag is false, no EntityReference nodes will be created. + *

The replacement text + * of the entity is included in either case, either as a + * child of the Entity Reference node or in place at the location + * of the reference. + *

The default value is 'true'. + * + * @param create The new state of the create entity reference nodes + * flag. + * @see #getCreateEntityReferenceNodes + */ + void setCreateEntityReferenceNodes(const bool create); + + /** Set the 'include ignorable whitespace' flag + * + * This method allows the user to specify whether a validating parser + * should include ignorable whitespaces as text nodes. It has no effect + * on non-validating parsers which always include non-markup text. + *

When set to true (also the default), ignorable whitespaces will be + * added to the DOM tree as text nodes. The method + * DOMText::isIgnorableWhitespace() will return true for those text + * nodes only. + *

When set to false, all ignorable whitespace will be discarded and + * no text node is added to the DOM tree. Note: applications intended + * to process the "xml:space" attribute should not set this flag to false. + * And this flag also overrides any schema datateye whitespace facets, + * that is, all ignorable whitespace will be discarded even though + * 'preserve' is set in schema datatype whitespace facets. + * + * @param include The new state of the include ignorable whitespace + * flag. + * + * @see #getIncludeIgnorableWhitespace + */ + void setIncludeIgnorableWhitespace(const bool include); + + /** + * This method allows users to set the validation scheme to be used + * by this parser. The value is one of the ValSchemes enumerated values + * defined by this class: + * + *
Val_Never - turn off validation + *
Val_Always - turn on validation + *
Val_Auto - turn on validation if any internal/external + * DTD subset have been seen + * + *

The parser's default state is: Val_Never.

+ * + * @param newScheme The new validation scheme to use. + * + * @see #getValidationScheme + */ + void setValidationScheme(const ValSchemes newScheme); + + /** Set the 'do schema' flag + * + * This method allows users to enable or disable the parser's + * schema processing. When set to false, parser will not process + * any schema found. + * + * The parser's default state is: false. + * + * Note: If set to true, namespace processing must also be turned on. + * + * @param newState The value specifying whether schema support should + * be enforced or not. + * + * @see #getDoSchema + */ + void setDoSchema(const bool newState); + + /** + * This method allows the user to turn full Schema constraint checking on/off. + * Only takes effect if Schema validation is enabled. + * If turned off, partial constraint checking is done. + * + * Full schema constraint checking includes those checking that may + * be time-consuming or memory intensive. Currently, particle unique + * attribution constraint checking and particle derivation restriction checking + * are controlled by this option. + * + * The parser's default state is: false. + * + * @param schemaFullChecking True to turn on full schema constraint checking. + * + * @see #getValidationSchemaFullChecking + */ + void setValidationSchemaFullChecking(const bool schemaFullChecking); + + /** + * This method allows users to enable or disable the parser's identity + * constraint checks. + * + *

By default, the parser does identity constraint checks. + * The default value is true.

+ * + * @param newState The value specifying whether the parser should + * do identity constraint checks or not in the + * input XML document. + * + * @see #getIdentityConstraintChecking + */ + void setIdentityConstraintChecking(const bool newState); + + /** + * This method allows the user to specify a list of schemas to use. + * If the targetNamespace of a schema specified using this method matches + * the targetNamespace of a schema occurring in the instance document in + * the schemaLocation attribute, or if the targetNamespace matches the + * namespace attribute of the "import" element, the schema specified by the + * user using this method will be used (i.e., the schemaLocation attribute + * in the instance document or on the "import" element will be effectively ignored). + * + * If this method is called more than once, only the last one takes effect. + * + * The syntax is the same as for schemaLocation attributes in instance + * documents: e.g, "http://www.example.com file_name.xsd". The user can + * specify more than one XML Schema in the list. + * + * @param schemaLocation the list of schemas to use + * + * @see #getExternalSchemaLocation + */ + + void setExternalSchemaLocation(const XMLCh* const schemaLocation); + + /** + * This method is same as setExternalSchemaLocation(const XMLCh* const). + * It takes native char string as parameter + * + * @param schemaLocation the list of schemas to use + * + * @see #setExternalSchemaLocation(const XMLCh* const) + */ + void setExternalSchemaLocation(const char* const schemaLocation); + + /** + * This method allows the user to specify the no target namespace XML + * Schema Location externally. If specified, the instance document's + * noNamespaceSchemaLocation attribute will be effectively ignored. + * + * If this method is called more than once, only the last one takes effect. + * + * The syntax is the same as for the noNamespaceSchemaLocation attribute + * that may occur in an instance document: e.g."file_name.xsd". + * + * @param noNamespaceSchemaLocation the XML Schema Location with no target namespace + * + * @see #getExternalNoNamespaceSchemaLocation + */ + void setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation); + + /** + * This method is same as setExternalNoNamespaceSchemaLocation(const XMLCh* const). + * It takes native char string as parameter + * + * @param noNamespaceSchemaLocation the XML Schema Location with no target namespace + * + * @see #setExternalNoNamespaceSchemaLocation(const XMLCh* const) + */ + void setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation); + + /** + * This allows an application to set a SecurityManager on + * the parser; this object stores information that various + * components use to limit their consumption of system + * resources while processing documents. + * + * If this method is called more than once, only the last one takes effect. + * It may not be reset during a parse. + * + * + * @param securityManager the SecurityManager instance to + * be used by this parser + * + * @see #getSecurityManager + */ + void setSecurityManager(SecurityManager* const securityManager); + + /** Set the raw buffer low water mark for this parser. + * + * If the number of available bytes in the raw buffer is less than + * the low water mark the parser will attempt to read more data before + * continuing parsing. By default the value for this parameter is 100 + * bytes. You may want to set this parameter to 0 if you would like + * the parser to parse the available data immediately without + * potentially blocking while waiting for more date. + * + * @param lwm new low water mark + * + * @see #getSecurityManager + */ + void setLowWaterMark(XMLSize_t lwm); + + /** Set the 'Loading External DTD' flag + * + * This method allows users to enable or disable the loading of external DTD. + * When set to false, the parser will ignore any external DTD completely + * if the validationScheme is set to Val_Never. + * + * The parser's default state is: true. + * + * This flag is ignored if the validationScheme is set to Val_Always or Val_Auto. + * + * @param newState The value specifying whether external DTD should + * be loaded or not. + * + * @see #getLoadExternalDTD + * @see #setValidationScheme + */ + void setLoadExternalDTD(const bool newState); + + /** Set the 'Loading Schema' flag + * + * This method allows users to enable or disable the loading of schemas. + * When set to false, the parser not attempt to load schemas beyond + * querying the grammar pool for them. + * + * The parser's default state is: true. + * + * @param newState The value specifying whether schemas should + * be loaded if they're not found in the grammar + * pool. + * + * @see #getLoadSchema + * @see #setDoSchema + */ + void setLoadSchema(const bool newState); + + /** Set the 'create comment nodes' flag + * + * This method allows the user to specify whether the parser should + * create comment nodes in the DOM tree being produced. + *

The default value is 'true'. + * + * @param create The new state of the create comment nodes + * flag. + * @see #getCreateCommentNodes + */ + void setCreateCommentNodes(const bool create); + + /** Enable/disable src offset calculation + * + * This method allows users to enable/disable src offset calculation. + * Disabling the calculation will improve performance. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether we should enable or + * disable src offset calculation + * + * @see #getCalculateSrcOfs + */ + void setCalculateSrcOfs(const bool newState); + + /** Force standard uri + * + * This method allows users to tell the parser to force standard uri conformance. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether the parser should reject malformed URI. + * + * @see #getStandardUriConformant + */ + void setStandardUriConformant(const bool newState); + + /** Set the scanner to use when scanning the XML document + * + * This method allows users to set the scanner to use + * when scanning a given XML document. + * + * @param scannerName The name of the desired scanner + */ + void useScanner(const XMLCh* const scannerName); + + /** Set the implementation to use when creating the document + * + * This method allows users to set the implementation to use + * to create the document when parseing. + * + * @param implementationFeatures The names of the desired features the implementation should have. + */ + void useImplementation(const XMLCh* const implementationFeatures); + + /** + * This method installs the user specified PSVI handler on + * the parser. + * + * @param handler A pointer to the PSVI handler to be called + * when the parser comes across 'PSVI' events + * as per the schema specification. + */ + virtual void setPSVIHandler(PSVIHandler* const handler); + + /** Set the 'associate schema info' flag + * + * This method allows users to specify whether + * the parser should store schema informations in the element + * and attribute nodes in the DOM tree being produced. + * + * @param newState The state to set + * @see #getCreateSchemaInfo + */ + void setCreateSchemaInfo(const bool newState); + + /** Set the 'do XInclude' flag + * + * This method allows users to specify whether + * the parser should process XInclude nodes + * in the DOM tree being produced. + * + * @param newState The state to set + * @see #getDoXInclude + */ + void setDoXInclude(const bool newState); + + /** Set the 'ignore annotation' flag + * + * This method gives users the option to not generate XSAnnotations + * when "traversing" a schema. + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setIgnoreAnnotations(const bool newValue); + + /** Set the 'disable default entity resolution' flag + * + * This method gives users the option to not perform default entity + * resolution. If the user's resolveEntity method returns NULL the + * parser will try to resolve the entity on its own. When this option + * is set to true, the parser will not attempt to resolve the entity + * when the resolveEntity method returns NULL. + * + * The parser's default state is false + * + * @param newValue The state to set + * + * @see #EntityResolver + */ + void setDisableDefaultEntityResolution(const bool newValue); + + /** Set the 'skip DTD validation' flag + * + * This method gives users the option to skip DTD validation only when + * schema validation is on (i.e. when performing validation, we will + * ignore the DTD, except for entities, when schema validation is enabled). + * + * NOTE: This option is ignored if schema validation is disabled. + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setSkipDTDValidation(const bool newValue); + + /** Set the 'handle multiple schema imports' flag + * + * This method gives users the ability to import multiple schemas that + * have the same namespace. + * + * NOTE: This option is ignored if schema validation is disabled. + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setHandleMultipleImports(const bool newValue); + //@} + + + // ----------------------------------------------------------------------- + // Parsing methods + // ----------------------------------------------------------------------- + + /** @name Parsing methods */ + //@{ + + /** Parse via an input source object + * + * This method invokes the parsing process on the XML file specified + * by the InputSource parameter. This API is borrowed from the + * SAX Parser interface. + * + * @param source A const reference to the InputSource object which + * points to the XML file to be parsed. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * @see InputSource#InputSource + */ + void parse(const InputSource& source); + + /** Parse via a file path or URL + * + * This method invokes the parsing process on the XML file specified by + * the Unicode string parameter 'systemId'. This method is borrowed + * from the SAX Parser interface. + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML file to be parsed. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * @see #parse(InputSource,...) + */ + void parse(const XMLCh* const systemId); + + /** Parse via a file path or URL (in the local code page) + * + * This method invokes the parsing process on the XML file specified by + * the native char* string parameter 'systemId'. + * + * @param systemId A const char pointer to a native string which + * contains the path to the XML file to be parsed. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * @see #parse(InputSource,...) + */ + void parse(const char* const systemId); + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a Unicode string representing the path + * to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + bool parseFirst + ( + const XMLCh* const systemId + , XMLPScanToken& toFill + ); + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a regular native string representing + * the path to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(InputSource&,...) + */ + bool parseFirst + ( + const char* const systemId + , XMLPScanToken& toFill + ); + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param source A const reference to the InputSource object which + * points to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + */ + bool parseFirst + ( + const InputSource& source + , XMLPScanToken& toFill + ); + + /** Continue a progressive parse operation + * + * This method is used to continue with progressive parsing of + * XML files started by a call to 'parseFirst' method. + * + * It parses the XML file and stops as soon as it comes across + * a XML token (as defined in the XML specification). + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the next XML token. + * It indicates the user can go ahead with parsing the rest + * of the file. It returns 'false' to indicate that the parser + * could not find next token as per the XML specification + * production rule. + * + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + bool parseNext(XMLPScanToken& token); + + /** Reset the parser after a progressive parse + * + * If a progressive parse loop exits before the end of the document + * is reached, the parser has no way of knowing this. So it will leave + * open any files or sockets or memory buffers that were in use at + * the time that the parse loop exited. + * + * The next parse operation will cause these open files and such to + * be closed, but the next parse operation might occur at some unknown + * future point. To avoid this problem, you should reset the parser if + * you exit the loop early. + * + * If you exited because of an error, then this cleanup will be done + * for you. Its only when you exit the file prematurely of your own + * accord, because you've found what you wanted in the file most + * likely. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + void parseReset(XMLPScanToken& token); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the PSVIHandler interface. + // ----------------------------------------------------------------------- + + /** @name Implementation of the PSVIHandler interface. */ + //@{ + + /** Receive notification of the PSVI properties of an element. + * The scanner will issue this call after the XMLDocumentHandler + * endElement call. Since the scanner will issue the psviAttributes + * call immediately after reading the start tag of an element, all element + * content will be effectively bracketed by these two calls. + * @param localName The name of the element whose end tag was just + * parsed. + * @param uri The namespace to which the element is bound + * @param elementInfo Object containing the element's PSVI properties + */ + virtual void handleElementPSVI + ( + const XMLCh* const localName + , const XMLCh* const uri + , PSVIElement * elementInfo + ); + + virtual void handlePartialElementPSVI + ( + const XMLCh* const localName + , const XMLCh* const uri + , PSVIElement * elementInfo + ); + /** + * Enables PSVI information about attributes to be passed back to the + * application. This callback will be made on *all* + * elements; on elements with no attributes, the final parameter will + * be null. + * @param localName The name of the element upon which start tag + * these attributes were encountered. + * @param uri The namespace to which the element is bound + * @param psviAttributes Object containing the attributes' PSVI properties + * with information to identify them. + */ + virtual void handleAttributesPSVI + ( + const XMLCh* const localName + , const XMLCh* const uri + , PSVIAttributeList * psviAttributes + ); + //@} + + // ----------------------------------------------------------------------- + // Implementation of the XMLDocumentHandler interface. + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLDocumentHandler interface. */ + //@{ + + /** Handle document character events + * + * This method is used to report all the characters scanned by the + * parser. This DOM implementation stores this data in the appropriate + * DOM node, creating one if necessary. + * + * @param chars A const pointer to a Unicode string representing the + * character data. + * @param length The length of the Unicode string returned in 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + */ + virtual void docCharacters + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + /** Handle a document comment event + * + * This method is used to report any comments scanned by the parser. + * A new comment node is created which stores this data. + * + * @param comment A const pointer to a null terminated Unicode + * string representing the comment text. + */ + virtual void docComment + ( + const XMLCh* const comment + ); + + /** Handle a document PI event + * + * This method is used to report any PI scanned by the parser. A new + * PI node is created and appended as a child of the current node in + * the tree. + * + * @param target A const pointer to a Unicode string representing the + * target of the PI declaration. + * @param data A const pointer to a Unicode string representing the + * data of the PI declaration. See the PI production rule + * in the XML specification for details. + */ + virtual void docPI + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** Handle the end of document event + * + * This method is used to indicate the end of the current document. + */ + virtual void endDocument(); + + /** Handle and end of element event + * + * This method is used to indicate the end tag of an element. The + * DOM parser pops the current element off the top of the element + * stack, and make it the new current element. + * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param isRoot A flag indicating whether this element was the + * root element. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + */ + virtual void endElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const bool isRoot + , const XMLCh* const elemPrefix + ); + + /** Handle and end of entity reference event + * + * This method is used to indicate that an end of an entity reference + * was just scanned. + * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void endEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** Handle an ignorable whitespace vent + * + * This method is used to report all the whitespace characters, which + * are determined to be 'ignorable'. This distinction between characters + * is only made, if validation is enabled. + * + * Any whitespace before content is ignored. If the current node is + * already of type DOMNode::TEXT_NODE, then these whitespaces are + * appended, otherwise a new Text node is created which stores this + * data. Essentially all contiguous ignorable characters are collected + * in one node. + * + * @param chars A const pointer to a Unicode string representing the + * ignorable whitespace character data. + * @param length The length of the Unicode string 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + /** Handle a document reset event + * + * This method allows the user installed Document Handler to 'reset' + * itself, freeing all the memory resources. The scanner calls this + * method before starting a new parse event. + */ + virtual void resetDocument(); + + /** Handle a start document event + * + * This method is used to report the start of the parsing process. + */ + virtual void startDocument(); + + /** Handle a start element event + * + * This method is used to report the start of an element. It is + * called at the end of the element, by which time all attributes + * specified are also parsed. A new DOM Element node is created + * along with as many attribute nodes as required. This new element + * is added appended as a child of the current node in the tree, and + * then replaces it as the current node (if the isEmpty flag is false.) + * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + * @param attrList A const reference to the object containing the + * list of attributes just scanned for this element. + * @param attrCount A count of number of attributes in the list + * specified by the parameter 'attrList'. + * @param isEmpty A flag indicating whether this is an empty element + * or not. If empty, then no endElement() call will + * be made. + * @param isRoot A flag indicating whether this element was the + * root element. + * @see DocumentHandler#startElement + */ + virtual void startElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const XMLCh* const elemPrefix + , const RefVectorOf& attrList + , const XMLSize_t attrCount + , const bool isEmpty + , const bool isRoot + ); + + /** Handle a start entity reference event + * + * This method is used to indicate the start of an entity reference. + * If the expand entity reference flag is true, then a new + * DOM Entity reference node is created. + * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void startEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** Handle an XMLDecl event + * + * This method is used to report the XML decl scanned by the parser. + * Refer to the XML specification to see the meaning of parameters. + * + * This method is a no-op for this DOM + * implementation. + * + * @param versionStr A const pointer to a Unicode string representing + * version string value. + * @param encodingStr A const pointer to a Unicode string representing + * the encoding string value. + * @param standaloneStr A const pointer to a Unicode string + * representing the standalone string value. + * @param actualEncStr A const pointer to a Unicode string + * representing the actual encoding string + * value. + */ + virtual void XMLDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + , const XMLCh* const standaloneStr + , const XMLCh* const actualEncStr + ); + + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the deprecated DocTypeHandler interface. + // ----------------------------------------------------------------------- + /** @name Deprecated DocTypeHandler Interfaces */ + //@{ + virtual void attDef + ( + const DTDElementDecl& elemDecl + , const DTDAttDef& attDef + , const bool ignoring + ); + + virtual void doctypeComment + ( + const XMLCh* const comment + ); + + virtual void doctypeDecl + ( + const DTDElementDecl& elemDecl + , const XMLCh* const publicId + , const XMLCh* const systemId + , const bool hasIntSubset + , const bool hasExtSubset = false + ); + + virtual void doctypePI + ( + const XMLCh* const target + , const XMLCh* const data + ); + + virtual void doctypeWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + virtual void elementDecl + ( + const DTDElementDecl& decl + , const bool isIgnored + ); + + virtual void endAttList + ( + const DTDElementDecl& elemDecl + ); + + virtual void endIntSubset(); + + virtual void endExtSubset(); + + virtual void entityDecl + ( + const DTDEntityDecl& entityDecl + , const bool isPEDecl + , const bool isIgnored + ); + + virtual void resetDocType(); + + virtual void notationDecl + ( + const XMLNotationDecl& notDecl + , const bool isIgnored + ); + + virtual void startAttList + ( + const DTDElementDecl& elemDecl + ); + + virtual void startIntSubset(); + + virtual void startExtSubset(); + + virtual void TextDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + ); + + //@} + +protected: + // DOM node creation hooks. Override them if you are using your own + // DOM node types. + // + virtual DOMCDATASection* createCDATASection (const XMLCh*, XMLSize_t); + virtual DOMText* createText (const XMLCh*, XMLSize_t); + + virtual DOMElement* createElement (const XMLCh* name); + virtual DOMElement* createElementNS (const XMLCh* namespaceURI, + const XMLCh* elemPrefix, + const XMLCh* localName, + const XMLCh* qName); + + virtual DOMAttr* createAttr (const XMLCh* name); + virtual DOMAttr* createAttrNS (const XMLCh* namespaceURI, + const XMLCh* elemPrefix, + const XMLCh* localName, + const XMLCh* qName); + + + + +protected : + // ----------------------------------------------------------------------- + // Protected Constructor Methods + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + /** Construct a AbstractDOMParser, with an optional validator + * + * Constructor with an instance of validator class to use for + * validation. If you don't provide a validator, a default one will + * be created for you in the scanner. + * + * @param valToAdopt Pointer to the validator instance to use. The + * parser is responsible for freeing the memory. + * + * @param gramPool Pointer to the grammar pool instance from + * external application (through derivatives). + * The parser does NOT own it. + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + AbstractDOMParser + ( + XMLValidator* const valToAdopt = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , XMLGrammarPool* const gramPool = 0 + ); + + //@} + + // ----------------------------------------------------------------------- + // Protected getter methods + // ----------------------------------------------------------------------- + /** @name Protected getter methods */ + //@{ + /** Get the current DOM node + * + * This provides derived classes with access to the current node, i.e. + * the node to which new nodes are being added. + */ + DOMNode* getCurrentNode(); + + /** Get the XML scanner + * + * This provides derived classes with access to the XML scanner. + */ + XMLScanner* getScanner() const; + + /** Get the Grammar resolver + * + * This provides derived classes with access to the grammar resolver. + */ + GrammarResolver* getGrammarResolver() const; + + /** Get the parse in progress flag + * + * This provides derived classes with access to the parse in progress + * flag. + */ + bool getParseInProgress() const; + + MemoryManager* getMemoryManager() const; + + //@} + + + // ----------------------------------------------------------------------- + // Protected setter methods + // ----------------------------------------------------------------------- + + /** @name Protected setter methods */ + //@{ + + /** Set the current DOM node + * + * This method sets the current node maintained inside the parser to + * the one specified. + * + * @param toSet The DOM node which will be the current node. + */ + void setCurrentNode(DOMNode* toSet); + + /** Set the document node + * + * This method sets the DOM Document node to the one specified. + * + * @param toSet The new DOM Document node for this XML document. + */ + void setDocument(DOMDocument* toSet); + + /** Set the parse in progress flag + * + * This method sets the parse in progress flag to true or false. + * + * @param toSet The value of the flag to be set. + */ + void setParseInProgress(const bool toSet); + //@} + + // ----------------------------------------------------------------------- + // Protected Helper methods + // ----------------------------------------------------------------------- + /** @name Protected helper methods */ + //@{ + void resetPool(); + + /** + * Returns true if the user has adopted the document + */ + bool isDocumentAdopted() const; + + //@} + + +private : + // ----------------------------------------------------------------------- + // Initialize/Cleanup methods + // ----------------------------------------------------------------------- + void initialize(); + void cleanUp(); + void resetInProgress(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + AbstractDOMParser(const AbstractDOMParser&); + AbstractDOMParser& operator=(const AbstractDOMParser&); + +protected: + // ----------------------------------------------------------------------- + // Protected data members + // + // fCurrentNode + // fCurrentParent + // Used to track the current node during nested element events. Since + // the tree must be built from a set of disjoint callbacks, we need + // these to keep up with where we currently are. + // + // fCurrentEntity + // Used to track the current entity decl. If a text decl is seen later on, + // it is used to update the encoding and version information. + // + // fDocument + // The root document object, filled with the document contents. + // + // fCreateEntityReferenceNodes + // Indicates whether entity reference nodes should be created. + // + // fIncludeIgnorableWhitespace + // Indicates whether ignorable whitespace should be added to + // the DOM tree for validating parsers. + // + // fScanner + // The scanner used for this parser. This is created during the + // constructor. + // + // fImplementationFeatures + // The implementation features that we use to get an implementation + // for use in creating the DOMDocument used during parse. If this is + // null then the default DOMImplementation is used + // + // fParseInProgress + // Used to prevent multiple entrance to the parser while its doing + // a parse. + // + // fWithinElement + // A flag to indicate that the parser is within at least one level + // of element processing. + // + // fDocumentType + // Used to store and update the documentType variable information + // in fDocument + // + // fDocumentVector + // Store all the previous fDocument(s) (thus not the current fDocument) + // created in this parser. It is destroyed when the parser is destructed. + // + // fCreateCommentNodes + // Indicates whether comment nodes should be created. + // + // fDocumentAdoptedByUser + // The DOMDocument ownership has been transferred to application + // If set to true, the parser does not own the document anymore + // and thus will not release its memory. + // + // fInternalSubset + // Buffer for storing the internal subset information. + // Once complete (after DOCTYPE is finished scanning), send + // it to DocumentType Node + // + // fGrammarPool + // The grammar pool passed from external application (through derivatives). + // which could be 0, not owned. + // + // fCreateSchemaInfo + // Indicates whether element and attributes will have schema info associated + // + // fDoXinclude + // A bool used to request that XInlcude processing occur on the + // Document the parser parses. + // ----------------------------------------------------------------------- + bool fCreateEntityReferenceNodes; + bool fIncludeIgnorableWhitespace; + bool fWithinElement; + bool fParseInProgress; + bool fCreateCommentNodes; + bool fDocumentAdoptedByUser; + bool fCreateSchemaInfo; + bool fDoXInclude; + XMLScanner* fScanner; + XMLCh* fImplementationFeatures; + DOMNode* fCurrentParent; + DOMNode* fCurrentNode; + DOMEntityImpl* fCurrentEntity; + DOMDocumentImpl* fDocument; + DOMDocumentTypeImpl* fDocumentType; + RefVectorOf* fDocumentVector; + GrammarResolver* fGrammarResolver; + XMLStringPool* fURIStringPool; + XMLValidator* fValidator; + MemoryManager* fMemoryManager; + XMLGrammarPool* fGrammarPool; + XMLBufferMgr fBufMgr; + XMLBuffer& fInternalSubset; + PSVIHandler* fPSVIHandler; +}; + + + +// --------------------------------------------------------------------------- +// AbstractDOMParser: Getter methods +// --------------------------------------------------------------------------- +inline bool AbstractDOMParser::getCreateEntityReferenceNodes() const +{ + return fCreateEntityReferenceNodes; +} + +inline bool AbstractDOMParser::getIncludeIgnorableWhitespace() const +{ + return fIncludeIgnorableWhitespace; +} + +inline bool AbstractDOMParser::getParseInProgress() const +{ + return fParseInProgress; +} + +inline XMLScanner* AbstractDOMParser::getScanner() const +{ + return fScanner; +} + +inline GrammarResolver* AbstractDOMParser::getGrammarResolver() const +{ + return fGrammarResolver; +} + +inline bool AbstractDOMParser::getCreateCommentNodes() const +{ + return fCreateCommentNodes; +} + +inline PSVIHandler* AbstractDOMParser::getPSVIHandler() +{ + return fPSVIHandler; +} + +inline const PSVIHandler* AbstractDOMParser::getPSVIHandler() const +{ + return fPSVIHandler; +} + +inline bool AbstractDOMParser::getCreateSchemaInfo() const +{ + return fCreateSchemaInfo; +} + +inline bool AbstractDOMParser::getDoXInclude() const +{ + return fDoXInclude; +} +// --------------------------------------------------------------------------- +// AbstractDOMParser: Setter methods +// --------------------------------------------------------------------------- +inline void AbstractDOMParser::setCreateEntityReferenceNodes(const bool create) +{ + fCreateEntityReferenceNodes = create; +} + +inline void AbstractDOMParser::setIncludeIgnorableWhitespace(const bool include) +{ + fIncludeIgnorableWhitespace = include; +} + +inline void AbstractDOMParser::setCreateCommentNodes(const bool create) +{ + fCreateCommentNodes = create; +} + +inline void AbstractDOMParser::useImplementation(const XMLCh* const implementationFeatures) +{ + fMemoryManager->deallocate(fImplementationFeatures); + fImplementationFeatures = XMLString::replicate(implementationFeatures, fMemoryManager); +} + +inline void AbstractDOMParser::setDoXInclude(const bool newState) +{ + fDoXInclude = newState; +} + +// --------------------------------------------------------------------------- +// AbstractDOMParser: Protected getter methods +// --------------------------------------------------------------------------- +inline DOMNode* AbstractDOMParser::getCurrentNode() +{ + return fCurrentNode; +} + +inline MemoryManager* AbstractDOMParser::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// AbstractDOMParser: Protected setter methods +// --------------------------------------------------------------------------- +inline void AbstractDOMParser::setCurrentNode(DOMNode* toSet) +{ + fCurrentNode = toSet; +} + +inline void AbstractDOMParser::setParseInProgress(const bool toSet) +{ + fParseInProgress = toSet; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/parsers/DOMLSParserImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/parsers/DOMLSParserImpl.hpp new file mode 100644 index 000000000000..6e3bf0e04f1b --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/parsers/DOMLSParserImpl.hpp @@ -0,0 +1,715 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMBUILDERIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMBUILDERIMPL_HPP + + +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLEntityResolver; +class XMLResourceIdentifier; +class DOMStringListImpl; +class DOMLSResourceResolver; + + /** + * Introduced in DOM Level 3 + * + * DOMLSParserImpl provides an implementation of a DOMLSParser interface. + * A DOMLSParser instance is obtained from the DOMImplementationLS interface + * by invoking its createDOMLSParser method. + */ +class PARSERS_EXPORT DOMLSParserImpl : public AbstractDOMParser, + public DOMLSParser, + public DOMConfiguration +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Detructor + // ----------------------------------------------------------------------- + + /** @name Constructors and Destructor */ + //@{ + /** Construct a DOMLSParserImpl, with an optional validator + * + * Constructor with an instance of validator class to use for + * validation. If you don't provide a validator, a default one will + * be created for you in the scanner. + * + * @param valToAdopt Pointer to the validator instance to use. The + * parser is responsible for freeing the memory. + * @param manager The memory manager to be used for memory allocations + * @param gramPool Pointer to the grammar pool instance from + * external application. + * The parser does NOT own it. + * + */ + DOMLSParserImpl + ( + XMLValidator* const valToAdopt = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , XMLGrammarPool* const gramPool = 0 + ); + + /** + * Destructor + */ + virtual ~DOMLSParserImpl(); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of DOMLSParser interface + // ----------------------------------------------------------------------- + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** + * @see DOMLSParser#getDomConfig + */ + virtual DOMConfiguration* getDomConfig(); + + /** + * @see DOMLSParser#getFilter + */ + virtual const DOMLSParserFilter* getFilter() const; + + /** + * @see DOMLSParser#getAsync + */ + virtual bool getAsync() const; + + /** + * @see DOMLSParser#getBusy + */ + virtual bool getBusy() const; + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + /** + * @see DOMLSParser#setFilter + */ + virtual void setFilter(DOMLSParserFilter* const filter); + + //@} + + // ----------------------------------------------------------------------- + // Parsing methods + // ----------------------------------------------------------------------- + /** @name Parsing methods */ + //@{ + + // ----------------------------------------------------------------------- + // Parsing methods + // ----------------------------------------------------------------------- + /** + * @see DOMLSParser#parse + */ + virtual DOMDocument* parse(const DOMLSInput* source); + + /** + * @see DOMLSParser#parseURI + */ + virtual DOMDocument* parseURI(const XMLCh* const uri); + + /** + * @see DOMLSParser#parseURI + */ + virtual DOMDocument* parseURI(const char* const uri); + + /** + * @see DOMLSParser#parseWithContext + */ + virtual DOMNode* parseWithContext + ( + const DOMLSInput* source + , DOMNode* contextNode + , const ActionType action + ); + + /** + * @see DOMLSParser#abort + */ + virtual void abort(); + + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + + /** + * Called to indicate that this DOMLSParser is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + */ + virtual void release(); + + /** Reset the documents vector pool and release all the associated memory + * back to the system. + * + * When parsing a document using a DOM parser, all memory allocated + * for a DOM tree is associated to the DOM document. + * + * If you do multiple parse using the same DOM parser instance, then + * multiple DOM documents will be generated and saved in a vector pool. + * All these documents (and thus all the allocated memory) + * won't be deleted until the parser instance is destroyed. + * + * If you don't need these DOM documents anymore and don't want to + * destroy the DOM parser instance at this moment, then you can call this method + * to reset the document vector pool and release all the allocated memory + * back to the system. + * + * It is an error to call this method if you are in the middle of a + * parse (e.g. in the mid of a progressive parse). + * + * @exception IOException An exception from the parser if this function + * is called when a parse is in progress. + * + */ + virtual void resetDocumentPool(); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via an input source + * object. + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the DOMLSInput parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * @param source A const reference to the DOMLSInput object which + * points to the schema grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no chaching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * + * @see DOMLSInput#DOMLSInput + */ + virtual Grammar* loadGrammar(const DOMLSInput* source, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML grammar file to be + * preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no chaching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const XMLCh* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * @param systemId A const char pointer to a native string which contains + * the path to the XML grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no chaching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const char* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param nameSpaceKey Namespace key + * @return Grammar associated with the Namespace key. + */ + virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey) const; + + /** + * Retrieve the grammar where the root element is declared. + * + * @return Grammar where root element declared + */ + virtual Grammar* getRootGrammar() const; + + /** + * Returns the string corresponding to a URI id from the URI string pool. + * + * @param uriId id of the string in the URI string pool. + * @return URI string corresponding to the URI id. + */ + virtual const XMLCh* getURIText(unsigned int uriId) const; + + /** + * Clear the cached grammar pool + */ + virtual void resetCachedGrammarPool(); + + /** + * Returns the current src offset within the input source. + * To be used only while parsing is in progress. + * + * @return offset within the input source + */ + virtual XMLFilePos getSrcOffset() const; + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the DOMConfiguration interface. + // ----------------------------------------------------------------------- + /** @name Implementation of the DOMConfiguration interface. */ + //@{ + /** + * Set the value of a parameter. + * + * @param name The name of the parameter to set. + * @param value The new value or null if the user wishes to unset the + * parameter. While the type of the value parameter is defined as + * DOMUserData, the object type must match the type defined + * by the definition of the parameter. For example, if the parameter is + * "error-handler", the value must be of type DOMErrorHandler + * + * @exception DOMException (NOT_SUPPORTED_ERR) Raised when the + * parameter name is recognized but the requested value cannot be set. + * @exception DOMException (NOT_FOUND_ERR) Raised when the + * parameter name is not recognized. + * + * @since DOM level 3 + **/ + virtual void setParameter(const XMLCh* name, const void* value); + virtual void setParameter(const XMLCh* name, bool value); + + /** + * Return the value of a parameter if known. + * + * @param name The name of the parameter. + * @return The current object associated with the specified parameter or + * null if no object has been associated or if the parameter is not + * supported. + * + * @exception DOMException (NOT_FOUND_ERR) Raised when the i + * boolean parameter + * name is not recognized. + * + * @since DOM level 3 + **/ + virtual const void* getParameter(const XMLCh* name) const; + + /** + * Check if setting a parameter to a specific value is supported. + * + * @param name The name of the parameter to check. + * @param value An object. if null, the returned value is true. + * @return true if the parameter could be successfully set to the specified + * value, or false if the parameter is not recognized or the requested value + * is not supported. This does not change the current value of the parameter + * itself. + * + * @since DOM level 3 + **/ + virtual bool canSetParameter(const XMLCh* name, const void* value) const; + virtual bool canSetParameter(const XMLCh* name, bool value) const; + + /** + * The list of the parameters supported by this DOMConfiguration object and + * for which at least one value can be set by the application. + * Note that this list can also contain parameter names defined outside this specification. + * + * @return The list of parameters that can be used with setParameter/getParameter + * @since DOM level 3 + **/ + virtual const DOMStringList* getParameterNames() const; + //@} + + // ----------------------------------------------------------------------- + // Implementation of the XMLErrorReporter interface. + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLErrorReporter interface. */ + //@{ + + /** Handle errors reported from the parser + * + * This method is used to report back errors found while parsing the + * XML file. This method is also borrowed from the SAX specification. + * It calls the corresponding user installed Error Handler method: + * 'fatal', 'error', 'warning' depending on the severity of the error. + * This classification is defined by the XML specification. + * + * @param errCode An integer code for the error. + * @param msgDomain A const pointer to an Unicode string representing + * the message domain to use. + * @param errType An enumeration classifying the severity of the error. + * @param errorText A const pointer to an Unicode string representing + * the text of the error message. + * @param systemId A const pointer to an Unicode string representing + * the system id of the XML file where this error + * was discovered. + * @param publicId A const pointer to an Unicode string representing + * the public id of the XML file where this error + * was discovered. + * @param lineNum The line number where the error occurred. + * @param colNum The column number where the error occurred. + * @see DOMErrorHandler + */ + virtual void error + ( + const unsigned int errCode + , const XMLCh* const msgDomain + , const XMLErrorReporter::ErrTypes errType + , const XMLCh* const errorText + , const XMLCh* const systemId + , const XMLCh* const publicId + , const XMLFileLoc lineNum + , const XMLFileLoc colNum + ); + + /** Reset any error data before a new parse + * + * This method allows the user installed Error Handler callback to + * 'reset' itself. + * + * This method is a no-op for this DOM + * implementation. + */ + virtual void resetErrors(); + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the XMLEntityHandler interface. + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLEntityHandler interface. */ + //@{ + + /** Handle an end of input source event + * + * This method is used to indicate the end of parsing of an external + * entity file. + * + * This method is a no-op for this DOM + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the XML file being parsed. + * @see InputSource + */ + virtual void endInputSource(const InputSource& inputSource); + + /** Expand a system id + * + * This method allows an installed XMLEntityHandler to further + * process any system id's of enternal entities encountered in + * the XML file being parsed, such as redirection etc. + * + * This method always returns 'false' + * for this DOM implementation. + * + * @param systemId A const pointer to an Unicode string representing + * the system id scanned by the parser. + * @param toFill A pointer to a buffer in which the application + * processed system id is stored. + * @return 'true', if any processing is done, 'false' otherwise. + */ + virtual bool expandSystemId + ( + const XMLCh* const systemId + , XMLBuffer& toFill + ); + + /** Reset any entity handler information + * + * This method allows the installed XMLEntityHandler to reset + * itself. + * + * This method is a no-op for this DOM + * implementation. + */ + virtual void resetEntities(); + + /** Resolve a public/system id + * + * This method allows a user installed entity handler to further + * process any pointers to external entities. The applications can + * implement 'redirection' via this callback. + * + * @param resourceIdentifier An object containing the type of + * resource to be resolved and the associated data members + * corresponding to this type. + * @return The value returned by the user installed resolveEntity + * method or NULL otherwise to indicate no processing was done. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @see XMLEntityHandler + * @see XMLEntityResolver + */ + virtual InputSource* resolveEntity + ( + XMLResourceIdentifier* resourceIdentifier + ); + + /** Handle a 'start input source' event + * + * This method is used to indicate the start of parsing an external + * entity file. + * + * This method is a no-op for this DOM parse + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the external entity + * being parsed. + */ + virtual void startInputSource(const InputSource& inputSource); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the XMLDocumentHandler interface. + // ----------------------------------------------------------------------- + virtual void docCharacters + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + virtual void docComment + ( + const XMLCh* const comment + ); + virtual void docPI + ( + const XMLCh* const target + , const XMLCh* const data + ); + virtual void startEntityReference + ( + const XMLEntityDecl& entDecl + ); + virtual void endElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const bool isRoot + , const XMLCh* const elemPrefix + ); + virtual void startElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const XMLCh* const elemPrefix + , const RefVectorOf& attrList + , const XMLSize_t attrCount + , const bool isEmpty + , const bool isRoot + ); + + // overriden callbacks to implement parseWithContext behavior + virtual void startDocument(); + virtual void XMLDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + , const XMLCh* const standaloneStr + , const XMLCh* const actualEncStr + ); + + +private : + // ----------------------------------------------------------------------- + // Initialize/Cleanup methods + // ----------------------------------------------------------------------- + void resetParse(); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void applyFilter(DOMNode* node); + + // ----------------------------------------------------------------------- + // Private data members + // + // fEntityResolver + // The installed DOM entity resolver, if any. Null if none. + // + // fXMLEntityResolver + // The installed Xerces entity resolver, if any. Null if none. + // + // fErrorHandler + // The installed DOM error handler, if any. Null if none. + // + // fFilter + // The installed application filter, if any. Null if none. + // + // fCharsetOverridesXMLEncoding + // Indicates if the "charset-overrides-xml-encoding" is set or not + // + // fUserAdoptsDocument + // The DOMDocument ownership has been transferred to application + // If set to true, the parser does not own the document anymore + // and thus will not release its memory. + // + // fSupportedParameters + // A list of the parameters that can be set, including the ones + // specific of Xerces + // + // fFilterAction + // A map of elements rejected by the DOMLSParserFilter::startElement + // callback, used to avoid invoking DOMLSParserFilter::acceptNode + // on its children + // + // fFilterDelayedTextNodes + // As text nodes are filled incrementally, store them in a map + // so that we ask DOMLSParserFilter::acceptNode only once, when it + // is completely created + // + // fWrapNodesInDocumentFragment + // fWrapNodesContext + // fWrapNodesAction + // Variables used to keep the state for parseWithContext API + // + //----------------------------------------------------------------------- + DOMLSResourceResolver* fEntityResolver; + XMLEntityResolver* fXMLEntityResolver; + DOMErrorHandler* fErrorHandler; + DOMLSParserFilter* fFilter; + bool fCharsetOverridesXMLEncoding; + bool fUserAdoptsDocument; + DOMStringListImpl* fSupportedParameters; + ValueHashTableOf* fFilterAction; + ValueHashTableOf* fFilterDelayedTextNodes; + DOMDocumentFragment* fWrapNodesInDocumentFragment; + DOMNode* fWrapNodesContext; + ActionType fWrapNodesAction; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMLSParserImpl(const DOMLSParserImpl &); + DOMLSParserImpl & operator = (const DOMLSParserImpl &); +}; + + + +// --------------------------------------------------------------------------- +// DOMLSParserImpl: Handlers for the XMLEntityHandler interface +// --------------------------------------------------------------------------- +inline void DOMLSParserImpl::endInputSource(const InputSource&) +{ + // The DOM entity resolver doesn't handle this +} + +inline bool DOMLSParserImpl::expandSystemId(const XMLCh* const, XMLBuffer&) +{ + // The DOM entity resolver doesn't handle this + return false; +} + +inline void DOMLSParserImpl::resetEntities() +{ + // Nothing to do on this one +} + +inline void DOMLSParserImpl::startInputSource(const InputSource&) +{ + // The DOM entity resolver doesn't handle this +} + + +// --------------------------------------------------------------------------- +// DOMLSParserImpl: Getter methods +// --------------------------------------------------------------------------- +inline DOMConfiguration* DOMLSParserImpl::getDomConfig() +{ + return this; +} + +inline bool DOMLSParserImpl::getAsync() const +{ + // We are a synchronous parser + return false; +} + +inline const DOMLSParserFilter* DOMLSParserImpl::getFilter() const +{ + return fFilter; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/parsers/SAX2XMLFilterImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/parsers/SAX2XMLFilterImpl.hpp new file mode 100644 index 000000000000..008d78ad75ff --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/parsers/SAX2XMLFilterImpl.hpp @@ -0,0 +1,1445 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SAX2XMLFILTERIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_SAX2XMLFILTERIMPL_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class implements the SAX2 'XMLFilterImpl' interface and should be + * used by applications as the base class for their SAX2 filters. + * This implementation simply forwards every call to the parent object. + * + */ + +class PARSERS_EXPORT SAX2XMLFilterImpl : + public SAX2XMLFilter + , public EntityResolver + , public DTDHandler + , public ContentHandler + , public ErrorHandler +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** The default constructor */ + SAX2XMLFilterImpl(SAX2XMLReader* parent); + + /** The destructor */ + ~SAX2XMLFilterImpl() ; + //@} + + //----------------------------------------------------------------------- + // Implementation of SAX2XMLReader Interface + //----------------------------------------------------------------------- + //----------------------------------------------------------------------- + // The XMLReader interface + //----------------------------------------------------------------------- + /** @name Implementation of SAX 2.0 XMLReader interface's. */ + //@{ + + /** + * This method returns the installed content handler. + * + * @return A pointer to the installed content handler object. + */ + virtual ContentHandler* getContentHandler() const ; + + /** + * This method returns the installed DTD handler. + * + * @return A pointer to the installed DTD handler object. + */ + virtual DTDHandler* getDTDHandler() const ; + + /** + * This method returns the installed entity resolver. + * + * @return A pointer to the installed entity resolver object. + */ + virtual EntityResolver* getEntityResolver() const ; + + /** + * This method returns the installed error handler. + * + * @return A pointer to the installed error handler object. + */ + virtual ErrorHandler* getErrorHandler() const ; + + /** + * Query the current state of any feature in a SAX2 XMLReader. + * + * @param name The unique identifier (URI) of the feature being set. + * @return The current state of the feature. + * @exception SAXNotRecognizedException If the requested feature is not known. + */ + virtual bool getFeature(const XMLCh* const name) const ; + + /** + * Query the current value of a property in a SAX2 XMLReader. + * + * The parser owns the returned pointer. The memory allocated for + * the returned pointer will be destroyed when the parser is deleted. + * + * To ensure accessibility of the returned information after the parser + * is deleted, callers need to copy and store the returned information + * somewhere else; otherwise you may get unexpected result. Since the returned + * pointer is a generic void pointer, see the SAX2 Programming Guide to learn + * exactly what type of property value each property returns for replication. + * + * @param name The unique identifier (URI) of the property being set. + * @return The current value of the property. The pointer spans the same + * life-time as the parser. A null pointer is returned if nothing + * was specified externally. + * @exception SAXNotRecognizedException If the requested property is not known. + */ + virtual void* getProperty(const XMLCh* const name) const ; + + /** + * Allow an application to register a document event handler. + * + * If the application does not register a document handler, all + * document events reported by the SAX parser will be silently + * ignored (this is the default behaviour implemented by + * HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The document handler. + * @see DocumentHandler#DocumentHandler + * @see HandlerBase#HandlerBase + */ + virtual void setContentHandler(ContentHandler* const handler) ; + + /** + * Allow an application to register a DTD event handler. + * + * If the application does not register a DTD handler, all DTD + * events reported by the SAX parser will be silently ignored (this + * is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the middle + * of a parse, and the SAX parser must begin using the new handler + * immediately. + * + * @param handler The DTD handler. + * @see DTDHandler#DTDHandler + * @see HandlerBase#HandlerBase + */ + virtual void setDTDHandler(DTDHandler* const handler) ; + + /** + * Allow an application to register a custom entity resolver. + * + * If the application does not register an entity resolver, the + * SAX parser will resolve system identifiers and open connections + * to entities itself (this is the default behaviour implemented in + * DefaultHandler). + * + * Applications may register a new or different entity resolver + * in the middle of a parse, and the SAX parser must begin using + * the new resolver immediately. + * + * @param resolver The object for resolving entities. + * @see EntityResolver#EntityResolver + * @see DefaultHandler#DefaultHandler + */ + virtual void setEntityResolver(EntityResolver* const resolver) ; + + /** + * Allow an application to register an error event handler. + * + * If the application does not register an error event handler, + * all error events reported by the SAX parser will be silently + * ignored, except for fatalError, which will throw a SAXException + * (this is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The error handler. + * @see ErrorHandler#ErrorHandler + * @see SAXException#SAXException + * @see HandlerBase#HandlerBase + */ + virtual void setErrorHandler(ErrorHandler* const handler) ; + + /** + * Set the state of any feature in a SAX2 XMLReader. + * Supported features in SAX2 for xerces-c are: + *
(See the SAX2 Programming Guide for detail description). + * + *
http://xml.org/sax/features/validation (default: true) + *
http://xml.org/sax/features/namespaces (default: true) + *
http://xml.org/sax/features/namespace-prefixes (default: false) + *
http://apache.org/xml/features/validation/dynamic (default: false) + *
http://apache.org/xml/features/validation/reuse-grammar (default: false) + *
http://apache.org/xml/features/validation/schema (default: true) + *
http://apache.org/xml/features/validation/schema-full-checking (default: false) + *
http://apache.org/xml/features/validating/load-schema (default: true) + *
http://apache.org/xml/features/nonvalidating/load-external-dtd (default: true) + *
http://apache.org/xml/features/continue-after-fatal-error (default: false) + *
http://apache.org/xml/features/validation-error-as-fatal (default: false) + * + * @param name The unique identifier (URI) of the feature. + * @param value The requested state of the feature (true or false). + * @exception SAXNotRecognizedException If the requested feature is not known. + * @exception SAXNotSupportedException Feature modification is not supported during parse + * + */ + virtual void setFeature(const XMLCh* const name, const bool value) ; + + /** + * Set the value of any property in a SAX2 XMLReader. + * Supported properties in SAX2 for xerces-c are: + *
(See the SAX2 Programming Guide for detail description). + * + *
http://apache.org/xml/properties/schema/external-schemaLocation + *
http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation. + * + * It takes a void pointer as the property value. Application is required to initialize this void + * pointer to a correct type. See the SAX2 Programming Guide + * to learn exactly what type of property value each property expects for processing. + * Passing a void pointer that was initialized with a wrong type will lead to unexpected result. + * If the same property is set more than once, the last one takes effect. + * + * @param name The unique identifier (URI) of the property being set. + * @param value The requested value for the property. See + * the SAX2 Programming Guide to learn + * exactly what type of property value each property expects for processing. + * Passing a void pointer that was initialized with a wrong type will lead + * to unexpected result. + * @exception SAXNotRecognizedException If the requested property is not known. + * @exception SAXNotSupportedException Property modification is not supported during parse + */ + virtual void setProperty(const XMLCh* const name, void* value) ; + + /** + * Parse an XML document. + * + * The application can use this method to instruct the SAX parser + * to begin parsing an XML document from any valid input + * source (a character stream, a byte stream, or a URI). + * + * Applications may not invoke this method while a parse is in + * progress (they should create a new Parser instead for each + * additional XML document). Once a parse is complete, an + * application may reuse the same Parser object, possibly with a + * different input source. + * + * @param source The input source for the top-level of the + * XML document. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see InputSource#InputSource + * @see #setEntityResolver + * @see #setDTDHandler + * @see #setDocumentHandler + * @see #setErrorHandler + */ + virtual void parse + ( + const InputSource& source + ) ; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(InputSource) + */ + virtual void parse + ( + const XMLCh* const systemId + ) ; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(InputSource) + */ + virtual void parse + ( + const char* const systemId + ) ; + + //@} + + // ----------------------------------------------------------------------- + // SAX 2.0-ext + // ----------------------------------------------------------------------- + /** @name SAX 2.0-ext */ + //@{ + /** + * This method returns the installed declaration handler. + * + * @return A pointer to the installed declaration handler object. + */ + virtual DeclHandler* getDeclarationHandler() const ; + + /** + * This method returns the installed lexical handler. + * + * @return A pointer to the installed lexical handler object. + */ + virtual LexicalHandler* getLexicalHandler() const ; + + /** + * Allow an application to register a declaration event handler. + * + * If the application does not register a declaration handler, + * all events reported by the SAX parser will be silently + * ignored. (this is the default behaviour implemented by DefaultHandler). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The DTD declaration handler. + * @see DeclHandler#DeclHandler + * @see SAXException#SAXException + * @see DefaultHandler#DefaultHandler + */ + virtual void setDeclarationHandler(DeclHandler* const handler) ; + + /** + * Allow an application to register a lexical event handler. + * + * If the application does not register a lexical handler, + * all events reported by the SAX parser will be silently + * ignored. (this is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The error handler. + * @see LexicalHandler#LexicalHandler + * @see SAXException#SAXException + * @see HandlerBase#HandlerBase + */ + virtual void setLexicalHandler(LexicalHandler* const handler) ; + + //@} + + // ----------------------------------------------------------------------- + // Getter Methods + // ----------------------------------------------------------------------- + /** @name Getter Methods (Xerces-C specific) */ + //@{ + /** + * This method is used to get the current validator. + * + * SAX2XMLReader assumes responsibility for the validator. It will be + * deleted when the XMLReader is destroyed. + * + * @return A pointer to the validator. An application should not deleted + * the object returned. + * + */ + virtual XMLValidator* getValidator() const ; + + /** Get error count from the last parse operation. + * + * This method returns the error count from the last parse + * operation. Note that this count is actually stored in the + * scanner, so this method simply returns what the + * scanner reports. + * + * @return number of errors encountered during the latest + * parse operation. + */ + virtual XMLSize_t getErrorCount() const ; + + /** + * This method returns the state of the parser's + * exit-on-First-Fatal-Error flag. + * + *

Or you can query the feature "http://apache.org/xml/features/continue-after-fatal-error" + * which indicates the opposite state.

+ * + * @return true, if the parser is currently configured to + * exit on the first fatal error, false otherwise. + * + * @see #setExitOnFirstFatalError + * @see #getFeature + */ + virtual bool getExitOnFirstFatalError() const ; + + /** + * This method returns the state of the parser's + * validation-constraint-fatal flag. + * + *

Or you can query the feature "http://apache.org/xml/features/validation-error-as-fatal" + * which means the same thing. + * + * @return true, if the parser is currently configured to + * set validation constraint errors as fatal, false + * otherwise. + * + * @see #setValidationContraintFatal + * @see #getFeature + */ + virtual bool getValidationConstraintFatal() const ; + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param nameSpaceKey Namespace key + * @return Grammar associated with the Namespace key. + */ + virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey); + + /** + * Retrieve the grammar where the root element is declared. + * + * @return Grammar where root element declared + */ + virtual Grammar* getRootGrammar(); + + /** + * Returns the string corresponding to a URI id from the URI string pool. + * + * @param uriId id of the string in the URI string pool. + * @return URI string corresponding to the URI id. + */ + virtual const XMLCh* getURIText(unsigned int uriId) const; + + /** + * Returns the current src offset within the input source. + * To be used only while parsing is in progress. + * + * @return offset within the input source + */ + virtual XMLFilePos getSrcOffset() const; + + //@} + + // ----------------------------------------------------------------------- + // Setter Methods + // ----------------------------------------------------------------------- + /** @name Setter Methods (Xerces-C specific) */ + //@{ + /** + * This method is used to set a validator. + * + * SAX2XMLReader assumes responsibility for the validator. It will be + * deleted when the XMLReader is destroyed. + * + * @param valueToAdopt A pointer to the validator that the reader should use. + * + */ + virtual void setValidator(XMLValidator* valueToAdopt) ; + + /** + * This method allows users to set the parser's behaviour when it + * encounters the first fatal error. If set to true, the parser + * will exit at the first fatal error. If false, then it will + * report the error and continue processing. + * + *

The default value is 'true' and the parser exits on the + * first fatal error.

+ * + *

Or you can set the feature "http://apache.org/xml/features/continue-after-fatal-error" + * which has the opposite behaviour.

+ * + *

If both the feature above and this function are used, the latter takes effect.

+ * + * @param newState The value specifying whether the parser should + * continue or exit when it encounters the first + * fatal error. + * + * @see #getExitOnFirstFatalError + * @see #setFeature + */ + virtual void setExitOnFirstFatalError(const bool newState) ; + + /** + * This method allows users to set the parser's behaviour when it + * encounters a validation constraint error. If set to true, and the + * the parser will treat validation error as fatal and will exit depends on the + * state of "getExitOnFirstFatalError". If false, then it will + * report the error and continue processing. + * + * Note: setting this true does not mean the validation error will be printed with + * the word "Fatal Error". It is still printed as "Error", but the parser + * will exit if "setExitOnFirstFatalError" is set to true. + * + *

The default value is 'false'.

+ * + *

Or you can set the feature "http://apache.org/xml/features/validation-error-as-fatal" + * which means the same thing.

+ * + *

If both the feature above and this function are used, the latter takes effect.

+ * + * @param newState If true, the parser will exit if "setExitOnFirstFatalError" + * is set to true. + * + * @see #getValidationConstraintFatal + * @see #setExitOnFirstFatalError + * @see #setFeature + */ + virtual void setValidationConstraintFatal(const bool newState) ; + //@} + + + // ----------------------------------------------------------------------- + // Progressive scan methods + // ----------------------------------------------------------------------- + + /** @name Progressive scan methods */ + //@{ + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a Unicode string representing the path + * to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could parse the + * prolog (which means the token will not be valid.) + * + * @see #parseNext + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseFirst + ( + const XMLCh* const systemId + , XMLPScanToken& toFill + ) ; + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a regular native string representing + * the path to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseFirst + ( + const char* const systemId + , XMLPScanToken& toFill + ) ; + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param source A const reference to the InputSource object which + * points to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + */ + virtual bool parseFirst + ( + const InputSource& source + , XMLPScanToken& toFill + ) ; + + /** Continue a progressive parse operation + * + * This method is used to continue with progressive parsing of + * XML files started by a call to 'parseFirst' method. + * + * It parses the XML file and stops as soon as it comes across + * a XML token (as defined in the XML specification). Relevant + * callback handlers are invoked as required by the SAX + * specification. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the next XML token. + * It indicates the user can go ahead with parsing the rest + * of the file. It returns 'false' to indicate that the parser + * could not find next token as per the XML specification + * production rule. + * + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseNext(XMLPScanToken& token) ; + + /** Reset the parser after a progressive parse + * + * If a progressive parse loop exits before the end of the document + * is reached, the parser has no way of knowing this. So it will leave + * open any files or sockets or memory buffers that were in use at + * the time that the parse loop exited. + * + * The next parse operation will cause these open files and such to + * be closed, but the next parse operation might occur at some unknown + * future point. To avoid this problem, you should reset the parser if + * you exit the loop early. + * + * If you exited because of an error, then this cleanup will be done + * for you. Its only when you exit the file prematurely of your own + * accord, because you've found what you wanted in the file most + * likely. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + */ + virtual void parseReset(XMLPScanToken& token) ; + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the grammar preparsing interface + // ----------------------------------------------------------------------- + + /** @name Implementation of Grammar preparsing interface's. */ + //@{ + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via an input source + * object. + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the SAX InputSource parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param source A const reference to the SAX InputSource object which + * points to the schema grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * + * @see InputSource#InputSource + */ + virtual Grammar* loadGrammar(const InputSource& source, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML grammar file to be + * preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const XMLCh* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const char pointer to a native string which contains + * the path to the XML grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const char* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Clear the cached grammar pool + */ + virtual void resetCachedGrammarPool(); + + /** Set maximum input buffer size + * + * This method allows users to limit the size of buffers used in parsing + * XML character data. The effect of setting this size is to limit the + * size of a ContentHandler::characters() call. + * + * The parser's default input buffer size is 1 megabyte. + * + * @param bufferSize The maximum input buffer size + */ + void setInputBufferSize(const XMLSize_t bufferSize); + + //@} + + + // ----------------------------------------------------------------------- + // Advanced document handler list maintenance methods + // ----------------------------------------------------------------------- + + /** @name Advanced document handler list maintenance methods */ + //@{ + /** + * This method installs the specified 'advanced' document callback + * handler, thereby allowing the user to customize the processing, + * if they choose to do so. Any number of advanced callback handlers + * maybe installed. + * + *

The methods in the advanced callback interface represent + * Xerces-C extensions. There is no specification for this interface.

+ * + * @param toInstall A pointer to the users advanced callback handler. + * + * @see #removeAdvDocHandler + */ + virtual void installAdvDocHandler(XMLDocumentHandler* const toInstall) ; + + /** + * This method removes the 'advanced' document handler callback from + * the underlying parser scanner. If no handler is installed, advanced + * callbacks are not invoked by the scanner. + * @param toRemove A pointer to the advanced callback handler which + * should be removed. + * + * @see #installAdvDocHandler + */ + virtual bool removeAdvDocHandler(XMLDocumentHandler* const toRemove) ; + //@} + + + // ----------------------------------------------------------------------- + // The XMLFilter interface + // ----------------------------------------------------------------------- + + /** @name Implementation of SAX 2.0 XMLFilter interface's. */ + //@{ + /** + * This method returns the parent XMLReader object. + * + * @return A pointer to the parent XMLReader object. + */ + virtual SAX2XMLReader* getParent() const; + + /** + * Sets the parent XMLReader object; parse requests will be forwarded to this + * object, and callback notifications coming from it will be postprocessed + * + * @param parent The new XMLReader parent. + * @see SAX2XMLReader#SAX2XMLReader + */ + virtual void setParent(SAX2XMLReader* parent); + //@} + + // ----------------------------------------------------------------------- + // Implementation of the EntityResolver interface + // ----------------------------------------------------------------------- + /** @name The EntityResolver interface */ + //@{ + + /** + * Allow the application to resolve external entities. + * + *

The Parser will call this method before opening any external + * entity except the top-level document entity (including the + * external DTD subset, external entities referenced within the + * DTD, and external entities referenced within the document + * element): the application may request that the parser resolve + * the entity itself, that it use an alternative URI, or that it + * use an entirely different input source.

+ * + *

Application writers can use this method to redirect external + * system identifiers to secure and/or local URIs, to look up + * public identifiers in a catalogue, or to read an entity from a + * database or other input source (including, for example, a dialog + * box).

+ * + *

If the system identifier is a URL, the SAX parser must + * resolve it fully before reporting it to the application.

+ * + * @param publicId The public identifier of the external entity + * being referenced, or null if none was supplied. + * @param systemId The system identifier of the external entity + * being referenced. + * @return An InputSource object describing the new input source, + * or null to request that the parser open a regular + * URI connection to the system identifier. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception IOException An IO exception, + * possibly the result of creating a new InputStream + * or Reader for the InputSource. + * @see InputSource#InputSource + */ + virtual InputSource* resolveEntity + ( + const XMLCh* const publicId + , const XMLCh* const systemId + ); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the DTDHandler interface + // ----------------------------------------------------------------------- + /** @name The DTD handler interface */ + //@{ + /** + * Receive notification of a notation declaration event. + * + *

It is up to the application to record the notation for later + * reference, if necessary.

+ * + *

If a system identifier is present, and it is a URL, the SAX + * parser must resolve it fully before passing it to the + * application.

+ * + * @param name The notation name. + * @param publicId The notation's public identifier, or null if + * none was given. + * @param systemId The notation's system identifier, or null if + * none was given. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #unparsedEntityDecl + * @see AttributeList#AttributeList + */ + virtual void notationDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ); + + /** + * Receive notification of an unparsed entity declaration event. + * + *

Note that the notation name corresponds to a notation + * reported by the notationDecl() event. It is up to the + * application to record the entity for later reference, if + * necessary.

+ * + *

If the system identifier is a URL, the parser must resolve it + * fully before passing it to the application.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @param name The unparsed entity's name. + * @param publicId The entity's public identifier, or null if none + * was given. + * @param systemId The entity's system identifier (it must always + * have one). + * @param notationName The name of the associated notation. + * @see #notationDecl + * @see AttributeList#AttributeList + */ + virtual void unparsedEntityDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + , const XMLCh* const notationName + ); + + /** + * Reset the DocType object on its reuse + * + *

This method helps in reseting the DTD object implementation + * defaults each time the DTD is begun.

+ * + */ + virtual void resetDocType(); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the ContentHandler interface + // ----------------------------------------------------------------------- + /** @name The virtual document handler interface */ + + //@{ + /** + * Receive notification of character data. + * + *

The Parser will call this method to report each chunk of + * character data. SAX parsers may return all contiguous character + * data in a single chunk, or they may split it into several + * chunks; however, all of the characters in any single event + * must come from the same external entity, so that the Locator + * provides useful information.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + *

Note that some parsers will report whitespace using the + * ignorableWhitespace() method rather than this one (validating + * parsers must do so).

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #ignorableWhitespace + * @see Locator#Locator + */ + virtual void characters + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * Receive notification of the end of a document. + * + *

The SAX parser will invoke this method only once, and it will + * be the last method invoked during the parse. The parser shall + * not invoke this method until it has either abandoned parsing + * (because of an unrecoverable error) or reached the end of + * input.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endDocument (); + + /** + * Receive notification of the end of an element. + * + *

The SAX parser will invoke this method at the end of every + * element in the XML document; there will be a corresponding + * startElement() event for every endElement() event (even when the + * element is empty).

+ * + * @param uri The URI of the associated namespace for this element + * @param localname The local part of the element name + * @param qname The QName of this element + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endElement + ( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname + ); + + /** + * Receive notification of ignorable whitespace in element content. + * + *

Validating Parsers must use this method to report each chunk + * of ignorable whitespace (see the W3C XML 1.0 recommendation, + * section 2.10): non-validating parsers may also use this method + * if they are capable of parsing and using content models.

+ * + *

SAX parsers may return all contiguous whitespace in a single + * chunk, or they may split it into several chunks; however, all of + * the characters in any single event must come from the same + * external entity, so that the Locator provides useful + * information.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #characters + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * Receive notification of a processing instruction. + * + *

The Parser will invoke this method once for each processing + * instruction found: note that processing instructions may occur + * before or after the main document element.

+ * + *

A SAX parser should never report an XML declaration (XML 1.0, + * section 2.8) or a text declaration (XML 1.0, section 4.3.1) + * using this method.

+ * + * @param target The processing instruction target. + * @param data The processing instruction data, or null if + * none was supplied. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void processingInstruction + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** + * Receive an object for locating the origin of SAX document events. + * + * SAX parsers are strongly encouraged (though not absolutely + * required) to supply a locator: if it does so, it must supply + * the locator to the application by invoking this method before + * invoking any of the other methods in the DocumentHandler + * interface. + * + * The locator allows the application to determine the end + * position of any document-related event, even if the parser is + * not reporting an error. Typically, the application will + * use this information for reporting its own errors (such as + * character content that does not match an application's + * business rules). The information returned by the locator + * is probably not sufficient for use with a search engine. + * + * Note that the locator will return correct information only + * during the invocation of the events in this interface. The + * application should not attempt to use it at any other time. + * + * @param locator An object that can return the location of + * any SAX document event. The object is only + * 'on loan' to the client code and they are not + * to attempt to delete or modify it in any way! + * + * @see Locator#Locator + */ + virtual void setDocumentLocator(const Locator* const locator); + + /** + * Receive notification of the beginning of a document. + * + *

The SAX parser will invoke this method only once, before any + * other methods in this interface or in DTDHandler (except for + * setDocumentLocator).

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startDocument(); + + /** + * Receive notification of the beginning of an element. + * + *

The Parser will invoke this method at the beginning of every + * element in the XML document; there will be a corresponding + * endElement() event for every startElement() event (even when the + * element is empty). All of the element's content will be + * reported, in order, before the corresponding endElement() + * event.

+ * + *

Note that the attribute list provided will + * contain only attributes with explicit values (specified or + * defaulted): #IMPLIED attributes will be omitted.

+ * + * @param uri The URI of the associated namespace for this element + * @param localname The local part of the element name + * @param qname The QName of this element + * @param attrs The attributes attached to the element, if any. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #endElement + * @see Attributes#Attributes + */ + virtual void startElement + ( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname, + const Attributes& attrs + ); + + /** + * Receive notification of the start of an namespace prefix mapping. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the start of + * each namespace prefix mapping.

+ * + * @param prefix The namespace prefix used + * @param uri The namespace URI used. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startPrefixMapping + ( + const XMLCh* const prefix, + const XMLCh* const uri + ); + + /** + * Receive notification of the end of an namespace prefix mapping. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the end of + * each namespace prefix mapping.

+ * + * @param prefix The namespace prefix used + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endPrefixMapping + ( + const XMLCh* const prefix + ); + + /** + * Receive notification of a skipped entity + * + *

The parser will invoke this method once for each entity + * skipped. All processors may skip external entities, + * depending on the values of the features:
+ * http://xml.org/sax/features/external-general-entities
+ * http://xml.org/sax/features/external-parameter-entities

+ * + *

Note: Xerces (specifically) never skips any entities, regardless + * of the above features. This function is never called in the + * Xerces implementation of SAX2.

+ * + *

Introduced with SAX2

+ * + * @param name The name of the skipped entity. If it is a parameter entity, + * the name will begin with %, and if it is the external DTD subset, + * it will be the string [dtd]. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void skippedEntity + ( + const XMLCh* const name + ); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the ErrorHandler interface + // ----------------------------------------------------------------------- + /** @name The error handler interface */ + //@{ + /** + * Receive notification of a warning. + * + *

SAX parsers will use this method to report conditions that + * are not errors or fatal errors as defined by the XML 1.0 + * recommendation. The default behaviour is to take no action.

+ * + *

The SAX parser must continue to provide normal parsing events + * after invoking this method: it should still be possible for the + * application to process the document through to the end.

+ * + * @param exc The warning information encapsulated in a + * SAX parse exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see SAXParseException#SAXParseException + */ + virtual void warning(const SAXParseException& exc); + + /** + * Receive notification of a recoverable error. + * + *

This corresponds to the definition of "error" in section 1.2 + * of the W3C XML 1.0 Recommendation. For example, a validating + * parser would use this callback to report the violation of a + * validity constraint. The default behaviour is to take no + * action.

+ * + *

The SAX parser must continue to provide normal parsing events + * after invoking this method: it should still be possible for the + * application to process the document through to the end. If the + * application cannot do so, then the parser should report a fatal + * error even if the XML 1.0 recommendation does not require it to + * do so.

+ * + * @param exc The error information encapsulated in a + * SAX parse exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see SAXParseException#SAXParseException + */ + virtual void error(const SAXParseException& exc); + + /** + * Receive notification of a non-recoverable error. + * + *

This corresponds to the definition of "fatal error" in + * section 1.2 of the W3C XML 1.0 Recommendation. For example, a + * parser would use this callback to report the violation of a + * well-formedness constraint.

+ * + *

The application must assume that the document is unusable + * after the parser has invoked this method, and should continue + * (if at all) only for the sake of collecting addition error + * messages: in fact, SAX parsers are free to stop reporting any + * other events once this method has been invoked.

+ * + * @param exc The error information encapsulated in a + * SAX parse exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see SAXParseException#SAXParseException + */ + virtual void fatalError(const SAXParseException& exc); + + /** + * Reset the Error handler object on its reuse + * + *

This method helps in reseting the Error handler object + * implementation defaults each time the Error handler is begun.

+ * + */ + virtual void resetErrors(); + + //@} + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SAX2XMLFilterImpl(const SAX2XMLFilterImpl&); + SAX2XMLFilterImpl& operator=(const SAX2XMLFilterImpl&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fParentReader + // The object that we are filtering + // + // fDocHandler + // The installed SAX content handler, if any. Null if none. + // + // fDTDHandler + // The installed SAX DTD handler, if any. Null if none. + // + // fEntityResolver + // The installed SAX entity handler, if any. Null if none. + // + // fErrorHandler + // The installed SAX error handler, if any. Null if none. + // + // ----------------------------------------------------------------------- + SAX2XMLReader* fParentReader; + ContentHandler* fDocHandler; + DTDHandler* fDTDHandler; + EntityResolver* fEntityResolver; + ErrorHandler* fErrorHandler; +}; + + +// --------------------------------------------------------------------------- +// SAX2XMLReader: Getter methods +// --------------------------------------------------------------------------- +inline SAX2XMLReader* SAX2XMLFilterImpl::getParent() const +{ + return fParentReader; +} + +inline ContentHandler* SAX2XMLFilterImpl::getContentHandler() const +{ + return fDocHandler; +} + +inline DTDHandler* SAX2XMLFilterImpl::getDTDHandler() const +{ + return fDTDHandler; +} + +inline EntityResolver* SAX2XMLFilterImpl::getEntityResolver() const +{ + return fEntityResolver; +} + +inline ErrorHandler* SAX2XMLFilterImpl::getErrorHandler() const +{ + return fErrorHandler; +} + +inline LexicalHandler* SAX2XMLFilterImpl::getLexicalHandler() const +{ + return 0; +} + +inline DeclHandler* SAX2XMLFilterImpl::getDeclarationHandler() const +{ + return 0; +} + +inline void SAX2XMLFilterImpl::setContentHandler(ContentHandler* const handler) +{ + fDocHandler = handler; +} + +inline void SAX2XMLFilterImpl::setDTDHandler(DTDHandler* const handler) +{ + fDTDHandler = handler; +} + +inline void SAX2XMLFilterImpl::setErrorHandler(ErrorHandler* const handler) +{ + fErrorHandler = handler; +} + +inline void SAX2XMLFilterImpl::setEntityResolver(EntityResolver* const resolver) +{ + fEntityResolver = resolver; +} + +inline void SAX2XMLFilterImpl::setLexicalHandler(LexicalHandler* const /*handler*/) +{ +} + +inline void SAX2XMLFilterImpl::setDeclarationHandler(DeclHandler* const /*handler*/) +{ +} + +inline void SAX2XMLFilterImpl::installAdvDocHandler(XMLDocumentHandler* const /*toInstall*/) +{ +} + +inline bool SAX2XMLFilterImpl::removeAdvDocHandler(XMLDocumentHandler* const /*toRemove*/) +{ + return false; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/parsers/SAX2XMLReaderImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/parsers/SAX2XMLReaderImpl.hpp new file mode 100644 index 000000000000..dcac0b7729f3 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/parsers/SAX2XMLReaderImpl.hpp @@ -0,0 +1,1749 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SAX2XMLREADERIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_SAX2XMLREADERIMPL_HPP + +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class ContentHandler; +class LexicalHandler; +class DeclHandler; +class GrammarResolver; +class XMLGrammarPool; +class XMLResourceIdentifier; +class PSVIHandler; + +/** + * This class implements the SAX2 'XMLReader' interface and should be + * used by applications wishing to parse the XML files using SAX2. + * It allows the client program to install SAX2 handlers for event + * callbacks. + * + *

It can be used to instantiate a validating or non-validating + * parser, by setting a member flag.

+ * + * we basically re-use the existing SAX1 parser code, but provide a + * new implementation of XMLContentHandler that raises the new + * SAX2 style events + * + */ + +class PARSERS_EXPORT SAX2XMLReaderImpl : + public XMemory + , public SAX2XMLReader + , public XMLDocumentHandler + , public XMLErrorReporter + , public XMLEntityHandler + , public DocTypeHandler +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** The default constructor */ + SAX2XMLReaderImpl( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , XMLGrammarPool* const gramPool = 0 + ); + + /** The destructor */ + ~SAX2XMLReaderImpl() ; + //@} + + //----------------------------------------------------------------------- + // Implementation of SAX2XMLReader Interface + //----------------------------------------------------------------------- + //----------------------------------------------------------------------- + // The XMLReader interface + //----------------------------------------------------------------------- + /** @name Implementation of SAX 2.0 XMLReader interface's. */ + //@{ + + /** + * This method returns the installed content handler. + * + * @return A pointer to the installed content handler object. + */ + virtual ContentHandler* getContentHandler() const ; + + /** + * This method returns the installed DTD handler. + * + * @return A pointer to the installed DTD handler object. + */ + virtual DTDHandler* getDTDHandler() const ; + + /** + * This method returns the installed entity resolver. + * + * @return A pointer to the installed entity resolver object. + */ + virtual EntityResolver* getEntityResolver() const ; + + /** + * This method returns the installed entity resolver. + * + * @return A pointer to the installed entity resolver object. + */ + virtual XMLEntityResolver* getXMLEntityResolver() const ; + + /** + * This method returns the installed error handler. + * + * @return A pointer to the installed error handler object. + */ + virtual ErrorHandler* getErrorHandler() const ; + + /** + * This method returns the installed PSVI handler. + * + * @return A pointer to the installed PSVI handler object. + */ + virtual PSVIHandler* getPSVIHandler() const ; + + /** + * Query the current state of any feature in a SAX2 XMLReader. + * + * @param name The unique identifier (URI) of the feature being set. + * @return The current state of the feature. + * @exception SAXNotRecognizedException If the requested feature is not known. + */ + virtual bool getFeature(const XMLCh* const name) const ; + + /** + * Query the current value of a property in a SAX2 XMLReader. + * + * The parser owns the returned pointer. The memory allocated for + * the returned pointer will be destroyed when the parser is deleted. + * + * To ensure accessibility of the returned information after the parser + * is deleted, callers need to copy and store the returned information + * somewhere else; otherwise you may get unexpected result. Since the returned + * pointer is a generic void pointer, see the SAX2 Programming Guide to learn + * exactly what type of property value each property returns for replication. + * + * @param name The unique identifier (URI) of the property being set. + * @return The current value of the property. The pointer spans the same + * life-time as the parser. A null pointer is returned if nothing + * was specified externally. + * @exception SAXNotRecognizedException If the requested property is not known. + */ + virtual void* getProperty(const XMLCh* const name) const ; + + /** + * Allow an application to register a document event handler. + * + * If the application does not register a document handler, all + * document events reported by the SAX parser will be silently + * ignored (this is the default behaviour implemented by + * HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The document handler. + * @see DocumentHandler#DocumentHandler + * @see HandlerBase#HandlerBase + */ + virtual void setContentHandler(ContentHandler* const handler) ; + + /** + * Allow an application to register a DTD event handler. + * + * If the application does not register a DTD handler, all DTD + * events reported by the SAX parser will be silently ignored (this + * is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the middle + * of a parse, and the SAX parser must begin using the new handler + * immediately. + * + * @param handler The DTD handler. + * @see DTDHandler#DTDHandler + * @see HandlerBase#HandlerBase + */ + virtual void setDTDHandler(DTDHandler* const handler) ; + + /** + * Allow an application to register a custom entity resolver. + * + * If the application does not register an entity resolver, the + * SAX parser will resolve system identifiers and open connections + * to entities itself (this is the default behaviour implemented in + * DefaultHandler). + * + * Applications may register a new or different entity resolver + * in the middle of a parse, and the SAX parser must begin using + * the new resolver immediately. + * + * Any previously set entity resolver is merely dropped, since the parser + * does not own them. If both setEntityResolver and setXMLEntityResolver + * are called, then the last one is used. + * + * @param resolver The object for resolving entities. + * @see EntityResolver#EntityResolver + * @see DefaultHandler#DefaultHandler + */ + virtual void setEntityResolver(EntityResolver* const resolver) ; + + /** Set the entity resolver + * + * This method allows applications to install their own entity + * resolver. By installing an entity resolver, the applications + * can trap and potentially redirect references to external + * entities. + * + * Any previously set entity resolver is merely dropped, since the parser + * does not own them. If both setEntityResolver and setXMLEntityResolver + * are called, then the last one is used. + * + * @param resolver A const pointer to the user supplied entity + * resolver. + * + * @see #getXMLEntityResolver + */ + virtual void setXMLEntityResolver(XMLEntityResolver* const resolver) ; + + /** + * Allow an application to register an error event handler. + * + * If the application does not register an error event handler, + * all error events reported by the SAX parser will be silently + * ignored, except for fatalError, which will throw a SAXException + * (this is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The error handler. + * @see ErrorHandler#ErrorHandler + * @see SAXException#SAXException + * @see HandlerBase#HandlerBase + */ + virtual void setErrorHandler(ErrorHandler* const handler) ; + + /** + * This method installs the user specified PSVI handler on + * the parser. + * + * @param handler A pointer to the PSVI handler to be called + * when the parser comes across 'PSVI' events + * as per the schema specification. + */ + virtual void setPSVIHandler(PSVIHandler* const handler); + + /** + * Set the state of any feature in a SAX2 XMLReader. + * Supported features in SAX2 for xerces-c are: + *
(See the SAX2 Programming Guide for detail description). + * + *
http://xml.org/sax/features/validation (default: false) + *
http://xml.org/sax/features/namespaces (default: true) + *
http://xml.org/sax/features/namespace-prefixes (default: false) + *
http://apache.org/xml/features/validation/dynamic (default: false) + *
http://apache.org/xml/features/validation/reuse-grammar (default: false) + *
http://apache.org/xml/features/validation/schema (default: true) + *
http://apache.org/xml/features/validation/schema-full-checking (default: false) + *
http://apache.org/xml/features/validating/load-schema (default: true) + *
http://apache.org/xml/features/nonvalidating/load-external-dtd (default: true) + *
http://apache.org/xml/features/continue-after-fatal-error (default: false) + *
http://apache.org/xml/features/validation-error-as-fatal (default: false) + * + * @param name The unique identifier (URI) of the feature. + * @param value The requested state of the feature (true or false). + * @exception SAXNotRecognizedException If the requested feature is not known. + * @exception SAXNotSupportedException Feature modification is not supported during parse + * + */ + virtual void setFeature(const XMLCh* const name, const bool value) ; + + /** + * Set the value of any property in a SAX2 XMLReader. + * Supported properties in SAX2 for xerces-c are: + *
(See the SAX2 Programming Guide for detail description). + * + *
http://apache.org/xml/properties/schema/external-schemaLocation + *
http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation. + * + * It takes a void pointer as the property value. Application is required to initialize this void + * pointer to a correct type. See the SAX2 Programming Guide + * to learn exactly what type of property value each property expects for processing. + * Passing a void pointer that was initialized with a wrong type will lead to unexpected result. + * If the same property is set more than once, the last one takes effect. + * + * @param name The unique identifier (URI) of the property being set. + * @param value The requested value for the property. See + * the SAX2 Programming Guide to learn + * exactly what type of property value each property expects for processing. + * Passing a void pointer that was initialized with a wrong type will lead + * to unexpected result. + * @exception SAXNotRecognizedException If the requested property is not known. + * @exception SAXNotSupportedException Property modification is not supported during parse + */ + virtual void setProperty(const XMLCh* const name, void* value) ; + + /** + * Parse an XML document. + * + * The application can use this method to instruct the SAX parser + * to begin parsing an XML document from any valid input + * source (a character stream, a byte stream, or a URI). + * + * Applications may not invoke this method while a parse is in + * progress (they should create a new Parser instead for each + * additional XML document). Once a parse is complete, an + * application may reuse the same Parser object, possibly with a + * different input source. + * + * @param source The input source for the top-level of the + * XML document. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see InputSource#InputSource + * @see #setEntityResolver + * @see #setDTDHandler + * @see #setDocumentHandler + * @see #setErrorHandler + */ + virtual void parse + ( + const InputSource& source + ) ; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(InputSource) + */ + virtual void parse + ( + const XMLCh* const systemId + ) ; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(InputSource) + */ + virtual void parse + ( + const char* const systemId + ) ; + + //@} + + // ----------------------------------------------------------------------- + // SAX 2.0-ext + // ----------------------------------------------------------------------- + /** @name SAX 2.0-ext */ + //@{ + /** + * This method returns the installed declaration handler. + * + * @return A pointer to the installed declaration handler object. + */ + virtual DeclHandler* getDeclarationHandler() const ; + + /** + * This method returns the installed lexical handler. + * + * @return A pointer to the installed lexical handler object. + */ + virtual LexicalHandler* getLexicalHandler() const ; + + /** + * Allow an application to register a declaration event handler. + * + * If the application does not register a declaration handler, + * all events reported by the SAX parser will be silently + * ignored. (this is the default behaviour implemented by DefaultHandler). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The DTD declaration handler. + * @see DeclHandler#DeclHandler + * @see SAXException#SAXException + * @see DefaultHandler#DefaultHandler + */ + virtual void setDeclarationHandler(DeclHandler* const handler) ; + + /** + * Allow an application to register a lexical event handler. + * + * If the application does not register a lexical handler, + * all events reported by the SAX parser will be silently + * ignored. (this is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The error handler. + * @see LexicalHandler#LexicalHandler + * @see SAXException#SAXException + * @see HandlerBase#HandlerBase + */ + virtual void setLexicalHandler(LexicalHandler* const handler) ; + + //@} + + // ----------------------------------------------------------------------- + // Getter Methods + // ----------------------------------------------------------------------- + /** @name Getter Methods (Xerces-C specific) */ + //@{ + /** + * This method is used to get the current validator. + * + * SAX2XMLReader assumes responsibility for the validator. It will be + * deleted when the XMLReader is destroyed. + * + * @return A pointer to the validator. An application should not deleted + * the object returned. + * + */ + virtual XMLValidator* getValidator() const ; + //@} + + /** Get error count from the last parse operation. + * + * This method returns the error count from the last parse + * operation. Note that this count is actually stored in the + * scanner, so this method simply returns what the + * scanner reports. + * + * @return number of errors encountered during the latest + * parse operation. + */ + virtual XMLSize_t getErrorCount() const ; + + /** + * This method returns the state of the parser's + * exit-on-First-Fatal-Error flag. + * + *

Or you can query the feature "http://apache.org/xml/features/continue-after-fatal-error" + * which indicates the opposite state.

+ * + * @return true, if the parser is currently configured to + * exit on the first fatal error, false otherwise. + * + * @see #setExitOnFirstFatalError + * @see #getFeature + */ + virtual bool getExitOnFirstFatalError() const ; + + /** + * This method returns the state of the parser's + * validation-constraint-fatal flag. + * + *

Or you can query the feature "http://apache.org/xml/features/validation-error-as-fatal" + * which means the same thing. + * + * @return true, if the parser is currently configured to + * set validation constraint errors as fatal, false + * otherwise. + * + * @see #setValidationContraintFatal + * @see #getFeature + */ + virtual bool getValidationConstraintFatal() const ; + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param nameSpaceKey Namespace key + * @return Grammar associated with the Namespace key. + */ + virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey); + + /** + * Retrieve the grammar where the root element is declared. + * + * @return Grammar where root element declared + */ + virtual Grammar* getRootGrammar(); + + /** + * Returns the string corresponding to a URI id from the URI string pool. + * + * @param uriId id of the string in the URI string pool. + * @return URI string corresponding to the URI id. + */ + virtual const XMLCh* getURIText(unsigned int uriId) const; + + /** + * Returns the current src offset within the input source. + * To be used only while parsing is in progress. + * + * @return offset within the input source + */ + virtual XMLFilePos getSrcOffset() const; + + //@} + + // ----------------------------------------------------------------------- + // Setter Methods + // ----------------------------------------------------------------------- + /** @name Setter Methods (Xerces-C specific) */ + //@{ + /** + * This method is used to set a validator. + * + * SAX2XMLReader assumes responsibility for the validator. It will be + * deleted when the XMLReader is destroyed. + * + * @param valueToAdopt A pointer to the validator that the reader should use. + * + */ + virtual void setValidator(XMLValidator* valueToAdopt) ; + + /** + * This method allows users to set the parser's behaviour when it + * encounters the first fatal error. If set to true, the parser + * will exit at the first fatal error. If false, then it will + * report the error and continue processing. + * + *

The default value is 'true' and the parser exits on the + * first fatal error.

+ * + *

Or you can set the feature "http://apache.org/xml/features/continue-after-fatal-error" + * which has the opposite behaviour.

+ * + *

If both the feature above and this function are used, the latter takes effect.

+ * + * @param newState The value specifying whether the parser should + * continue or exit when it encounters the first + * fatal error. + * + * @see #getExitOnFirstFatalError + * @see #setFeature + */ + virtual void setExitOnFirstFatalError(const bool newState) ; + + /** + * This method allows users to set the parser's behaviour when it + * encounters a validation constraint error. If set to true, and the + * the parser will treat validation error as fatal and will exit depends on the + * state of "getExitOnFirstFatalError". If false, then it will + * report the error and continue processing. + * + * Note: setting this true does not mean the validation error will be printed with + * the word "Fatal Error". It is still printed as "Error", but the parser + * will exit if "setExitOnFirstFatalError" is set to true. + * + *

The default value is 'false'.

+ * + *

Or you can set the feature "http://apache.org/xml/features/validation-error-as-fatal" + * which means the same thing.

+ * + *

If both the feature above and this function are used, the latter takes effect.

+ * + * @param newState If true, the parser will exit if "setExitOnFirstFatalError" + * is set to true. + * + * @see #getValidationConstraintFatal + * @see #setExitOnFirstFatalError + * @see #setFeature + */ + virtual void setValidationConstraintFatal(const bool newState) ; + //@} + + + // ----------------------------------------------------------------------- + // Progressive scan methods + // ----------------------------------------------------------------------- + + /** @name Progressive scan methods */ + //@{ + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a Unicode string representing the path + * to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could parse the + * prolog (which means the token will not be valid.) + * + * @see #parseNext + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseFirst + ( + const XMLCh* const systemId + , XMLPScanToken& toFill + ) ; + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a regular native string representing + * the path to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseFirst + ( + const char* const systemId + , XMLPScanToken& toFill + ) ; + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param source A const reference to the InputSource object which + * points to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + */ + virtual bool parseFirst + ( + const InputSource& source + , XMLPScanToken& toFill + ) ; + + /** Continue a progressive parse operation + * + * This method is used to continue with progressive parsing of + * XML files started by a call to 'parseFirst' method. + * + * It parses the XML file and stops as soon as it comes across + * a XML token (as defined in the XML specification). Relevant + * callback handlers are invoked as required by the SAX + * specification. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the next XML token. + * It indicates the user can go ahead with parsing the rest + * of the file. It returns 'false' to indicate that the parser + * could not find next token as per the XML specification + * production rule. + * + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseNext(XMLPScanToken& token) ; + + /** Reset the parser after a progressive parse + * + * If a progressive parse loop exits before the end of the document + * is reached, the parser has no way of knowing this. So it will leave + * open any files or sockets or memory buffers that were in use at + * the time that the parse loop exited. + * + * The next parse operation will cause these open files and such to + * be closed, but the next parse operation might occur at some unknown + * future point. To avoid this problem, you should reset the parser if + * you exit the loop early. + * + * If you exited because of an error, then this cleanup will be done + * for you. Its only when you exit the file prematurely of your own + * accord, because you've found what you wanted in the file most + * likely. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + */ + virtual void parseReset(XMLPScanToken& token) ; + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the grammar preparsing interface + // ----------------------------------------------------------------------- + + /** @name Implementation of Grammar preparsing interface's. */ + //@{ + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via an input source + * object. + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the SAX InputSource parameter. + * + * + * @param source A const reference to the SAX InputSource object which + * points to the schema grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * + * @see InputSource#InputSource + */ + virtual Grammar* loadGrammar(const InputSource& source, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. + * + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML grammar file to be + * preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const XMLCh* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. + * + * + * @param systemId A const char pointer to a native string which contains + * the path to the XML grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const char* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Clear the cached grammar pool + */ + virtual void resetCachedGrammarPool(); + + /** Set maximum input buffer size + * + * This method allows users to limit the size of buffers used in parsing + * XML character data. The effect of setting this size is to limit the + * size of a ContentHandler::characters() call. + * + * The parser's default input buffer size is 1 megabyte. + * + * @param bufferSize The maximum input buffer size + */ + virtual void setInputBufferSize(const XMLSize_t bufferSize); + + //@} + + + // ----------------------------------------------------------------------- + // Advanced document handler list maintenance methods + // ----------------------------------------------------------------------- + + /** @name Advanced document handler list maintenance methods */ + //@{ + /** + * This method installs the specified 'advanced' document callback + * handler, thereby allowing the user to customize the processing, + * if they choose to do so. Any number of advanced callback handlers + * maybe installed. + * + *

The methods in the advanced callback interface represent + * Xerces-C extensions. There is no specification for this interface.

+ * + * @param toInstall A pointer to the users advanced callback handler. + * + * @see #removeAdvDocHandler + */ + virtual void installAdvDocHandler(XMLDocumentHandler* const toInstall) ; + + /** + * This method removes the 'advanced' document handler callback from + * the underlying parser scanner. If no handler is installed, advanced + * callbacks are not invoked by the scanner. + * @param toRemove A pointer to the advanced callback handler which + * should be removed. + * + * @see #installAdvDocHandler + */ + virtual bool removeAdvDocHandler(XMLDocumentHandler* const toRemove) ; + //@} + + // ----------------------------------------------------------------------- + // Implementation of the XMLDocumentHandler interface + // ----------------------------------------------------------------------- + /** @name Implementation of the XMLDocumentHandler Interface. */ + //@{ + /** + * This method is used to report all the characters scanned + * by the parser. The driver will invoke the 'characters' + * method of the user installed SAX Document Handler. + * + *

If any advanced callback handlers are installed, the + * corresponding 'docCharacters' method will also be invoked.

+ * + * @param chars A const pointer to a Unicode string representing the + * character data. + * @param length The length of the Unicode string returned in 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + * @see DocumentHandler#characters + */ + virtual void docCharacters + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + /** + * This method is used to report any comments scanned by the parser. + * This method is a no-op unless, unless an advanced callback handler + * is installed, in which case the corresponding 'docComment' method + * is invoked. + * + * @param comment A const pointer to a null terminated Unicode + * string representing the comment text. + */ + virtual void docComment + ( + const XMLCh* const comment + ); + + /** + * This method is used to report any PI scanned by the parser. + * + *

Any PI's occurring before any 'content' are not reported + * to any SAX handler as per the specification. However, all + * PI's within content are reported via the SAX Document Handler's + * 'processingInstruction' method. + * + *

If any advanced callback handlers are installed, the + * corresponding 'docPI' method will be invoked.

+ * + * @param target A const pointer to a Unicode string representing the + * target of the PI declaration. + * @param data A const pointer to a Unicode string representing the + * data of the PI declaration. See the PI production rule + * in the XML specification for details. + * + * @see DocumentHandler#processingInstruction + */ + virtual void docPI + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** + * This method is used to indicate the end of root element + * was just scanned by the parser. Corresponding 'endDocument' + * method of the user installed SAX Document Handler will also + * be invoked. + * + *

In addition, if any advanced callback handlers are installed, + * the corresponding 'endDocument' method is invoked.

+ * + * @see DocumentHandler#endDocument + */ + virtual void endDocument(); + + /** + * This method is used to indicate the end tag of an element. + * The driver will invoke the corresponding 'endElement' method of + * the SAX Document Handler interface. + * + *

If any advanced callback handlers are installed, the + * corresponding 'endElement' method is also invoked.

+ * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param isRoot A flag indicating whether this element was the + * root element. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + * @see DocumentHandler#endElement + */ + virtual void endElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const bool isRoot + , const XMLCh* const elemPrefix=0 + ); + + /** + * This method is used to indicate that an end of an entity reference + * was just scanned. + * + *

If any advanced callback handlers are installed, the + * corresponding 'endEntityReference' method is invoked.

+ * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void endEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** + * This method is used to report all the whitespace characters, + * which are determined to be 'ignorable'. This distinction + * between characters is only made, if validation is enabled. + * Corresponding 'ignorableWhitespace' method of the user installed + * SAX Document Handler interface is called. + * + *

Any whitespace before content is not reported to the SAX + * Document Handler method, as per the SAX specification. + * However, if any advanced callback handlers are installed, the + * corresponding 'ignorableWhitespace' method is invoked.

+ * + * @param chars A const pointer to a Unicode string representing the + * ignorable whitespace character data. + * @param length The length of the Unicode string 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + * @see DocumentHandler#ignorableWhitespace + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + /** + * This method allows the user installed Document Handler and + * any advanced callback handlers to 'reset' themselves. + */ + virtual void resetDocument(); + + /** + * This method is used to report the start of the parsing process. + * The corresponding user installed SAX Document Handler's method + * 'startDocument' is invoked. + * + *

If any advanced callback handlers are installed, then the + * corresponding 'startDocument' method is also called.

+ * + * @see DocumentHandler#startDocument + */ + virtual void startDocument(); + + /** + * This method is used to report the start of an element. It is + * called at the end of the element, by which time all attributes + * specified are also parsed. The corresponding user installed + * SAX Document Handler's method 'startElement' is invoked. + * + *

If any advanced callback handlers are installed, then the + * corresponding 'startElement' method is also called.

+ * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + * @param attrList A const reference to the object containing the + * list of attributes just scanned for this element. + * @param attrCount A count of number of attributes in the list + * specified by the parameter 'attrList'. + * @param isEmpty A flag indicating whether this is an empty element + * or not. + * @param isRoot A flag indicating whether this element was the + * root element. + * @see DocumentHandler#startElement + */ + virtual void startElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const XMLCh* const elemPrefix + , const RefVectorOf& attrList + , const XMLSize_t attrCount + , const bool isEmpty + , const bool isRoot + ); + + /** + * This method is used to indicate the start of an entity reference. + * + *

If any advanced callback handlers are installed, the + * corresponding 'endEntityReference' method is invoked.

+ * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void startEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** + * This method is used to report the XML decl scanned by the parser. + * Refer to the XML specification to see the meaning of parameters. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param versionStr A const pointer to a Unicode string representing + * version string value. + * @param encodingStr A const pointer to a Unicode string representing + * the encoding string value. + * @param standaloneStr A const pointer to a Unicode string + * representing the standalone string value. + * @param actualEncodingStr A const pointer to a Unicode string + * representing the actual encoding string + * value. + */ + virtual void XMLDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + , const XMLCh* const standaloneStr + , const XMLCh* const actualEncodingStr + ); + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the XMLErrorReporter interface + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLErrorReporter Interface. */ + //@{ + /** + * This method is used to report back errors found while parsing the + * XML file. The driver will call the corresponding user installed + * SAX Error Handler methods: 'fatal', 'error', 'warning' depending + * on the severity of the error. This classification is defined by + * the XML specification. + * + * @param errCode An integer code for the error. + * @param msgDomain A const pointer to an Unicode string representing + * the message domain to use. + * @param errType An enumeration classifying the severity of the error. + * @param errorText A const pointer to an Unicode string representing + * the text of the error message. + * @param systemId A const pointer to an Unicode string representing + * the system id of the XML file where this error + * was discovered. + * @param publicId A const pointer to an Unicode string representing + * the public id of the XML file where this error + * was discovered. + * @param lineNum The line number where the error occurred. + * @param colNum The column number where the error occurred. + * @see ErrorHandler + */ + virtual void error + ( + const unsigned int errCode + , const XMLCh* const msgDomain + , const XMLErrorReporter::ErrTypes errType + , const XMLCh* const errorText + , const XMLCh* const systemId + , const XMLCh* const publicId + , const XMLFileLoc lineNum + , const XMLFileLoc colNum + ); + + /** + * This method allows the user installed Error Handler + * callback to 'reset' itself. + * + * This method is a no-op for this SAX driver + * implementation. + * + */ + virtual void resetErrors(); + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the XMLEntityHandler interface + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLEntityHandler Interface. */ + //@{ + /** + * This method is used to indicate the end of parsing of an external + * entity file. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the XML file being parsed. + * @see InputSource + */ + virtual void endInputSource(const InputSource& inputSource); + + /** + * This method allows an installed XMLEntityHandler to further + * process any system id's of external entities encountered in + * the XML file being parsed, such as redirection etc. + * + * This method always returns 'false' + * for this SAX driver implementation. + * + * @param systemId A const pointer to an Unicode string representing + * the system id scanned by the parser. + * @param toFill A pointer to a buffer in which the application + * processed system id is stored. + * @return 'true', if any processing is done, 'false' otherwise. + */ + virtual bool expandSystemId + ( + const XMLCh* const systemId + , XMLBuffer& toFill + ); + + /** + * This method allows the installed XMLEntityHandler to reset + * itself. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void resetEntities(); + + /** Resolve a public/system id + * + * This method allows a user installed entity handler to further + * process any pointers to external entities. The applications can + * implement 'redirection' via this callback. + * + * @param resourceIdentifier An object containing the type of + * resource to be resolved and the associated data members + * corresponding to this type. + * @return The value returned by the user installed resolveEntity + * method or NULL otherwise to indicate no processing was done. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @see XMLEntityHandler + * @see XMLEntityResolver + */ + virtual InputSource* resolveEntity + ( + XMLResourceIdentifier* resourceIdentifier + ); + + /** + * This method is used to indicate the start of parsing an + * external entity file. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the external entity + * being parsed. + */ + virtual void startInputSource(const InputSource& inputSource); + //@} + + // ----------------------------------------------------------------------- + // Implementation of the Deprecated DocTypeHandler Interface + // ----------------------------------------------------------------------- + + /** @name Implementation of the deprecated DocTypeHandler Interface */ + //@{ + /** + * This method is used to report an attribute definition. + * + * This method is a no-op for this SAX + * driver implementation. + * + * @param elemDecl A const reference to the object containing information + * about the element whose attribute definition was just + * parsed. + * @param attDef A const reference to the object containing information + * attribute definition. + * @param ignore The flag indicating whether this attribute definition + * was ignored by the parser or not. + */ + virtual void attDef + ( + const DTDElementDecl& elemDecl + , const DTDAttDef& attDef + , const bool ignoring + ); + + /** + * This method is used to report a comment occurring within the DTD. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param comment A const pointer to a Unicode string representing the + * text of the comment just parsed. + */ + virtual void doctypeComment + ( + const XMLCh* const comment + ); + + /** + * This method is used to report the DOCTYPE declaration. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param elemDecl A const reference to the object containing information + * about the root element definition declaration of the + * XML document being parsed. + * @param publicId A const pointer to a Unicode string representing the + * public id of the DTD file. + * @param systemId A const pointer to a Unicode string representing the + * system id of the DTD file. + * @param hasIntSubset A flag indicating if this XML file contains any + * internal subset. + * @param hasExtSubset A flag indicating if this XML file contains any + * external subset. Default is false. + */ + virtual void doctypeDecl + ( + const DTDElementDecl& elemDecl + , const XMLCh* const publicId + , const XMLCh* const systemId + , const bool hasIntSubset + , const bool hasExtSubset = false + ); + + /** + * This method is used to report any PI declarations + * occurring inside the DTD definition block. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param target A const pointer to a Unicode string representing the + * target of the PI declaration. + * @param data A const pointer to a Unicode string representing the + * data of the PI declaration. See the PI production rule + * in the XML specification for details. + */ + virtual void doctypePI + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** + * This method is used to report any whitespaces + * occurring inside the DTD definition block. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param chars A const pointer to a Unicode string representing the + * whitespace characters. + * @param length The length of the whitespace Unicode string. + */ + virtual void doctypeWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * This method is used to report an element declarations + * successfully scanned by the parser. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param decl A const reference to the object containing element + * declaration information. + * @param isIgnored The flag indicating whether this definition was + * ignored by the parser or not. + */ + virtual void elementDecl + ( + const DTDElementDecl& decl + , const bool isIgnored + ); + + /** + * This method is used to report the end of an attribute + * list declaration for an element. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param elemDecl A const reference to the object containing element + * declaration information. + */ + virtual void endAttList + ( + const DTDElementDecl& elemDecl + ); + + /** + * This method is used to report the end of the internal subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void endIntSubset(); + + /** + * This method is used to report the end of the external subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void endExtSubset(); + + /** + * This method is used to report any entity declarations. + * For unparsed entities, this driver will invoke the + * SAX DTDHandler::unparsedEntityDecl callback. + * + * @param entityDecl A const reference to the object containing + * the entity declaration information. + * @param isPEDecl The flag indicating whether this was a + * parameter entity declaration or not. + * @param isIgnored The flag indicating whether this definition + * was ignored by the parser or not. + * + * @see DTDHandler#unparsedEntityDecl + */ + virtual void entityDecl + ( + const DTDEntityDecl& entityDecl + , const bool isPEDecl + , const bool isIgnored + ); + + /** + * This method allows the user installed DTD handler to + * reset itself. + */ + virtual void resetDocType(); + + /** + * This method is used to report any notation declarations. + * If there is a user installed DTDHandler, then the driver will + * invoke the SAX DTDHandler::notationDecl callback. + * + * @param notDecl A const reference to the object containing the notation + * declaration information. + * @param isIgnored The flag indicating whether this definition was ignored + * by the parser or not. + * + * @see DTDHandler#notationDecl + */ + virtual void notationDecl + ( + const XMLNotationDecl& notDecl + , const bool isIgnored + ); + + /** + * This method is used to indicate the start of an element's attribute + * list declaration. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param elemDecl A const reference to the object containing element + * declaration information. + */ + virtual void startAttList + ( + const DTDElementDecl& elemDecl + ); + + /** + * This method is used indicate the start of the internal subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void startIntSubset(); + + /** + * This method is used indicate the start of the external subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void startExtSubset(); + + /** + * This method is used to report the TextDecl. Refer to the XML + * specification for the syntax of a TextDecl. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param versionStr A const pointer to a Unicode string representing + * the version number of the 'version' clause. + * @param encodingStr A const pointer to a Unicode string representing + * the encoding name of the 'encoding' clause. + */ + virtual void TextDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + ); + //@} + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SAX2XMLReaderImpl(const SAX2XMLReaderImpl&); + SAX2XMLReaderImpl& operator=(const SAX2XMLReaderImpl&); + + // ----------------------------------------------------------------------- + // Initialize/Cleanup methods + // ----------------------------------------------------------------------- + void initialize(); + void cleanUp(); + void resetInProgress(); + + // ----------------------------------------------------------------------- + // Private data members + // + // fAttrList + // A temporary implementation of the basic SAX2 Attributes + // interface. We use this one over and over on each startElement + // event to allow SAX-like access to the element attributes. + // + // fDocHandler + // The installed SAX content handler, if any. Null if none. + // + // fnamespacePrefix + // Indicates whether the namespace-prefix feature is on or off. + // + // fautoValidation + // Indicates whether automatic validation is on or off + // + // fValidation + // Indicates whether the 'validation' core features is on or off + // + // fReuseGrammar + // Tells the parser whether it should reuse the grammar or not. + // If true, there cannot be any internal subset. + // + // fPrefixesStorage + // the namespace prefixes will be allocated from this pool + // + // fPrefixes + // A Stack of the current namespace prefixes that need calls to + // endPrefixMapping + // + // fPrefixCounts + // A Stack of the number of prefixes that need endPrefixMapping + // calls for that element + // + // fDTDHandler + // The installed SAX DTD handler, if any. Null if none. + // + // fElemDepth + // This is used to track the element nesting depth, so that we can + // know when we are inside content. This is so we can ignore char + // data outside of content. + // + // fEntityResolver + // The installed SAX entity handler, if any. Null if none. + // + // fErrorHandler + // The installed SAX error handler, if any. Null if none. + // + // fLexicalHandler + // The installed SAX lexical handler, if any. Null if none. + // + // fDecllHandler + // The installed SAX declaration handler, if any. Null if none. + // + // fAdvDHCount + // fAdvDHList + // fAdvDHListSize + // This is an array of pointers to XMLDocumentHandlers, which is + // how we see installed advanced document handlers. There will + // usually not be very many at all, so a simple array is used + // instead of a collection, for performance. It will grow if needed, + // but that is unlikely. + // + // The count is how many handlers are currently installed. The size + // is how big the array itself is (for expansion purposes.) When + // count == size, is time to expand. + // + // fParseInProgress + // This flag is set once a parse starts. It is used to prevent + // multiple entrance or reentrance of the parser. + // + // fScanner + // The scanner being used by this parser. It is created internally + // during construction. + // + // fHasExternalSubset + // Indicate if the document has external DTD subset. + // + // fGrammarPool + // The grammar pool passed from external application (through derivatives). + // which could be 0, not owned. + // + // ----------------------------------------------------------------------- + bool fNamespacePrefix; + bool fAutoValidation; + bool fValidation; + bool fParseInProgress; + bool fHasExternalSubset; + XMLSize_t fElemDepth; + XMLSize_t fAdvDHCount; + XMLSize_t fAdvDHListSize; + VecAttributesImpl fAttrList ; + ContentHandler* fDocHandler ; + RefVectorOf* fTempAttrVec ; + XMLStringPool* fPrefixesStorage ; + ValueStackOf* fPrefixes ; + ValueStackOf* fPrefixCounts ; + XMLBuffer* fTempQName; + DTDHandler* fDTDHandler; + EntityResolver* fEntityResolver; + XMLEntityResolver* fXMLEntityResolver; + ErrorHandler* fErrorHandler; + PSVIHandler* fPSVIHandler; + LexicalHandler* fLexicalHandler; + DeclHandler* fDeclHandler; + XMLDocumentHandler** fAdvDHList; + XMLScanner* fScanner; + GrammarResolver* fGrammarResolver; + XMLStringPool* fURIStringPool; + XMLValidator* fValidator; + MemoryManager* fMemoryManager; + XMLGrammarPool* fGrammarPool; + + // ----------------------------------------------------------------------- + // internal function used to set the state of the parser + // ----------------------------------------------------------------------- + void setValidationScheme(const ValSchemes newScheme); + void setDoNamespaces(const bool newState); + bool getDoNamespaces() const; + void setDoSchema(const bool newState); + bool getDoSchema() const; +}; + + +// --------------------------------------------------------------------------- +// SAX2XMLReader: Getter methods +// --------------------------------------------------------------------------- +inline ContentHandler* SAX2XMLReaderImpl::getContentHandler() const +{ + return fDocHandler; +} + +inline DTDHandler* SAX2XMLReaderImpl::getDTDHandler() const +{ + return fDTDHandler ; +} + +inline EntityResolver* SAX2XMLReaderImpl::getEntityResolver() const +{ + return fEntityResolver; +} + +inline XMLEntityResolver* SAX2XMLReaderImpl::getXMLEntityResolver() const +{ + return fXMLEntityResolver; +} + +inline ErrorHandler* SAX2XMLReaderImpl::getErrorHandler() const +{ + return fErrorHandler; +} + +inline PSVIHandler* SAX2XMLReaderImpl::getPSVIHandler() const +{ + return fPSVIHandler; +} + +inline LexicalHandler* SAX2XMLReaderImpl::getLexicalHandler() const +{ + return fLexicalHandler; +} + +inline DeclHandler* SAX2XMLReaderImpl::getDeclarationHandler() const +{ + return fDeclHandler; +} + +inline bool SAX2XMLReaderImpl::getExitOnFirstFatalError() const +{ + return fScanner->getExitOnFirstFatal(); +} + +inline bool SAX2XMLReaderImpl::getValidationConstraintFatal() const +{ + return fScanner->getValidationConstraintFatal(); +} + +inline Grammar* SAX2XMLReaderImpl::getRootGrammar() +{ + return fScanner->getRootGrammar(); +} + +inline const XMLCh* SAX2XMLReaderImpl::getURIText(unsigned int uriId) const +{ + return fScanner->getURIText(uriId); +} + +inline XMLFilePos SAX2XMLReaderImpl::getSrcOffset() const +{ + return fScanner->getSrcOffset(); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/parsers/SAXParser.hpp b/src/libs/xerces-c/mingw/include/xercesc/parsers/SAXParser.hpp new file mode 100644 index 000000000000..5590f2070672 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/parsers/SAXParser.hpp @@ -0,0 +1,2204 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SAXPARSER_HPP) +#define XERCESC_INCLUDE_GUARD_SAXPARSER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +XERCES_CPP_NAMESPACE_BEGIN + + +class DocumentHandler; +class EntityResolver; +class XMLPScanToken; +class XMLScanner; +class XMLValidator; +class GrammarResolver; +class XMLGrammarPool; +class XMLEntityResolver; +class XMLResourceIdentifier; +class PSVIHandler; + +/** + * This class implements the SAX 'Parser' interface and should be + * used by applications wishing to parse the XML files using SAX. + * It allows the client program to install SAX handlers for event + * callbacks. + * + *

It can be used to instantiate a validating or non-validating + * parser, by setting a member flag.

+ * + * @deprecated This interface has been replaced by the SAX2 + * interface, which includes Namespace support. + * See SAX2XMLReader for more information. + * + * Note - XMLDocumentHandler calls, when used with SAXParser, will not provide correct namespace information. This is becaue the SAX parser does not support namespace aware processing. + * + * + */ + +class PARSERS_EXPORT SAXParser : + + public XMemory + , public Parser + , public XMLDocumentHandler + , public XMLErrorReporter + , public XMLEntityHandler + , public DocTypeHandler +{ +public : + // ----------------------------------------------------------------------- + // Class types + // ----------------------------------------------------------------------- + /** ValScheme enum used in setValidationScheme + * Val_Never: Do not report validation errors. + * Val_Always: The parser will always report validation errors. + * Val_Auto: The parser will report validation errors only if a grammar is specified. + * + * @see #setValidationScheme + */ + + enum ValSchemes + { + Val_Never + , Val_Always + , Val_Auto + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** Constructor with an instance of validator class to use for + * validation. + * @param valToAdopt Pointer to the validator instance to use. The + * parser is responsible for freeing the memory. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @param gramPool The collection of cached grammars. + */ + SAXParser + ( + XMLValidator* const valToAdopt = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , XMLGrammarPool* const gramPool = 0 + ); + + /** + * Destructor + */ + ~SAXParser(); + //@} + + + // ----------------------------------------------------------------------- + // Getter Methods + // ----------------------------------------------------------------------- + /** @name Getter methods */ + //@{ + /** + * This method returns the installed document handler. Suitable + * for 'lvalue' usages. + * + * @return The pointer to the installed document handler object. + */ + DocumentHandler* getDocumentHandler(); + + /** + * This method returns the installed document handler. Suitable + * only for 'rvalue' usages. + * + * @return A const pointer to the installed document handler object. + */ + const DocumentHandler* getDocumentHandler() const; + + /** + * This method returns the installed entity resolver. Suitable + * for 'lvalue' usages. + * + * @return The pointer to the installed entity resolver object. + */ + EntityResolver* getEntityResolver(); + + /** + * This method returns the installed entity resolver. Suitable + * for 'rvalue' usages. + * + * @return A const pointer to the installed entity resolver object. + */ + const EntityResolver* getEntityResolver() const; + + /** + * This method returns the installed entity resolver. Suitable + * for 'lvalue' usages. + * + * @return The pointer to the installed entity resolver object. + */ + XMLEntityResolver* getXMLEntityResolver(); + + /** + * This method returns the installed entity resolver. Suitable + * for 'rvalue' usages. + * + * @return A const pointer to the installed entity resolver object. + */ + const XMLEntityResolver* getXMLEntityResolver() const; + + /** + * This method returns the installed error handler. Suitable + * for 'lvalue' usages. + * + * @return The pointer to the installed error handler object. + */ + ErrorHandler* getErrorHandler(); + + /** + * This method returns the installed error handler. Suitable + * for 'rvalue' usages. + * + * @return A const pointer to the installed error handler object. + */ + const ErrorHandler* getErrorHandler() const; + + /** + * This method returns the installed PSVI handler. Suitable + * for 'lvalue' usages. + * + * @return The pointer to the installed PSVI handler object. + */ + PSVIHandler* getPSVIHandler(); + + /** + * This method returns the installed PSVI handler. Suitable + * for 'rvalue' usages. + * + * @return A const pointer to the installed PSVI handler object. + */ + const PSVIHandler* getPSVIHandler() const; + + /** + * This method returns a reference to the parser's installed + * validator. + * + * @return A const reference to the installed validator object. + */ + const XMLValidator& getValidator() const; + + /** + * This method returns an enumerated value that indicates the current + * validation scheme set on this parser. + * + * @return The ValSchemes value current set on this parser. + * @see #setValidationScheme + */ + ValSchemes getValidationScheme() const; + + /** Get the 'do schema' flag + * + * This method returns the state of the parser's schema processing + * flag. + * + * @return true, if the parser is currently configured to + * understand schema, false otherwise. + * + * @see #setDoSchema + */ + bool getDoSchema() const; + + /** Get the 'full schema constraint checking' flag + * + * This method returns the state of the parser's full schema constraint + * checking flag. + * + * @return true, if the parser is currently configured to + * have full schema constraint checking, false otherwise. + * + * @see #setValidationSchemaFullChecking + */ + bool getValidationSchemaFullChecking() const; + + /** Get the 'identity constraint checking' flag + * + * This method returns the state of the parser's identity constraint + * checking flag. + * + * @return true, if the parser is currently configured to + * have identity constraint checking, false otherwise. + * + * @see #setIdentityConstraintChecking + */ + bool getIdentityConstraintChecking() const; + + /** Get error count from the last parse operation. + * + * This method returns the error count from the last parse + * operation. Note that this count is actually stored in the + * scanner, so this method simply returns what the + * scanner reports. + * + * @return number of errors encountered during the latest + * parse operation. + */ + int getErrorCount() const; + + /** + * This method returns the state of the parser's namespace + * handling capability. + * + * @return true, if the parser is currently configured to + * understand namespaces, false otherwise. + * + * @see #setDoNamespaces + */ + bool getDoNamespaces() const; + + /** + * This method returns the state of the parser's + * exit-on-First-Fatal-Error flag. + * + * @return true, if the parser is currently configured to + * exit on the first fatal error, false otherwise. + * + * @see #setExitOnFirstFatalError + */ + bool getExitOnFirstFatalError() const; + + /** + * This method returns the state of the parser's + * validation-constraint-fatal flag. + * + * @return true, if the parser is currently configured to + * set validation constraint errors as fatal, false + * otherwise. + * + * @see #setValidationConstraintFatal + */ + bool getValidationConstraintFatal() const; + + /** Get the set of Namespace/SchemaLocation that is specified externally. + * + * This method returns the list of Namespace/SchemaLocation that was + * specified using setExternalSchemaLocation. + * + * The parser owns the returned string, and the memory allocated for + * the returned string will be destroyed when the parser is deleted. + * + * To ensure accessibility of the returned information after the parser + * is deleted, callers need to copy and store the returned information + * somewhere else. + * + * @return a pointer to the list of Namespace/SchemaLocation that was + * specified externally. The pointer spans the same life-time as + * the parser. A null pointer is returned if nothing + * was specified externally. + * + * @see #setExternalSchemaLocation(const XMLCh* const) + */ + XMLCh* getExternalSchemaLocation() const; + + /** Get the noNamespace SchemaLocation that is specified externally. + * + * This method returns the no target namespace XML Schema Location + * that was specified using setExternalNoNamespaceSchemaLocation. + * + * The parser owns the returned string, and the memory allocated for + * the returned string will be destroyed when the parser is deleted. + * + * To ensure accessibility of the returned information after the parser + * is deleted, callers need to copy and store the returned information + * somewhere else. + * + * @return a pointer to the no target namespace Schema Location that was + * specified externally. The pointer spans the same life-time as + * the parser. A null pointer is returned if nothing + * was specified externally. + * + * @see #setExternalNoNamespaceSchemaLocation(const XMLCh* const) + */ + XMLCh* getExternalNoNamespaceSchemaLocation() const; + + /** Get the SecurityManager instance attached to this parser. + * + * This method returns the security manager + * that was specified using setSecurityManager. + * + * The SecurityManager instance must have been specified by the application; + * this should not be deleted until after the parser has been deleted (or + * a new SecurityManager instance has been supplied to the parser). + * + * @return a pointer to the SecurityManager instance + * specified externally. A null pointer is returned if nothing + * was specified externally. + * + * @see #setSecurityManager(SecurityManager* const) + */ + SecurityManager* getSecurityManager() const; + + /** Get the raw buffer low water mark for this parser. + * + * If the number of available bytes in the raw buffer is less than + * the low water mark the parser will attempt to read more data before + * continuing parsing. By default the value for this parameter is 100 + * bytes. You may want to set this parameter to 0 if you would like + * the parser to parse the available data immediately without + * potentially blocking while waiting for more date. + * + * @return current low water mark + * + * @see #setSecurityManager + */ + XMLSize_t getLowWaterMark() const; + + /** Get the 'Loading External DTD' flag + * + * This method returns the state of the parser's loading external DTD + * flag. + * + * @return false, if the parser is currently configured to + * ignore external DTD completely, true otherwise. + * + * @see #setLoadExternalDTD + * @see #getValidationScheme + */ + bool getLoadExternalDTD() const; + + /** Get the 'Loading Schema' flag + * + * This method returns the state of the parser's loading schema + * flag. + * + * @return true, if the parser is currently configured to + * automatically load schemas that are not in the + * grammar pool, false otherwise. + * + * @see #setLoadSchema + */ + bool getLoadSchema() const; + + /** Get the 'Grammar caching' flag + * + * This method returns the state of the parser's grammar caching when + * parsing an XML document. + * + * @return true, if the parser is currently configured to + * cache grammars, false otherwise. + * + * @see #cacheGrammarFromParse + */ + bool isCachingGrammarFromParse() const; + + /** Get the 'Use cached grammar' flag + * + * This method returns the state of the parser's use of cached grammar + * when parsing an XML document. + * + * @return true, if the parser is currently configured to + * use cached grammars, false otherwise. + * + * @see #useCachedGrammarInParse + */ + bool isUsingCachedGrammarInParse() const; + + /** + * Get the 'calculate src offset flag' + * + * This method returns the state of the parser's src offset calculation + * when parsing an XML document. + * + * @return true, if the parser is currently configured to + * calculate src offsets, false otherwise. + * + * @see #setCalculateSrcOfs + */ + bool getCalculateSrcOfs() const; + + /** + * Get the 'force standard uri flag' + * + * This method returns the state if the parser forces standard uri + * + * @return true, if the parser is currently configured to + * force standard uri, i.e. malformed uri will be rejected. + * + * @see #setStandardUriConformant + */ + bool getStandardUriConformant() const; + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param nameSpaceKey Namespace key + * @return Grammar associated with the Namespace key. + */ + Grammar* getGrammar(const XMLCh* const nameSpaceKey); + + /** + * Retrieve the grammar where the root element is declared. + * + * @return Grammar where root element declared + */ + Grammar* getRootGrammar(); + + /** + * Returns the string corresponding to a URI id from the URI string pool. + * + * @param uriId id of the string in the URI string pool. + * @return URI string corresponding to the URI id. + */ + const XMLCh* getURIText(unsigned int uriId) const; + + /** + * Returns the current src offset within the input source. + * To be used only while parsing is in progress. + * + * @return offset within the input source + */ + XMLFilePos getSrcOffset() const; + + /** Get the 'generate synthetic annotations' flag + * + * @return true, if the parser is currently configured to + * generate synthetic annotations, false otherwise. + * A synthetic XSAnnotation is created when a schema + * component has non-schema attributes but has no + * child annotations so that the non-schema attributes + * can be recovered under PSVI. + * + * @see #setGenerateSyntheticAnnotations + */ + bool getGenerateSyntheticAnnotations() const; + + /** Get the 'validate annotations' flag + * + * @return true, if the parser is currently configured to + * validate annotations, false otherwise. + * + * @see #setValidateAnnotations + */ + bool getValidateAnnotations() const; + + /** Get the 'ignore cached DTD grammar' flag + * + * @return true, if the parser is currently configured to + * ignore cached DTD, false otherwise. + * + * @see #setIgnoreCachedDTD + */ + bool getIgnoreCachedDTD() const; + + /** Get the 'ignore annotations' flag + * + * @return true, if the parser is currently configured to + * ignore annotations, false otherwise. + * + * @see #setIgnoreAnnotations + */ + bool getIgnoreAnnotations() const; + + /** Get the 'disable default entity resolution' flag + * + * @return true, if the parser is currently configured to + * not perform default entity resolution, false otherwise. + * + * @see #setDisableDefaultEntityResolution + */ + bool getDisableDefaultEntityResolution() const; + + /** Get the 'skip DTD validation' flag + * + * @return true, if the parser is currently configured to + * skip DTD validation, false otherwise. + * + * @see #setSkipDTDValidation + */ + bool getSkipDTDValidation() const; + + /** Get the 'handle multiple schema imports' flag + * + * @return true, if the parser is currently configured to + * import multiple schemas with the same namespace, false otherwise. + * + * @see #setHandleMultipleImports + */ + bool getHandleMultipleImports() const; + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + /** set the 'generate synthetic annotations' flag + * + * @param newValue The value for specifying whether Synthetic Annotations + * should be generated or not. + * A synthetic XSAnnotation is created when a schema + * component has non-schema attributes but has no + * child annotations. + * + * @see #getGenerateSyntheticAnnotations + */ + void setGenerateSyntheticAnnotations(const bool newValue); + + /** set the 'validate annotations' flag + * + * @param newValue The value for specifying whether annotations + * should be validate or not. + * + * @see #getValidateAnnotations + */ + void setValidateAnnotations(const bool newValue); + + /** + * This method allows users to enable or disable the parser's + * namespace processing. When set to true, parser starts enforcing + * all the constraints / rules specified by the NameSpace + * specification. + * + *

The parser's default state is: false.

+ * + * @param newState The value specifying whether NameSpace rules should + * be enforced or not. + * + * @see #getDoNamespaces + */ + void setDoNamespaces(const bool newState); + + /** + * This method allows users to set the validation scheme to be used + * by this parser. The value is one of the ValSchemes enumerated values + * defined by this class: + * + *
Val_Never - turn off validation + *
Val_Always - turn on validation + *
Val_Auto - turn on validation if any internal/external + * DTD subset have been seen + * + *

The parser's default state is: Val_Never.

+ * + * @param newScheme The new validation scheme to use. + * + * @see #getValidationScheme + */ + void setValidationScheme(const ValSchemes newScheme); + + /** Set the 'schema support' flag + * + * This method allows users to enable or disable the parser's + * schema processing. When set to false, parser will not process + * any schema found. + * + * The parser's default state is: false. + * + * Note: If set to true, namespace processing must also be turned on. + * + * @param newState The value specifying whether schema support should + * be enforced or not. + * + * @see #getDoSchema + */ + void setDoSchema(const bool newState); + + /** + * This method allows the user to turn full Schema constraint checking on/off. + * Only takes effect if Schema validation is enabled. + * If turned off, partial constraint checking is done. + * + * Full schema constraint checking includes those checking that may + * be time-consuming or memory intensive. Currently, particle unique + * attribution constraint checking and particle derivation restriction checking + * are controlled by this option. + * + * The parser's default state is: false. + * + * @param schemaFullChecking True to turn on full schema constraint checking. + * + * @see #getValidationSchemaFullChecking + */ + void setValidationSchemaFullChecking(const bool schemaFullChecking); + + /** + * This method allows the user to turn identity constraint checking on/off. + * Only takes effect if Schema validation is enabled. + * If turned off, identity constraint checking is not done. + * + * The parser's default state is: true. + * + * @param identityConstraintChecking True to turn on identity constraint checking. + * + * @see #getIdentityConstraintChecking + */ + void setIdentityConstraintChecking(const bool identityConstraintChecking); + + /** + * This method allows users to set the parser's behaviour when it + * encounters the first fatal error. If set to true, the parser + * will exit at the first fatal error. If false, then it will + * report the error and continue processing. + * + *

The default value is 'true' and the parser exits on the + * first fatal error.

+ * + * @param newState The value specifying whether the parser should + * continue or exit when it encounters the first + * fatal error. + * + * @see #getExitOnFirstFatalError + */ + void setExitOnFirstFatalError(const bool newState); + + /** + * This method allows users to set the parser's behaviour when it + * encounters a validation constraint error. If set to true, and the + * the parser will treat validation error as fatal and will exit depends on the + * state of "getExitOnFirstFatalError". If false, then it will + * report the error and continue processing. + * + * Note: setting this true does not mean the validation error will be printed with + * the word "Fatal Error". It is still printed as "Error", but the parser + * will exit if "setExitOnFirstFatalError" is set to true. + * + *

The default value is 'false'.

+ * + * @param newState If true, the parser will exit if "setExitOnFirstFatalError" + * is set to true. + * + * @see #getValidationConstraintFatal + * @see #setExitOnFirstFatalError + */ + void setValidationConstraintFatal(const bool newState); + + /** + * This method allows the user to specify a list of schemas to use. + * If the targetNamespace of a schema specified using this method matches + * the targetNamespace of a schema occurring in the instance document in + * the schemaLocation attribute, or if the targetNamespace matches the + * namespace attribute of the "import" element, the schema specified by the + * user using this method will be used (i.e., the schemaLocation attribute + * in the instance document or on the "import" element will be effectively ignored). + * + * If this method is called more than once, only the last one takes effect. + * + * The syntax is the same as for schemaLocation attributes in instance + * documents: e.g, "http://www.example.com file_name.xsd". The user can + * specify more than one XML Schema in the list. + * + * @param schemaLocation the list of schemas to use + * + * @see #getExternalSchemaLocation + */ + + void setExternalSchemaLocation(const XMLCh* const schemaLocation); + + /** + * This method is same as setExternalSchemaLocation(const XMLCh* const). + * It takes native char string as parameter + * + * @param schemaLocation the list of schemas to use + * + * @see #setExternalSchemaLocation(const XMLCh* const) + */ + void setExternalSchemaLocation(const char* const schemaLocation); + + /** + * This method allows the user to specify the no target namespace XML + * Schema Location externally. If specified, the instance document's + * noNamespaceSchemaLocation attribute will be effectively ignored. + * + * If this method is called more than once, only the last one takes effect. + * + * The syntax is the same as for the noNamespaceSchemaLocation attribute + * that may occur in an instance document: e.g."file_name.xsd". + * + * @param noNamespaceSchemaLocation the XML Schema Location with no target namespace + * + * @see #getExternalNoNamespaceSchemaLocation + */ + void setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation); + + /** + * This method is same as setExternalNoNamespaceSchemaLocation(const XMLCh* const). + * It takes native char string as parameter + * + * @param noNamespaceSchemaLocation the XML Schema Location with no target namespace + * + * @see #setExternalNoNamespaceSchemaLocation(const XMLCh* const) + */ + void setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation); + + /** + * This allows an application to set a SecurityManager on + * the parser; this object stores information that various + * components use to limit their consumption of system + * resources while processing documents. + * + * If this method is called more than once, only the last one takes effect. + * It may not be reset during a parse. + * + * + * @param securityManager the SecurityManager instance to + * be used by this parser + * + * @see #getSecurityManager + */ + void setSecurityManager(SecurityManager* const securityManager); + + /** Set the raw buffer low water mark for this parser. + * + * If the number of available bytes in the raw buffer is less than + * the low water mark the parser will attempt to read more data before + * continuing parsing. By default the value for this parameter is 100 + * bytes. You may want to set this parameter to 0 if you would like + * the parser to parse the available data immediately without + * potentially blocking while waiting for more date. + * + * @param lwm new low water mark + * + * @see #getSecurityManager + */ + void setLowWaterMark(XMLSize_t lwm); + + /** Set the 'Loading External DTD' flag + * + * This method allows users to enable or disable the loading of external DTD. + * When set to false, the parser will ignore any external DTD completely + * if the validationScheme is set to Val_Never. + * + * The parser's default state is: true. + * + * This flag is ignored if the validationScheme is set to Val_Always or Val_Auto. + * + * @param newState The value specifying whether external DTD should + * be loaded or not. + * + * @see #getLoadExternalDTD + * @see #setValidationScheme + */ + void setLoadExternalDTD(const bool newState); + + /** Set the 'Loading Schema' flag + * + * This method allows users to enable or disable the loading of schemas. + * When set to false, the parser not attempt to load schemas beyond + * querying the grammar pool for them. + * + * The parser's default state is: true. + * + * @param newState The value specifying whether schemas should + * be loaded if they're not found in the grammar + * pool. + * + * @see #getLoadSchema + * @see #setDoSchema + */ + void setLoadSchema(const bool newState); + + /** Set the 'Grammar caching' flag + * + * This method allows users to enable or disable caching of grammar when + * parsing XML documents. When set to true, the parser will cache the + * resulting grammar for use in subsequent parses. + * + * If the flag is set to true, the 'Use cached grammar' flag will also be + * set to true. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether we should cache grammars + * or not. + * + * @see #isCachingGrammarFromParse + * @see #useCachedGrammarInParse + */ + void cacheGrammarFromParse(const bool newState); + + /** Set the 'Use cached grammar' flag + * + * This method allows users to enable or disable the use of cached + * grammars. When set to true, the parser will use the cached grammar, + * instead of building the grammar from scratch, to validate XML + * documents. + * + * If the 'Grammar caching' flag is set to true, this method ignores the + * value passed in. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether we should use the cached + * grammar or not. + * + * @see #isUsingCachedGrammarInParse + * @see #cacheGrammarFromParse + */ + void useCachedGrammarInParse(const bool newState); + + /** Enable/disable src offset calculation + * + * This method allows users to enable/disable src offset calculation. + * Disabling the calculation will improve performance. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether we should enable or + * disable src offset calculation + * + * @see #getCalculateSrcOfs + */ + void setCalculateSrcOfs(const bool newState); + + /** Force standard uri + * + * This method allows users to tell the parser to force standard uri conformance. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether the parser should reject malformed URI. + * + * @see #getStandardUriConformant + */ + void setStandardUriConformant(const bool newState); + + /** Set the scanner to use when scanning the XML document + * + * This method allows users to set the scanner to use + * when scanning a given XML document. + * + * @param scannerName The name of the desired scanner + */ + void useScanner(const XMLCh* const scannerName); + + /** Set maximum input buffer size + * + * This method allows users to limit the size of buffers used in parsing + * XML character data. The effect of setting this size is to limit the + * size of a ContentHandler::characters() call. + * + * The parser's default input buffer size is 1 megabyte. + * + * @param bufferSize The maximum input buffer size + */ + void setInputBufferSize(const XMLSize_t bufferSize); + + /** Set the 'ignore cached DTD grammar' flag + * + * This method gives users the option to ignore a cached DTD grammar, when + * an XML document contains both an internal and external DTD, and the use + * cached grammar from parse option is enabled. Currently, we do not allow + * using cached DTD grammar when an internal subset is present in the + * document. This option will only affect the behavior of the parser when + * an internal and external DTD both exist in a document (i.e. no effect + * if document has no internal subset). + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setIgnoreCachedDTD(const bool newValue); + + /** Set the 'ignore annotation' flag + * + * This method gives users the option to not generate XSAnnotations + * when "traversing" a schema. + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setIgnoreAnnotations(const bool newValue); + + /** Set the 'disable default entity resolution' flag + * + * This method gives users the option to not perform default entity + * resolution. If the user's resolveEntity method returns NULL the + * parser will try to resolve the entity on its own. When this option + * is set to true, the parser will not attempt to resolve the entity + * when the resolveEntity method returns NULL. + * + * The parser's default state is false + * + * @param newValue The state to set + * + * @see #EntityResolver + */ + void setDisableDefaultEntityResolution(const bool newValue); + + /** Set the 'skip DTD validation' flag + * + * This method gives users the option to skip DTD validation only when + * schema validation is on (i.e. when performing validation, we will + * ignore the DTD, except for entities, when schema validation is enabled). + * + * NOTE: This option is ignored if schema validation is disabled. + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setSkipDTDValidation(const bool newValue); + + /** Set the 'handle multiple schema imports' flag + * + * This method gives users the ability to import multiple schemas that + * have the same namespace. + * + * NOTE: This option is ignored if schema validation is disabled. + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setHandleMultipleImports(const bool newValue); + //@} + + + // ----------------------------------------------------------------------- + // Advanced document handler list maintenance methods + // ----------------------------------------------------------------------- + + /** @name Advanced document handler list maintenance methods */ + //@{ + /** + * This method installs the specified 'advanced' document callback + * handler, thereby allowing the user to customize the processing, + * if they choose to do so. Any number of advanced callback handlers + * maybe installed. + * + *

The methods in the advanced callback interface represent + * Xerces-C extensions. There is no specification for this interface.

+ * + * Note - XMLDocumentHandler calls, when used with SAXParser, will not provide correct namespace information. This is becaue the SAX parser does not support namespace aware processing. + * + * @param toInstall A pointer to the users advanced callback handler. + * + * @see #removeAdvDocHandler + */ + void installAdvDocHandler(XMLDocumentHandler* const toInstall); + + /** + * This method removes the 'advanced' document handler callback from + * the underlying parser scanner. If no handler is installed, advanced + * callbacks are not invoked by the scanner. + * @param toRemove A pointer to the advanced callback handler which + * should be removed. + * + * Note - XMLDocumentHandler calls, when used with SAXParser, will not provide correct namespace information. This is becaue the SAX parser does not support namespace aware processing. + * + * @see #installAdvDocHandler + */ + bool removeAdvDocHandler(XMLDocumentHandler* const toRemove); + //@} + + + // ----------------------------------------------------------------------- + // Progressive scan methods + // ----------------------------------------------------------------------- + + /** @name Progressive scan methods */ + //@{ + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a Unicode string representing the path + * to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could parse the + * prolog (which means the token will not be valid.) + * + * @see #parseNext + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + bool parseFirst + ( + const XMLCh* const systemId + , XMLPScanToken& toFill + ); + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a regular native string representing + * the path to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(InputSource&,...) + */ + bool parseFirst + ( + const char* const systemId + , XMLPScanToken& toFill + ); + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param source A const reference to the InputSource object which + * points to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + */ + bool parseFirst + ( + const InputSource& source + , XMLPScanToken& toFill + ); + + /** Continue a progressive parse operation + * + * This method is used to continue with progressive parsing of + * XML files started by a call to 'parseFirst' method. + * + * It parses the XML file and stops as soon as it comes across + * a XML token (as defined in the XML specification). Relevant + * callback handlers are invoked as required by the SAX + * specification. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the next XML token. + * It indicates the user can go ahead with parsing the rest + * of the file. It returns 'false' to indicate that the parser + * could not find next token as per the XML specification + * production rule. + * + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + bool parseNext(XMLPScanToken& token); + + /** Reset the parser after a progressive parse + * + * If a progressive parse loop exits before the end of the document + * is reached, the parser has no way of knowing this. So it will leave + * open any files or sockets or memory buffers that were in use at + * the time that the parse loop exited. + * + * The next parse operation will cause these open files and such to + * be closed, but the next parse operation might occur at some unknown + * future point. To avoid this problem, you should reset the parser if + * you exit the loop early. + * + * If you exited because of an error, then this cleanup will be done + * for you. Its only when you exit the file prematurely of your own + * accord, because you've found what you wanted in the file most + * likely. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + */ + void parseReset(XMLPScanToken& token); + + //@} + + // ----------------------------------------------------------------------- + // Grammar preparsing interface + // ----------------------------------------------------------------------- + + /** @name Implementation of Grammar preparsing interface's. */ + //@{ + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via an input source + * object. + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the SAX InputSource parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param source A const reference to the SAX InputSource object which + * points to the schema grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * + * @see InputSource#InputSource + */ + Grammar* loadGrammar(const InputSource& source, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML grammar file to be + * preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + Grammar* loadGrammar(const XMLCh* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const char pointer to a native string which contains + * the path to the XML grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + Grammar* loadGrammar(const char* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * This method allows the user to reset the pool of cached grammars. + */ + void resetCachedGrammarPool(); + + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the SAX Parser interface + // ----------------------------------------------------------------------- + + /** @name Implementation of SAX 1.0 Parser interface's. */ + //@{ + /** + * This method invokes the parsing process on the XML file specified + * by the InputSource parameter. + * + * @param source A const reference to the InputSource object which + * points to the XML file to be parsed. + * + * @see Parser#parse(InputSource) + */ + virtual void parse(const InputSource& source); + + /** + * This method invokes the parsing process on the XML file specified by + * the Unicode string parameter 'systemId'. + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML file to be parsed. + * + * @see Parser#parse(XMLCh*) + */ + virtual void parse(const XMLCh* const systemId); + + /** + * This method invokes the parsing process on the XML file specified by + * the native char* string parameter 'systemId'. + * + * @param systemId A const char pointer to a native string which + * contains the path to the XML file to be parsed. + */ + virtual void parse(const char* const systemId); + + /** + * This method installs the user specified SAX Document Handler + * callback function on parser. + * + * @param handler A pointer to the document handler to be called + * when the parser comes across 'document' events + * as per the SAX specification. + * + * @see Parser#parse(char*) + */ + virtual void setDocumentHandler(DocumentHandler* const handler); + + /** + * This method installs the user specified DTD handler on the parser. + * + * @param handler A pointer to the DTD handler to be called + * when the parser comes across 'DTD' events + * as per the SAX specification. + * + * @see Parser#setDTDHandler + */ + virtual void setDTDHandler(DTDHandler* const handler); + + /** + * This method installs the user specified error handler on + * the parser. + * + * @param handler A pointer to the error handler to be called + * when the parser comes across 'error' events + * as per the SAX specification. + * + * @see Parser#setErrorHandler + */ + virtual void setErrorHandler(ErrorHandler* const handler); + + /** + * This method installs the user specified PSVI handler on + * the parser. + * + * @param handler A pointer to the PSVI handler to be called + * when the parser comes across 'PSVI' events + * as per the schema specification. + * + * @see Parser#setPSVIHandler + */ + virtual void setPSVIHandler(PSVIHandler* const handler); + + /** + * This method installs the user specified entity resolver on the + * parser. It allows applications to trap and redirect calls to + * external entities. + * + * Any previously set entity resolver is merely dropped, since the parser + * does not own them. If both setEntityResolver and setXMLEntityResolver + * are called, then the last one is used. + * + * @param resolver A pointer to the entity resolver to be called + * when the parser comes across references to + * entities in the XML file. + * + * @see Parser#setEntityResolver + */ + virtual void setEntityResolver(EntityResolver* const resolver); + + /** + * This method installs the user specified entity resolver on the + * parser. It allows applications to trap and redirect calls to + * external entities. + * + * Any previously set entity resolver is merely dropped, since the parser + * does not own them. If both setEntityResolver and setXMLEntityResolver + * are called, then the last one is used. + * + * @param resolver A pointer to the entity resolver to be called + * when the parser comes across references to + * entities in the XML file. + * + * @see Parser#setXMLEntityResolver + */ + virtual void setXMLEntityResolver(XMLEntityResolver* const resolver); + + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the XMLDocumentHandler interface + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLDocumentHandler Interface. */ + //@{ + /** + * This method is used to report all the characters scanned + * by the parser. The driver will invoke the 'characters' + * method of the user installed SAX Document Handler. + * + *

If any advanced callback handlers are installed, the + * corresponding 'docCharacters' method will also be invoked.

+ * + * @param chars A const pointer to a Unicode string representing the + * character data. + * @param length The length of the Unicode string returned in 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + * @see DocumentHandler#characters + */ + virtual void docCharacters + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + /** + * This method is used to report any comments scanned by the parser. + * This method is a no-op unless, unless an advanced callback handler + * is installed, in which case the corresponding 'docComment' method + * is invoked. + * + * @param comment A const pointer to a null terminated Unicode + * string representing the comment text. + */ + virtual void docComment + ( + const XMLCh* const comment + ); + + /** + * This method is used to report any PI scanned by the parser. + * + *

Any PI's occurring before any 'content' are not reported + * to any SAX handler as per the specification. However, all + * PI's within content are reported via the SAX Document Handler's + * 'processingInstruction' method. + * + *

If any advanced callback handlers are installed, the + * corresponding 'docPI' method will be invoked.

+ * + * @param target A const pointer to a Unicode string representing the + * target of the PI declaration. + * @param data A const pointer to a Unicode string representing the + * data of the PI declaration. See the PI production rule + * in the XML specification for details. + * + * @see DocumentHandler#processingInstruction + */ + virtual void docPI + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** + * This method is used to indicate the end of root element + * was just scanned by the parser. Corresponding 'endDocument' + * method of the user installed SAX Document Handler will also + * be invoked. + * + *

In addition, if any advanced callback handlers are installed, + * the corresponding 'endDocument' method is invoked.

+ * + * @see DocumentHandler#endDocument + */ + virtual void endDocument(); + + /** + * This method is used to indicate the end tag of an element. + * The driver will invoke the corresponding 'endElement' method of + * the SAX Document Handler interface. + * + *

If any advanced callback handlers are installed, the + * corresponding 'endElement' method is also invoked.

+ * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param isRoot A flag indicating whether this element was the + * root element. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + * @see DocumentHandler#endElement + */ + virtual void endElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const bool isRoot + , const XMLCh* const elemPrefix + ); + + /** + * This method is used to indicate that an end of an entity reference + * was just scanned. + * + *

If any advanced callback handlers are installed, the + * corresponding 'endEntityReference' method is invoked.

+ * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void endEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** + * This method is used to report all the whitespace characters, + * which are determined to be 'ignorable'. This distinction + * between characters is only made, if validation is enabled. + * Corresponding 'ignorableWhitespace' method of the user installed + * SAX Document Handler interface is called. + * + *

Any whitespace before content is not reported to the SAX + * Document Handler method, as per the SAX specification. + * However, if any advanced callback handlers are installed, the + * corresponding 'ignorableWhitespace' method is invoked.

+ * + * @param chars A const pointer to a Unicode string representing the + * ignorable whitespace character data. + * @param length The length of the Unicode string 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + * @see DocumentHandler#ignorableWhitespace + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + /** + * This method allows the user installed Document Handler and + * any advanced callback handlers to 'reset' themselves. + */ + virtual void resetDocument(); + + /** + * This method is used to report the start of the parsing process. + * The corresponding user installed SAX Document Handler's method + * 'startDocument' is invoked. + * + *

If any advanced callback handlers are installed, then the + * corresponding 'startDocument' method is also called.

+ * + * @see DocumentHandler#startDocument + */ + virtual void startDocument(); + + /** + * This method is used to report the start of an element. It is + * called at the end of the element, by which time all attributes + * specified are also parsed. The corresponding user installed + * SAX Document Handler's method 'startElement' is invoked. + * + *

If any advanced callback handlers are installed, then the + * corresponding 'startElement' method is also called.

+ * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + * @param attrList A const reference to the object containing the + * list of attributes just scanned for this element. + * @param attrCount A count of number of attributes in the list + * specified by the parameter 'attrList'. + * @param isEmpty A flag indicating whether this is an empty element + * or not. + * @param isRoot A flag indicating whether this element was the + * root element. + * @see DocumentHandler#startElement + */ + virtual void startElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const XMLCh* const elemPrefix + , const RefVectorOf& attrList + , const XMLSize_t attrCount + , const bool isEmpty + , const bool isRoot + ); + + /** + * This method is used to indicate the start of an entity reference. + * + *

If any advanced callback handlers are installed, the + * corresponding 'endEntityReference' method is invoked.

+ * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void startEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** + * This method is used to report the XML decl scanned by the parser. + * Refer to the XML specification to see the meaning of parameters. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param versionStr A const pointer to a Unicode string representing + * version string value. + * @param encodingStr A const pointer to a Unicode string representing + * the encoding string value. + * @param standaloneStr A const pointer to a Unicode string + * representing the standalone string value. + * @param actualEncodingStr A const pointer to a Unicode string + * representing the actual encoding string + * value. + */ + virtual void XMLDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + , const XMLCh* const standaloneStr + , const XMLCh* const actualEncodingStr + ); + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the XMLErrorReporter interface + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLErrorReporter Interface. */ + //@{ + /** + * This method is used to report back errors found while parsing the + * XML file. The driver will call the corresponding user installed + * SAX Error Handler methods: 'fatal', 'error', 'warning' depending + * on the severity of the error. This classification is defined by + * the XML specification. + * + * @param errCode An integer code for the error. + * @param msgDomain A const pointer to an Unicode string representing + * the message domain to use. + * @param errType An enumeration classifying the severity of the error. + * @param errorText A const pointer to an Unicode string representing + * the text of the error message. + * @param systemId A const pointer to an Unicode string representing + * the system id of the XML file where this error + * was discovered. + * @param publicId A const pointer to an Unicode string representing + * the public id of the XML file where this error + * was discovered. + * @param lineNum The line number where the error occurred. + * @param colNum The column number where the error occurred. + * @see ErrorHandler + */ + virtual void error + ( + const unsigned int errCode + , const XMLCh* const msgDomain + , const XMLErrorReporter::ErrTypes errType + , const XMLCh* const errorText + , const XMLCh* const systemId + , const XMLCh* const publicId + , const XMLFileLoc lineNum + , const XMLFileLoc colNum + ); + + /** + * This method allows the user installed Error Handler + * callback to 'reset' itself. + * + * This method is a no-op for this SAX driver + * implementation. + * + */ + virtual void resetErrors(); + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the XMLEntityHandler interface + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLEntityHandler Interface. */ + //@{ + /** + * This method is used to indicate the end of parsing of an external + * entity file. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the XML file being parsed. + * @see InputSource + */ + virtual void endInputSource(const InputSource& inputSource); + + /** + * This method allows an installed XMLEntityHandler to further + * process any system id's of external entities encountered in + * the XML file being parsed, such as redirection etc. + * + * This method always returns 'false' + * for this SAX driver implementation. + * + * @param systemId A const pointer to an Unicode string representing + * the system id scanned by the parser. + * @param toFill A pointer to a buffer in which the application + * processed system id is stored. + * @return 'true', if any processing is done, 'false' otherwise. + */ + virtual bool expandSystemId + ( + const XMLCh* const systemId + , XMLBuffer& toFill + ); + + /** + * This method allows the installed XMLEntityHandler to reset + * itself. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void resetEntities(); + + /** Resolve a public/system id + * + * This method allows a user installed entity handler to further + * process any pointers to external entities. The applications can + * implement 'redirection' via this callback. + * + * @param resourceIdentifier An object containing the type of + * resource to be resolved and the associated data members + * corresponding to this type. + * @return The value returned by the user installed resolveEntity + * method or NULL otherwise to indicate no processing was done. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @see XMLEntityHandler + * @see XMLEntityResolver + */ + virtual InputSource* resolveEntity + ( + XMLResourceIdentifier* resourceIdentifier + ); + + /** + * This method is used to indicate the start of parsing an + * external entity file. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the external entity + * being parsed. + */ + virtual void startInputSource(const InputSource& inputSource); + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the Deprecated DocTypeHandler Interface + // ----------------------------------------------------------------------- + /** @name Implementation of the deprecated DocTypeHandler Interface */ + //@{ + /** + * This method is used to report an attribute definition. + * + * This method is a no-op for this SAX + * driver implementation. + * + * @param elemDecl A const reference to the object containing information + * about the element whose attribute definition was just + * parsed. + * @param attDef A const reference to the object containing information + * attribute definition. + * @param ignore The flag indicating whether this attribute definition + * was ignored by the parser or not. + */ + virtual void attDef + ( + const DTDElementDecl& elemDecl + , const DTDAttDef& attDef + , const bool ignore + ); + + /** + * This method is used to report a comment occurring within the DTD. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param comment A const pointer to a Unicode string representing the + * text of the comment just parsed. + */ + virtual void doctypeComment + ( + const XMLCh* const comment + ); + + /** + * This method is used to report the DOCTYPE declaration. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param elemDecl A const reference to the object containing information + * about the root element definition declaration of the + * XML document being parsed. + * @param publicId A const pointer to a Unicode string representing the + * public id of the DTD file. + * @param systemId A const pointer to a Unicode string representing the + * system id of the DTD file. + * @param hasIntSubset A flag indicating if this XML file contains any + * internal subset. + * @param hasExtSubset A flag indicating if this XML file contains any + * external subset. Default is false. + */ + virtual void doctypeDecl + ( + const DTDElementDecl& elemDecl + , const XMLCh* const publicId + , const XMLCh* const systemId + , const bool hasIntSubset + , const bool hasExtSubset = false + ); + + /** + * This method is used to report any PI declarations + * occurring inside the DTD definition block. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param target A const pointer to a Unicode string representing the + * target of the PI declaration. + * @param data A const pointer to a Unicode string representing the + * data of the PI declaration. See the PI production rule + * in the XML specification for details. + */ + virtual void doctypePI + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** + * This method is used to report any whitespaces + * occurring inside the DTD definition block. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param chars A const pointer to a Unicode string representing the + * whitespace characters. + * @param length The length of the whitespace Unicode string. + */ + virtual void doctypeWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * This method is used to report an element declarations + * successfully scanned by the parser. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param decl A const reference to the object containing element + * declaration information. + * @param isIgnored The flag indicating whether this definition was + * ignored by the parser or not. + */ + virtual void elementDecl + ( + const DTDElementDecl& decl + , const bool isIgnored + ); + + /** + * This method is used to report the end of an attribute + * list declaration for an element. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param elemDecl A const reference to the object containing element + * declaration information. + */ + virtual void endAttList + ( + const DTDElementDecl& elemDecl + ); + + /** + * This method is used to report the end of the internal subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void endIntSubset(); + + /** + * This method is used to report the end of the external subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void endExtSubset(); + + /** + * This method is used to report any entity declarations. + * For unparsed entities, this driver will invoke the + * SAX DTDHandler::unparsedEntityDecl callback. + * + * @param entityDecl A const reference to the object containing + * the entity declaration information. + * @param isPEDecl The flag indicating whether this was a + * parameter entity declaration or not. + * @param isIgnored The flag indicating whether this definition + * was ignored by the parser or not. + * + * @see DTDHandler#unparsedEntityDecl + */ + virtual void entityDecl + ( + const DTDEntityDecl& entityDecl + , const bool isPEDecl + , const bool isIgnored + ); + + /** + * This method allows the user installed DTD handler to + * reset itself. + */ + virtual void resetDocType(); + + /** + * This method is used to report any notation declarations. + * If there is a user installed DTDHandler, then the driver will + * invoke the SAX DTDHandler::notationDecl callback. + * + * @param notDecl A const reference to the object containing the notation + * declaration information. + * @param isIgnored The flag indicating whether this definition was ignored + * by the parser or not. + * + * @see DTDHandler#notationDecl + */ + virtual void notationDecl + ( + const XMLNotationDecl& notDecl + , const bool isIgnored + ); + + /** + * This method is used to indicate the start of an element's attribute + * list declaration. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param elemDecl A const reference to the object containing element + * declaration information. + */ + virtual void startAttList + ( + const DTDElementDecl& elemDecl + ); + + /** + * This method is used indicate the start of the internal subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void startIntSubset(); + + /** + * This method is used indicate the start of the external subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void startExtSubset(); + + /** + * This method is used to report the TextDecl. Refer to the XML + * specification for the syntax of a TextDecl. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param versionStr A const pointer to a Unicode string representing + * the version number of the 'version' clause. + * @param encodingStr A const pointer to a Unicode string representing + * the encoding name of the 'encoding' clause. + */ + virtual void TextDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + ); + //@} + +protected : + // ----------------------------------------------------------------------- + // Protected Methods + // ----------------------------------------------------------------------- + /** + * This method returns a reference to the underlying scanner object. + * It allows read only access to data maintained in the scanner. + * + * @return A const reference to the underlying scanner object. + */ + const XMLScanner& getScanner() const; + + /** Get the Grammar resolver + * + * This provides derived classes with access to the grammar resolver. + */ + GrammarResolver* getGrammarResolver() const; + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SAXParser(const SAXParser&); + SAXParser& operator=(const SAXParser&); + + // ----------------------------------------------------------------------- + // Initialize/Cleanup methods + // ----------------------------------------------------------------------- + void initialize(); + void cleanUp(); + void resetInProgress(); + + // ----------------------------------------------------------------------- + // Private data members + // + // fAttrList + // A temporary implementation of the basic SAX attribute list + // interface. We use this one over and over on each startElement + // event to allow SAX-like access to the element attributes. + // + // fDocHandler + // The installed SAX doc handler, if any. Null if none. + // + // fDTDHandler + // The installed SAX DTD handler, if any. Null if none. + // + // fElemDepth + // This is used to track the element nesting depth, so that we can + // know when we are inside content. This is so we can ignore char + // data outside of content. + // + // fEntityResolver + // The installed SAX entity handler, if any. Null if none. + // + // fErrorHandler + // The installed SAX error handler, if any. Null if none. + // + // fPSVIHandler + // The installed PSVI handler, if any. Null if none. + // + // fAdvDHCount + // fAdvDHList + // fAdvDHListSize + // This is an array of pointers to XMLDocumentHandlers, which is + // how we see installed advanced document handlers. There will + // usually not be very many at all, so a simple array is used + // instead of a collection, for performance. It will grow if needed, + // but that is unlikely. + // + // The count is how many handlers are currently installed. The size + // is how big the array itself is (for expansion purposes.) When + // count == size, is time to expand. + // + // fParseInProgress + // This flag is set once a parse starts. It is used to prevent + // multiple entrance or reentrance of the parser. + // + // fScanner + // The scanner being used by this parser. It is created internally + // during construction. + // + // fGrammarPool + // The grammar pool passed from external application (through derivatives). + // which could be 0, not owned. + // + // ----------------------------------------------------------------------- + bool fParseInProgress; + XMLSize_t fElemDepth; + XMLSize_t fAdvDHCount; + XMLSize_t fAdvDHListSize; + VecAttrListImpl fAttrList; + DocumentHandler* fDocHandler; + DTDHandler* fDTDHandler; + EntityResolver* fEntityResolver; + XMLEntityResolver* fXMLEntityResolver; + ErrorHandler* fErrorHandler; + PSVIHandler* fPSVIHandler; + XMLDocumentHandler** fAdvDHList; + XMLScanner* fScanner; + GrammarResolver* fGrammarResolver; + XMLStringPool* fURIStringPool; + XMLValidator* fValidator; + MemoryManager* fMemoryManager; + XMLGrammarPool* fGrammarPool; + XMLBuffer fElemQNameBuf; +}; + + +// --------------------------------------------------------------------------- +// SAXParser: Getter methods +// --------------------------------------------------------------------------- +inline DocumentHandler* SAXParser::getDocumentHandler() +{ + return fDocHandler; +} + +inline const DocumentHandler* SAXParser::getDocumentHandler() const +{ + return fDocHandler; +} + +inline EntityResolver* SAXParser::getEntityResolver() +{ + return fEntityResolver; +} + +inline XMLEntityResolver* SAXParser::getXMLEntityResolver() +{ + return fXMLEntityResolver; +} + +inline const XMLEntityResolver* SAXParser::getXMLEntityResolver() const +{ + return fXMLEntityResolver; +} + +inline const EntityResolver* SAXParser::getEntityResolver() const +{ + return fEntityResolver; +} + +inline ErrorHandler* SAXParser::getErrorHandler() +{ + return fErrorHandler; +} + +inline const ErrorHandler* SAXParser::getErrorHandler() const +{ + return fErrorHandler; +} + +inline PSVIHandler* SAXParser::getPSVIHandler() +{ + return fPSVIHandler; +} + +inline const PSVIHandler* SAXParser::getPSVIHandler() const +{ + return fPSVIHandler; +} + +inline const XMLScanner& SAXParser::getScanner() const +{ + return *fScanner; +} + +inline GrammarResolver* SAXParser::getGrammarResolver() const +{ + return fGrammarResolver; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/parsers/XercesDOMParser.hpp b/src/libs/xerces-c/mingw/include/xercesc/parsers/XercesDOMParser.hpp new file mode 100644 index 000000000000..f257d2e76f1e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/parsers/XercesDOMParser.hpp @@ -0,0 +1,696 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XERCESDOMPARSER_HPP) +#define XERCESC_INCLUDE_GUARD_XERCESDOMPARSER_HPP + + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class EntityResolver; +class ErrorHandler; +class XMLEntityResolver; +class XMLResourceIdentifier; + + /** + * This class implements the Document Object Model (DOM) interface. + * It should be used by applications which choose to parse and + * process the XML document using the DOM api's. This implementation + * also allows the applications to install an error and an entity + * handler (useful extensions to the DOM specification). + * + *

It can be used to instantiate a validating or non-validating + * parser, by setting a member flag.

+ */ +class PARSERS_EXPORT XercesDOMParser : public AbstractDOMParser +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors and Destructor */ + //@{ + /** Construct a XercesDOMParser, with an optional validator + * + * Constructor with an instance of validator class to use for + * validation. If you don't provide a validator, a default one will + * be created for you in the scanner. + * + * @param gramPool Pointer to the grammar pool instance from + * external application. + * The parser does NOT own it. + * + * @param valToAdopt Pointer to the validator instance to use. The + * parser is responsible for freeing the memory. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + XercesDOMParser + ( + XMLValidator* const valToAdopt = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , XMLGrammarPool* const gramPool = 0 + ); + + /** + * Destructor + */ + virtual ~XercesDOMParser(); + + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** Get a pointer to the error handler + * + * This method returns the installed error handler. If no handler + * has been installed, then it will be a zero pointer. + * + * @return The pointer to the installed error handler object. + */ + ErrorHandler* getErrorHandler(); + + /** Get a const pointer to the error handler + * + * This method returns the installed error handler. If no handler + * has been installed, then it will be a zero pointer. + * + * @return A const pointer to the installed error handler object. + */ + const ErrorHandler* getErrorHandler() const; + + /** Get a pointer to the entity resolver + * + * This method returns the installed entity resolver. If no resolver + * has been installed, then it will be a zero pointer. + * + * @return The pointer to the installed entity resolver object. + */ + EntityResolver* getEntityResolver(); + + /** Get a const pointer to the entity resolver + * + * This method returns the installed entity resolver. If no resolver + * has been installed, then it will be a zero pointer. + * + * @return A const pointer to the installed entity resolver object. + */ + const EntityResolver* getEntityResolver() const; + + /** + * Get a pointer to the entity resolver + * + * This method returns the installed entity resolver. If no resolver + * has been installed, then it will be a zero pointer. + * + * @return The pointer to the installed entity resolver object. + */ + XMLEntityResolver* getXMLEntityResolver(); + + /** + * Get a const pointer to the entity resolver + * + * This method returns the installed entity resolver. If no resolver + * has been installed, then it will be a zero pointer. + * + * @return A const pointer to the installed entity resolver object. + */ + const XMLEntityResolver* getXMLEntityResolver() const; + + /** Get the 'Grammar caching' flag + * + * This method returns the state of the parser's grammar caching when + * parsing an XML document. + * + * @return true, if the parser is currently configured to + * cache grammars, false otherwise. + * + * @see #cacheGrammarFromParse + */ + bool isCachingGrammarFromParse() const; + + /** Get the 'Use cached grammar' flag + * + * This method returns the state of the parser's use of cached grammar + * when parsing an XML document. + * + * @return true, if the parser is currently configured to + * use cached grammars, false otherwise. + * + * @see #useCachedGrammarInParse + */ + bool isUsingCachedGrammarInParse() const; + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param nameSpaceKey Namespace key + * @return Grammar associated with the Namespace key. + */ + Grammar* getGrammar(const XMLCh* const nameSpaceKey); + + /** + * Retrieve the grammar where the root element is declared. + * + * @return Grammar where root element declared + */ + Grammar* getRootGrammar(); + + /** + * Returns the string corresponding to a URI id from the URI string pool. + * + * @param uriId id of the string in the URI string pool. + * @return URI string corresponding to the URI id. + */ + const XMLCh* getURIText(unsigned int uriId) const; + + /** + * Returns the current src offset within the input source. + * To be used only while parsing is in progress. + * + * @return offset within the input source + */ + XMLFilePos getSrcOffset() const; + + /** Get the 'ignore cached DTD grammar' flag + * + * @return true, if the parser is currently configured to + * ignore cached DTD, false otherwise. + * + * @see #setIgnoreCachedDTD + */ + bool getIgnoreCachedDTD() const; + + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + + /** Set the error handler + * + * This method allows applications to install their own error handler + * to trap error and warning messages. + * + * Any previously set handler is merely dropped, since the parser + * does not own them. + * + * @param handler A const pointer to the user supplied error + * handler. + * + * @see #getErrorHandler + */ + void setErrorHandler(ErrorHandler* const handler); + + /** Set the entity resolver + * + * This method allows applications to install their own entity + * resolver. By installing an entity resolver, the applications + * can trap and potentially redirect references to external + * entities. + * + * Any previously set entity resolver is merely dropped, since the parser + * does not own them. If both setEntityResolver and setXMLEntityResolver + * are called, then the last one is used. + * + * @param handler A const pointer to the user supplied entity + * resolver. + * + * @see #getEntityResolver + */ + void setEntityResolver(EntityResolver* const handler); + + /** + * Set the entity resolver + * + * This method allows applications to install their own entity + * resolver. By installing an entity resolver, the applications + * can trap and potentially redirect references to external + * entities. + * + * Any previously set entity resolver is merely dropped, since the parser + * does not own them. If both setEntityResolver and setXMLEntityResolver + * are called, then the last one set is used. + * + * @param handler A const pointer to the user supplied entity + * resolver. + * + * @see #getXMLEntityResolver + */ + void setXMLEntityResolver(XMLEntityResolver* const handler); + + /** Set the 'Grammar caching' flag + * + * This method allows users to enable or disable caching of grammar when + * parsing XML documents. When set to true, the parser will cache the + * resulting grammar for use in subsequent parses. + * + * If the flag is set to true, the 'Use cached grammar' flag will also be + * set to true. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether we should cache grammars + * or not. + * + * @see #isCachingGrammarFromParse + * @see #useCachedGrammarInParse + */ + void cacheGrammarFromParse(const bool newState); + + /** Set the 'Use cached grammar' flag + * + * This method allows users to enable or disable the use of cached + * grammars. When set to true, the parser will use the cached grammar, + * instead of building the grammar from scratch, to validate XML + * documents. + * + * If the 'Grammar caching' flag is set to true, this method ignore the + * value passed in. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether we should use the cached + * grammar or not. + * + * @see #isUsingCachedGrammarInParse + * @see #cacheGrammarFromParse + */ + void useCachedGrammarInParse(const bool newState); + + /** Set the 'ignore cached DTD grammar' flag + * + * This method gives users the option to ignore a cached DTD grammar, when + * an XML document contains both an internal and external DTD, and the use + * cached grammar from parse option is enabled. Currently, we do not allow + * using cached DTD grammar when an internal subset is present in the + * document. This option will only affect the behavior of the parser when + * an internal and external DTD both exist in a document (i.e. no effect + * if document has no internal subset). + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setIgnoreCachedDTD(const bool newValue); + + //@} + + // ----------------------------------------------------------------------- + // Utility methods + // ----------------------------------------------------------------------- + + /** @name Utility methods */ + //@{ + /** Reset the documents vector pool and release all the associated memory + * back to the system. + * + * When parsing a document using a DOM parser, all memory allocated + * for a DOM tree is associated to the DOM document. + * + * If you do multiple parse using the same DOM parser instance, then + * multiple DOM documents will be generated and saved in a vector pool. + * All these documents (and thus all the allocated memory) + * won't be deleted until the parser instance is destroyed. + * + * If you don't need these DOM documents anymore and don't want to + * destroy the DOM parser instance at this moment, then you can call this method + * to reset the document vector pool and release all the allocated memory + * back to the system. + * + * It is an error to call this method if you are in the middle of a + * parse (e.g. in the mid of a progressive parse). + * + * @exception IOException An exception from the parser if this function + * is called when a parse is in progress. + * + */ + void resetDocumentPool(); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the XMLErrorReporter interface. + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLErrorReporter interface. */ + //@{ + + /** Handle errors reported from the parser + * + * This method is used to report back errors found while parsing the + * XML file. This method is also borrowed from the SAX specification. + * It calls the corresponding user installed Error Handler method: + * 'fatal', 'error', 'warning' depending on the severity of the error. + * This classification is defined by the XML specification. + * + * @param errCode An integer code for the error. + * @param msgDomain A const pointer to an Unicode string representing + * the message domain to use. + * @param errType An enumeration classifying the severity of the error. + * @param errorText A const pointer to an Unicode string representing + * the text of the error message. + * @param systemId A const pointer to an Unicode string representing + * the system id of the XML file where this error + * was discovered. + * @param publicId A const pointer to an Unicode string representing + * the public id of the XML file where this error + * was discovered. + * @param lineNum The line number where the error occurred. + * @param colNum The column number where the error occurred. + * @see ErrorHandler + */ + virtual void error + ( + const unsigned int errCode + , const XMLCh* const msgDomain + , const XMLErrorReporter::ErrTypes errType + , const XMLCh* const errorText + , const XMLCh* const systemId + , const XMLCh* const publicId + , const XMLFileLoc lineNum + , const XMLFileLoc colNum + ); + + /** Reset any error data before a new parse + * + * This method allows the user installed Error Handler callback to + * 'reset' itself. + * + * This method is a no-op for this DOM + * implementation. + */ + virtual void resetErrors(); + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the XMLEntityHandler interface. + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLEntityHandler interface. */ + //@{ + + /** Handle an end of input source event + * + * This method is used to indicate the end of parsing of an external + * entity file. + * + * This method is a no-op for this DOM + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the XML file being parsed. + * @see InputSource + */ + virtual void endInputSource(const InputSource& inputSource); + + /** Expand a system id + * + * This method allows an installed XMLEntityHandler to further + * process any system id's of external entities encountered in + * the XML file being parsed, such as redirection etc. + * + * This method always returns 'false' + * for this DOM implementation. + * + * @param systemId A const pointer to an Unicode string representing + * the system id scanned by the parser. + * @param toFill A pointer to a buffer in which the application + * processed system id is stored. + * @return 'true', if any processing is done, 'false' otherwise. + */ + virtual bool expandSystemId + ( + const XMLCh* const systemId + , XMLBuffer& toFill + ); + + /** Reset any entity handler information + * + * This method allows the installed XMLEntityHandler to reset + * itself. + * + * This method is a no-op for this DOM + * implementation. + */ + virtual void resetEntities(); + + /** Resolve a public/system id + * + * This method allows a user installed entity handler to further + * process any pointers to external entities. The applications can + * implement 'redirection' via this callback. + * + * @param resourceIdentifier An object containing the type of + * resource to be resolved and the associated data members + * corresponding to this type. + * @return The value returned by the user installed resolveEntity + * method or NULL otherwise to indicate no processing was done. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @see XMLEntityHandler + * @see XMLEntityResolver + */ + virtual InputSource* resolveEntity + ( + XMLResourceIdentifier* resourceIdentifier + ); + + /** Handle a 'start input source' event + * + * This method is used to indicate the start of parsing an external + * entity file. + * + * This method is a no-op for this DOM parse + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the external entity + * being parsed. + */ + virtual void startInputSource(const InputSource& inputSource); + + //@} + + // ----------------------------------------------------------------------- + // Grammar preparsing interface + // ----------------------------------------------------------------------- + + /** @name Implementation of Grammar preparsing interface's. */ + //@{ + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via an input source + * object. + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the SAX InputSource parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param source A const reference to the SAX InputSource object which + * points to the schema grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * + * @see InputSource#InputSource + */ + Grammar* loadGrammar(const InputSource& source, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML grammar file to be + * preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + Grammar* loadGrammar(const XMLCh* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const char pointer to a native string which contains + * the path to the XML grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + Grammar* loadGrammar(const char* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * This method allows the user to reset the pool of cached grammars. + */ + void resetCachedGrammarPool(); + + //@} + + +private : + // ----------------------------------------------------------------------- + // Initialize/Cleanup methods + // ----------------------------------------------------------------------- + void resetParse(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XercesDOMParser(const XercesDOMParser&); + XercesDOMParser& operator=(const XercesDOMParser&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fEntityResolver + // The installed SAX entity resolver, if any. Null if none. + // + // fErrorHandler + // The installed SAX error handler, if any. Null if none. + //----------------------------------------------------------------------- + EntityResolver* fEntityResolver; + XMLEntityResolver* fXMLEntityResolver; + ErrorHandler* fErrorHandler; +}; + + + +// --------------------------------------------------------------------------- +// XercesDOMParser: Handlers for the XMLEntityHandler interface +// --------------------------------------------------------------------------- +inline void XercesDOMParser::endInputSource(const InputSource&) +{ + // The DOM entity resolver doesn't handle this +} + +inline bool XercesDOMParser::expandSystemId(const XMLCh* const, XMLBuffer&) +{ + // The DOM entity resolver doesn't handle this + return false; +} + +inline void XercesDOMParser::resetEntities() +{ + // Nothing to do on this one +} + +inline void XercesDOMParser::startInputSource(const InputSource&) +{ + // The DOM entity resolver doesn't handle this +} + + +// --------------------------------------------------------------------------- +// XercesDOMParser: Getter methods +// --------------------------------------------------------------------------- +inline ErrorHandler* XercesDOMParser::getErrorHandler() +{ + return fErrorHandler; +} + +inline const ErrorHandler* XercesDOMParser::getErrorHandler() const +{ + return fErrorHandler; +} + +inline EntityResolver* XercesDOMParser::getEntityResolver() +{ + return fEntityResolver; +} + +inline const EntityResolver* XercesDOMParser::getEntityResolver() const +{ + return fEntityResolver; +} + +inline XMLEntityResolver* XercesDOMParser::getXMLEntityResolver() +{ + return fXMLEntityResolver; +} + +inline const XMLEntityResolver* XercesDOMParser::getXMLEntityResolver() const +{ + return fXMLEntityResolver; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax/AttributeList.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax/AttributeList.hpp new file mode 100644 index 000000000000..34ccc819ecfc --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax/AttributeList.hpp @@ -0,0 +1,229 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ATTRIBUTELIST_HPP) +#define XERCESC_INCLUDE_GUARD_ATTRIBUTELIST_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Interface for an element's attribute specifications. + * + * The SAX parser implements this interface and passes an instance + * to the SAX application as the second argument of each startElement + * event. + * + * The instance provided will return valid results only during the + * scope of the startElement invocation (to save it for future + * use, the application must make a copy: the AttributeListImpl + * helper class provides a convenient constructor for doing so). + * + * An AttributeList includes only attributes that have been + * specified or defaulted: \#IMPLIED attributes will not be included. + * + * There are two ways for the SAX application to obtain information + * from the AttributeList. First, it can iterate through the entire + * list: + * + * + * public void startElement (String name, AttributeList atts) {
+ *  for (XMLSize_t i = 0; i < atts.getLength(); i++) {
+ *   String name = atts.getName(i);
+ *   String type = atts.getType(i);
+ *   String value = atts.getValue(i);
+ *   [...]
+ *  }
+ * } + *
+ * + * (Note that the result of getLength() will be zero if there + * are no attributes.) + * + * As an alternative, the application can request the value or + * type of specific attributes: + * + * + * public void startElement (String name, AttributeList atts) {
+ *  String identifier = atts.getValue("id");
+ *  String label = atts.getValue("label");
+ *  [...]
+ * } + *
+ * + * The AttributeListImpl helper class provides a convenience + * implementation for use by parser or application writers. + * + * @see DocumentHandler#startElement + * @see AttributeListImpl#AttributeListImpl + */ + +class SAX_EXPORT AttributeList +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + AttributeList() + { + } + + /** Destructor */ + virtual ~AttributeList() + { + } + //@} + + /** @name The virtual attribute list interface */ + //@{ + /** + * Return the number of attributes in this list. + * + * The SAX parser may provide attributes in any + * arbitrary order, regardless of the order in which they were + * declared or specified. The number of attributes may be + * zero. + * + * @return The number of attributes in the list. + */ + virtual XMLSize_t getLength() const = 0; + + /** + * Return the name of an attribute in this list (by position). + * + * The names must be unique: the SAX parser shall not include the + * same attribute twice. Attributes without values (those declared + * \#IMPLIED without a value specified in the start tag) will be + * omitted from the list. + * + * If the attribute name has a namespace prefix, the prefix + * will still be attached. + * + * @param index The index of the attribute in the list (starting at 0). + * @return The name of the indexed attribute, or null + * if the index is out of range. + * @see #getLength + */ + virtual const XMLCh* getName(const XMLSize_t index) const = 0; + + /** + * Return the type of an attribute in the list (by position). + * + * The attribute type is one of the strings "CDATA", "ID", + * "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES", + * or "NOTATION" (always in upper case). + * + * If the parser has not read a declaration for the attribute, + * or if the parser does not report attribute types, then it must + * return the value "CDATA" as stated in the XML 1.0 Recommendation + * (clause 3.3.3, "Attribute-Value Normalization"). + * + * For an enumerated attribute that is not a notation, the + * parser will report the type as "NMTOKEN". + * + * @param index The index of the attribute in the list (starting at 0). + * @return The attribute type as a string, or + * null if the index is out of range. + * @see #getLength + * @see #getType + */ + virtual const XMLCh* getType(const XMLSize_t index) const = 0; + + /** + * Return the value of an attribute in the list (by position). + * + * If the attribute value is a list of tokens (IDREFS, + * ENTITIES, or NMTOKENS), the tokens will be concatenated + * into a single string separated by whitespace. + * + * @param index The index of the attribute in the list (starting at 0). + * @return The attribute value as a string, or + * null if the index is out of range. + * @see #getLength + * @see #getValue + */ + virtual const XMLCh* getValue(const XMLSize_t index) const = 0; + + /** + * Return the type of an attribute in the list (by name). + * + * The return value is the same as the return value for + * getType(XMLSize_t). + * + * If the attribute name has a namespace prefix in the document, + * the application must include the prefix here. + * + * @param name The name of the attribute. + * @return The attribute type as a string, or null if no + * such attribute exists. + * @see #getType + */ + virtual const XMLCh* getType(const XMLCh* const name) const = 0; + + /** + * Return the value of an attribute in the list (by name). + * + * The return value is the same as the return value for + * getValue(XMLSize_t). + * + * If the attribute name has a namespace prefix in the document, + * the application must include the prefix here. + * + * @param name The name of the attribute in the list. + * @return The attribute value as a string, or null if + * no such attribute exists. + * @see #getValue + */ + virtual const XMLCh* getValue(const XMLCh* const name) const = 0; + + /** + * Return the value of an attribute in the list (by name). + * + * The return value is the same as the return value for + * getValue(XMLSize_t). + * + * If the attribute name has a namespace prefix in the document, + * the application must include the prefix here. + * + * @param name The name of the attribute in the list. + * @return The attribute value as a string, or null if + * no such attribute exists. + * @see #getValue + */ + virtual const XMLCh* getValue(const char* const name) const = 0; + //@} + +private : + /* Constructors and operators */ + /* Copy constructor */ + AttributeList(const AttributeList&); + /* Assignment operator */ + AttributeList& operator=(const AttributeList&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax/DTDHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax/DTDHandler.hpp new file mode 100644 index 000000000000..70eb79ac96bf --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax/DTDHandler.hpp @@ -0,0 +1,159 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DTDHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Receive notification of basic DTD-related events. + * + *

If a SAX application needs information about notations and + * unparsed entities, then the application implements this + * interface and registers an instance with the SAX parser using + * the parser's setDTDHandler method. The parser uses the + * instance to report notation and unparsed entity declarations to + * the application.

+ * + *

The SAX parser may report these events in any order, regardless + * of the order in which the notations and unparsed entities were + * declared; however, all DTD events must be reported after the + * document handler's startDocument event, and before the first + * startElement event.

+ * + *

It is up to the application to store the information for + * future use (perhaps in a hash table or object tree). + * If the application encounters attributes of type "NOTATION", + * "ENTITY", or "ENTITIES", it can use the information that it + * obtained through this interface to find the entity and/or + * notation corresponding with the attribute value.

+ * + *

The HandlerBase class provides a default implementation + * of this interface, which simply ignores the events.

+ * + * @see Parser#setDTDHandler + * @see HandlerBase#HandlerBase + */ + +class SAX_EXPORT DTDHandler +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** Default Constructor */ + DTDHandler() + { + } + + /** Destructor */ + virtual ~DTDHandler() + { + } + + //@} + + /** @name The DTD handler interface */ + //@{ + /** + * Receive notification of a notation declaration event. + * + *

It is up to the application to record the notation for later + * reference, if necessary.

+ * + *

If a system identifier is present, and it is a URL, the SAX + * parser must resolve it fully before passing it to the + * application.

+ * + * @param name The notation name. + * @param publicId The notation's public identifier, or null if + * none was given. + * @param systemId The notation's system identifier, or null if + * none was given. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #unparsedEntityDecl + * @see AttributeList#AttributeList + */ + virtual void notationDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ) = 0; + + /** + * Receive notification of an unparsed entity declaration event. + * + *

Note that the notation name corresponds to a notation + * reported by the notationDecl() event. It is up to the + * application to record the entity for later reference, if + * necessary.

+ * + *

If the system identifier is a URL, the parser must resolve it + * fully before passing it to the application.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @param name The unparsed entity's name. + * @param publicId The entity's public identifier, or null if none + * was given. + * @param systemId The entity's system identifier (it must always + * have one). + * @param notationName The name of the associated notation. + * @see #notationDecl + * @see AttributeList#AttributeList + */ + virtual void unparsedEntityDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + , const XMLCh* const notationName + ) = 0; + + /** + * Reset the DocType object on its reuse + * + *

This method helps in reseting the DTD object implementation + * defaults each time the DTD is begun.

+ * + */ + virtual void resetDocType() = 0; + + //@} + +private : + /* Unimplemented constructors and operators */ + + /* Copy constructor */ + DTDHandler(const DTDHandler&); + + /* Assignment operator */ + DTDHandler& operator=(const DTDHandler&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax/DocumentHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax/DocumentHandler.hpp new file mode 100644 index 000000000000..6aecddb64b73 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax/DocumentHandler.hpp @@ -0,0 +1,283 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOCUMENTHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DOCUMENTHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class AttributeList; +class Locator; + +/** + * Receive notification of general document events. + * + *

This is the main interface that most SAX applications + * implement: if the application needs to be informed of basic parsing + * events, it implements this interface and registers an instance with + * the SAX parser using the setDocumentHandler method. The parser + * uses the instance to report basic document-related events like + * the start and end of elements and character data.

+ * + *

The order of events in this interface is very important, and + * mirrors the order of information in the document itself. For + * example, all of an element's content (character data, processing + * instructions, and/or subelements) will appear, in order, between + * the startElement event and the corresponding endElement event.

+ * + *

Application writers who do not want to implement the entire + * interface while can derive a class from HandlerBase, which implements + * the default functionality; parser writers can instantiate + * HandlerBase to obtain a default handler. The application can find + * the location of any document event using the Locator interface + * supplied by the Parser through the setDocumentLocator method.

+ * + * @see Parser#setDocumentHandler + * @see Locator#Locator + * @see HandlerBase#HandlerBase + */ + +class SAX_EXPORT DocumentHandler +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + DocumentHandler() + { + } + + /** Destructor */ + virtual ~DocumentHandler() + { + } + //@} + + /** @name The virtual document handler interface */ + + //@{ + /** + * Receive notification of character data. + * + *

The Parser will call this method to report each chunk of + * character data. SAX parsers may return all contiguous character + * data in a single chunk, or they may split it into several + * chunks; however, all of the characters in any single event + * must come from the same external entity, so that the Locator + * provides useful information.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + *

Note that some parsers will report whitespace using the + * ignorableWhitespace() method rather than this one (validating + * parsers must do so).

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #ignorableWhitespace + * @see Locator#Locator + */ + virtual void characters + ( + const XMLCh* const chars + , const XMLSize_t length + ) = 0; + + /** + * Receive notification of the end of a document. + * + *

The SAX parser will invoke this method only once, and it will + * be the last method invoked during the parse. The parser shall + * not invoke this method until it has either abandoned parsing + * (because of an unrecoverable error) or reached the end of + * input.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endDocument () = 0; + + /** + * Receive notification of the end of an element. + * + *

The SAX parser will invoke this method at the end of every + * element in the XML document; there will be a corresponding + * startElement() event for every endElement() event (even when the + * element is empty).

+ * + *

If the element name has a namespace prefix, the prefix will + * still be attached to the name.

+ * + * @param name The element type name + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endElement(const XMLCh* const name) = 0; + + /** + * Receive notification of ignorable whitespace in element content. + * + *

Validating Parsers must use this method to report each chunk + * of ignorable whitespace (see the W3C XML 1.0 recommendation, + * section 2.10): non-validating parsers may also use this method + * if they are capable of parsing and using content models.

+ * + *

SAX parsers may return all contiguous whitespace in a single + * chunk, or they may split it into several chunks; however, all of + * the characters in any single event must come from the same + * external entity, so that the Locator provides useful + * information.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #characters + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ) = 0; + + /** + * Receive notification of a processing instruction. + * + *

The Parser will invoke this method once for each processing + * instruction found: note that processing instructions may occur + * before or after the main document element.

+ * + *

A SAX parser should never report an XML declaration (XML 1.0, + * section 2.8) or a text declaration (XML 1.0, section 4.3.1) + * using this method.

+ * + * @param target The processing instruction target. + * @param data The processing instruction data, or null if + * none was supplied. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void processingInstruction + ( + const XMLCh* const target + , const XMLCh* const data + ) = 0; + + /** + * Reset the Document object on its reuse + * + *

This method helps in reseting the document implementation + * defaults each time the document is begun.

+ * + */ + virtual void resetDocument() = 0; + + /** + * Receive an object for locating the origin of SAX document events. + * + * SAX parsers are strongly encouraged (though not absolutely + * required) to supply a locator: if it does so, it must supply + * the locator to the application by invoking this method before + * invoking any of the other methods in the DocumentHandler + * interface. + * + * The locator allows the application to determine the end + * position of any document-related event, even if the parser is + * not reporting an error. Typically, the application will + * use this information for reporting its own errors (such as + * character content that does not match an application's + * business rules). The information returned by the locator + * is probably not sufficient for use with a search engine. + * + * Note that the locator will return correct information only + * during the invocation of the events in this interface. The + * application should not attempt to use it at any other time. + * + * @param locator An object that can return the location of + * any SAX document event. The object is only + * 'on loan' to the client code and they are not + * to attempt to delete or modify it in any way! + * + * @see Locator#Locator + */ + virtual void setDocumentLocator(const Locator* const locator) = 0; + + /** + * Receive notification of the beginning of a document. + * + *

The SAX parser will invoke this method only once, before any + * other methods in this interface or in DTDHandler (except for + * setDocumentLocator).

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startDocument() = 0; + + /** + * Receive notification of the beginning of an element. + * + *

The Parser will invoke this method at the beginning of every + * element in the XML document; there will be a corresponding + * endElement() event for every startElement() event (even when the + * element is empty). All of the element's content will be + * reported, in order, before the corresponding endElement() + * event.

+ * + *

If the element name has a namespace prefix, the prefix will + * still be attached. Note that the attribute list provided will + * contain only attributes with explicit values (specified or + * defaulted): \#IMPLIED attributes will be omitted.

+ * + * @param name The element type name. + * @param attrs The attributes attached to the element, if any. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #endElement + * @see AttributeList#AttributeList + */ + virtual void startElement + ( + const XMLCh* const name + , AttributeList& attrs + ) = 0; + + //@} + +private : + /* Unimplemented Constructors and operators */ + /* Copy constructor */ + DocumentHandler(const DocumentHandler&); + /** Assignment operator */ + DocumentHandler& operator=(const DocumentHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax/EntityResolver.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax/EntityResolver.hpp new file mode 100644 index 000000000000..1b1a122189d7 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax/EntityResolver.hpp @@ -0,0 +1,165 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ENTITYRESOLVER_HPP) +#define XERCESC_INCLUDE_GUARD_ENTITYRESOLVER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class InputSource; + +/** + * Basic interface for resolving entities. + * + *

If a SAX application needs to implement customized handling + * for external entities, it must implement this interface and + * register an instance with the SAX parser using the parser's + * setEntityResolver method.

+ * + *

The parser will then allow the application to intercept any + * external entities (including the external DTD subset and external + * parameter entities, if any) before including them.

+ * + *

Many SAX applications will not need to implement this interface, + * but it will be especially useful for applications that build + * XML documents from databases or other specialised input sources, + * or for applications that use URI types other than URLs.

+ * + *

The following resolver would provide the application + * with a special character stream for the entity with the system + * identifier "http://www.myhost.com/today":

+ * + * + *\#include
+ *\#include
+ *
+ *class MyResolver : public EntityResolver {
+ * public:
  + * InputSource* resolveEntity (const XMLCh* const publicId, const XMLCh* const systemId);
   + *
+ * ...
   + * };
  + *
+ * MyResolver::resolveEntity {
+ *  if (XMLString::compareString(systemId, "http://www.myhost.com/today")) {
+ *   MyReader* reader = new MyReader();
+ *   return new InputSource(reader);
+ *  } else {
+ *   return null;
+ *  }
+ * }
+ *
+ *
+ * + *

The application can also use this interface to redirect system + * identifiers to local URIs or to look up replacements in a catalog + * (possibly by using the public identifier).

+ * + *

The HandlerBase class implements the default behaviour for + * this interface, which is simply always to return null (to request + * that the parser use the default system identifier).

+ * + * @see Parser#setEntityResolver + * @see InputSource#InputSource + * @see HandlerBase#HandlerBase + */ +class SAX_EXPORT EntityResolver +{ +public: + /** @name Constructors and Destructor */ + //@{ + + /** Default Constructor */ + EntityResolver() + { + } + + /** Destructor */ + virtual ~EntityResolver() + { + } + + //@} + + /** @name The EntityResolver interface */ + //@{ + + /** + * Allow the application to resolve external entities. + * + *

The Parser will call this method before opening any external + * entity except the top-level document entity (including the + * external DTD subset, external entities referenced within the + * DTD, and external entities referenced within the document + * element): the application may request that the parser resolve + * the entity itself, that it use an alternative URI, or that it + * use an entirely different input source.

+ * + *

Application writers can use this method to redirect external + * system identifiers to secure and/or local URIs, to look up + * public identifiers in a catalogue, or to read an entity from a + * database or other input source (including, for example, a dialog + * box).

+ * + *

If the system identifier is a URL, the SAX parser must + * resolve it fully before reporting it to the application.

+ * + * @param publicId The public identifier of the external entity + * being referenced, or null if none was supplied. + * @param systemId The system identifier of the external entity + * being referenced. + * @return An InputSource object describing the new input source, + * or null to request that the parser open a regular + * URI connection to the system identifier. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception IOException An IO exception, + * possibly the result of creating a new InputStream + * or Reader for the InputSource. + * @see InputSource#InputSource + */ + virtual InputSource* resolveEntity + ( + const XMLCh* const publicId + , const XMLCh* const systemId + ) = 0; + + //@} + +private : + /* Unimplemented constructors and operators */ + + + /* Copy constructor */ + EntityResolver(const EntityResolver&); + + /* Assignment operator */ + EntityResolver& operator=(const EntityResolver&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax/ErrorHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax/ErrorHandler.hpp new file mode 100644 index 000000000000..eb517fc6e822 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax/ErrorHandler.hpp @@ -0,0 +1,168 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ERRORHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_ERRORHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class SAXParseException; + + +/** + * Basic interface for SAX error handlers. + * + *

If a SAX application needs to implement customized error + * handling, it must implement this interface and then register an + * instance with the SAX parser using the parser's setErrorHandler + * method. The parser will then report all errors and warnings + * through this interface.

+ * + *

The parser shall use this interface instead of throwing an + * exception: it is up to the application whether to throw an + * exception for different types of errors and warnings. Note, + * however, that there is no requirement that the parser continue to + * provide useful information after a call to fatalError (in other + * words, a SAX driver class could catch an exception and report a + * fatalError).

+ * + *

The HandlerBase class provides a default implementation of this + * interface, ignoring warnings and recoverable errors and throwing a + * SAXParseException for fatal errors. An application may extend + * that class rather than implementing the complete interface + * itself.

+ * + * @see Parser#setErrorHandler + * @see SAXParseException#SAXParseException + * @see HandlerBase#HandlerBase + */ + +class SAX_EXPORT ErrorHandler +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + ErrorHandler() + { + } + + /** Destructor */ + virtual ~ErrorHandler() + { + } + //@} + + /** @name The error handler interface */ + //@{ + /** + * Receive notification of a warning. + * + *

SAX parsers will use this method to report conditions that + * are not errors or fatal errors as defined by the XML 1.0 + * recommendation. The default behaviour is to take no action.

+ * + *

The SAX parser must continue to provide normal parsing events + * after invoking this method: it should still be possible for the + * application to process the document through to the end.

+ * + * @param exc The warning information encapsulated in a + * SAX parse exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see SAXParseException#SAXParseException + */ + virtual void warning(const SAXParseException& exc) = 0; + + /** + * Receive notification of a recoverable error. + * + *

This corresponds to the definition of "error" in section 1.2 + * of the W3C XML 1.0 Recommendation. For example, a validating + * parser would use this callback to report the violation of a + * validity constraint. The default behaviour is to take no + * action.

+ * + *

The SAX parser must continue to provide normal parsing events + * after invoking this method: it should still be possible for the + * application to process the document through to the end. If the + * application cannot do so, then the parser should report a fatal + * error even if the XML 1.0 recommendation does not require it to + * do so.

+ * + * @param exc The error information encapsulated in a + * SAX parse exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see SAXParseException#SAXParseException + */ + virtual void error(const SAXParseException& exc) = 0; + + /** + * Receive notification of a non-recoverable error. + * + *

This corresponds to the definition of "fatal error" in + * section 1.2 of the W3C XML 1.0 Recommendation. For example, a + * parser would use this callback to report the violation of a + * well-formedness constraint.

+ * + *

The application must assume that the document is unusable + * after the parser has invoked this method, and should continue + * (if at all) only for the sake of collecting addition error + * messages: in fact, SAX parsers are free to stop reporting any + * other events once this method has been invoked.

+ * + * @param exc The error information encapsulated in a + * SAX parse exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see SAXParseException#SAXParseException + */ + virtual void fatalError(const SAXParseException& exc) = 0; + + /** + * Reset the Error handler object on its reuse + * + *

This method helps in reseting the Error handler object + * implementation defaults each time the Error handler is begun.

+ * + */ + virtual void resetErrors() = 0; + + + //@} + +private : + /* Unimplemented constructors and operators */ + + /* Copy constructor */ + ErrorHandler(const ErrorHandler&); + + /* Assignment operator */ + ErrorHandler& operator=(const ErrorHandler&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax/HandlerBase.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax/HandlerBase.hpp new file mode 100644 index 000000000000..12a5cbe2aed6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax/HandlerBase.hpp @@ -0,0 +1,466 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_HANDLERBASE_HPP) +#define XERCESC_INCLUDE_GUARD_HANDLERBASE_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class Locator; +class AttributeList; + +/** + * Default base class for handlers. + * + *

This class implements the default behaviour for four SAX + * interfaces: EntityResolver, DTDHandler, DocumentHandler, + * and ErrorHandler.

+ * + *

Application writers can extend this class when they need to + * implement only part of an interface; parser writers can + * instantiate this class to provide default handlers when the + * application has not supplied its own.

+ * + *

Note that the use of this class is optional.

+ * + * @see EntityResolver#EntityResolver + * @see DTDHandler#DTDHandler + * @see DocumentHandler#DocumentHandler + * @see ErrorHandler#ErrorHandler + */ + +class SAX_EXPORT HandlerBase : + + public EntityResolver, public DTDHandler, public DocumentHandler + , public ErrorHandler +{ +public: + /** @name Default handlers for the DocumentHandler interface */ + //@{ + /** + * Receive notification of character data inside an element. + * + *

By default, do nothing. Application writers may override this + * method to take specific actions for each chunk of character data + * (such as adding the data to a node or buffer, or printing it to + * a file).

+ * + * @param chars The characters. + * @param length The number of characters to use from the + * character array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#characters + */ + virtual void characters + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * Receive notification of the end of the document. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the beginning + * of a document (such as finalising a tree or closing an output + * file).

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#endDocument + */ + virtual void endDocument(); + + /** + * Receive notification of the end of an element. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the end of + * each element (such as finalising a tree node or writing + * output to a file).

+ * + * @param name The element type name. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#endElement + */ + virtual void endElement(const XMLCh* const name); + + /** + * Receive notification of ignorable whitespace in element content. + * + *

By default, do nothing. Application writers may override this + * method to take specific actions for each chunk of ignorable + * whitespace (such as adding data to a node or buffer, or printing + * it to a file).

+ * + * @param chars The whitespace characters. + * @param length The number of characters to use from the + * character array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#ignorableWhitespace + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * Receive notification of a processing instruction. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions for each + * processing instruction, such as setting status variables or + * invoking other methods.

+ * + * @param target The processing instruction target. + * @param data The processing instruction data, or null if + * none is supplied. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#processingInstruction + */ + virtual void processingInstruction + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** + * Reset the Document object on its reuse + * + * @see DocumentHandler#resetDocument + */ + virtual void resetDocument(); + //@} + + /** @name Default implementation of DocumentHandler interface */ + + //@{ + /** + * Receive a Locator object for document events. + * + *

By default, do nothing. Application writers may override this + * method in a subclass if they wish to store the locator for use + * with other document events.

+ * + * @param locator A locator for all SAX document events. + * @see DocumentHandler#setDocumentLocator + * @see Locator + */ + virtual void setDocumentLocator(const Locator* const locator); + + /** + * Receive notification of the beginning of the document. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the beginning + * of a document (such as allocating the root node of a tree or + * creating an output file).

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#startDocument + */ + virtual void startDocument(); + + /** + * Receive notification of the start of an element. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the start of + * each element (such as allocating a new tree node or writing + * output to a file).

+ * + * @param name The element type name. + * @param attributes The specified or defaulted attributes. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#startElement + */ + virtual void startElement + ( + const XMLCh* const name + , AttributeList& attributes + ); + + //@} + + /** @name Default implementation of the EntityResolver interface. */ + + //@{ + /** + * Resolve an external entity. + * + *

Always return null, so that the parser will use the system + * identifier provided in the XML document. This method implements + * the SAX default behaviour: application writers can override it + * in a subclass to do special translations such as catalog lookups + * or URI redirection.

+ * + * @param publicId The public identifier, or null if none is + * available. + * @param systemId The system identifier provided in the XML + * document. + * @return The new input source, or null to require the + * default behaviour. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see EntityResolver#resolveEntity + */ + virtual InputSource* resolveEntity + ( + const XMLCh* const publicId + , const XMLCh* const systemId + ); + + //@} + + /** @name Default implementation of the ErrorHandler interface */ + //@{ + /** + * Receive notification of a recoverable parser error. + * + *

The default implementation does nothing. Application writers + * may override this method in a subclass to take specific actions + * for each error, such as inserting the message in a log file or + * printing it to the console.

+ * + * @param exc The warning information encoded as an exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see ErrorHandler#warning + * @see SAXParseException#SAXParseException + */ + virtual void error(const SAXParseException& exc); + + /** + * Report a fatal XML parsing error. + * + *

The default implementation throws a SAXParseException. + * Application writers may override this method in a subclass if + * they need to take specific actions for each fatal error (such as + * collecting all of the errors into a single report): in any case, + * the application must stop all regular processing when this + * method is invoked, since the document is no longer reliable, and + * the parser may no longer report parsing events.

+ * + * @param exc The error information encoded as an exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see ErrorHandler#fatalError + * @see SAXParseException#SAXParseException + */ + virtual void fatalError(const SAXParseException& exc); + + /** + * Receive notification of a parser warning. + * + *

The default implementation does nothing. Application writers + * may override this method in a subclass to take specific actions + * for each warning, such as inserting the message in a log file or + * printing it to the console.

+ * + * @param exc The warning information encoded as an exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see ErrorHandler#warning + * @see SAXParseException#SAXParseException + */ + virtual void warning(const SAXParseException& exc); + + /** + * Reset the Error handler object on its reuse + * + * @see ErrorHandler#resetErrors + */ + virtual void resetErrors(); + + //@} + + + /** @name Default implementation of DTDHandler interface. */ + //@{ + + /** + * Receive notification of a notation declaration. + * + *

By default, do nothing. Application writers may override this + * method in a subclass if they wish to keep track of the notations + * declared in a document.

+ * + * @param name The notation name. + * @param publicId The notation public identifier, or null if not + * available. + * @param systemId The notation system identifier. + * @see DTDHandler#notationDecl + */ + virtual void notationDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ); + + /** + * Reset the DTD object on its reuse + * + * @see DTDHandler#resetDocType + */ + virtual void resetDocType(); + + /** + * Receive notification of an unparsed entity declaration. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to keep track of the unparsed entities + * declared in a document.

+ * + * @param name The entity name. + * @param publicId The entity public identifier, or null if not + * available. + * @param systemId The entity system identifier. + * @param notationName The name of the associated notation. + * @see DTDHandler#unparsedEntityDecl + */ + virtual void unparsedEntityDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + , const XMLCh* const notationName + ); + //@} + + HandlerBase() {}; + virtual ~HandlerBase() {}; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + HandlerBase(const HandlerBase&); + HandlerBase& operator=(const HandlerBase&); +}; + + +// --------------------------------------------------------------------------- +// HandlerBase: Inline default implementations +// --------------------------------------------------------------------------- +inline void HandlerBase::characters(const XMLCh* const + , const XMLSize_t) +{ +} + +inline void HandlerBase::endDocument() +{ +} + +inline void HandlerBase::endElement(const XMLCh* const) +{ +} + +inline void HandlerBase::error(const SAXParseException&) +{ +} + +inline void HandlerBase::fatalError(const SAXParseException& exc) +{ + throw exc; +} + +inline void +HandlerBase::ignorableWhitespace( const XMLCh* const + , const XMLSize_t) +{ +} + +inline void HandlerBase::notationDecl( const XMLCh* const + , const XMLCh* const + , const XMLCh* const) +{ +} + +inline void +HandlerBase::processingInstruction( const XMLCh* const + , const XMLCh* const) +{ +} + +inline void HandlerBase::resetErrors() +{ +} + +inline void HandlerBase::resetDocument() +{ +} + +inline void HandlerBase::resetDocType() +{ +} + +inline InputSource* +HandlerBase::resolveEntity( const XMLCh* const + , const XMLCh* const) +{ + return 0; +} + +inline void +HandlerBase::unparsedEntityDecl(const XMLCh* const + , const XMLCh* const + , const XMLCh* const + , const XMLCh* const) +{ +} + +inline void HandlerBase::setDocumentLocator(const Locator* const) +{ +} + +inline void HandlerBase::startDocument() +{ +} + +inline void +HandlerBase::startElement( const XMLCh* const + , AttributeList&) +{ +} + +inline void HandlerBase::warning(const SAXParseException&) +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax/InputSource.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax/InputSource.hpp new file mode 100644 index 000000000000..58334b7a1713 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax/InputSource.hpp @@ -0,0 +1,337 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_INPUTSOURCE_HPP) +#define XERCESC_INCLUDE_GUARD_INPUTSOURCE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class BinInputStream; + + +/** + * A single input source for an XML entity. + * + *

This class encapsulates information about an input source in a + * single object, which may include a public identifier or a system + * identifier

+ * + *

There are two places that the application will deliver this input + * source to the parser: as the argument to the Parser::parse method, or as + * the return value of the EntityResolver::resolveEntity method.

+ * + *

InputSource is never used directly, but is the base class for a number + * of derived classes for particular types of input sources. Derivatives are + * provided (in the framework/ directory) for URL input sources, memory buffer + * input sources, and so on.

+ * + *

When it is time to parse the input described by an input source, it + * will be asked to create a binary stream for that source. That stream will + * be used to input the data of the source. The derived class provides the + * implementation of the makeStream() method, and provides a type of stream + * of the correct type for the input source it represents. + * + *

An InputSource object belongs to the application: the parser never + * modifies them in any way. They are always passed by const reference so + * the parser will make a copy of any input sources that it must keep + * around beyond the call.

+ * + * @see Parser#parse + * @see EntityResolver#resolveEntity + */ +class SAX_EXPORT InputSource : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~InputSource(); + //@} + + + // ----------------------------------------------------------------------- + /** @name Virtual input source interface */ + //@{ + /** + * Makes the byte stream for this input source. + * + *

The derived class must create and return a binary input stream of an + * appropriate type for its kind of data source. The returned stream must + * be dynamically allocated and becomes the parser's property. + *

+ * + * @see BinInputStream + */ + virtual BinInputStream* makeStream() const = 0; + + //@} + + + // ----------------------------------------------------------------------- + /** @name Getter methods */ + //@{ + /** + * An input source can be set to force the parser to assume a particular + * encoding for the data that input source represents, via the setEncoding() + * method. This method returns name of the encoding that is to be forced. + * If the encoding has never been forced, it returns a null pointer. + * + * @return The forced encoding, or null if none was supplied. + * @see #setEncoding + */ + virtual const XMLCh* getEncoding() const; + + + /** + * Get the public identifier for this input source. + * + * @return The public identifier, or null if none was supplied. + * @see #setPublicId + */ + virtual const XMLCh* getPublicId() const; + + + /** + * Get the system identifier for this input source. + * + *

If the system ID is a URL, it will be fully resolved.

+ * + * @return The system identifier. + * @see #setSystemId + */ + virtual const XMLCh* getSystemId() const; + + /** + * Get the flag that indicates if the parser should issue fatal error if this input source + * is not found. + * + * @return True if the parser should issue fatal error if this input source is not found. + * False if the parser issue warning message instead. + * @see #setIssueFatalErrorIfNotFound + */ + virtual bool getIssueFatalErrorIfNotFound() const; + + MemoryManager* getMemoryManager() const; + + //@} + + + // ----------------------------------------------------------------------- + /** @name Setter methods */ + //@{ + + /** + * Set the encoding which will be required for use with the XML text read + * via a stream opened by this input source. + * + *

This is usually not set, allowing the encoding to be sensed in the + * usual XML way. However, in some cases, the encoding in the file is known + * to be incorrect because of intermediate transcoding, for instance + * encapsulation within a MIME document. + * + * @param encodingStr The name of the encoding to force. + */ + virtual void setEncoding(const XMLCh* const encodingStr); + + + /** + * Set the public identifier for this input source. + * + *

The public identifier is always optional: if the application writer + * includes one, it will be provided as part of the location information.

+ * + * @param publicId The public identifier as a string. + * @see Locator#getPublicId + * @see SAXParseException#getPublicId + * @see #getPublicId + */ + virtual void setPublicId(const XMLCh* const publicId); + + /** + * Set the system identifier for this input source. + * + *

Set the system identifier for this input source. + * + *

The system id is always required. The public id may be used to map + * to another system id, but the system id must always be present as a fall + * back. + * + *

If the system ID is a URL, it must be fully resolved.

+ * + * @param systemId The system identifier as a string. + * @see #getSystemId + * @see Locator#getSystemId + * @see SAXParseException#getSystemId + */ + virtual void setSystemId(const XMLCh* const systemId); + + /** + * Indicates if the parser should issue fatal error if this input source + * is not found. If set to false, the parser issue warning message instead. + * + * @param flag True if the parser should issue fatal error if this input source is not found. + * If set to false, the parser issue warning message instead. (Default: true) + * + * @see #getIssueFatalErrorIfNotFound + */ + virtual void setIssueFatalErrorIfNotFound(const bool flag); + + //@} + + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + InputSource(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Constructor with a system identifier as XMLCh type. + * @param systemId The system identifier (URI). + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + InputSource(const XMLCh* const systemId, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Constructor with a system and public identifiers + * @param systemId The system identifier (URI). + * @param publicId The public identifier as in the entity definition. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + InputSource + ( + const XMLCh* const systemId + , const XMLCh* const publicId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Constructor witha system identifier as string + * @param systemId The system identifier (URI). + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + InputSource(const char* const systemId, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Constructor witha system and public identifiers. Both as string + * @param systemId The system identifier (URI). + * @param publicId The public identifier as in the entity definition. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + InputSource + ( + const char* const systemId + , const char* const publicId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + + + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + InputSource(const InputSource&); + InputSource& operator=(const InputSource&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fEncoding + // This is the encoding to use. Usually this is null, which means + // to use the information found in the file itself. But, if set, + // this encoding will be used without question. + // + // fPublicId + // This is the optional public id for the input source. It can be + // null if none is desired. + // + // fSystemId + // This is the system id for the input source. This is what is + // actually used to open the source. + // + // fFatalErrorIfNotFound + // ----------------------------------------------------------------------- + MemoryManager* const fMemoryManager; + XMLCh* fEncoding; + XMLCh* fPublicId; + XMLCh* fSystemId; + bool fFatalErrorIfNotFound; +}; + + +// --------------------------------------------------------------------------- +// InputSource: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh* InputSource::getEncoding() const +{ + return fEncoding; +} + +inline const XMLCh* InputSource::getPublicId() const +{ + return fPublicId; +} + +inline const XMLCh* InputSource::getSystemId() const +{ + return fSystemId; +} + +inline bool InputSource::getIssueFatalErrorIfNotFound() const +{ + return fFatalErrorIfNotFound; +} + +inline MemoryManager* InputSource::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// InputSource: Setter methods +// --------------------------------------------------------------------------- +inline void InputSource::setIssueFatalErrorIfNotFound(const bool flag) +{ + fFatalErrorIfNotFound = flag; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax/Locator.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax/Locator.hpp new file mode 100644 index 000000000000..68eb188f20e2 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax/Locator.hpp @@ -0,0 +1,125 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_LOCATOR_HPP) +#define XERCESC_INCLUDE_GUARD_LOCATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Interface for associating a SAX event with a document location. + * + *

If a SAX parser provides location information to the SAX + * application, it does so by implementing this interface and then + * passing an instance to the application using the document + * handler's setDocumentLocator method. The application can use the + * object to obtain the location of any other document handler event + * in the XML source document.

+ * + *

Note that the results returned by the object will be valid only + * during the scope of each document handler method: the application + * will receive unpredictable results if it attempts to use the + * locator at any other time.

+ * + *

SAX parsers are not required to supply a locator, but they are + * very strong encouraged to do so. If the parser supplies a + * locator, it must do so before reporting any other document events. + * If no locator has been set by the time the application receives + * the startDocument event, the application should assume that a + * locator is not available.

+ * + * @see DocumentHandler#setDocumentLocator + */ + +class SAX_EXPORT Locator +{ +public: + + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + Locator() + { + } + + /** Destructor */ + virtual ~Locator() + { + } + + //@} + + /** @name The locator interface */ + //@{ + /** + * Return the public identifier for the current document event. + *

This will be the public identifier + * @return A string containing the public identifier, or + * null if none is available. + * @see #getSystemId + */ + virtual const XMLCh* getPublicId() const = 0; + + /** + * Return the system identifier for the current document event. + * + *

If the system identifier is a URL, the parser must resolve it + * fully before passing it to the application.

+ * + * @return A string containing the system identifier, or null + * if none is available. + * @see #getPublicId + */ + virtual const XMLCh* getSystemId() const = 0; + + /** + * Return the line number where the current document event ends. + * Note that this is the line position of the first character + * after the text associated with the document event. + * @return The line number, or 0 if none is available. + * @see #getColumnNumber + */ + virtual XMLFileLoc getLineNumber() const = 0; + + /** + * Return the column number where the current document event ends. + * Note that this is the column number of the first + * character after the text associated with the document + * event. The first column in a line is position 1. + * @return The column number, or 0 if none is available. + * @see #getLineNumber + */ + virtual XMLFileLoc getColumnNumber() const = 0; + //@} + +private : + /* Copy constructor */ + Locator(const Locator&); + + /* Assignment operator */ + Locator& operator=(const Locator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax/Parser.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax/Parser.hpp new file mode 100644 index 000000000000..16772ebabced --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax/Parser.hpp @@ -0,0 +1,245 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PARSER_HPP) +#define XERCESC_INCLUDE_GUARD_PARSER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DTDHandler; +class EntityResolver; +class DocumentHandler; +class ErrorHandler; +class InputSource; + +/** + * Basic interface for SAX (Simple API for XML) parsers. + * + * All SAX parsers must implement this basic interface: it allows + * applications to register handlers for different types of events + * and to initiate a parse from a URI, or a character stream. + * + * All SAX parsers must also implement a zero-argument constructor + * (though other constructors are also allowed). + * + * SAX parsers are reusable but not re-entrant: the application + * may reuse a parser object (possibly with a different input source) + * once the first parse has completed successfully, but it may not + * invoke the parse() methods recursively within a parse. + * + * @see EntityResolver#EntityResolver + * @see DTDHandler#DTDHandler + * @see DocumentHandler#DocumentHandler + * @see ErrorHandler#ErrorHandler + * @see HandlerBase#HandlerBase + * @see InputSource#InputSource + */ + +#include + +class SAX_EXPORT Parser +{ +public: + /** @name Constructors and Destructor */ + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + //@{ + /** The default constructor */ + Parser() + { + } + /** The destructor */ + virtual ~Parser() + { + } + //@} + + //----------------------------------------------------------------------- + // The parser interface + //----------------------------------------------------------------------- + /** @name The parser interfaces */ + //@{ + /** + * Allow an application to register a custom entity resolver. + * + * If the application does not register an entity resolver, the + * SAX parser will resolve system identifiers and open connections + * to entities itself (this is the default behaviour implemented in + * HandlerBase). + * + * Applications may register a new or different entity resolver + * in the middle of a parse, and the SAX parser must begin using + * the new resolver immediately. + * + * @param resolver The object for resolving entities. + * @see EntityResolver#EntityResolver + * @see HandlerBase#HandlerBase + */ + virtual void setEntityResolver(EntityResolver* const resolver) = 0; + + /** + * Allow an application to register a DTD event handler. + * + * If the application does not register a DTD handler, all DTD + * events reported by the SAX parser will be silently ignored (this + * is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the middle + * of a parse, and the SAX parser must begin using the new handler + * immediately. + * + * @param handler The DTD handler. + * @see DTDHandler#DTDHandler + * @see HandlerBase#HandlerBase + */ + virtual void setDTDHandler(DTDHandler* const handler) = 0; + + /** + * Allow an application to register a document event handler. + * + * If the application does not register a document handler, all + * document events reported by the SAX parser will be silently + * ignored (this is the default behaviour implemented by + * HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The document handler. + * @see DocumentHandler#DocumentHandler + * @see HandlerBase#HandlerBase + */ + virtual void setDocumentHandler(DocumentHandler* const handler) = 0; + + /** + * Allow an application to register an error event handler. + * + * If the application does not register an error event handler, + * all error events reported by the SAX parser will be silently + * ignored, except for fatalError, which will throw a SAXException + * (this is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The error handler. + * @see ErrorHandler#ErrorHandler + * @see SAXException#SAXException + * @see HandlerBase#HandlerBase + */ + virtual void setErrorHandler(ErrorHandler* const handler) = 0; + + /** + * Parse an XML document. + * + * The application can use this method to instruct the SAX parser + * to begin parsing an XML document from any valid input + * source (a character stream, a byte stream, or a URI). + * + * Applications may not invoke this method while a parse is in + * progress (they should create a new Parser instead for each + * additional XML document). Once a parse is complete, an + * application may reuse the same Parser object, possibly with a + * different input source. + * + * @param source The input source for the top-level of the + * XML document. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see InputSource#InputSource + * @see #setEntityResolver + * @see #setDTDHandler + * @see #setDocumentHandler + * @see #setErrorHandler + */ + virtual void parse + ( + const InputSource& source + ) = 0; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(const InputSource&) + */ + virtual void parse + ( + const XMLCh* const systemId + ) = 0; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(const InputSource&) + */ + virtual void parse + ( + const char* const systemId + ) = 0; + //@} + + +private : + /* The copy constructor, you cannot call this directly */ + Parser(const Parser&); + + /* The assignment operator, you cannot call this directly */ + Parser& operator=(const Parser&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax/SAXException.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax/SAXException.hpp new file mode 100644 index 000000000000..95098a37bf23 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax/SAXException.hpp @@ -0,0 +1,230 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SAXEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_SAXEXCEPTION_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * Encapsulate a general SAX error or warning. + * + *

This class can contain basic error or warning information from + * either the XML SAX parser or the application: a parser writer or + * application writer can subclass it to provide additional + * functionality. SAX handlers may throw this exception or + * any exception subclassed from it.

+ * + *

If the application needs to pass through other types of + * exceptions, it must wrap those exceptions in a SAXException + * or an exception derived from a SAXException.

+ * + *

If the parser or application needs to include information + * about a specific location in an XML document, it should use the + * SAXParseException subclass.

+ * + * @see SAXParseException#SAXParseException + */ +class SAX_EXPORT SAXException : public XMemory +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** Default constructor + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + SAXException(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) : + + fMsg(XMLString::replicate(XMLUni::fgZeroLenString, manager)) + , fMemoryManager(manager) + { + } + + /** + * Create a new SAXException. + * + * @param msg The error or warning message. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + SAXException(const XMLCh* const msg, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) : + + fMsg(XMLString::replicate(msg, manager)) + , fMemoryManager(manager) + { + } + + /** + * Create a new SAXException. + * + * @param msg The error or warning message. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + SAXException(const char* const msg, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) : + + fMsg(XMLString::transcode(msg, manager)) + , fMemoryManager(manager) + { + } + + /** + * Copy constructor + * + * @param toCopy The exception to be copy constructed + */ + SAXException(const SAXException& toCopy) : + XMemory(toCopy) + , fMsg(XMLString::replicate(toCopy.fMsg, toCopy.fMemoryManager)) + , fMemoryManager(toCopy.fMemoryManager) + { + } + + /** Destructor */ + virtual ~SAXException() + { + fMemoryManager->deallocate(fMsg);//delete [] fMsg; + } + + //@} + + + /** @name Public Operators */ + //@{ + /** + * Assignment operator + * + * @param toCopy The object to be copied + */ + SAXException& operator=(const SAXException& toCopy) + { + if (this == &toCopy) + return *this; + + fMemoryManager->deallocate(fMsg);//delete [] fMsg; + fMsg = XMLString::replicate(toCopy.fMsg, toCopy.fMemoryManager); + fMemoryManager = toCopy.fMemoryManager; + return *this; + } + //@} + + /** @name Getter Methods */ + //@{ + /** + * Get the contents of the message + * + */ + virtual const XMLCh* getMessage() const + { + return fMsg; + } + //@} + + +protected : + // ----------------------------------------------------------------------- + // Protected data members + // + // fMsg + // This is the text of the error that is being thrown. + // ----------------------------------------------------------------------- + XMLCh* fMsg; + MemoryManager* fMemoryManager; +}; + +class SAX_EXPORT SAXNotSupportedException : public SAXException +{ + +public: + SAXNotSupportedException(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Create a new SAXException. + * + * @param msg The error or warning message. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + SAXNotSupportedException(const XMLCh* const msg, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Create a new SAXException. + * + * @param msg The error or warning message. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + SAXNotSupportedException(const char* const msg, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Copy constructor + * + * @param toCopy The exception to be copy constructed + */ + SAXNotSupportedException(const SAXException& toCopy); +}; + +class SAX_EXPORT SAXNotRecognizedException : public SAXException +{ +public: + SAXNotRecognizedException(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Create a new SAXException. + * + * @param msg The error or warning message. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + SAXNotRecognizedException(const XMLCh* const msg, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Create a new SAXException. + * + * @param msg The error or warning message. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + SAXNotRecognizedException(const char* const msg, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Copy constructor + * + * @param toCopy The exception to be copy constructed + */ + SAXNotRecognizedException(const SAXException& toCopy); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax/SAXParseException.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax/SAXParseException.hpp new file mode 100644 index 000000000000..a9df4493c181 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax/SAXParseException.hpp @@ -0,0 +1,185 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SAXPARSEEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_SAXPARSEEXCEPTION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class Locator; + +/** + * Encapsulate an XML parse error or warning. + * + *

This exception will include information for locating the error + * in the original XML document. Note that although the application + * will receive a SAXParseException as the argument to the handlers + * in the ErrorHandler interface, the application is not actually + * required to throw the exception; instead, it can simply read the + * information in it and take a different action.

+ * + *

Since this exception is a subclass of SAXException, it + * inherits the ability to wrap another exception.

+ * + * @see SAXException#SAXException + * @see Locator#Locator + * @see ErrorHandler#ErrorHandler + */ +class SAX_EXPORT SAXParseException : public SAXException +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** + * Create a new SAXParseException from a message and a Locator. + * + *

This constructor is especially useful when an application is + * creating its own exception from within a DocumentHandler + * callback.

+ * + * @param message The error or warning message. + * @param locator The locator object for the error or warning. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @see Locator#Locator + * @see Parser#setLocale + */ + SAXParseException(const XMLCh* const message, const Locator& locator, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + + /** + * Create a new SAXParseException. + * + *

This constructor is most useful for parser writers.

+ * + *

If the system identifier is a URL, the parser must resolve it + * fully before creating the exception.

+ * + * @param message The error or warning message. + * @param publicId The public identifier of the entity that generated + * the error or warning. + * @param systemId The system identifier of the entity that generated + * the error or warning. + * @param lineNumber The line number of the end of the text that + * caused the error or warning. + * @param columnNumber The column number of the end of the text that + * caused the error or warning. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @see Parser#setLocale + */ + SAXParseException + ( + const XMLCh* const message + , const XMLCh* const publicId + , const XMLCh* const systemId + , const XMLFileLoc lineNumber + , const XMLFileLoc columnNumber + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Copy constructor + * + * @param toCopy The object to be copied + */ + SAXParseException(const SAXParseException& toCopy); + + /** + * Destructor + */ + ~SAXParseException(); + + //@} + + /** @name Assignment operator */ + //@{ + /** + * Assignment operator + * + * @param toAssign The object to be copied through assignment + * + */ + SAXParseException& operator=(const SAXParseException& toAssign); + //@} + + /** @name Getter methods */ + //@{ + /** + * The column number of the end of the text where the exception occurred. + * + *

The first column in a line is position 1.

+ * + * @return An integer representing the column number, or 0 + * if none is available. + * @see Locator#getColumnNumber + */ + XMLFileLoc getColumnNumber() const; + /** + * The line number of the end of the text where the exception occurred. + * + * @return An integer representing the line number, or 0 + * if none is available. + * @see Locator#getLineNumber + */ + XMLFileLoc getLineNumber() const; + /** + * Get the public identifier of the entity where the exception occurred. + * + * @return A string containing the public identifier, or null + * if none is available. + * @see Locator#getPublicId + */ + const XMLCh* getPublicId() const; + /** + * Get the system identifier of the entity where the exception occurred. + * + *

If the system identifier is a URL, it will be resolved + * fully.

+ * + * @return A string containing the system identifier, or null + * if none is available. + * @see Locator#getSystemId + */ + const XMLCh* getSystemId() const; + //@} + +private: + /* Data Members */ + + /* The column in the source text where the error occured. */ + XMLFileLoc fColumnNumber; + /* The line in the source text where the error occured. */ + XMLFileLoc fLineNumber; + /* The public id of the file where the error occured. */ + XMLCh* fPublicId; + /* The system id of the file where the error occured. */ + XMLCh* fSystemId; + + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax2/Attributes.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax2/Attributes.hpp new file mode 100644 index 000000000000..2c482a2d19cf --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax2/Attributes.hpp @@ -0,0 +1,313 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ATTRIBUTES_HPP) +#define XERCESC_INCLUDE_GUARD_ATTRIBUTES_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Interface for an element's attribute specifications. + * + * The SAX2 parser implements this interface and passes an instance + * to the SAX2 application as the last argument of each startElement + * event. + * + * The instance provided will return valid results only during the + * scope of the startElement invocation (to save it for future + * use, the application must make a copy: the AttributesImpl + * helper class provides a convenient constructor for doing so). + * + * An Attributes includes only attributes that have been + * specified or defaulted: \#IMPLIED attributes will not be included. + * + * There are two ways for the SAX application to obtain information + * from the Attributes. First, it can iterate through the entire + * list: + * + * + * public void startElement (String uri, String localpart, String qName, Attributes atts) {
+ *  for (XMLSize_t i = 0; i < atts.getLength(); i++) {
+ *   String Qname = atts.getQName(i);
+ *   String URI = atts.getURI(i)
+ *   String local = atts.GetLocalName(i)
+ *   String type = atts.getType(i);
+ *   String value = atts.getValue(i);
+ *   [...]
+ *  }
+ * } + *
+ * + * (Note that the result of getLength() will be zero if there + * are no attributes.) + * + * As an alternative, the application can request the value or + * type of specific attributes: + * + * + * public void startElement (String uri, String localpart, String qName, Attributes atts) {
+ *  String identifier = atts.getValue("id");
+ *  String label = atts.getValue("label");
+ *  [...]
+ * } + *
+ * + * The AttributesImpl helper class provides a convenience + * implementation for use by parser or application writers. + * + * @see Sax2DocumentHandler#startElement + * @see AttributesImpl#AttributesImpl + */ + +class SAX2_EXPORT Attributes +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + Attributes() + { + } + + /** Destructor */ + virtual ~Attributes() + { + } + //@} + + /** @name The virtual attribute list interface */ + //@{ + /** + * Return the number of attributes in this list. + * + * The SAX parser may provide attributes in any + * arbitrary order, regardless of the order in which they were + * declared or specified. The number of attributes may be + * zero. + * + * @return The number of attributes in the list. + */ + virtual XMLSize_t getLength() const = 0; + + /** + * Return the namespace URI of an attribute in this list (by position). + * + * The QNames must be unique: the SAX parser shall not include the + * same attribute twice. Attributes without values (those declared + * \#IMPLIED without a value specified in the start tag) will be + * omitted from the list. + * + * @param index The index of the attribute in the list (starting at 0). + * @return The URI of the indexed attribute, or null + * if the index is out of range. + * @see #getLength + */ + virtual const XMLCh* getURI(const XMLSize_t index) const = 0; + + /** + * Return the local name of an attribute in this list (by position). + * + * The QNames must be unique: the SAX parser shall not include the + * same attribute twice. Attributes without values (those declared + * \#IMPLIED without a value specified in the start tag) will be + * omitted from the list. + * + * @param index The index of the attribute in the list (starting at 0). + * @return The local name of the indexed attribute, or null + * if the index is out of range. + * @see #getLength + */ + virtual const XMLCh* getLocalName(const XMLSize_t index) const = 0; + + /** + * Return the qName of an attribute in this list (by position). + * + * The QNames must be unique: the SAX parser shall not include the + * same attribute twice. Attributes without values (those declared + * \#IMPLIED without a value specified in the start tag) will be + * omitted from the list. + * + * @param index The index of the attribute in the list (starting at 0). + * @return The qName of the indexed attribute, or null + * if the index is out of range. + * @see #getLength + */ + virtual const XMLCh* getQName(const XMLSize_t index) const = 0; + + /** + * Return the type of an attribute in the list (by position). + * + * The attribute type is one of the strings "CDATA", "ID", + * "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES", + * or "NOTATION" (always in upper case). + * + * If the parser has not read a declaration for the attribute, + * or if the parser does not report attribute types, then it must + * return the value "CDATA" as stated in the XML 1.0 Recommendation + * (clause 3.3.3, "Attribute-Value Normalization"). + * + * For an enumerated attribute that is not a notation, the + * parser will report the type as "NMTOKEN". + * + * @param index The index of the attribute in the list (starting at 0). + * @return The attribute type as a string, or + * null if the index is out of range. + * @see #getLength + * @see #getType + */ + virtual const XMLCh* getType(const XMLSize_t index) const = 0; + + /** + * Return the value of an attribute in the list (by position). + * + * If the attribute value is a list of tokens (IDREFS, + * ENTITIES, or NMTOKENS), the tokens will be concatenated + * into a single string separated by whitespace. + * + * @param index The index of the attribute in the list (starting at 0). + * @return The attribute value as a string, or + * null if the index is out of range. + * @see #getLength + * @see #getValue + */ + virtual const XMLCh* getValue(const XMLSize_t index) const = 0; + + //////////////////////////////////////////////////////////////////// + // Name-based query. + //////////////////////////////////////////////////////////////////// + + /** + * Look up the index of an attribute by Namespace name. Non-standard + * extension. + * + * @param uri The Namespace URI, or the empty string if + * the name has no Namespace URI. + * @param localPart The attribute's local name. + * @param index Reference to the variable where the index will be stored. + * @return true if the attribute is found and false otherwise. + */ + virtual bool getIndex(const XMLCh* const uri, + const XMLCh* const localPart, + XMLSize_t& index) const = 0 ; + + /** + * Look up the index of an attribute by Namespace name. + * + * @param uri The Namespace URI, or the empty string if + * the name has no Namespace URI. + * @param localPart The attribute's local name. + * @return The index of the attribute, or -1 if it does not + * appear in the list. + */ + virtual int getIndex(const XMLCh* const uri, + const XMLCh* const localPart ) const = 0 ; + + /** + * Look up the index of an attribute by XML 1.0 qualified name. + * Non-standard extension. + * + * @param qName The qualified (prefixed) name. + * @param index Reference to the variable where the index will be stored. + * @return true if the attribute is found and false otherwise. + */ + virtual bool getIndex(const XMLCh* const qName, + XMLSize_t& index) const = 0 ; + + /** + * Look up the index of an attribute by XML 1.0 qualified name. + * + * @param qName The qualified (prefixed) name. + * @return The index of the attribute, or -1 if it does not + * appear in the list. + */ + virtual int getIndex(const XMLCh* const qName ) const = 0 ; + + /** + * Look up an attribute's type by Namespace name. + * + *

See #getType for a description of the possible types.

+ * + * @param uri The Namespace URI, or the empty String if the + * name has no Namespace URI. + * @param localPart The local name of the attribute. + * @return The attribute type as a string, or null if the + * attribute is not in the list or if Namespace + * processing is not being performed. + */ + virtual const XMLCh* getType(const XMLCh* const uri, + const XMLCh* const localPart ) const = 0 ; + + /** + * Look up an attribute's type by XML 1.0 qualified name. + * + *

See #getType for a description of the possible types.

+ * + * @param qName The XML 1.0 qualified name. + * @return The attribute type as a string, or null if the + * attribute is not in the list or if qualified names + * are not available. + */ + virtual const XMLCh* getType(const XMLCh* const qName) const = 0; + + /** + * Look up an attribute's value by Namespace name. + * + *

See #getValue for a description of the possible values.

+ * + * @param uri The Namespace URI, or the empty String if the + * name has no Namespace URI. + * @param localPart The local name of the attribute. + * @return The attribute value as a string, or null if the + * attribute is not in the list. + */ + virtual const XMLCh* getValue(const XMLCh* const uri, const XMLCh* const localPart ) const = 0 ; + + /** + * Look up an attribute's value by XML 1.0 qualified name. + * + *

See #getValue for a description of the possible values.

+ * + * @param qName The XML 1.0 qualified name. + * @return The attribute value as a string, or null if the + * attribute is not in the list or if qualified names + * are not available. + */ + virtual const XMLCh* getValue(const XMLCh* const qName) const = 0; + + //@} + +private : + /* Constructors and operators */ + /* Copy constructor */ + Attributes(const Attributes&); + /* Assignment operator */ + Attributes& operator=(const Attributes&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax2/ContentHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax2/ContentHandler.hpp new file mode 100644 index 000000000000..4224fd54f962 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax2/ContentHandler.hpp @@ -0,0 +1,340 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CONTENTHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_CONTENTHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class Attributes; +class Locator; + +/** + * Receive notification of general document events. + * + *

This is the main interface that most SAX2 applications + * implement: if the application needs to be informed of basic parsing + * events, it implements this interface and registers an instance with + * the SAX2 parser using the setDocumentHandler method. The parser + * uses the instance to report basic document-related events like + * the start and end of elements and character data.

+ * + *

The order of events in this interface is very important, and + * mirrors the order of information in the document itself. For + * example, all of an element's content (character data, processing + * instructions, and/or subelements) will appear, in order, between + * the startElement event and the corresponding endElement event.

+ * + *

Application writers who do not want to implement the entire + * interface while can derive a class from Sax2HandlerBase, which implements + * the default functionality; parser writers can instantiate + * Sax2HandlerBase to obtain a default handler. The application can find + * the location of any document event using the Locator interface + * supplied by the Parser through the setDocumentLocator method.

+ * + * @see Parser#setDocumentHandler + * @see Locator#Locator + * @see Sax2HandlerBase#Sax2HandlerBase + */ + +class SAX2_EXPORT ContentHandler +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + ContentHandler() + { + } + + /** Destructor */ + virtual ~ContentHandler() + { + } + //@} + + /** @name The virtual document handler interface */ + + //@{ + /** + * Receive notification of character data. + * + *

The Parser will call this method to report each chunk of + * character data. SAX parsers may return all contiguous character + * data in a single chunk, or they may split it into several + * chunks; however, all of the characters in any single event + * must come from the same external entity, so that the Locator + * provides useful information.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + *

Note that some parsers will report whitespace using the + * ignorableWhitespace() method rather than this one (validating + * parsers must do so).

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #ignorableWhitespace + * @see Locator#Locator + */ + virtual void characters + ( + const XMLCh* const chars + , const XMLSize_t length + ) = 0; + + /** + * Receive notification of the end of a document. + * + *

The SAX parser will invoke this method only once, and it will + * be the last method invoked during the parse. The parser shall + * not invoke this method until it has either abandoned parsing + * (because of an unrecoverable error) or reached the end of + * input.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endDocument () = 0; + + /** + * Receive notification of the end of an element. + * + *

The SAX parser will invoke this method at the end of every + * element in the XML document; there will be a corresponding + * startElement() event for every endElement() event (even when the + * element is empty).

+ * + * @param uri The URI of the associated namespace for this element + * @param localname The local part of the element name + * @param qname The QName of this element + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endElement + ( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname + ) = 0; + + /** + * Receive notification of ignorable whitespace in element content. + * + *

Validating Parsers must use this method to report each chunk + * of ignorable whitespace (see the W3C XML 1.0 recommendation, + * section 2.10): non-validating parsers may also use this method + * if they are capable of parsing and using content models.

+ * + *

SAX parsers may return all contiguous whitespace in a single + * chunk, or they may split it into several chunks; however, all of + * the characters in any single event must come from the same + * external entity, so that the Locator provides useful + * information.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #characters + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ) = 0; + + /** + * Receive notification of a processing instruction. + * + *

The Parser will invoke this method once for each processing + * instruction found: note that processing instructions may occur + * before or after the main document element.

+ * + *

A SAX parser should never report an XML declaration (XML 1.0, + * section 2.8) or a text declaration (XML 1.0, section 4.3.1) + * using this method.

+ * + * @param target The processing instruction target. + * @param data The processing instruction data, or null if + * none was supplied. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void processingInstruction + ( + const XMLCh* const target + , const XMLCh* const data + ) = 0; + + /** + * Receive an object for locating the origin of SAX document events. + * + * SAX parsers are strongly encouraged (though not absolutely + * required) to supply a locator: if it does so, it must supply + * the locator to the application by invoking this method before + * invoking any of the other methods in the DocumentHandler + * interface. + * + * The locator allows the application to determine the end + * position of any document-related event, even if the parser is + * not reporting an error. Typically, the application will + * use this information for reporting its own errors (such as + * character content that does not match an application's + * business rules). The information returned by the locator + * is probably not sufficient for use with a search engine. + * + * Note that the locator will return correct information only + * during the invocation of the events in this interface. The + * application should not attempt to use it at any other time. + * + * @param locator An object that can return the location of + * any SAX document event. The object is only + * 'on loan' to the client code and they are not + * to attempt to delete or modify it in any way! + * + * @see Locator#Locator + */ + virtual void setDocumentLocator(const Locator* const locator) = 0; + + /** + * Receive notification of the beginning of a document. + * + *

The SAX parser will invoke this method only once, before any + * other methods in this interface or in DTDHandler (except for + * setDocumentLocator).

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startDocument() = 0; + + /** + * Receive notification of the beginning of an element. + * + *

The Parser will invoke this method at the beginning of every + * element in the XML document; there will be a corresponding + * endElement() event for every startElement() event (even when the + * element is empty). All of the element's content will be + * reported, in order, before the corresponding endElement() + * event.

+ * + *

Note that the attribute list provided will + * contain only attributes with explicit values (specified or + * defaulted): \#IMPLIED attributes will be omitted.

+ * + * @param uri The URI of the associated namespace for this element + * @param localname The local part of the element name + * @param qname The QName of this element + * @param attrs The attributes attached to the element, if any. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #endElement + * @see Attributes#Attributes + */ + virtual void startElement + ( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname, + const Attributes& attrs + ) = 0; + + /** + * Receive notification of the start of an namespace prefix mapping. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the start of + * each namespace prefix mapping.

+ * + * @param prefix The namespace prefix used + * @param uri The namespace URI used. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startPrefixMapping + ( + const XMLCh* const prefix, + const XMLCh* const uri + ) = 0 ; + + /** + * Receive notification of the end of an namespace prefix mapping. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the end of + * each namespace prefix mapping.

+ * + * @param prefix The namespace prefix used + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endPrefixMapping + ( + const XMLCh* const prefix + ) = 0 ; + + /** + * Receive notification of a skipped entity + * + *

The parser will invoke this method once for each entity + * skipped. All processors may skip external entities, + * depending on the values of the features:
+ * http://xml.org/sax/features/external-general-entities
+ * http://xml.org/sax/features/external-parameter-entities

+ * + *

Note: Xerces (specifically) never skips any entities, regardless + * of the above features. This function is never called in the + * Xerces implementation of SAX2.

+ * + *

Introduced with SAX2

+ * + * @param name The name of the skipped entity. If it is a parameter entity, + * the name will begin with %, and if it is the external DTD subset, + * it will be the string [dtd]. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void skippedEntity + ( + const XMLCh* const name + ) = 0 ; + + //@} +private : + /* Unimplemented Constructors and operators */ + /* Copy constructor */ + ContentHandler(const ContentHandler&); + /** Assignment operator */ + ContentHandler& operator=(const ContentHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax2/DeclHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax2/DeclHandler.hpp new file mode 100644 index 000000000000..5ed01059f4c5 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax2/DeclHandler.hpp @@ -0,0 +1,163 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DECLHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DECLHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Receive notification of DTD declaration events. + * + *

This is an optional extension handler for SAX2 to provide more + * complete information about DTD declarations in an XML document. + * XML readers are not required to recognize this handler, and it is not + * part of core-only SAX2 distributions.

+ * + *

Note that data-related DTD declarations (unparsed entities and + * notations) are already reported through the DTDHandler interface.

+ * + *

If you are using the declaration handler together with a lexical + * handler, all of the events will occur between the startDTD and the endDTD + * events.

+ * + * @see SAX2XMLReader#setLexicalHandler + * @see SAX2XMLReader#setDeclarationHandler + */ + +class SAX2_EXPORT DeclHandler +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + DeclHandler() + { + } + + /** Destructor */ + virtual ~DeclHandler() + { + } + //@} + + /** @name The virtual declaration handler interface */ + + //@{ + /** + * Report an element type declaration. + * + *

The content model will consist of the string "EMPTY", the string + * "ANY", or a parenthesised group, optionally followed by an occurrence + * indicator. The model will be normalized so that all parameter entities + * are fully resolved and all whitespace is removed,and will include the + * enclosing parentheses. Other normalization (such as removing redundant + * parentheses or simplifying occurrence indicators) is at the discretion + * of the parser.

+ * + * @param name The element type name. + * @param model The content model as a normalized string. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void elementDecl + ( + const XMLCh* const name + , const XMLCh* const model + ) = 0; + + /** + * Report an attribute type declaration. + * + *

The Parser will call this method to report each occurrence of + * a comment in the XML document.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + * @param eName The name of the associated element. + * @param aName The name of the attribute. + * @param type A string representing the attribute type. + * @param mode A string representing the attribute defaulting mode ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if none of these applies. + * @param value A string representing the attribute's default value, or null if there is none. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void attributeDecl + ( + const XMLCh* const eName + , const XMLCh* const aName + , const XMLCh* const type + , const XMLCh* const mode + , const XMLCh* const value + ) = 0; + + /** + * Report an internal entity declaration. + * + *

Only the effective (first) declaration for each entity will be + * reported. All parameter entities in the value will be expanded, but + * general entities will not.

+ * + * @param name The name of the entity. If it is a parameter entity, the name will begin with '%'. + * @param value The replacement text of the entity. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void internalEntityDecl + ( + const XMLCh* const name + , const XMLCh* const value + ) = 0; + + /** + * Report a parsed external entity declaration. + * + *

Only the effective (first) declaration for each entity will + * be reported.

+ * + * @param name The name of the entity. If it is a parameter entity, the name will begin with '%'. + * @param publicId The The declared public identifier of the entity, or null if none was declared. + * @param systemId The declared system identifier of the entity. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void externalEntityDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ) = 0; + + //@} +private : + /* Unimplemented Constructors and operators */ + /* Copy constructor */ + DeclHandler(const DeclHandler&); + /** Assignment operator */ + DeclHandler& operator=(const DeclHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax2/DefaultHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax2/DefaultHandler.hpp new file mode 100644 index 000000000000..528d44eeab42 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax2/DefaultHandler.hpp @@ -0,0 +1,806 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DEFAULTHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DEFAULTHANDLER_HPP + +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class Locator; +class Attributes; + +/** + * Default base class for SAX2 handlers. + * + *

This class implements the default behaviour for SAX2 + * interfaces: EntityResolver, DTDHandler, ContentHandler, + * ErrorHandler, LexicalHandler, and DeclHandler.

+ * + *

Application writers can extend this class when they need to + * implement only part of an interface; parser writers can + * instantiate this class to provide default handlers when the + * application has not supplied its own.

+ * + *

Note that the use of this class is optional.

+ * + * @see EntityResolver#EntityResolver + * @see DTDHandler#DTDHandler + * @see ContentHandler#ContentHandler + * @see ErrorHandler#ErrorHandler + * @see LexicalHandler#LexicalHandler + * @see DeclHandler#DeclHandler + */ + +class SAX2_EXPORT DefaultHandler : + + public EntityResolver, + public DTDHandler, + public ContentHandler, + public ErrorHandler, + public LexicalHandler, + public DeclHandler +{ +public: + /** @name Default handlers for the DocumentHandler interface */ + //@{ + /** + * Receive notification of character data inside an element. + * + *

By default, do nothing. Application writers may override this + * method to take specific actions for each chunk of character data + * (such as adding the data to a node or buffer, or printing it to + * a file).

+ * + * @param chars The characters. + * @param length The number of characters to use from the + * character array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#characters + */ + virtual void characters + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * Receive notification of the end of the document. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the beginning + * of a document (such as finalising a tree or closing an output + * file).

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#endDocument + */ + virtual void endDocument(); + + /** + * Receive notification of the end of an element. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the end of + * each element (such as finalising a tree node or writing + * output to a file).

+ * + * @param uri The URI of the associated namespace for this element + * @param localname The local part of the element name + * @param qname The QName of this element + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#endElement + */ + virtual void endElement + ( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname + ); + + /** + * Receive notification of ignorable whitespace in element content. + * + *

By default, do nothing. Application writers may override this + * method to take specific actions for each chunk of ignorable + * whitespace (such as adding data to a node or buffer, or printing + * it to a file).

+ * + * @param chars The whitespace characters. + * @param length The number of characters to use from the + * character array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#ignorableWhitespace + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * Receive notification of a processing instruction. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions for each + * processing instruction, such as setting status variables or + * invoking other methods.

+ * + * @param target The processing instruction target. + * @param data The processing instruction data, or null if + * none is supplied. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#processingInstruction + */ + virtual void processingInstruction + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** + * Reset the Document object on its reuse + * + * @see DocumentHandler#resetDocument + */ + virtual void resetDocument(); + //@} + + /** @name Default implementation of DocumentHandler interface */ + + //@{ + /** + * Receive a Locator object for document events. + * + *

By default, do nothing. Application writers may override this + * method in a subclass if they wish to store the locator for use + * with other document events.

+ * + * @param locator A locator for all SAX document events. + * @see DocumentHandler#setDocumentLocator + * @see Locator + */ + virtual void setDocumentLocator(const Locator* const locator); + + /** + * Receive notification of the beginning of the document. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the beginning + * of a document (such as allocating the root node of a tree or + * creating an output file).

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#startDocument + */ + virtual void startDocument(); + + /** + * Receive notification of the start of an element. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the start of + * each element (such as allocating a new tree node or writing + * output to a file).

+ * + * @param uri The URI of the associated namespace for this element + * @param localname the local part of the element name + * @param qname the QName of this element + * @param attrs The specified or defaulted attributes. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#startElement + */ + virtual void startElement + ( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname + , const Attributes& attrs + ); + + /** + * Receive notification of the start of an namespace prefix mapping. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the start of + * each namespace prefix mapping.

+ * + * @param prefix The namespace prefix used + * @param uri The namespace URI used. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#startPrefixMapping + */ + virtual void startPrefixMapping + ( + const XMLCh* const prefix, + const XMLCh* const uri + ) ; + + /** + * Receive notification of the end of an namespace prefix mapping. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the end of + * each namespace prefix mapping.

+ * + * @param prefix The namespace prefix used + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#endPrefixMapping + */ + virtual void endPrefixMapping + ( + const XMLCh* const prefix + ) ; + + /** + * Receive notification of a skipped entity + * + *

The parser will invoke this method once for each entity + * skipped. All processors may skip external entities, + * depending on the values of the features:
+ * http://xml.org/sax/features/external-general-entities
+ * http://xml.org/sax/features/external-parameter-entities

+ * + *

Introduced with SAX2

+ * + * @param name The name of the skipped entity. If it is a parameter entity, + * the name will begin with %, and if it is the external DTD subset, + * it will be the string [dtd]. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void skippedEntity + ( + const XMLCh* const name + ) ; + + //@} + + /** @name Default implementation of the EntityResolver interface. */ + + //@{ + /** + * Resolve an external entity. + * + *

Always return null, so that the parser will use the system + * identifier provided in the XML document. This method implements + * the SAX default behaviour: application writers can override it + * in a subclass to do special translations such as catalog lookups + * or URI redirection.

+ * + * @param publicId The public identifier, or null if none is + * available. + * @param systemId The system identifier provided in the XML + * document. + * @return The new input source, or null to require the + * default behaviour. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see EntityResolver#resolveEntity + */ + virtual InputSource* resolveEntity + ( + const XMLCh* const publicId + , const XMLCh* const systemId + ); + + //@} + + /** @name Default implementation of the ErrorHandler interface */ + //@{ + /** + * Receive notification of a recoverable parser error. + * + *

The default implementation does nothing. Application writers + * may override this method in a subclass to take specific actions + * for each error, such as inserting the message in a log file or + * printing it to the console.

+ * + * @param exc The warning information encoded as an exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see ErrorHandler#warning + * @see SAXParseException#SAXParseException + */ + virtual void error(const SAXParseException& exc); + + /** + * Report a fatal XML parsing error. + * + *

The default implementation throws a SAXParseException. + * Application writers may override this method in a subclass if + * they need to take specific actions for each fatal error (such as + * collecting all of the errors into a single report): in any case, + * the application must stop all regular processing when this + * method is invoked, since the document is no longer reliable, and + * the parser may no longer report parsing events.

+ * + * @param exc The error information encoded as an exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see ErrorHandler#fatalError + * @see SAXParseException#SAXParseException + */ + virtual void fatalError(const SAXParseException& exc); + + /** + * Receive notification of a parser warning. + * + *

The default implementation does nothing. Application writers + * may override this method in a subclass to take specific actions + * for each warning, such as inserting the message in a log file or + * printing it to the console.

+ * + * @param exc The warning information encoded as an exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see ErrorHandler#warning + * @see SAXParseException#SAXParseException + */ + virtual void warning(const SAXParseException& exc); + + /** + * Reset the Error handler object on its reuse + * + * @see ErrorHandler#resetErrors + */ + virtual void resetErrors(); + + //@} + + + /** @name Default implementation of DTDHandler interface. */ + //@{ + + /** + * Receive notification of a notation declaration. + * + *

By default, do nothing. Application writers may override this + * method in a subclass if they wish to keep track of the notations + * declared in a document.

+ * + * @param name The notation name. + * @param publicId The notation public identifier, or null if not + * available. + * @param systemId The notation system identifier. + * @see DTDHandler#notationDecl + */ + virtual void notationDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ); + + /** + * Reset the DTD object on its reuse + * + * @see DTDHandler#resetDocType + */ + virtual void resetDocType(); + + /** + * Receive notification of an unparsed entity declaration. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to keep track of the unparsed entities + * declared in a document.

+ * + * @param name The entity name. + * @param publicId The entity public identifier, or null if not + * available. + * @param systemId The entity system identifier. + * @param notationName The name of the associated notation. + * @see DTDHandler#unparsedEntityDecl + */ + virtual void unparsedEntityDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + , const XMLCh* const notationName + ); + //@} + + + /** @name Default implementation of LexicalHandler interface. */ + + //@{ + /** + * Receive notification of comments. + * + *

The Parser will call this method to report each occurrence of + * a comment in the XML document.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void comment + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * Receive notification of the end of a CDATA section. + * + *

The SAX parser will invoke this method at the end of + * each CDATA parsed.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endCDATA (); + + /** + * Receive notification of the end of the DTD declarations. + * + *

The SAX parser will invoke this method at the end of the + * DTD

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endDTD (); + + /** + * Receive notification of the end of an entity. + * + *

The SAX parser will invoke this method at the end of an + * entity

+ * + * @param name The name of the entity that is ending. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endEntity (const XMLCh* const name); + + /** + * Receive notification of the start of a CDATA section. + * + *

The SAX parser will invoke this method at the start of + * each CDATA parsed.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startCDATA (); + + /** + * Receive notification of the start of the DTD declarations. + * + *

The SAX parser will invoke this method at the start of the + * DTD

+ * + * @param name The document type name. + * @param publicId The declared public identifier for the external DTD subset, or null if none was declared. + * @param systemId The declared system identifier for the external DTD subset, or null if none was declared. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startDTD + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ); + + /** + * Receive notification of the start of an entity. + * + *

The SAX parser will invoke this method at the start of an + * entity

+ * + * @param name The name of the entity that is starting. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startEntity (const XMLCh* const name); + + //@} + + /** @name Default implementation of DeclHandler interface. */ + + //@{ + + /** + * Report an element type declaration. + * + *

The content model will consist of the string "EMPTY", the string + * "ANY", or a parenthesised group, optionally followed by an occurrence + * indicator. The model will be normalized so that all parameter entities + * are fully resolved and all whitespace is removed,and will include the + * enclosing parentheses. Other normalization (such as removing redundant + * parentheses or simplifying occurrence indicators) is at the discretion + * of the parser.

+ * + * @param name The element type name. + * @param model The content model as a normalized string. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void elementDecl + ( + const XMLCh* const name + , const XMLCh* const model + ); + + /** + * Report an attribute type declaration. + * + *

Only the effective (first) declaration for an attribute will + * be reported.

+ * + * @param eName The name of the associated element. + * @param aName The name of the attribute. + * @param type A string representing the attribute type. + * @param mode A string representing the attribute defaulting mode ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if none of these applies. + * @param value A string representing the attribute's default value, or null if there is none. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void attributeDecl + ( + const XMLCh* const eName + , const XMLCh* const aName + , const XMLCh* const type + , const XMLCh* const mode + , const XMLCh* const value + ); + + /** + * Report an internal entity declaration. + * + *

Only the effective (first) declaration for each entity will be + * reported. All parameter entities in the value will be expanded, but + * general entities will not.

+ * + * @param name The name of the entity. If it is a parameter entity, the name will begin with '%'. + * @param value The replacement text of the entity. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void internalEntityDecl + ( + const XMLCh* const name + , const XMLCh* const value + ); + + /** + * Report a parsed external entity declaration. + * + *

Only the effective (first) declaration for each entity will + * be reported.

+ * + * @param name The name of the entity. If it is a parameter entity, the name will begin with '%'. + * @param publicId The The declared public identifier of the entity, or null if none was declared. + * @param systemId The declared system identifier of the entity. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void externalEntityDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ); + + //@} + + DefaultHandler() {}; + virtual ~DefaultHandler() {}; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DefaultHandler(const DefaultHandler&); + DefaultHandler& operator=(const DefaultHandler&); +}; + + +// --------------------------------------------------------------------------- +// HandlerBase: Inline default implementations +// --------------------------------------------------------------------------- +inline void DefaultHandler::characters(const XMLCh* const + ,const XMLSize_t) +{ +} + +inline void DefaultHandler::endDocument() +{ +} + +inline void DefaultHandler::endElement(const XMLCh* const + , const XMLCh* const + , const XMLCh* const) +{ +} + +inline void DefaultHandler::error(const SAXParseException&) +{ +} + +inline void DefaultHandler::fatalError(const SAXParseException& exc) +{ + throw exc; +} + +inline void +DefaultHandler::ignorableWhitespace( const XMLCh* const + , const XMLSize_t) +{ +} + +inline void DefaultHandler::notationDecl( const XMLCh* const + , const XMLCh* const + , const XMLCh* const) +{ +} + +inline void +DefaultHandler::processingInstruction( const XMLCh* const + , const XMLCh* const) +{ +} + +inline void DefaultHandler::resetErrors() +{ +} + +inline void DefaultHandler::resetDocument() +{ +} + +inline void DefaultHandler::resetDocType() +{ +} + +inline InputSource* +DefaultHandler::resolveEntity( const XMLCh* const + , const XMLCh* const) +{ + return 0; +} + +inline void +DefaultHandler::unparsedEntityDecl(const XMLCh* const + , const XMLCh* const + , const XMLCh* const + , const XMLCh* const) +{ +} + +inline void DefaultHandler::setDocumentLocator(const Locator* const) +{ +} + +inline void DefaultHandler::startDocument() +{ +} + +inline void +DefaultHandler::startElement( const XMLCh* const + , const XMLCh* const + , const XMLCh* const + , const Attributes& +) +{ +} + +inline void DefaultHandler::warning(const SAXParseException&) +{ +} + +inline void DefaultHandler::startPrefixMapping ( const XMLCh* const + ,const XMLCh* const) +{ +} + +inline void DefaultHandler::endPrefixMapping ( const XMLCh* const) +{ +} + +inline void DefaultHandler::skippedEntity ( const XMLCh* const) +{ +} + +inline void DefaultHandler::comment( const XMLCh* const + , const XMLSize_t) +{ +} + +inline void DefaultHandler::endCDATA () +{ +} + +inline void DefaultHandler::endDTD () +{ +} + +inline void DefaultHandler::endEntity (const XMLCh* const) +{ +} + +inline void DefaultHandler::startCDATA () +{ +} + +inline void DefaultHandler::startDTD( const XMLCh* const + , const XMLCh* const + , const XMLCh* const) +{ +} + +inline void DefaultHandler::startEntity (const XMLCh* const) +{ +} + +inline void DefaultHandler::attributeDecl(const XMLCh* const, + const XMLCh* const, + const XMLCh* const, + const XMLCh* const, + const XMLCh* const) +{ +} + +inline void DefaultHandler::elementDecl(const XMLCh* const, + const XMLCh* const) +{ +} + +inline void DefaultHandler::externalEntityDecl(const XMLCh* const, + const XMLCh* const, + const XMLCh* const) +{ +} + +inline void DefaultHandler::internalEntityDecl(const XMLCh* const, + const XMLCh* const) +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif // ! DEFAULTHANDLER_HPP diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax2/LexicalHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax2/LexicalHandler.hpp new file mode 100644 index 000000000000..e6ac3e477633 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax2/LexicalHandler.hpp @@ -0,0 +1,172 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_LEXICALHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_LEXICALHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Receive notification of lexical events. + * + *

This is an extension handler for that provides lexical information + * about an XML document. It does not provide information about document + * content. For those events, an application must register an instance of + * a ContentHandler.

+ * + *

The order of events in this interface is very important, and + * mirrors the order of information in the document itself. For + * example, startDTD() and endDTD() events will occur before the + * first element in the document.

+ * + * @see SAX2XMLReader#setLexicalHandler + * @see SAX2XMLReader#setContentHandler + */ + +class SAX2_EXPORT LexicalHandler +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + LexicalHandler() + { + } + + /** Destructor */ + virtual ~LexicalHandler() + { + } + //@} + + /** @name The virtual document handler interface */ + + //@{ + /** + * Receive notification of comments. + * + *

The Parser will call this method to report each occurrence of + * a comment in the XML document.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void comment + ( + const XMLCh* const chars + , const XMLSize_t length + ) = 0; + + /** + * Receive notification of the end of a CDATA section. + * + *

The SAX parser will invoke this method at the end of + * each CDATA parsed.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endCDATA () = 0; + + /** + * Receive notification of the end of the DTD declarations. + * + *

The SAX parser will invoke this method at the end of the + * DTD

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endDTD () = 0; + + /** + * Receive notification of the end of an entity. + * + *

The SAX parser will invoke this method at the end of an + * entity

+ * + * @param name The name of the entity that is ending. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endEntity (const XMLCh* const name) = 0; + + /** + * Receive notification of the start of a CDATA section. + * + *

The SAX parser will invoke this method at the start of + * each CDATA parsed.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startCDATA () = 0; + + /** + * Receive notification of the start of the DTD declarations. + * + *

The SAX parser will invoke this method at the start of the + * DTD

+ * + * @param name The document type name. + * @param publicId The declared public identifier for the external DTD subset, or null if none was declared. + * @param systemId The declared system identifier for the external DTD subset, or null if none was declared. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startDTD + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ) = 0; + + /** + * Receive notification of the start of an entity. + * + *

The SAX parser will invoke this method at the start of an + * entity

+ * + * @param name The name of the entity that is starting. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startEntity (const XMLCh* const name) = 0; + + //@} +private : + /* Unimplemented Constructors and operators */ + /* Copy constructor */ + LexicalHandler(const LexicalHandler&); + /** Assignment operator */ + LexicalHandler& operator=(const LexicalHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax2/SAX2XMLFilter.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax2/SAX2XMLFilter.hpp new file mode 100644 index 000000000000..1ea221297d1d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax2/SAX2XMLFilter.hpp @@ -0,0 +1,82 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SAX2XMLFILTER_HPP) +#define XERCESC_INCLUDE_GUARD_SAX2XMLFILTER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class SAX2_EXPORT SAX2XMLFilter : public SAX2XMLReader +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** The default constructor */ + SAX2XMLFilter() + { + } + /** The destructor */ + virtual ~SAX2XMLFilter() + { + } + //@} + + //----------------------------------------------------------------------- + // The XMLFilter interface + //----------------------------------------------------------------------- + /** @name Implementation of SAX 2.0 XMLFilter interface's. */ + //@{ + + /** + * This method returns the parent XMLReader object. + * + * @return A pointer to the parent XMLReader object. + */ + virtual SAX2XMLReader* getParent() const = 0 ; + + /** + * Sets the parent XMLReader object; parse requests will be forwarded to this + * object, and callback notifications coming from it will be postprocessed + * + * @param parent The new XMLReader parent. + * @see SAX2XMLReader#SAX2XMLReader + */ + virtual void setParent(SAX2XMLReader* parent) = 0; + + //@} + +private : + /* The copy constructor, you cannot call this directly */ + SAX2XMLFilter(const SAX2XMLFilter&); + + /* The assignment operator, you cannot call this directly */ + SAX2XMLFilter& operator=(const SAX2XMLFilter&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax2/SAX2XMLReader.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax2/SAX2XMLReader.hpp new file mode 100644 index 000000000000..b50fadb27251 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax2/SAX2XMLReader.hpp @@ -0,0 +1,896 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SAX2XMLREADER_HPP) +#define XERCESC_INCLUDE_GUARD_SAX2XMLREADER_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentHandler ; +class DTDHandler; +class EntityResolver; +class ErrorHandler; +class InputSource; +class LexicalHandler; +class DeclHandler; +class XMLDocumentHandler; + +class SAX2_EXPORT SAX2XMLReader +{ +public: + // ----------------------------------------------------------------------- + // Class types + // ----------------------------------------------------------------------- + /** @name Public constants */ + //@{ + + /** ValScheme enum used in setValidationScheme + * Val_Never: Do not report validation errors. + * Val_Always: The parser will always report validation errors. + * Val_Auto: The parser will report validation errors only if a grammar is specified. + * + * The schemes map to these feature values: + * Val_Never: + * parser->setFeature(XMLUni::fgSAX2CoreValidation, false); + * + * Val_Always: + * parser->setFeature(XMLUni::fgSAX2CoreValidation, true); + * parser->setFeature(XMLUni::fgXercesDynamic, false); + * + * Val_Auto: + * parser->setFeature(XMLUni::fgSAX2CoreValidation, true); + * parser->setFeature(XMLUni::fgXercesDynamic, true); + * + * @see #setFeature + */ + enum ValSchemes + { + Val_Never + , Val_Always + , Val_Auto + }; + //@} + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** The default constructor */ + SAX2XMLReader() + { + } + /** The destructor */ + virtual ~SAX2XMLReader() + { + } + //@} + + //----------------------------------------------------------------------- + // The XMLReader interface + //----------------------------------------------------------------------- + /** @name Implementation of SAX 2.0 XMLReader interface's. */ + //@{ + + /** + * This method returns the installed content handler. + * + * @return A pointer to the installed content handler object. + */ + virtual ContentHandler* getContentHandler() const = 0 ; + + /** + * This method returns the installed DTD handler. + * + * @return A pointer to the installed DTD handler object. + */ + virtual DTDHandler* getDTDHandler() const = 0; + + /** + * This method returns the installed entity resolver. + * + * @return A pointer to the installed entity resolver object. + */ + virtual EntityResolver* getEntityResolver() const = 0 ; + + /** + * This method returns the installed error handler. + * + * @return A pointer to the installed error handler object. + */ + virtual ErrorHandler* getErrorHandler() const = 0 ; + + /** + * Query the current state of any feature in a SAX2 XMLReader. + * + * @param name The unique identifier (URI) of the feature being set. + * @return The current state of the feature. + * @exception SAXNotRecognizedException If the requested feature is not known. + */ + virtual bool getFeature(const XMLCh* const name) const = 0; + + /** + * Query the current value of a property in a SAX2 XMLReader. + * + * The parser owns the returned pointer. The memory allocated for + * the returned pointer will be destroyed when the parser is deleted. + * + * To ensure accessibility of the returned information after the parser + * is deleted, callers need to copy and store the returned information + * somewhere else; otherwise you may get unexpected result. Since the returned + * pointer is a generic void pointer, see the SAX2 Programming Guide to learn + * exactly what type of property value each property returns for replication. + * + * @param name The unique identifier (URI) of the property being set. + * @return The current value of the property. The pointer spans the same + * life-time as the parser. A null pointer is returned if nothing + * was specified externally. + * @exception SAXNotRecognizedException If the requested property is not known. + */ + virtual void* getProperty(const XMLCh* const name) const = 0 ; + + /** + * Allow an application to register a document event handler. + * + * If the application does not register a document handler, all + * document events reported by the SAX parser will be silently + * ignored (this is the default behaviour implemented by + * HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The document handler. + * @see ContentHandler#ContentHandler + * @see HandlerBase#HandlerBase + */ + virtual void setContentHandler(ContentHandler* const handler) = 0; + + /** + * Allow an application to register a DTD event handler. + * + * If the application does not register a DTD handler, all DTD + * events reported by the SAX parser will be silently ignored (this + * is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the middle + * of a parse, and the SAX parser must begin using the new handler + * immediately. + * + * @param handler The DTD handler. + * @see DTDHandler#DTDHandler + * @see HandlerBase#HandlerBase + */ + virtual void setDTDHandler(DTDHandler* const handler) = 0; + + /** + * Allow an application to register a custom entity resolver. + * + * If the application does not register an entity resolver, the + * SAX parser will resolve system identifiers and open connections + * to entities itself (this is the default behaviour implemented in + * DefaultHandler). + * + * Applications may register a new or different entity resolver + * in the middle of a parse, and the SAX parser must begin using + * the new resolver immediately. + * + * @param resolver The object for resolving entities. + * @see EntityResolver#EntityResolver + * @see DefaultHandler#DefaultHandler + */ + virtual void setEntityResolver(EntityResolver* const resolver) = 0; + + /** + * Allow an application to register an error event handler. + * + * If the application does not register an error event handler, + * all error events reported by the SAX parser will be silently + * ignored, except for fatalError, which will throw a SAXException + * (this is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The error handler. + * @see ErrorHandler#ErrorHandler + * @see SAXException#SAXException + * @see HandlerBase#HandlerBase + */ + virtual void setErrorHandler(ErrorHandler* const handler) = 0; + + /** + * Set the state of any feature in a SAX2 XMLReader. + * Supported features in SAX2 for xerces-c are: + *
(See the SAX2 Programming Guide for detail description). + * + *
http://xml.org/sax/features/validation (default: true) + *
http://xml.org/sax/features/namespaces (default: true) + *
http://xml.org/sax/features/namespace-prefixes (default: false) + *
http://apache.org/xml/features/validation/dynamic (default: false) + *
http://apache.org/xml/features/validation/reuse-grammar (default: false) + *
http://apache.org/xml/features/validation/schema (default: true) + *
http://apache.org/xml/features/validation/schema-full-checking (default: false) + *
http://apache.org/xml/features/validating/load-schema (default: true) + *
http://apache.org/xml/features/nonvalidating/load-external-dtd (default: true) + *
http://apache.org/xml/features/continue-after-fatal-error (default: false) + *
http://apache.org/xml/features/validation-error-as-fatal (default: false) + * + * @param name The unique identifier (URI) of the feature. + * @param value The requested state of the feature (true or false). + * @exception SAXNotRecognizedException If the requested feature is not known. + * @exception SAXNotSupportedException Feature modification is not supported during parse + * + */ + virtual void setFeature(const XMLCh* const name, const bool value) = 0; + + /** + * Set the value of any property in a SAX2 XMLReader. + * Supported properties in SAX2 for xerces-c are: + *
(See the SAX2 Programming Guide for detail description). + * + *
http://apache.org/xml/properties/schema/external-schemaLocation + *
http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation + *
http://apache.org/xml/properties/security-manager + *
http://apache.org/xml/properties/low-water-mark + *
http://apache.org/xml/properties/scannerName + * + * It takes a void pointer as the property value. Application is required to initialize this void + * pointer to a correct type. See the SAX2 Programming Guide + * to learn exactly what type of property value each property expects for processing. + * Passing a void pointer that was initialized with a wrong type will lead to unexpected result. + * If the same property is set more than once, the last one takes effect. + * + * @param name The unique identifier (URI) of the property being set. + * @param value The requested value for the property. See + * the SAX2 Programming Guide to learn + * exactly what type of property value each property expects for processing. + * Passing a void pointer that was initialized with a wrong type will lead + * to unexpected result. + * @exception SAXNotRecognizedException If the requested property is not known. + * @exception SAXNotSupportedException Property modification is not supported during parse + */ + virtual void setProperty(const XMLCh* const name, void* value) = 0 ; + + /** + * Parse an XML document. + * + * The application can use this method to instruct the SAX parser + * to begin parsing an XML document from any valid input + * source (a character stream, a byte stream, or a URI). + * + * Applications may not invoke this method while a parse is in + * progress (they should create a new Parser instead for each + * additional XML document). Once a parse is complete, an + * application may reuse the same Parser object, possibly with a + * different input source. + * + * @param source The input source for the top-level of the + * XML document. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see InputSource#InputSource + * @see #setEntityResolver + * @see #setDTDHandler + * @see #setContentHandler + * @see #setErrorHandler + */ + virtual void parse + ( + const InputSource& source + ) = 0; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(const InputSource&) + */ + virtual void parse + ( + const XMLCh* const systemId + ) = 0; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(const InputSource&) + */ + virtual void parse + ( + const char* const systemId + ) = 0; + + //@} + + // ----------------------------------------------------------------------- + // SAX 2.0-ext + // ----------------------------------------------------------------------- + /** @name SAX 2.0-ext */ + //@{ + /** + * This method returns the installed declaration handler. + * + * @return A pointer to the installed declaration handler object. + */ + virtual DeclHandler* getDeclarationHandler() const = 0 ; + + /** + * This method returns the installed lexical handler. + * + * @return A pointer to the installed lexical handler object. + */ + virtual LexicalHandler* getLexicalHandler() const = 0 ; + + /** + * Allow an application to register a declaration event handler. + * + * If the application does not register a declaration handler, + * all events reported by the SAX parser will be silently + * ignored. (this is the default behaviour implemented by DefaultHandler). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The DTD declaration handler. + * @see DeclHandler#DeclHandler + * @see SAXException#SAXException + * @see DefaultHandler#DefaultHandler + */ + virtual void setDeclarationHandler(DeclHandler* const handler) = 0; + + /** + * Allow an application to register a lexical event handler. + * + * If the application does not register a lexical handler, + * all events reported by the SAX parser will be silently + * ignored. (this is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The error handler. + * @see LexicalHandler#LexicalHandler + * @see SAXException#SAXException + * @see HandlerBase#HandlerBase + */ + virtual void setLexicalHandler(LexicalHandler* const handler) = 0; + + //@} + + // ----------------------------------------------------------------------- + // Getter Methods + // ----------------------------------------------------------------------- + /** @name Getter Methods (Xerces-C specific) */ + //@{ + /** + * This method is used to get the current validator. + * + * SAX2XMLReader assumes responsibility for the validator. It will be + * deleted when the XMLReader is destroyed. + * + * @return A pointer to the validator. An application should not deleted + * the object returned. + * + */ + virtual XMLValidator* getValidator() const = 0; + + /** Get error count from the last parse operation. + * + * This method returns the error count from the last parse + * operation. Note that this count is actually stored in the + * scanner, so this method simply returns what the + * scanner reports. + * + * @return number of errors encountered during the latest + * parse operation. + */ + virtual XMLSize_t getErrorCount() const = 0 ; + + /** + * This method returns the state of the parser's + * exit-on-First-Fatal-Error flag. + * + *

Or you can query the feature "http://apache.org/xml/features/continue-after-fatal-error" + * which indicates the opposite state.

+ * + * @return true, if the parser is currently configured to + * exit on the first fatal error, false otherwise. + * + * @see #setExitOnFirstFatalError + * @see #getFeature + */ + virtual bool getExitOnFirstFatalError() const = 0; + + /** + * This method returns the state of the parser's + * validation-constraint-fatal flag. + * + *

Or you can query the feature "http://apache.org/xml/features/validation-error-as-fatal" + * which means the same thing. + * + * @return true, if the parser is currently configured to + * set validation constraint errors as fatal, false + * otherwise. + * + * @see #setValidationConstraintFatal + * @see #getFeature + */ + virtual bool getValidationConstraintFatal() const = 0; + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param nameSpaceKey Namespace key + * @return Grammar associated with the Namespace key. + */ + virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey) = 0; + + /** + * Retrieve the grammar where the root element is declared. + * + * @return Grammar where root element declared + */ + virtual Grammar* getRootGrammar() = 0; + + /** + * Returns the string corresponding to a URI id from the URI string pool. + * + * @param uriId id of the string in the URI string pool. + * @return URI string corresponding to the URI id. + */ + virtual const XMLCh* getURIText(unsigned int uriId) const = 0; + + /** + * Returns the current src offset within the input source. + * To be used only while parsing is in progress. + * + * @return offset within the input source + */ + virtual XMLFilePos getSrcOffset() const = 0; + + //@} + + // ----------------------------------------------------------------------- + // Setter Methods + // ----------------------------------------------------------------------- + /** @name Setter Methods (Xerces-C specific) */ + //@{ + /** + * This method is used to set a validator. + * + * SAX2XMLReader assumes responsibility for the validator. It will be + * deleted when the XMLReader is destroyed. + * + * @param valueToAdopt A pointer to the validator that the reader should use. + * + */ + virtual void setValidator(XMLValidator* valueToAdopt) = 0; + + /** + * This method allows users to set the parser's behaviour when it + * encounters the first fatal error. If set to true, the parser + * will exit at the first fatal error. If false, then it will + * report the error and continue processing. + * + *

The default value is 'true' and the parser exits on the + * first fatal error.

+ * + *

Or you can set the feature "http://apache.org/xml/features/continue-after-fatal-error" + * which has the opposite behaviour.

+ * + *

If both the feature above and this function are used, the latter takes effect.

+ * + * @param newState The value specifying whether the parser should + * continue or exit when it encounters the first + * fatal error. + * + * @see #getExitOnFirstFatalError + * @see #setFeature + */ + virtual void setExitOnFirstFatalError(const bool newState) = 0; + + /** + * This method allows users to set the parser's behaviour when it + * encounters a validation constraint error. If set to true, and the + * the parser will treat validation error as fatal and will exit depends on the + * state of "getExitOnFirstFatalError". If false, then it will + * report the error and continue processing. + * + * Note: setting this true does not mean the validation error will be printed with + * the word "Fatal Error". It is still printed as "Error", but the parser + * will exit if "setExitOnFirstFatalError" is set to true. + * + *

The default value is 'false'.

+ * + *

Or you can set the feature "http://apache.org/xml/features/validation-error-as-fatal" + * which means the same thing.

+ * + *

If both the feature above and this function are used, the latter takes effect.

+ * + * @param newState If true, the parser will exit if "setExitOnFirstFatalError" + * is set to true. + * + * @see #getValidationConstraintFatal + * @see #setExitOnFirstFatalError + * @see #setFeature + */ + virtual void setValidationConstraintFatal(const bool newState) = 0; + //@} + + + // ----------------------------------------------------------------------- + // Progressive scan methods + // ----------------------------------------------------------------------- + + /** @name Progressive scan methods */ + //@{ + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a Unicode string representing the path + * to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could parse the + * prolog (which means the token will not be valid.) + * + * @see #parseNext + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseFirst + ( + const XMLCh* const systemId + , XMLPScanToken& toFill + ) = 0; + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a regular native string representing + * the path to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseFirst + ( + const char* const systemId + , XMLPScanToken& toFill + ) = 0; + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param source A const reference to the InputSource object which + * points to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + */ + virtual bool parseFirst + ( + const InputSource& source + , XMLPScanToken& toFill + ) = 0; + + /** Continue a progressive parse operation + * + * This method is used to continue with progressive parsing of + * XML files started by a call to 'parseFirst' method. + * + * It parses the XML file and stops as soon as it comes across + * a XML token (as defined in the XML specification). Relevant + * callback handlers are invoked as required by the SAX + * specification. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the next XML token. + * It indicates the user can go ahead with parsing the rest + * of the file. It returns 'false' to indicate that the parser + * could not find next token as per the XML specification + * production rule. + * + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseNext(XMLPScanToken& token) = 0; + + /** Reset the parser after a progressive parse + * + * If a progressive parse loop exits before the end of the document + * is reached, the parser has no way of knowing this. So it will leave + * open any files or sockets or memory buffers that were in use at + * the time that the parse loop exited. + * + * The next parse operation will cause these open files and such to + * be closed, but the next parse operation might occur at some unknown + * future point. To avoid this problem, you should reset the parser if + * you exit the loop early. + * + * If you exited because of an error, then this cleanup will be done + * for you. Its only when you exit the file prematurely of your own + * accord, because you've found what you wanted in the file most + * likely. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + */ + virtual void parseReset(XMLPScanToken& token) = 0; + + //@} + + // ----------------------------------------------------------------------- + // Grammar preparsing interface + // ----------------------------------------------------------------------- + + /** @name Grammar preparsing interface's. */ + //@{ + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via an input source + * object. + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the SAX InputSource parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param source A const reference to the SAX InputSource object which + * points to the schema grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * + * @see InputSource#InputSource + */ + virtual Grammar* loadGrammar(const InputSource& source, + const Grammar::GrammarType grammarType, + const bool toCache = false) = 0; + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML grammar file to be + * preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const XMLCh* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false) = 0; + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const char pointer to a native string which contains + * the path to the XML grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const char* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false) = 0; + + /** + * Clear the cached grammar pool + */ + virtual void resetCachedGrammarPool() = 0; + + /** Set maximum input buffer size + * + * This method allows users to limit the size of buffers used in parsing + * XML character data. The effect of setting this size is to limit the + * size of a ContentHandler::characters() call. + * + * The parser's default input buffer size is 1 megabyte. + * + * @param bufferSize The maximum input buffer size + */ + virtual void setInputBufferSize(const XMLSize_t bufferSize); + + //@} + + + // ----------------------------------------------------------------------- + // Advanced document handler list maintenance methods + // ----------------------------------------------------------------------- + + /** @name Advanced document handler list maintenance methods */ + //@{ + /** + * This method installs the specified 'advanced' document callback + * handler, thereby allowing the user to customize the processing, + * if they choose to do so. Any number of advanced callback handlers + * maybe installed. + * + *

The methods in the advanced callback interface represent + * Xerces-C extensions. There is no specification for this interface.

+ * + * @param toInstall A pointer to the users advanced callback handler. + * + * @see #removeAdvDocHandler + */ + virtual void installAdvDocHandler(XMLDocumentHandler* const toInstall) = 0; + + /** + * This method removes the 'advanced' document handler callback from + * the underlying parser scanner. If no handler is installed, advanced + * callbacks are not invoked by the scanner. + * @param toRemove A pointer to the advanced callback handler which + * should be removed. + * + * @see #installAdvDocHandler + */ + virtual bool removeAdvDocHandler(XMLDocumentHandler* const toRemove) = 0; + //@} + +private : + /* The copy constructor, you cannot call this directly */ + SAX2XMLReader(const SAX2XMLReader&); + + /* The assignment operator, you cannot call this directly */ + SAX2XMLReader& operator=(const SAX2XMLReader&); + +}; + +inline void SAX2XMLReader::setInputBufferSize(const XMLSize_t /*bufferSize*/) +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/sax2/XMLReaderFactory.hpp b/src/libs/xerces-c/mingw/include/xercesc/sax2/XMLReaderFactory.hpp new file mode 100644 index 000000000000..a63bcacee066 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/sax2/XMLReaderFactory.hpp @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLREADERFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_XMLREADERFACTORY_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class MemoryManager; +class XMLGrammarPool; + +/** + * Creates a SAX2 parser (SAX2XMLReader). + * + *

Note: The parser object returned by XMLReaderFactory is owned by the + * calling users, and it's the responsibility of the users to delete that + * parser object, once they no longer need it.

+ * + * @see SAX2XMLReader#SAX2XMLReader + */ +class SAX2_EXPORT XMLReaderFactory +{ +protected: // really should be private, but that causes compiler warnings. + XMLReaderFactory() ; + ~XMLReaderFactory() ; + +public: + static SAX2XMLReader * createXMLReader( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , XMLGrammarPool* const gramPool = 0 + ) ; + static SAX2XMLReader * createXMLReader(const XMLCh* className) ; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLReaderFactory(const XMLReaderFactory&); + XMLReaderFactory& operator=(const XMLReaderFactory&); +}; + +inline SAX2XMLReader * XMLReaderFactory::createXMLReader(const XMLCh *) +{ + throw SAXNotSupportedException(); + // unimplemented + return 0; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp new file mode 100644 index 000000000000..4fc2e388d524 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ARRAYINDEXOUTOFBOUNDSEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_ARRAYINDEXOUTOFBOUNDSEXCEPTION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(ArrayIndexOutOfBoundsException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/Base64.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/Base64.hpp new file mode 100644 index 000000000000..4104de724230 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/Base64.hpp @@ -0,0 +1,266 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BASE64_HPP) +#define XERCESC_INCLUDE_GUARD_BASE64_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides encode/decode for RFC 2045 Base64 as +// defined by RFC 2045, N. Freed and N. Borenstein. +// RFC 2045: Multipurpose Internet Mail Extensions (MIME) +// Part One: Format of Internet Message Bodies. Reference +// 1996 Available at: http://www.ietf.org/rfc/rfc2045.txt +// This class is used by XML Schema binary format validation +// +// +class XMLUTIL_EXPORT Base64 +{ +public : + + enum Conformance + { + Conf_RFC2045 + , Conf_Schema + }; + + //@{ + + /** + * Encodes octets into Base64 data + * + * NOTE: The returned buffer is dynamically allocated and is the + * responsibility of the caller to delete it when not longer needed. + * Use the memory manager to release the returned buffer or + * operator delete() if none was provided. + * + * @param inputData Binary data in XMLByte stream. + * @param inputLength Length of the XMLByte stream. + * @param outputLength Length of the encoded Base64 byte stream. + * @param memMgr client provided memory manager + * @return Encoded Base64 data in XMLByte stream, + * or NULL if input data can not be encoded. + */ + static XMLByte* encode(const XMLByte* const inputData + , const XMLSize_t inputLength + , XMLSize_t* outputLength + , MemoryManager* const memMgr = 0); + + /** + * Decodes Base64 data into octets + * + * NOTE: The returned buffer is dynamically allocated and is the + * responsibility of the caller to delete it when not longer needed. + * Use the memory manager to release the returned buffer or + * operator delete() if none was provided. + * + * @param inputData Base64 data in XMLByte stream. + * @param decodedLength Length of decoded XMLByte stream. + * @param memMgr client provided memory manager + * @param conform conformance specified: if the input data conforms to the + * RFC 2045 it is allowed to have any number of whitespace + * characters inside; if it conforms to the XMLSchema specs, + * it is allowed to have at most one whitespace character + * between the quartets + * @return Decoded binary data in XMLByte stream, + * or NULL if input data can not be decoded. + */ + static XMLByte* decode( + const XMLByte* const inputData + , XMLSize_t* decodedLength + , MemoryManager* const memMgr = 0 + , Conformance conform = Conf_RFC2045 + ); + + /** + * Decodes Base64 data into octets + * + * NOTE: The returned buffer is dynamically allocated and is the + * responsibility of the caller to delete it when not longer needed. + * Use the memory manager to release the returned buffer or + * operator delete() if none was provided. + * + * @param inputData Base64 data in XMLCh stream. + * @param decodedLength Length of decoded XMLByte stream. + * @param memMgr client provided memory manager + * @param conform conformance specified: if the input data conforms to the + * RFC 2045 it is allowed to have any number of whitespace + * characters inside; if it conforms to the XMLSchema specs, + * it is allowed to have at most one whitespace character + * between the quartets + * @return Decoded binary data in XMLByte stream, + * or NULL if input data can not be decoded. + */ + static XMLByte* decodeToXMLByte( + const XMLCh* const inputData + , XMLSize_t* decodedLength + , MemoryManager* const memMgr = 0 + , Conformance conform = Conf_RFC2045 + ); + /** + * Get data length + * + * Returns length of decoded data given an array + * containing encoded data. + * + * @param inputData Base64 data in XMLCh stream. + * @param memMgr client provided memory manager + * @param conform conformance specified + * @return Length of decoded data, + * or -1 if input data can not be decoded. + */ + static int getDataLength( + const XMLCh* const inputData + , MemoryManager* const memMgr = 0 + , Conformance conform = Conf_RFC2045 + ); + + //@} + + /** + * get canonical representation + * + * Caller is responsible for the proper deallocation + * of the string returned. + * + * @param inputData A string containing the Base64 + * @param memMgr client provided memory manager + * @param conform conformance specified + * + * return: the canonical representation of the Base64 + * if it is a valid Base64 + * 0 otherwise + */ + + static XMLCh* getCanonicalRepresentation + ( + const XMLCh* const inputData + , MemoryManager* const memMgr = 0 + , Conformance conform = Conf_RFC2045 + ); + +private : + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + + static XMLByte* decode( + const XMLByte* const inputData + , XMLSize_t* outputLength + , XMLByte*& canRepData + , MemoryManager* const memMgr = 0 + , Conformance conform = Conf_RFC2045 + ); + + static bool isData(const XMLByte& octet); + static bool isPad(const XMLByte& octet); + + static XMLByte set1stOctet(const XMLByte&, const XMLByte&); + static XMLByte set2ndOctet(const XMLByte&, const XMLByte&); + static XMLByte set3rdOctet(const XMLByte&, const XMLByte&); + + static void split1stOctet(const XMLByte&, XMLByte&, XMLByte&); + static void split2ndOctet(const XMLByte&, XMLByte&, XMLByte&); + static void split3rdOctet(const XMLByte&, XMLByte&, XMLByte&); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Base64(); + Base64(const Base64&); + + // ----------------------------------------------------------------------- + // Private data members + // + // base64Alphabet + // The Base64 alphabet (see RFC 2045). + // + // base64Padding + // Padding character (see RFC 2045). + // + // base64Inverse + // Table used in decoding base64. + // + // isInitialized + // Set once base64Inverse is initialized. + // + // quadsPerLine + // Number of quadruplets per one line. The encoded output + // stream must be represented in lines of no more + // than 19 quadruplets each. + // + // ----------------------------------------------------------------------- + + static const XMLByte base64Alphabet[]; + static const XMLByte base64Padding; + + static const XMLByte base64Inverse[]; + + static const unsigned int quadsPerLine; +}; + +// ----------------------------------------------------------------------- +// Helper methods +// ----------------------------------------------------------------------- +inline bool Base64::isPad(const XMLByte& octet) +{ + return ( octet == base64Padding ); +} + +inline XMLByte Base64::set1stOctet(const XMLByte& b1, const XMLByte& b2) +{ + return (( b1 << 2 ) | ( b2 >> 4 )); +} + +inline XMLByte Base64::set2ndOctet(const XMLByte& b2, const XMLByte& b3) +{ + return (( b2 << 4 ) | ( b3 >> 2 )); +} + +inline XMLByte Base64::set3rdOctet(const XMLByte& b3, const XMLByte& b4) +{ + return (( b3 << 6 ) | b4 ); +} + +inline void Base64::split1stOctet(const XMLByte& ch, XMLByte& b1, XMLByte& b2) { + b1 = ch >> 2; + b2 = ( ch & 0x3 ) << 4; +} + +inline void Base64::split2ndOctet(const XMLByte& ch, XMLByte& b2, XMLByte& b3) { + b2 |= ch >> 4; // combine with previous value + b3 = ( ch & 0xf ) << 2; +} + +inline void Base64::split3rdOctet(const XMLByte& ch, XMLByte& b3, XMLByte& b4) { + b3 |= ch >> 6; // combine with previous value + b4 = ( ch & 0x3f ); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/BaseRefVectorOf.c b/src/libs/xerces-c/mingw/include/xercesc/util/BaseRefVectorOf.c new file mode 100644 index 000000000000..31e03bff99bc --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/BaseRefVectorOf.c @@ -0,0 +1,344 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// BaseRefVectorOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +BaseRefVectorOf::BaseRefVectorOf( const XMLSize_t maxElems + , const bool adoptElems + , MemoryManager* const manager) : + + fAdoptedElems(adoptElems) + , fCurCount(0) + , fMaxCount(maxElems) + , fElemList(0) + , fMemoryManager(manager) +{ + // Allocate and initialize the array + fElemList = (TElem**) fMemoryManager->allocate(maxElems * sizeof(TElem*));//new TElem*[maxElems]; + for (XMLSize_t index = 0; index < maxElems; index++) + fElemList[index] = 0; +} + + +//implemented so code will link +template BaseRefVectorOf::~BaseRefVectorOf() +{ +} + + +// --------------------------------------------------------------------------- +// BaseRefVectorOf: Element management +// --------------------------------------------------------------------------- +template void BaseRefVectorOf::addElement(TElem* const toAdd) +{ + ensureExtraCapacity(1); + fElemList[fCurCount] = toAdd; + fCurCount++; +} + + +template void +BaseRefVectorOf::setElementAt(TElem* const toSet, const XMLSize_t setAt) +{ + if (setAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + + if (fAdoptedElems) + delete fElemList[setAt]; + fElemList[setAt] = toSet; +} + +template void BaseRefVectorOf:: +insertElementAt(TElem* const toInsert, const XMLSize_t insertAt) +{ + if (insertAt == fCurCount) + { + addElement(toInsert); + return; + } + + if (insertAt > fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + + ensureExtraCapacity(1); + + // Make room for the newbie + for (XMLSize_t index = fCurCount; index > insertAt; index--) + fElemList[index] = fElemList[index-1]; + + // And stick it in and bump the count + fElemList[insertAt] = toInsert; + fCurCount++; +} + +template TElem* BaseRefVectorOf:: +orphanElementAt(const XMLSize_t orphanAt) +{ + if (orphanAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + + // Get the element we are going to orphan + TElem* retVal = fElemList[orphanAt]; + + // Optimize if its the last element + if (orphanAt == fCurCount-1) + { + fElemList[orphanAt] = 0; + fCurCount--; + return retVal; + } + + // Copy down every element above orphan point + for (XMLSize_t index = orphanAt; index < fCurCount-1; index++) + fElemList[index] = fElemList[index+1]; + + // Keep unused elements zero for sanity's sake + fElemList[fCurCount-1] = 0; + + // And bump down count + fCurCount--; + + return retVal; +} + +template void BaseRefVectorOf::removeAllElements() +{ + for (XMLSize_t index = 0; index < fCurCount; index++) + { + if (fAdoptedElems) + delete fElemList[index]; + + // Keep unused elements zero for sanity's sake + fElemList[index] = 0; + } + fCurCount = 0; +} + +template void BaseRefVectorOf:: +removeElementAt(const XMLSize_t removeAt) +{ + if (removeAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + + if (fAdoptedElems) + delete fElemList[removeAt]; + + // Optimize if its the last element + if (removeAt == fCurCount-1) + { + fElemList[removeAt] = 0; + fCurCount--; + return; + } + + // Copy down every element above remove point + for (XMLSize_t index = removeAt; index < fCurCount-1; index++) + fElemList[index] = fElemList[index+1]; + + // Keep unused elements zero for sanity's sake + fElemList[fCurCount-1] = 0; + + // And bump down count + fCurCount--; +} + +template void BaseRefVectorOf::removeLastElement() +{ + if (!fCurCount) + return; + fCurCount--; + + if (fAdoptedElems) + delete fElemList[fCurCount]; +} + +template +bool BaseRefVectorOf::containsElement(const TElem* const toCheck) { + + for (XMLSize_t i = 0; i < fCurCount; i++) { + if (fElemList[i] == toCheck) { + return true; + } + } + + return false; +} + +// +// cleanup(): +// similar to destructor +// called to cleanup the memory, in case destructor cannot be called +// +template void BaseRefVectorOf::cleanup() +{ + if (fAdoptedElems) + { + for (XMLSize_t index = 0; index < fCurCount; index++) + delete fElemList[index]; + } + fMemoryManager->deallocate(fElemList);//delete [] fElemList; +} + +// +// reinitialize(): +// similar to constructor +// called to re-construct the fElemList from scratch again +// +template void BaseRefVectorOf::reinitialize() +{ + // reinitialize the array + if (fElemList) + cleanup(); + + fElemList = (TElem**) fMemoryManager->allocate(fMaxCount * sizeof(TElem*));//new TElem*[fMaxCount]; + for (XMLSize_t index = 0; index < fMaxCount; index++) + fElemList[index] = 0; + +} + +template +MemoryManager* BaseRefVectorOf::getMemoryManager() const +{ + return fMemoryManager; +} + + +// --------------------------------------------------------------------------- +// BaseRefVectorOf: Getter methods +// --------------------------------------------------------------------------- +template XMLSize_t BaseRefVectorOf::curCapacity() const +{ + return fMaxCount; +} + +template const TElem* BaseRefVectorOf:: +elementAt(const XMLSize_t getAt) const +{ + if (getAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + return fElemList[getAt]; +} + +template TElem* +BaseRefVectorOf::elementAt(const XMLSize_t getAt) +{ + if (getAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + return fElemList[getAt]; +} + +template XMLSize_t BaseRefVectorOf::size() const +{ + return fCurCount; +} + + +// --------------------------------------------------------------------------- +// BaseRefVectorOf: Miscellaneous +// --------------------------------------------------------------------------- +template void BaseRefVectorOf:: +ensureExtraCapacity(const XMLSize_t length) +{ + XMLSize_t newMax = fCurCount + length; + + if (newMax <= fMaxCount) + return; + + // Choose how much bigger based on the current size. + // This will grow half as much again. + if (newMax < fMaxCount + fMaxCount/2) + newMax = fMaxCount + fMaxCount/2; + + // Allocate the new array and copy over the existing stuff + TElem** newList = (TElem**) fMemoryManager->allocate + ( + newMax * sizeof(TElem*) + );//new TElem*[newMax]; + XMLSize_t index = 0; + for (; index < fCurCount; index++) + newList[index] = fElemList[index]; + + // Zero out the rest of them + for (; index < newMax; index++) + newList[index] = 0; + + // Clean up the old array and update our members + fMemoryManager->deallocate(fElemList);//delete [] fElemList; + fElemList = newList; + fMaxCount = newMax; +} + + + +// --------------------------------------------------------------------------- +// AbstractBaseRefVectorEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template BaseRefVectorEnumerator:: +BaseRefVectorEnumerator( BaseRefVectorOf* const toEnum + , const bool adopt) : + fAdopted(adopt) + , fCurIndex(0) + , fToEnum(toEnum) +{ +} + +template BaseRefVectorEnumerator::~BaseRefVectorEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + +template BaseRefVectorEnumerator:: +BaseRefVectorEnumerator(const BaseRefVectorEnumerator& toCopy) : + XMLEnumerator(toCopy) + , XMemory(toCopy) + , fAdopted(toCopy.fAdopted) + , fCurIndex(toCopy.fCurIndex) + , fToEnum(toCopy.fToEnum) +{ +} +// --------------------------------------------------------------------------- +// RefBaseRefVectorEnumerator: Enum interface +// --------------------------------------------------------------------------- +template bool BaseRefVectorEnumerator::hasMoreElements() const +{ + if (fCurIndex >= fToEnum->size()) + return false; + return true; +} + +template TElem& BaseRefVectorEnumerator::nextElement() +{ + return *(fToEnum->elementAt(fCurIndex++)); +} + +template void BaseRefVectorEnumerator::Reset() +{ + fCurIndex = 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/BaseRefVectorOf.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/BaseRefVectorOf.hpp new file mode 100644 index 000000000000..360b99c91021 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/BaseRefVectorOf.hpp @@ -0,0 +1,158 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ABSTRACTVECTOROF_HPP) +#define XERCESC_INCLUDE_GUARD_ABSTRACTVECTOROF_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Abstract base class for the xerces internal representation of Vector. + * + * The destructor is abstract, forcing each of RefVectorOf and + * RefArrayVectorOf to implement their own appropriate one. + * + */ +template class BaseRefVectorOf : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + BaseRefVectorOf + ( + const XMLSize_t maxElems + , const bool adoptElems = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~BaseRefVectorOf(); + + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + void addElement(TElem* const toAdd); + virtual void setElementAt(TElem* const toSet, const XMLSize_t setAt); + void insertElementAt(TElem* const toInsert, const XMLSize_t insertAt); + TElem* orphanElementAt(const XMLSize_t orphanAt); + virtual void removeAllElements(); + virtual void removeElementAt(const XMLSize_t removeAt); + virtual void removeLastElement(); + bool containsElement(const TElem* const toCheck); + virtual void cleanup(); + void reinitialize(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t curCapacity() const; + const TElem* elementAt(const XMLSize_t getAt) const; + TElem* elementAt(const XMLSize_t getAt); + XMLSize_t size() const; + MemoryManager* getMemoryManager() const; + + + // ----------------------------------------------------------------------- + // Miscellaneous + // ----------------------------------------------------------------------- + void ensureExtraCapacity(const XMLSize_t length); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + BaseRefVectorOf(const BaseRefVectorOf& copy); + BaseRefVectorOf& operator=(const BaseRefVectorOf& copy); + +protected: + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + bool fAdoptedElems; + XMLSize_t fCurCount; + XMLSize_t fMaxCount; + TElem** fElemList; + MemoryManager* fMemoryManager; +}; + + +// +// An enumerator for a vector. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template class BaseRefVectorEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + BaseRefVectorEnumerator + ( + BaseRefVectorOf* const toEnum + , const bool adopt = false + ); + virtual ~BaseRefVectorEnumerator(); + + BaseRefVectorEnumerator(const BaseRefVectorEnumerator& copy); + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TElem& nextElement(); + void Reset(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + BaseRefVectorEnumerator& operator=(const BaseRefVectorEnumerator& copy); + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed vector. If so then + // we delete the vector when we are destroyed. + // + // fCurIndex + // This is the current index into the vector. + // + // fToEnum + // The reference vector being enumerated. + // ----------------------------------------------------------------------- + bool fAdopted; + XMLSize_t fCurIndex; + BaseRefVectorOf* fToEnum; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/BinFileInputStream.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/BinFileInputStream.hpp new file mode 100644 index 000000000000..3b4ba03d348a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/BinFileInputStream.hpp @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BINFILEINPUTSTREAM_HPP) +#define XERCESC_INCLUDE_GUARD_BINFILEINPUTSTREAM_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BinFileInputStream : public BinInputStream +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + BinFileInputStream + ( + const XMLCh* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + BinFileInputStream + ( + const char* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + BinFileInputStream + ( + const FileHandle toUse + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~BinFileInputStream(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getIsOpen() const; + XMLFilePos getSize() const; + void reset(); + + + // ----------------------------------------------------------------------- + // Implementation of the input stream interface + // ----------------------------------------------------------------------- + virtual XMLFilePos curPos() const; + + virtual XMLSize_t readBytes + ( + XMLByte* const toFill + , const XMLSize_t maxToRead + ); + + virtual const XMLCh* getContentType() const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + BinFileInputStream(const BinFileInputStream&); + BinFileInputStream& operator=(const BinFileInputStream&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fSource + // The source file that we represent. The FileHandle type is defined + // per platform. + // ----------------------------------------------------------------------- + FileHandle fSource; + MemoryManager* const fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// BinFileInputStream: Getter methods +// --------------------------------------------------------------------------- +inline bool BinFileInputStream::getIsOpen() const +{ + return (fSource != (FileHandle) XERCES_Invalid_File_Handle); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/BinInputStream.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/BinInputStream.hpp new file mode 100644 index 000000000000..6023f48972df --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/BinInputStream.hpp @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BININPUTSTREAM_HPP) +#define XERCESC_INCLUDE_GUARD_BININPUTSTREAM_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BinInputStream : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Virtual destructor for derived classes + // ----------------------------------------------------------------------- + virtual ~BinInputStream(); + + + // ----------------------------------------------------------------------- + // The virtual input stream interface + // ----------------------------------------------------------------------- + virtual XMLFilePos curPos() const = 0; + + virtual XMLSize_t readBytes + ( + XMLByte* const toFill + , const XMLSize_t maxToRead + ) = 0; + + /** + * Return the "out-of-band" content type for the data supplied by this + * input stream in the form of the media-type production (mime type + * with optional parameters such as encoding) as defined by the HTTP 1.1 + * specification. If no such content type is provided for the data, 0 is + * returned. This function is expected to return the correct value at + * any time after the construction of the stream. + * + * An example of the stream that may return non-0 from this function is + * an HTTP stream with the value returned taken from the "Content-Type" + * HTTP header. Note also that if the encoding of the data is known + * to the application by some other means then the setEncoding function + * in the InputSource object should be used instead. The getContentType + * function should only be used to return information that is intrinsic + * to the stream. + * + * @return The content type, or 0 if one is not available. + */ + virtual const XMLCh* getContentType() const = 0; + + /** + * Return the "out-of-band" encoding for the data supplied by this + * input stream. If no such content type is provided for the data, 0 is + * returned. This function is expected to return the correct value at + * any time after the construction of the stream. + * + * An example of the stream that may return non-0 from this function is + * an HTTP stream with the value returned taken from the "Content-Type" + * HTTP header. Note also that if the encoding of the data is known + * to the application by some other means then the setEncoding function + * in the InputSource object should be used instead. The getEncoding + * function should only be used to return information that is intrinsic + * to the stream. + * + * @return The name of the encoding, or 0 if one is not available. + */ + virtual const XMLCh *getEncoding() const; + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + BinInputStream(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented Constructors + // ----------------------------------------------------------------------- + BinInputStream(const BinInputStream&); + BinInputStream& operator=(const BinInputStream&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/BinMemInputStream.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/BinMemInputStream.hpp new file mode 100644 index 000000000000..1617b65d0590 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/BinMemInputStream.hpp @@ -0,0 +1,134 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BINMEMINPUTSTREAM_HPP) +#define XERCESC_INCLUDE_GUARD_BINMEMINPUTSTREAM_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BinMemInputStream : public BinInputStream +{ +public : + // ----------------------------------------------------------------------- + // Class specific types + // ----------------------------------------------------------------------- + enum BufOpts + { + BufOpt_Adopt + , BufOpt_Copy + , BufOpt_Reference + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + BinMemInputStream + ( + const XMLByte* const initData + , const XMLSize_t capacity + , const BufOpts bufOpt = BufOpt_Copy + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~BinMemInputStream(); + + + // ----------------------------------------------------------------------- + // Stream management methods + // ----------------------------------------------------------------------- + void reset(); + + + // ----------------------------------------------------------------------- + // Implementation of the input stream interface + // ----------------------------------------------------------------------- + virtual XMLFilePos curPos() const; + + virtual XMLSize_t readBytes + ( + XMLByte* const toFill + , const XMLSize_t maxToRead + ); + + virtual const XMLCh* getContentType() const; + + inline XMLSize_t getSize() const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + BinMemInputStream(const BinMemInputStream&); + BinMemInputStream& operator=(const BinMemInputStream&); + // ----------------------------------------------------------------------- + // Private data members + // + // fBuffer + // The buffer of bytes that we are streaming. + // + // fBufOpt + // Indicates the ownership status of the buffer. The caller can have + // us adopt it (we delete it), reference it, or just make our own + // copy of it. + // + // fCapacity + // The size of the buffer being streamed. + // + // fCurIndex + // The current index where the next byte will be read from. When it + // hits fCapacity, we are done. + // ----------------------------------------------------------------------- + const XMLByte* fBuffer; + BufOpts fBufOpt; + XMLSize_t fCapacity; + XMLSize_t fCurIndex; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// BinMemInputStream: Stream management methods +// --------------------------------------------------------------------------- +inline void BinMemInputStream::reset() +{ + fCurIndex = 0; +} + + +// --------------------------------------------------------------------------- +// BinMemInputStream: Implementation of the input stream interface +// --------------------------------------------------------------------------- +inline XMLFilePos BinMemInputStream::curPos() const +{ + return fCurIndex; +} + +inline XMLSize_t BinMemInputStream::getSize() const +{ + return fCapacity; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/BitOps.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/BitOps.hpp new file mode 100644 index 000000000000..1b3d4204c5f3 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/BitOps.hpp @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BITOPS_HPP) +#define XERCESC_INCLUDE_GUARD_BITOPS_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BitOps +{ +public: + // ----------------------------------------------------------------------- + // Public static methods + // ----------------------------------------------------------------------- + static inline XMLCh swapBytes(const XMLUInt16 toSwap) + { + //The mask is required to overcome a compiler error on solaris + return XMLCh(((toSwap >> 8) | (toSwap << 8)) & 0xFFFF); + } + + static inline unsigned int swapBytes(const XMLUInt32 toSwap) + { + return + ( + (toSwap >> 24) + | (toSwap << 24) + | ((toSwap & 0xFF00) << 8) + | ((toSwap & 0xFF0000) >> 8) + ); + } + + + +protected : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators. (These ought to be private, + // but that produces spurious compiler warnings + // on some platforms.) + // ----------------------------------------------------------------------- + BitOps(); + BitOps(const BitOps&); + BitOps& operator=(const BitOps&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/BitSet.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/BitSet.hpp new file mode 100644 index 000000000000..684a328bd719 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/BitSet.hpp @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BITSET_HPP) +#define XERCESC_INCLUDE_GUARD_BITSET_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BitSet : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + BitSet( const XMLSize_t size + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + BitSet(const BitSet& toCopy); + ~BitSet(); + + + // ----------------------------------------------------------------------- + // Equality methods + // ----------------------------------------------------------------------- + bool equals(const BitSet& other) const; + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool allAreCleared() const; + bool allAreSet() const; + XMLSize_t size() const; + bool get(const XMLSize_t index) const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void clear(const XMLSize_t index); + void clearAll(); + void set(const XMLSize_t index); + + + // ----------------------------------------------------------------------- + // Bitwise logical operations + // ----------------------------------------------------------------------- + void andWith(const BitSet& other); + void orWith(const BitSet& other); + void xorWith(const BitSet& other); + + + // ----------------------------------------------------------------------- + // Miscellaneous + // ----------------------------------------------------------------------- + XMLSize_t hash(const XMLSize_t hashModulus) const; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors + // ----------------------------------------------------------------------- + BitSet(); + BitSet& operator=(const BitSet&); + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + void ensureCapacity(const XMLSize_t bits); + + + // ----------------------------------------------------------------------- + // Data members + // + // fBits + // The array of unsigned longs used to store the bits. + // + // fUnitLen + // The length of the storage array, in storage units not bits. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + unsigned long* fBits; + XMLSize_t fUnitLen; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/CountedPointer.c b/src/libs/xerces-c/mingw/include/xercesc/util/CountedPointer.c new file mode 100644 index 000000000000..5eefd7140ca4 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/CountedPointer.c @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// CountedPointerTo: Constructors and Destructor +// --------------------------------------------------------------------------- +template CountedPointerTo:: +CountedPointerTo(const CountedPointerTo& toCopy) : + + fPtr(toCopy.fPtr) +{ + if (fPtr) + fPtr->addRef(); +} + +template CountedPointerTo::CountedPointerTo(T* p) : + + fPtr(p) +{ + if (fPtr) + fPtr->addRef(); +} + +template CountedPointerTo::~CountedPointerTo() +{ + if (fPtr) + fPtr->removeRef(); +} + + +// --------------------------------------------------------------------------- +// CountedPointerTo: Operators +// --------------------------------------------------------------------------- +template CountedPointerTo& +CountedPointerTo::operator=(const CountedPointerTo& other) +{ + if (this == &other) + return *this; + + if (other.fPtr) + other.fPtr->addRef(); + + if (fPtr) + fPtr->removeRef(); + + fPtr = other.fPtr; + return *this; +} + +template CountedPointerTo::operator T*() +{ + return fPtr; +} + +template const T* CountedPointerTo::operator->() const +{ + return fPtr; +} + +template T* CountedPointerTo::operator->() +{ + return fPtr; +} + +template const T& CountedPointerTo::operator*() const +{ + if (!fPtr) + ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, 0); + return *fPtr; +} + +template T& CountedPointerTo::operator*() +{ + if (!fPtr) + ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, 0); + return *fPtr; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/CountedPointer.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/CountedPointer.hpp new file mode 100644 index 000000000000..a8f3cd8c8eda --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/CountedPointer.hpp @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_COUNTEDPOINTERTO_HPP) +#define XERCESC_INCLUDE_GUARD_COUNTEDPOINTERTO_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class CountedPointerTo : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + CountedPointerTo(const CountedPointerTo& toCopy); + CountedPointerTo(T* p = 0); + ~CountedPointerTo(); + + + // ----------------------------------------------------------------------- + // Operators + // ----------------------------------------------------------------------- + CountedPointerTo& operator=(const CountedPointerTo& other); + operator T*(); + const T* operator->() const; + T* operator->(); + const T& operator*() const; + T& operator*(); + + +private: + // ----------------------------------------------------------------------- + // Data members + // + // fPtr + // The pointer that we are counting. The T type must implement the + // addRef() and removeRef() APIs but it doesn't have to derive from + // any particular type. + // ----------------------------------------------------------------------- + T* fPtr; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/DefaultPanicHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/DefaultPanicHandler.hpp new file mode 100644 index 000000000000..dd00c26f36b1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/DefaultPanicHandler.hpp @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DEFAULT_PANICHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DEFAULT_PANICHANDLER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Receive notification of panic. + * + *

This is Xerces' default implementation of the PanicHanlder + * interface, which will be instantiated and used in the + * absence of an application's panic handler. + *

+ */ + +class XMLUTIL_EXPORT DefaultPanicHandler : public XMemory, public PanicHandler +{ +public: + + /** @name hidden Constructors */ + //@{ + /** Default constructor */ + DefaultPanicHandler(){}; + + /** Destructor */ + virtual ~DefaultPanicHandler(){}; + //@} + + /** @name Implement virtual panic handler interface */ + //@{ + /** + * Receive notification of panic + * + *

Upon invocation, a corresponding error message will be output + * to the stderr, and program exit. + *

+ * + * @param reason The reason of panic + * + */ + virtual void panic(const PanicHandler::PanicReasons reason); + //@} + +private: + + /* Unimplemented Constructors and operators */ + /* Copy constructor */ + DefaultPanicHandler(const PanicHandler&); + + /** Assignment operator */ + DefaultPanicHandler& operator=(const DefaultPanicHandler&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/EmptyStackException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/EmptyStackException.hpp new file mode 100644 index 000000000000..3e1ba275cba1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/EmptyStackException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_EMPTYSTACKEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_EMPTYSTACKEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(EmptyStackException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/EncodingValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/EncodingValidator.hpp new file mode 100644 index 000000000000..340e67e5c0ef --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/EncodingValidator.hpp @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ENCODINGVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ENCODINGVALIDATOR_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * A singleton class that checks whether an encoding name is a valid IANA + * encoding + */ + +class XMLUTIL_EXPORT EncodingValidator { + +public: + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + bool isValidEncoding(const XMLCh* const encName); + + // ----------------------------------------------------------------------- + // Instance methods + // ----------------------------------------------------------------------- + static EncodingValidator* instance(); + +private: + // ----------------------------------------------------------------------- + // Constructor and destructors + // ----------------------------------------------------------------------- + EncodingValidator(); + ~EncodingValidator(); + + // ----------------------------------------------------------------------- + // Private Helpers methods + // ----------------------------------------------------------------------- + /* + * Initializes the registry with a set of valid IANA encoding names + */ + void initializeRegistry(); + + // ----------------------------------------------------------------------- + // Private data members + // + // fEncodingRegistry + // Contains a set of IANA encoding names + // + // fInstance + // An EncodingValidator singleton instance + // ----------------------------------------------------------------------- + ValueHashTableOf* fEncodingRegistry; + static EncodingValidator* fInstance; + friend class XMLInitializer; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file EncodingValidator.hpp + */ diff --git a/extern/xerces-c/include/xercesc/util/FileManagers/WindowsFileMgr.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/FileManagers/WindowsFileMgr.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/FileManagers/WindowsFileMgr.hpp rename to src/libs/xerces-c/mingw/include/xercesc/util/FileManagers/WindowsFileMgr.hpp diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/FlagJanitor.c b/src/libs/xerces-c/mingw/include/xercesc/util/FlagJanitor.c new file mode 100644 index 000000000000..b8ea1cdfeebe --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/FlagJanitor.c @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Constructors and Destructor +// --------------------------------------------------------------------------- +template FlagJanitor::FlagJanitor(T* const valPtr, const T newVal) +: fValPtr(valPtr) +{ + // Store the pointer, save the org value, and store the new value + if (fValPtr) + { + fOldVal = *fValPtr; + *fValPtr = newVal; + } +} + +template FlagJanitor::~FlagJanitor() +{ + // Restore the old value + if (fValPtr) + *fValPtr = fOldVal; +} + + +// --------------------------------------------------------------------------- +// Value management methods +// --------------------------------------------------------------------------- +template void FlagJanitor::release() +{ + fValPtr = 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/extern/xerces-c/include/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/FlagJanitor.hpp similarity index 52% rename from extern/xerces-c/include/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp rename to src/libs/xerces-c/mingw/include/xercesc/util/FlagJanitor.hpp index 0d325aba48cd..76b91db1b2ca 100644 --- a/extern/xerces-c/include/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp +++ b/src/libs/xerces-c/mingw/include/xercesc/util/FlagJanitor.hpp @@ -5,9 +5,9 @@ * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -19,53 +19,55 @@ * $Id$ */ -#if !defined(XERCESC_INCLUDE_GUARD_BINHTTPURLINPUTSTREAM_HPP) -#define XERCESC_INCLUDE_GUARD_BINHTTPURLINPUTSTREAM_HPP +#if !defined(XERCESC_INCLUDE_GUARD_FLAGJANITOR_HPP) +#define XERCESC_INCLUDE_GUARD_FLAGJANITOR_HPP - -#include - -#include +#include XERCES_CPP_NAMESPACE_BEGIN -// -// This class implements the BinInputStream interface specified by the XML -// parser. -// -class XMLUTIL_EXPORT BinHTTPURLInputStream : public BinHTTPInputStreamCommon +template class FlagJanitor { public : - BinHTTPURLInputStream(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo=0); - ~BinHTTPURLInputStream(); + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + FlagJanitor(T* const valPtr, const T newVal); + ~FlagJanitor(); + - virtual bool send(const char *buf, XMLSize_t len); - virtual int receive(char *buf, XMLSize_t len); + // ----------------------------------------------------------------------- + // Value management methods + // ----------------------------------------------------------------------- + void release(); - static void Cleanup(); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- - BinHTTPURLInputStream(const BinHTTPURLInputStream&); - BinHTTPURLInputStream& operator=(const BinHTTPURLInputStream&); + FlagJanitor(); + FlagJanitor(const FlagJanitor&); + FlagJanitor& operator=(const FlagJanitor&); + // ----------------------------------------------------------------------- // Private data members // - // fSocketHandle - // The socket representing the connection to the remote file. - // We deliberately did not define the type to be SOCKET, so as to - // avoid bringing in any Windows header into this file. + // fOldVal + // The old value that was in the flag when we were constructed. + // + // fValPtr + // A pointer to the flag that we are to restore the value of // ----------------------------------------------------------------------- - SOCKET fSocketHandle; - - static bool fInitialized; - - static void Initialize(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + T fOldVal; + T* fValPtr; }; XERCES_CPP_NAMESPACE_END -#endif // BINHTTPURLINPUTSTREAM_HPP +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/Hash2KeysSetOf.c b/src/libs/xerces-c/mingw/include/xercesc/util/Hash2KeysSetOf.c new file mode 100644 index 000000000000..607a8b7a8e17 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/Hash2KeysSetOf.c @@ -0,0 +1,591 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Hash2KeysSetOf: Constructors and Destructor +// --------------------------------------------------------------------------- + +template +Hash2KeysSetOf::Hash2KeysSetOf( + const XMLSize_t modulus, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fBucketList(0) + , fHashModulus(modulus) + , fCount(0) + , fAvailable(0) +{ + initialize(modulus); +} + +template +Hash2KeysSetOf::Hash2KeysSetOf( + const XMLSize_t modulus, + const THasher& hasher, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fBucketList(0) + , fHashModulus(modulus) + , fCount(0) + , fAvailable(0) + , fHasher (hasher) +{ + initialize(modulus); +} + +template +void Hash2KeysSetOf::initialize(const XMLSize_t modulus) +{ + if (modulus == 0) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); + + // Allocate the bucket list and zero them + fBucketList = (Hash2KeysSetBucketElem**) fMemoryManager->allocate + ( + fHashModulus * sizeof(Hash2KeysSetBucketElem*) + ); //new Hash2KeysSetBucketElem*[fHashModulus]; + memset(fBucketList, 0, sizeof(fBucketList[0]) * fHashModulus); +} + +template +Hash2KeysSetOf::~Hash2KeysSetOf() +{ + Hash2KeysSetBucketElem* nextElem; + if(!isEmpty()) + { + // Clean up the buckets first + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + // Get the bucket list head for this entry + Hash2KeysSetBucketElem* curElem = fBucketList[buckInd]; + while (curElem) + { + // Save the next element before we hose this one + nextElem = curElem->fNext; + fMemoryManager->deallocate(curElem); + curElem = nextElem; + } + + // Clean out this entry + fBucketList[buckInd] = 0; + } + } + // Then delete the list of available blocks + Hash2KeysSetBucketElem* curElem = fAvailable; + while (curElem) + { + // Save the next element before we hose this one + nextElem = curElem->fNext; + fMemoryManager->deallocate(curElem); + curElem = nextElem; + } + fAvailable = 0; + + // Then delete the bucket list & hasher + fMemoryManager->deallocate(fBucketList); //delete [] fBucketList; + fBucketList = 0; +} + + +// --------------------------------------------------------------------------- +// Hash2KeysSetOf: Element management +// --------------------------------------------------------------------------- +template +bool Hash2KeysSetOf::isEmpty() const +{ + return (fCount==0); +} + +template +bool Hash2KeysSetOf::containsKey(const void* const key1, const int key2) const +{ + XMLSize_t hashVal; + const Hash2KeysSetBucketElem* findIt = findBucketElem(key1, key2, hashVal); + return (findIt != 0); +} + +template +void Hash2KeysSetOf::removeKey(const void* const key1, const int key2) +{ + // Hash the key + XMLSize_t hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + Hash2KeysSetBucketElem* curElem = fBucketList[hashVal]; + Hash2KeysSetBucketElem* lastElem = 0; + + while (curElem) + { + if((key2==curElem->fKey2) && (fHasher.equals(key1, curElem->fKey1))) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + // Move the current element to the list of available blocks + curElem->fNext=fAvailable; + fAvailable=curElem; + + fCount--; + return; + } + + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + + // We never found that key + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, fMemoryManager); +} + +template +void Hash2KeysSetOf:: +removeKey(const void* const key1) +{ + // Hash the key + XMLSize_t hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + Hash2KeysSetBucketElem* curElem = fBucketList[hashVal]; + Hash2KeysSetBucketElem* lastElem = 0; + + while (curElem) + { + if(fHasher.equals(key1, curElem->fKey1)) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + Hash2KeysSetBucketElem* toBeDeleted=curElem; + curElem = curElem->fNext; + + // Move the current element to the list of available blocks + toBeDeleted->fNext=fAvailable; + fAvailable=toBeDeleted; + + fCount--; + } + else + { + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + } +} + +template +void Hash2KeysSetOf::removeAll() +{ + if(isEmpty()) + return; + + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + if(fBucketList[buckInd]!=0) + { + // Advance to the end of the chain, and connect it to the list of + // available blocks + Hash2KeysSetBucketElem* curElem = fBucketList[buckInd]; + while (curElem->fNext) + curElem = curElem->fNext; + curElem->fNext=fAvailable; + fAvailable=fBucketList[buckInd]; + fBucketList[buckInd] = 0; + } + } + fCount=0; +} + +// --------------------------------------------------------------------------- +// Hash2KeysSetOf: Getters +// --------------------------------------------------------------------------- +template +MemoryManager* Hash2KeysSetOf::getMemoryManager() const +{ + return fMemoryManager; +} + +template +XMLSize_t Hash2KeysSetOf::getHashModulus() const +{ + return fHashModulus; +} + +// --------------------------------------------------------------------------- +// Hash2KeysSetOf: Putters +// --------------------------------------------------------------------------- +template +void Hash2KeysSetOf::put(const void* key1, int key2) +{ + // Apply 4 load factor to find threshold. + XMLSize_t threshold = fHashModulus * 4; + + // If we've grown too big, expand the table and rehash. + if (fCount >= threshold) + rehash(); + + // First see if the key exists already + XMLSize_t hashVal; + Hash2KeysSetBucketElem* newBucket = findBucketElem(key1, key2, hashVal); + + // + // If so,then update its value. If not, then we need to add it to + // the right bucket + // + if (newBucket) + { + newBucket->fKey1 = key1; + newBucket->fKey2 = key2; + } + else + { + if(fAvailable==0) + newBucket = (Hash2KeysSetBucketElem*)fMemoryManager->allocate(sizeof(Hash2KeysSetBucketElem)); + else + { + newBucket = fAvailable; + fAvailable = fAvailable->fNext; + } + newBucket->fKey1 = key1; + newBucket->fKey2 = key2; + newBucket->fNext = fBucketList[hashVal]; + fBucketList[hashVal] = newBucket; + fCount++; + } +} + +template +bool Hash2KeysSetOf::putIfNotPresent(const void* key1, int key2) +{ + // First see if the key exists already + XMLSize_t hashVal; + Hash2KeysSetBucketElem* newBucket = findBucketElem(key1, key2, hashVal); + + // + // If so,then update its value. If not, then we need to add it to + // the right bucket + // + if (newBucket) + return false; + + // Apply 4 load factor to find threshold. + XMLSize_t threshold = fHashModulus * 4; + + // If we've grown too big, expand the table and rehash. + if (fCount >= threshold) + rehash(); + + if(fAvailable==0) + newBucket = (Hash2KeysSetBucketElem*)fMemoryManager->allocate(sizeof(Hash2KeysSetBucketElem)); + else + { + newBucket = fAvailable; + fAvailable = fAvailable->fNext; + } + newBucket->fKey1 = key1; + newBucket->fKey2 = key2; + newBucket->fNext = fBucketList[hashVal]; + fBucketList[hashVal] = newBucket; + fCount++; + return true; +} + + +// --------------------------------------------------------------------------- +// Hash2KeysSetOf: Private methods +// --------------------------------------------------------------------------- +template +inline Hash2KeysSetBucketElem* Hash2KeysSetOf:: +findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal) +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + Hash2KeysSetBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if((key2==curElem->fKey2) && (fHasher.equals(key1, curElem->fKey1))) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + +template +inline const Hash2KeysSetBucketElem* Hash2KeysSetOf:: +findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal) const +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + const Hash2KeysSetBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if((key2==curElem->fKey2) && (fHasher.equals(key1, curElem->fKey1))) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + + +template +void Hash2KeysSetOf:: +rehash() +{ + const XMLSize_t newMod = (fHashModulus * 8)+1; + + Hash2KeysSetBucketElem** newBucketList = + (Hash2KeysSetBucketElem**) fMemoryManager->allocate + ( + newMod * sizeof(Hash2KeysSetBucketElem*) + );//new Hash2KeysSetBucketElem*[fHashModulus]; + + // Make sure the new bucket list is destroyed if an + // exception is thrown. + ArrayJanitor guard(newBucketList, fMemoryManager); + + memset(newBucketList, 0, newMod * sizeof(newBucketList[0])); + + // Rehash all existing entries. + for (XMLSize_t index = 0; index < fHashModulus; index++) + { + // Get the bucket list head for this entry + Hash2KeysSetBucketElem* curElem = fBucketList[index]; + while (curElem) + { + // Save the next element before we detach this one + Hash2KeysSetBucketElem* nextElem = curElem->fNext; + + const XMLSize_t hashVal = fHasher.getHashVal(curElem->fKey1, newMod); + assert(hashVal < newMod); + + Hash2KeysSetBucketElem* newHeadElem = newBucketList[hashVal]; + + // Insert at the start of this bucket's list. + curElem->fNext = newHeadElem; + newBucketList[hashVal] = curElem; + + curElem = nextElem; + } + } + + Hash2KeysSetBucketElem** const oldBucketList = fBucketList; + + // Everything is OK at this point, so update the + // member variables. + fBucketList = guard.release(); + fHashModulus = newMod; + + // Delete the old bucket list. + fMemoryManager->deallocate(oldBucketList);//delete[] oldBucketList; + +} + + + +// --------------------------------------------------------------------------- +// Hash2KeysSetOfEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template +Hash2KeysSetOfEnumerator:: +Hash2KeysSetOfEnumerator(Hash2KeysSetOf* const toEnum + , const bool adopt + , MemoryManager* const manager) + : fAdopted(adopt), fCurElem(0), fCurHash((XMLSize_t)-1), fToEnum(toEnum) + , fMemoryManager(manager) + , fLockPrimaryKey(0) +{ + if (!toEnum) + ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, fMemoryManager); + + // + // Find the next available bucket element in the hash table. If it + // comes back zero, that just means the table is empty. + // + // Note that the -1 in the current hash tells it to start + // from the beginning. + // + findNext(); +} + +template +Hash2KeysSetOfEnumerator::~Hash2KeysSetOfEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// Hash2KeysSetOfEnumerator: Enum interface +// --------------------------------------------------------------------------- +template +bool Hash2KeysSetOfEnumerator::hasMoreElements() const +{ + // + // If our current has is at the max and there are no more elements + // in the current bucket, then no more elements. + // + if (!fCurElem && (fCurHash == fToEnum->fHashModulus)) + return false; + return true; +} + +template +void Hash2KeysSetOfEnumerator::nextElementKey(const void*& retKey1, int& retKey2) +{ + // Make sure we have an element to return + if (!hasMoreElements()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + Hash2KeysSetBucketElem* saveElem = fCurElem; + findNext(); + + retKey1 = saveElem->fKey1; + retKey2 = saveElem->fKey2; + + return; +} + +template +void Hash2KeysSetOfEnumerator::Reset() +{ + if(fLockPrimaryKey) + fCurHash=fToEnum->fHasher.getHashVal(fLockPrimaryKey, fToEnum->fHashModulus); + else + fCurHash = (XMLSize_t)-1; + + fCurElem = 0; + findNext(); +} + + +template +void Hash2KeysSetOfEnumerator::setPrimaryKey(const void* key) +{ + fLockPrimaryKey=key; + Reset(); +} + +// --------------------------------------------------------------------------- +// Hash2KeysSetOfEnumerator: Private helper methods +// --------------------------------------------------------------------------- +template +void Hash2KeysSetOfEnumerator::findNext() +{ + // Code to execute if we have to return only values with the primary key + if(fLockPrimaryKey) + { + if(!fCurElem) + fCurElem = fToEnum->fBucketList[fCurHash]; + else + fCurElem = fCurElem->fNext; + while (fCurElem && (!fToEnum->fHasher.equals(fLockPrimaryKey, fCurElem->fKey1))) + fCurElem = fCurElem->fNext; + // if we didn't found it, make so hasMoreElements() returns false + if(!fCurElem) + fCurHash = fToEnum->fHashModulus; + return; + } + // + // If there is a current element, move to its next element. If this + // hits the end of the bucket, the next block will handle the rest. + // + if (fCurElem) + fCurElem = fCurElem->fNext; + + // + // If the current element is null, then we have to move up to the + // next hash value. If that is the hash modulus, then we cannot + // go further. + // + if (!fCurElem) + { + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + + // Else find the next non-empty bucket + while (fToEnum->fBucketList[fCurHash]==0) + { + // Bump to the next hash value. If we max out return + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + } + fCurElem = fToEnum->fBucketList[fCurHash]; + } +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/Hash2KeysSetOf.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/Hash2KeysSetOf.hpp new file mode 100644 index 000000000000..5fb86f430d2f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/Hash2KeysSetOf.hpp @@ -0,0 +1,223 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_HASH2KEYSSETOF_HPP) +#define XERCESC_INCLUDE_GUARD_HASH2KEYSSETOF_HPP + + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// This hash table is similar to Hash2KeysSetOf with an additional integer as key2 + +// Forward declare the enumerator so it can be our friend. +// +template +class Hash2KeysSetOfEnumerator; + +// +// This should really be a nested class, but some of the compilers we +// have to support cannot deal with that! +// +struct Hash2KeysSetBucketElem +{ + Hash2KeysSetBucketElem* fNext; + const void* fKey1; + int fKey2; +}; + + +template +class Hash2KeysSetOf : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + Hash2KeysSetOf( + const XMLSize_t modulus, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + Hash2KeysSetOf( + const XMLSize_t modulus, + const THasher& hasher, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~Hash2KeysSetOf(); + + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + bool isEmpty() const; + bool containsKey(const void* const key1, const int key2) const; + void removeKey(const void* const key1, const int key2); + void removeKey(const void* const key1); + void removeAll(); + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + MemoryManager* getMemoryManager() const; + XMLSize_t getHashModulus() const; + + // ----------------------------------------------------------------------- + // Putters + // ----------------------------------------------------------------------- + void put(const void* key1, int key2); + bool putIfNotPresent(const void* key1, int key2); + +private : + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class Hash2KeysSetOfEnumerator; + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Hash2KeysSetOf(const Hash2KeysSetOf&); + Hash2KeysSetOf& operator=(const Hash2KeysSetOf&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + Hash2KeysSetBucketElem* findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal); + const Hash2KeysSetBucketElem* findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal) const; + void initialize(const XMLSize_t modulus); + void rehash(); + + + // ----------------------------------------------------------------------- + // Data members + // + // fBucketList + // This is the array that contains the heads of all of the list + // buckets, one for each possible hash value. + // + // fHashModulus + // The modulus used for this hash table, to hash the keys. This is + // also the number of elements in the bucket list. + // + // fCount + // The number of elements currently in the map + // + // fHash + // The hasher for the key1 data type. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + Hash2KeysSetBucketElem** fBucketList; + XMLSize_t fHashModulus; + XMLSize_t fCount; + Hash2KeysSetBucketElem* fAvailable; + THasher fHasher; +}; + + + +// +// An enumerator for a value array. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template +class Hash2KeysSetOfEnumerator : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + Hash2KeysSetOfEnumerator(Hash2KeysSetOf* const toEnum + , const bool adopt = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~Hash2KeysSetOfEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + void Reset(); + + // ----------------------------------------------------------------------- + // New interface + // ----------------------------------------------------------------------- + void nextElementKey(const void*&, int&); + void setPrimaryKey(const void* key); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Hash2KeysSetOfEnumerator(const Hash2KeysSetOfEnumerator&); + Hash2KeysSetOfEnumerator& operator=(const Hash2KeysSetOfEnumerator&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + void findNext(); + + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed vector. If so then + // we delete the vector when we are destroyed. + // + // fCurElem + // This is the current bucket bucket element that we are on. + // + // fCurHash + // The is the current hash buck that we are working on. Once we hit + // the end of the bucket that fCurElem is in, then we have to start + // working this one up to the next non-empty bucket. + // + // fToEnum + // The value array being enumerated. + // + // fLockPrimaryKey + // Indicates that we are requested to iterate over the secondary keys + // associated with the given primary key + // + // ----------------------------------------------------------------------- + bool fAdopted; + Hash2KeysSetBucketElem* fCurElem; + XMLSize_t fCurHash; + Hash2KeysSetOf* fToEnum; + MemoryManager* const fMemoryManager; + const void* fLockPrimaryKey; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/Hashers.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/Hashers.hpp new file mode 100644 index 000000000000..cf0dbb2081bd --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/Hashers.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_HASHERS_HPP) +#define XERCESC_INCLUDE_GUARD_HASHERS_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// Common hashers. Only widely-used hashers should be placed here. +// + +/** + * Hasher for keys that are const XMLCh*. + */ +struct StringHasher +{ + /** + * Returns a hash value based on the key + * + * @param key the key to be hashed + * @param mod the modulus the hasher should use + */ + XMLSize_t getHashVal(const void* key, XMLSize_t mod) const + { + return XMLString::hash ((const XMLCh*)key, mod); + } + + /** + * Compares two keys and determines if they are semantically equal + * + * @param key1 the first key to be compared + * @param key2 the second key to be compared + * + * @return true if they are equal + */ + bool equals(const void *const key1, const void *const key2) const + { + return XMLString::equals ((const XMLCh*)key1, (const XMLCh*)key2); + } +}; + +/** + * Hasher for keys that are pointers. + */ +struct PtrHasher +{ + /** + * Returns a hash value based on the key + * + * @param key the key to be hashed + * @param mod the modulus the hasher should use + */ + XMLSize_t getHashVal(const void* key, XMLSize_t mod) const + { + return ((XMLSize_t)key) % mod; + } + + /** + * Compares two keys and determines if they are semantically equal + * + * @param key1 the first key to be compared + * @param key2 the second key to be compared + * + * @return true if they are equal + */ + bool equals(const void *const key1, const void *const key2) const + { + return key1 == key2; + } +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/HexBin.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/HexBin.hpp new file mode 100644 index 000000000000..0b3df788f208 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/HexBin.hpp @@ -0,0 +1,128 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_HEXBIN_HPP) +#define XERCESC_INCLUDE_GUARD_HEXBIN_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT HexBin +{ +public : + //@{ + + /** + * return the length of hexData in terms of HexBinary. + * + * @param hexData A string containing the HexBinary + * + * return: -1 if it contains any invalid HexBinary + * the length of the HexNumber otherwise. + */ + + static int getDataLength(const XMLCh* const hexData); + + /** + * check an array of data against the Hex table. + * + * @param hexData A string containing the HexBinary + * + * return: false if it contains any invalid HexBinary + * true otherwise. + */ + + static bool isArrayByteHex(const XMLCh* const hexData); + + /** + * get canonical representation + * + * Caller is responsible for the proper deallocation + * of the string returned. + * + * @param hexData A string containing the HexBinary + * @param manager The MemoryManager to use to allocate the string + * + * return: the canonical representation of the HexBinary + * if it is a valid HexBinary, + * 0 otherwise + */ + + static XMLCh* getCanonicalRepresentation + ( + const XMLCh* const hexData + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Decodes HexBinary data into XMLByte + * + * NOTE: The returned buffer is dynamically allocated and is the + * responsibility of the caller to delete it when not longer needed. + * Use the memory manager to release the returned buffer. + * + * @param hexData HexBinary data in XMLCh stream. + * @param manager client provided memory manager + * @return Decoded binary data in XMLByte stream, + * or NULL if input data can not be decoded. + */ + static XMLByte* decodeToXMLByte( + const XMLCh* const hexData + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + + //@} + +private : + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + + static bool isHex(const XMLCh& octet); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + HexBin(); + HexBin(const HexBin&); + HexBin& operator=(const HexBin&); + + // ----------------------------------------------------------------------- + // Private data members + // + // isInitialized + // + // set once hexNumberTable is initialized. + // + // hexNumberTable + // + // arrany holding valid hexNumber character. + // + // ----------------------------------------------------------------------- + static const XMLByte hexNumberTable[]; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/IOException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/IOException.hpp new file mode 100644 index 000000000000..33534f56c5fe --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/IOException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IOEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_IOEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(IOException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/IllegalArgumentException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/IllegalArgumentException.hpp new file mode 100644 index 000000000000..960c6ec11cc9 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/IllegalArgumentException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ILLEGALARGUMENTEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_ILLEGALARGUMENTEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(IllegalArgumentException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/InvalidCastException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/InvalidCastException.hpp new file mode 100644 index 000000000000..f68fda930892 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/InvalidCastException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_INVALIDCASTEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_INVALIDCASTEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(InvalidCastException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/Janitor.c b/src/libs/xerces-c/mingw/include/xercesc/util/Janitor.c new file mode 100644 index 000000000000..1f289b4a0bb4 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/Janitor.c @@ -0,0 +1,248 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Janitor: Constructors and Destructor +// --------------------------------------------------------------------------- +template Janitor::Janitor(T* const toDelete) : + fData(toDelete) +{ +} + + +template Janitor::~Janitor() +{ + reset(); +} + + +// --------------------------------------------------------------------------- +// Janitor: Public, non-virtual methods +// --------------------------------------------------------------------------- +template void +Janitor::orphan() +{ + release(); +} + + +template T& +Janitor::operator*() const +{ + return *fData; +} + + +template T* +Janitor::operator->() const +{ + return fData; +} + + +template T* +Janitor::get() const +{ + return fData; +} + + +template T* +Janitor::release() +{ + T* p = fData; + fData = 0; + return p; +} + + +template void Janitor::reset(T* p) +{ + if (fData) + delete fData; + + fData = p; +} + +template bool Janitor::isDataNull() +{ + return (fData == 0); +} + + +// ----------------------------------------------------------------------- +// ArrayJanitor: Constructors and Destructor +// ----------------------------------------------------------------------- +template ArrayJanitor::ArrayJanitor(T* const toDelete) : + fData(toDelete) + , fMemoryManager(0) +{ +} + +template +ArrayJanitor::ArrayJanitor(T* const toDelete, + MemoryManager* const manager) : + fData(toDelete) + , fMemoryManager(manager) +{ +} + + +template ArrayJanitor::~ArrayJanitor() +{ + reset(); +} + + +// ----------------------------------------------------------------------- +// ArrayJanitor: Public, non-virtual methods +// ----------------------------------------------------------------------- +template void +ArrayJanitor::orphan() +{ + release(); +} + + +// Look, Ma! No hands! Don't call this with null data! +template T& +ArrayJanitor::operator[](XMLSize_t index) const +{ + // TODO: Add appropriate exception + return fData[index]; +} + + +template T* +ArrayJanitor::get() const +{ + return fData; +} + + +template T* +ArrayJanitor::release() +{ + T* p = fData; + fData = 0; + return p; +} + + +template void +ArrayJanitor::reset(T* p) +{ + if (fData) { + + if (fMemoryManager) + fMemoryManager->deallocate((void*)fData); + else + delete [] fData; + } + + fData = p; + fMemoryManager = 0; +} + +template void +ArrayJanitor::reset(T* p, MemoryManager* const manager) +{ + if (fData) { + + if (fMemoryManager) + fMemoryManager->deallocate((void*)fData); + else + delete [] fData; + } + + fData = p; + fMemoryManager = manager; +} + +// +// JanitorMemFunCall +// + +template +JanitorMemFunCall::JanitorMemFunCall( + T* object, + MFPT toCall) : + fObject(object), + fToCall(toCall) +{ +} + +template +JanitorMemFunCall::~JanitorMemFunCall() +{ + reset (); +} + +template +T& JanitorMemFunCall::operator*() const +{ + return *fObject; +} + + +template +T* JanitorMemFunCall::operator->() const +{ + return fObject; +} + + +template +T* JanitorMemFunCall::get() const +{ + return fObject; +} + + +template +T* JanitorMemFunCall::release() +{ + T* p = fObject; + fObject = 0; + return p; +} + +template +void JanitorMemFunCall::reset(T* p) +{ + if (fObject != 0 && fToCall != 0) + (fObject->*fToCall)(); + + fObject = p; +} + + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/Janitor.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/Janitor.hpp new file mode 100644 index 000000000000..cf06e6762e94 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/Janitor.hpp @@ -0,0 +1,168 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_JANITOR_HPP) +#define XERCESC_INCLUDE_GUARD_JANITOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class Janitor : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + Janitor(T* const toDelete); + ~Janitor(); + + // ----------------------------------------------------------------------- + // Public, non-virtual methods + // ----------------------------------------------------------------------- + void orphan(); + + // small amount of auto_ptr compatibility + T& operator*() const; + T* operator->() const; + T* get() const; + T* release(); + void reset(T* p = 0); + bool isDataNull(); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Janitor(); + Janitor(const Janitor&); + Janitor& operator=(const Janitor&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fData + // This is the pointer to the object or structure that must be + // destroyed when this object is destroyed. + // ----------------------------------------------------------------------- + T* fData; +}; + + + +template class ArrayJanitor : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ArrayJanitor(T* const toDelete); + ArrayJanitor(T* const toDelete, MemoryManager* const manager); + ~ArrayJanitor(); + + + // ----------------------------------------------------------------------- + // Public, non-virtual methods + // ----------------------------------------------------------------------- + void orphan(); + + // small amount of auto_ptr compatibility + T& operator[](XMLSize_t index) const; + T* get() const; + T* release(); + void reset(T* p = 0); + void reset(T* p, MemoryManager* const manager); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ArrayJanitor(); + ArrayJanitor(const ArrayJanitor& copy); + ArrayJanitor& operator=(const ArrayJanitor& copy); + + // ----------------------------------------------------------------------- + // Private data members + // + // fData + // This is the pointer to the object or structure that must be + // destroyed when this object is destroyed. + // ----------------------------------------------------------------------- + T* fData; + MemoryManager* fMemoryManager; +}; + + + +template class JanitorMemFunCall +{ +public : + + typedef void (T::*MFPT) (); + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + JanitorMemFunCall( + T* object, + MFPT toCall); + + ~JanitorMemFunCall(); + + // small amount of auto_ptr compatibility + T& operator*() const; + T* operator->() const; + T* get() const; + T* release(); + void reset(T* p = 0); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + JanitorMemFunCall(); + JanitorMemFunCall(const JanitorMemFunCall&); + JanitorMemFunCall& operator=(const JanitorMemFunCall&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fObject + // This is the pointer to the object for which we will call the + // member function when this object is destroyed. + // ----------------------------------------------------------------------- + T* fObject; + MFPT fToCall; +}; + +#if defined(__GNUC__) || (! defined(_AIX) && ! defined(__hpux) && ! defined(__sun)) +XERCES_TEMPLATE_EXTERN template class XMLUTIL_EXPORT ArrayJanitor; +XERCES_TEMPLATE_EXTERN template class XMLUTIL_EXPORT ArrayJanitor; +#endif + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/KVStringPair.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/KVStringPair.hpp new file mode 100644 index 000000000000..aeb787ae15fc --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/KVStringPair.hpp @@ -0,0 +1,223 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_KVSTRINGPAIR_HPP) +#define XERCESC_INCLUDE_GUARD_KVSTRINGPAIR_HPP + +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides a commonly used data structure, which is that of +// a pair of strings which represent a 'key=value' type mapping. It works +// only in terms of XMLCh type raw strings. +// +class XMLUTIL_EXPORT KVStringPair : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + KVStringPair(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + KVStringPair + ( + const XMLCh* const key + , const XMLCh* const value + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + KVStringPair + ( + const XMLCh* const key + , const XMLCh* const value + , const XMLSize_t valueLength + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + KVStringPair + ( + const XMLCh* const key + , const XMLSize_t keyLength + , const XMLCh* const value + , const XMLSize_t valueLength + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + KVStringPair(const KVStringPair& toCopy); + ~KVStringPair(); + + + // ----------------------------------------------------------------------- + // Getters + // + // We support the + // ----------------------------------------------------------------------- + const XMLCh* getKey() const; + XMLCh* getKey(); + const XMLCh* getValue() const; + XMLCh* getValue(); + + + // ----------------------------------------------------------------------- + // Setters + // ----------------------------------------------------------------------- + void setKey(const XMLCh* const newKey); + void setValue(const XMLCh* const newValue); + void setKey + ( + const XMLCh* const newKey + , const XMLSize_t newKeyLength + ); + void setValue + ( + const XMLCh* const newValue + , const XMLSize_t newValueLength + ); + void set + ( + const XMLCh* const newKey + , const XMLCh* const newValue + ); + void set + ( + const XMLCh* const newKey + , const XMLSize_t newKeyLength + , const XMLCh* const newValue + , const XMLSize_t newValueLength + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(KVStringPair) + +private : + // unimplemented: + + KVStringPair& operator=(const KVStringPair&); + // ----------------------------------------------------------------------- + // Private data members + // + // fKey + // The string that represents the key field of this object. + // + // fKeyAllocSize + // The amount of memory allocated for fKey. + // + // fValue + // The string that represents the value of this pair object. + // + // fValueAllocSize + // The amount of memory allocated for fValue. + // + // ----------------------------------------------------------------------- + XMLSize_t fKeyAllocSize; + XMLSize_t fValueAllocSize; + XMLCh* fKey; + XMLCh* fValue; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// KVStringPair: Getters +// --------------------------------------------------------------------------- +inline const XMLCh* KVStringPair::getKey() const +{ + return fKey; +} + +inline XMLCh* KVStringPair::getKey() +{ + return fKey; +} + +inline const XMLCh* KVStringPair::getValue() const +{ + return fValue; +} + +inline XMLCh* KVStringPair::getValue() +{ + return fValue; +} + +// --------------------------------------------------------------------------- +// KVStringPair: Setters +// --------------------------------------------------------------------------- +inline void KVStringPair::setKey(const XMLCh* const newKey) +{ + setKey(newKey, XMLString::stringLen(newKey)); +} + +inline void KVStringPair::setValue(const XMLCh* const newValue) +{ + setValue(newValue, XMLString::stringLen(newValue)); +} + +inline void KVStringPair::setKey( const XMLCh* const newKey + , const XMLSize_t newKeyLength) +{ + if (newKeyLength >= fKeyAllocSize) + { + fMemoryManager->deallocate(fKey); //delete [] fKey; + fKey = 0; + fKeyAllocSize = newKeyLength + 1; + fKey = (XMLCh*) fMemoryManager->allocate(fKeyAllocSize * sizeof(XMLCh)); //new XMLCh[fKeyAllocSize]; + } + + memcpy(fKey, newKey, (newKeyLength+1) * sizeof(XMLCh)); // len+1 because of the 0 at the end +} + +inline void KVStringPair::setValue( const XMLCh* const newValue + , const XMLSize_t newValueLength) +{ + if (newValueLength >= fValueAllocSize) + { + fMemoryManager->deallocate(fValue); //delete [] fValue; + fValue = 0; + fValueAllocSize = newValueLength + 1; + fValue = (XMLCh*) fMemoryManager->allocate(fValueAllocSize * sizeof(XMLCh)); //new XMLCh[fValueAllocSize]; + } + + memcpy(fValue, newValue, (newValueLength+1) * sizeof(XMLCh)); // len+1 because of the 0 at the end +} + +inline void KVStringPair::set( const XMLCh* const newKey + , const XMLCh* const newValue) +{ + setKey(newKey, XMLString::stringLen(newKey)); + setValue(newValue, XMLString::stringLen(newValue)); +} + +inline void KVStringPair::set( const XMLCh* const newKey + , const XMLSize_t newKeyLength + , const XMLCh* const newValue + , const XMLSize_t newValueLength) +{ + setKey(newKey, newKeyLength); + setValue(newValue, newValueLength); +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/KeyRefPair.c b/src/libs/xerces-c/mingw/include/xercesc/util/KeyRefPair.c new file mode 100644 index 000000000000..ce062fa949ee --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/KeyRefPair.c @@ -0,0 +1,113 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// KeyRefPair: Constructors and Destructor +// --------------------------------------------------------------------------- +template KeyRefPair::KeyRefPair() +{ +} + +template KeyRefPair:: +KeyRefPair(TKey* key, TValue* value) : + + fKey(key) + , fValue(value) +{ +} + +template KeyRefPair:: +KeyRefPair(const KeyRefPair* toCopy) : + + fKey(toCopy->fKey) + , fValue(toCopy->fValue) +{ +} + +template KeyRefPair:: +KeyRefPair(const KeyRefPair& toCopy) : + + fKey(toCopy.fKey) + , fValue(toCopy.fValue) +{ +} + + +template KeyRefPair::~KeyRefPair() +{ +} + + +// --------------------------------------------------------------------------- +// KeyRefPair: Getters +// --------------------------------------------------------------------------- +template const TKey* +KeyRefPair::getKey() const +{ + return fKey; + +} + +template TKey* KeyRefPair::getKey() +{ + return fKey; +} + +template const TValue* +KeyRefPair::getValue() const +{ + return fValue; +} + +template TValue* KeyRefPair::getValue() +{ + return fValue; +} + + +// --------------------------------------------------------------------------- +// KeyRefPair: Setters +// --------------------------------------------------------------------------- +template TKey* +KeyRefPair::setKey(TKey* newKey) +{ + fKey = newKey; + return fKey; +} + +template TValue* +KeyRefPair::setValue(TValue* newValue) +{ + fValue = newValue; + return fValue; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/KeyRefPair.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/KeyRefPair.hpp new file mode 100644 index 000000000000..3568c2763aae --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/KeyRefPair.hpp @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_KEYREFPAIR_HPP) +#define XERCESC_INCLUDE_GUARD_KEYREFPAIR_HPP + + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class KeyRefPair : public XMemory +{ + public : + // ------------------------------------------------------------------- + // Constructors and Destructor + // ------------------------------------------------------------------- + KeyRefPair(); + KeyRefPair(TKey* key, TValue* value); + KeyRefPair(const KeyRefPair* toCopy); + KeyRefPair(const KeyRefPair& toCopy); + ~KeyRefPair(); + + + // ------------------------------------------------------------------- + // Getters + // ------------------------------------------------------------------- + const TKey* getKey() const; + TKey* getKey(); + const TValue* getValue() const; + TValue* getValue(); + + + // ------------------------------------------------------------------- + // Setters + // ------------------------------------------------------------------- + TKey* setKey(TKey* newKey); + TValue* setValue(TValue* newValue); + + + private : + // unimplemented: + KeyRefPair& operator=(const KeyRefPair&); + // ------------------------------------------------------------------- + // Private data members + // + // fKey + // The object that represents the key of the pair + // + // fValue + // The object that represents the value of the pair + // ------------------------------------------------------------------- + TKey* fKey; + TValue* fValue; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/KeyValuePair.c b/src/libs/xerces-c/mingw/include/xercesc/util/KeyValuePair.c new file mode 100644 index 000000000000..c83bceda3968 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/KeyValuePair.c @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// KeyValuePair: Constructors and Destructor +// --------------------------------------------------------------------------- +template KeyValuePair::KeyValuePair() +{ +} + +template KeyValuePair:: +KeyValuePair(const TKey& key, const TValue& value) : + + fKey(key) + , fValue(value) +{ +} + +template KeyValuePair:: +KeyValuePair(const KeyValuePair& toCopy) : + + fKey(toCopy.fKey) + , fValue(toCopy.fValue) +{ +} + +template KeyValuePair::~KeyValuePair() +{ +} + + +// --------------------------------------------------------------------------- +// KeyValuePair: Getters +// --------------------------------------------------------------------------- +template const TKey& +KeyValuePair::getKey() const +{ + return fKey; + +} + +template TKey& KeyValuePair::getKey() +{ + return fKey; +} + +template const TValue& +KeyValuePair::getValue() const +{ + return fValue; +} + +template TValue& KeyValuePair::getValue() +{ + return fValue; +} + + +// --------------------------------------------------------------------------- +// KeyValuePair: Setters +// --------------------------------------------------------------------------- +template TKey& +KeyValuePair::setKey(const TKey& newKey) +{ + fKey = newKey; + return fKey; +} + +template TValue& +KeyValuePair::setValue(const TValue& newValue) +{ + fValue = newValue; + return fValue; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/KeyValuePair.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/KeyValuePair.hpp new file mode 100644 index 000000000000..2abb171991f4 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/KeyValuePair.hpp @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_KEYVALUEPAIR_HPP) +#define XERCESC_INCLUDE_GUARD_KEYVALUEPAIR_HPP + + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class KeyValuePair : public XMemory +{ + public : + // ------------------------------------------------------------------- + // Constructors and Destructor + // ------------------------------------------------------------------- + KeyValuePair(); + KeyValuePair(const TKey& key, const TValue& value); + KeyValuePair(const KeyValuePair& toCopy); + ~KeyValuePair(); + + + // ------------------------------------------------------------------- + // Getters + // ------------------------------------------------------------------- + const TKey& getKey() const; + TKey& getKey(); + const TValue& getValue() const; + TValue& getValue(); + + + // ------------------------------------------------------------------- + // Setters + // ------------------------------------------------------------------- + TKey& setKey(const TKey& newKey); + TValue& setValue(const TValue& newValue); + + + private : + // unimplemented: + KeyValuePair& operator=(const KeyValuePair&); + + // ------------------------------------------------------------------- + // Private data members + // + // fKey + // The object that represents the key of the pair + // + // fValue + // The object that represents the value of the pair + // ------------------------------------------------------------------- + TKey fKey; + TValue fValue; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/LogicalPath.c b/src/libs/xerces-c/mingw/include/xercesc/util/LogicalPath.c new file mode 100644 index 000000000000..97782abf4393 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/LogicalPath.c @@ -0,0 +1,275 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_WEAVEPATH_CPP) +#define XERCESC_INCLUDE_GUARD_WEAVEPATH_CPP + +/*** + * + * Previously, each PlatformUtils.cpp has its onw copy of the + * method weavePaths(), and almost of them implemented the same logic, + * with few platform specific difference, and unfortunately that + * implementation was wrong. + * + * The only platform specific issue is slash character. + * On all platforms other than Windows, chForwardSlash and chBackSlash + * are considered slash, while on Windows, two additional characters, + * chYenSign and chWonSign are slash as well. + * + * The idea is to maintain a SINGLE copy of this method rather than + * each PlatformUtils.cpp has its own copy, we introduce a new + * method, XMLPlatformUtils::isAnySlash(), to replace the direct checking + * code ( if ( c == chForwardSlash || c == chBackSlash). + * + * With this approach, we might have a performance hit since isAnySlash() + * is so frequently used in this implementation, so we intend to make it + * inline. Then we face a complier issue. + * + * There are two compilation units involved, one is PlatformUtils.cpp and + * the other PlatformUtils.cpp. When PlatformUtils.cp get compiled, + * the weavePath(), remove**Slash() have dependency upon isAnySlash() which + * is in PlatformUtils.cpp (and what is worse, it is inlined), so we have + * undefined/unresolved symbol: isAnySlash() on AIX/xlc_r, Solaris/cc and + * Linux/gcc, while MSVC and HP/aCC are fine with this. + * + * That means we can not place these new methods in PlatformUtils.cpp with + * inlined XMLPlatformUtils::isAnySlash() in PlatformUtils.cpp. + * + * The solution to this is PlatformUtils.cpp will include this file so that + * we have only one copy of these methods while get compiled in PlatformUtils + * inlined isAnySlash(). + * + ***/ +XMLCh* XMLPlatformUtils::weavePaths(const XMLCh* const basePath + , const XMLCh* const relativePath + , MemoryManager* const manager) + +{ + // Create a buffer as large as both parts and empty it + XMLCh* tmpBuf = (XMLCh*) manager->allocate + ( + (XMLString::stringLen(basePath) + + XMLString::stringLen(relativePath) + 2) * sizeof(XMLCh) + );//new XMLCh[XMLString::stringLen(basePath) + XMLString::stringLen(relativePath) + 2]; + *tmpBuf = 0; + + // + // If we have no base path, then just take the relative path as is. + // + if ((!basePath) || (!*basePath)) + { + XMLString::copyString(tmpBuf, relativePath); + return tmpBuf; + } + + // + // Remove anything after the last slash + // + const XMLCh* basePtr = basePath + (XMLString::stringLen(basePath) - 1); + while ((basePtr >= basePath) && ((isAnySlash(*basePtr) == false))) + { + basePtr--; + } + + // There is no relevant base path, so just take the relative part + if (basePtr < basePath) + { + XMLString::copyString(tmpBuf, relativePath); + return tmpBuf; + } + + // + // 1. concatenate the base and relative + // 2. remove all occurrences of "/./" + // 3. remove all occurrences of segment/../ where segment is not ../ + // + + XMLString::subString(tmpBuf, basePath, 0, (basePtr - basePath + 1), manager); + tmpBuf[basePtr - basePath + 1] = 0; + XMLString::catString(tmpBuf, relativePath); + + removeDotSlash(tmpBuf, manager); + + removeDotDotSlash(tmpBuf, manager); + + return tmpBuf; + +} + +// +// Remove all occurrences of './' when it is part of '/./' +// +// Since it could be '.\' or other combination on windows ( eg, '.'+chYanSign) +// we can't make use of patterMatch(). +// +// +void XMLPlatformUtils::removeDotSlash(XMLCh* const path + , MemoryManager* const manager) +{ + if ((!path) || (!*path)) + return; + + XMLCh* srcPtr = XMLString::replicate(path, manager); + int srcLen = XMLString::stringLen(srcPtr); + ArrayJanitor janName(srcPtr, manager); + XMLCh* tarPtr = path; + + while (*srcPtr) + { + if ( 3 <= srcLen ) + { + if ( (isAnySlash(*srcPtr)) && + (chPeriod == *(srcPtr+1)) && + (isAnySlash(*(srcPtr+2))) ) + { + // "\.\x" seen + // skip the first two, and start from the 3rd, + // since "\x" could be another "\." + srcPtr+=2; + srcLen-=2; + } + else + { + *tarPtr++ = *srcPtr++; // eat the current char + srcLen--; + } + } + else if ( 1 == srcLen ) + { + *tarPtr++ = *srcPtr++; + } + else if ( 2 == srcLen) + { + *tarPtr++ = *srcPtr++; + *tarPtr++ = *srcPtr++; + } + + } + + *tarPtr = 0; + + return; +} + +// +// Remove all occurrences of '/segment/../' when segment is not '..' +// +// Cases with extra /../ is left to the underlying file system. +// +void XMLPlatformUtils::removeDotDotSlash(XMLCh* const path + , MemoryManager* const manager) +{ + int pathLen = XMLString::stringLen(path); + XMLCh* tmp1 = (XMLCh*) manager->allocate + ( + (pathLen+1) * sizeof(XMLCh) + );//new XMLCh [pathLen+1]; + ArrayJanitor tmp1Name(tmp1, manager); + + XMLCh* tmp2 = (XMLCh*) manager->allocate + ( + (pathLen+1) * sizeof(XMLCh) + );//new XMLCh [pathLen+1]; + ArrayJanitor tmp2Name(tmp2, manager); + + // remove all "/../" where "" is a complete + // path segment not equal to ".." + int index = -1; + int segIndex = -1; + int offset = 1; + + while ((index = searchSlashDotDotSlash(&(path[offset]))) != -1) + { + // Undo offset + index += offset; + + // Find start of within substring ending at found point. + XMLString::subString(tmp1, path, 0, index-1, manager); + segIndex = index - 1; + while ((segIndex >= 0) && (!isAnySlash(tmp1[segIndex]))) + { + segIndex--; + } + + // Ensure exists and != ".." + if (segIndex >= 0 && + (path[segIndex+1] != chPeriod || + path[segIndex+2] != chPeriod || + segIndex + 3 != index)) + { + + XMLString::subString(tmp1, path, 0, segIndex, manager); + XMLString::subString(tmp2, path, index+3, XMLString::stringLen(path), manager); + + path[0] = 0; + XMLString::catString(path, tmp1); + XMLString::catString(path, tmp2); + + offset = (segIndex == 0 ? 1 : segIndex); + } + else + { + offset += 4; + } + + }// while + +} + +int XMLPlatformUtils::searchSlashDotDotSlash(XMLCh* const srcPath) +{ + if ((!srcPath) || (!*srcPath)) + return -1; + + XMLCh* srcPtr = srcPath; + int srcLen = XMLString::stringLen(srcPath); + int retVal = -1; + + while (*srcPtr) + { + if ( 4 <= srcLen ) + { + if ( (isAnySlash(*srcPtr)) && + (chPeriod == *(srcPtr+1)) && + (chPeriod == *(srcPtr+2)) && + (isAnySlash(*(srcPtr+3))) ) + { + retVal = (srcPtr - srcPath); + break; + } + else + { + srcPtr++; + srcLen--; + } + } + else + { + break; + } + + } // while + + return retVal; + +} + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp new file mode 100644 index 000000000000..d8e5603fa1e6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_INMEMMSGLOADER_HPP) +#define XERCESC_INCLUDE_GUARD_INMEMMSGLOADER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This is a simple in memory message loader implementation. For those +// folks who just want a single language and want something very fast and +// efficient, can basically just provide a couple of arrays of Unicode +// strings that can be looked up by the message id. +// +class XMLUTIL_EXPORT InMemMsgLoader : public XMLMsgLoader +{ +public : + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + InMemMsgLoader(const XMLCh* const msgDomain); + ~InMemMsgLoader(); + + + // ----------------------------------------------------------------------- + // Implementation of the virtual message loader API + // ----------------------------------------------------------------------- + virtual bool loadMsg + ( + const XMLMsgLoader::XMLMsgId msgToLoad + , XMLCh* const toFill + , const XMLSize_t maxChars + ); + + virtual bool loadMsg + ( + const XMLMsgLoader::XMLMsgId msgToLoad + , XMLCh* const toFill + , const XMLSize_t maxChars + , const XMLCh* const repText1 + , const XMLCh* const repText2 = 0 + , const XMLCh* const repText3 = 0 + , const XMLCh* const repText4 = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual bool loadMsg + ( + const XMLMsgLoader::XMLMsgId msgToLoad + , XMLCh* const toFill + , const XMLSize_t maxChars + , const char* const repText1 + , const char* const repText2 = 0 + , const char* const repText3 = 0 + , const char* const repText4 = 0 + , MemoryManager * const manager = XMLPlatformUtils::fgMemoryManager + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + InMemMsgLoader(); + InMemMsgLoader(const InMemMsgLoader&); + InMemMsgLoader& operator=(const InMemMsgLoader&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fMsgDomain + // This is the message domain that we are for loading message from. + // ----------------------------------------------------------------------- + XMLCh* fMsgDomain; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp new file mode 100644 index 000000000000..08fdabc86b56 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp @@ -0,0 +1,1501 @@ +// ---------------------------------------------------------------- +// This file was generated from the XML error message source. +// so do not edit this file directly!! +// ---------------------------------------------------------------- + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +const XMLCh gXMLErrArray[][128] = +{ + { 0x0057,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } + , { 0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0062,0x0065,0x0065,0x006E,0x0020,0x0064,0x0065,0x0063, + 0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0062,0x0065,0x0065,0x006E,0x0020,0x0064,0x0065, + 0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0058,0x004D,0x004C,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E, + 0x0020,0x006F,0x0072,0x0020,0x006D,0x0061,0x006E,0x0075,0x0061,0x006C,0x006C,0x0079,0x0020,0x0073,0x0065,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0072,0x0061,0x0064,0x0069,0x0063,0x0074,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x0061,0x0075, + 0x0074,0x006F,0x002D,0x0073,0x0065,0x006E,0x0073,0x0065,0x0064,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x003B,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0069,0x006E,0x0067,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0061,0x0020,0x0063,0x006F, + 0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0062,0x0075,0x0074,0x0020,0x0077,0x0061,0x0073,0x0020,0x006E,0x0065,0x0076,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0061,0x006E,0x0020,0x0041, + 0x0054,0x0054,0x004C,0x0049,0x0053,0x0054,0x0020,0x0062,0x0075,0x0074,0x0020,0x0077,0x0061,0x0073,0x0020,0x006E,0x0065,0x0076,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } + , { 0x007B,0x0030,0x007D,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0074,0x0065,0x0078,0x0074,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0072,0x0065,0x0073,0x006F,0x0075,0x0072,0x0063,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0057,0x005F,0x0045,0x006E,0x0064,0x00 } + , { 0x0045,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } + , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E, + 0x0074,0x0020,0x006F,0x0066,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x003B,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x006C,0x0069,0x0073,0x0074,0x002C,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x002C,0x0020, + 0x0061,0x006E,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0061,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } + , { 0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x002D,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020, + 0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } + , { 0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x002D,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061, + 0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006E,0x0061,0x006D, + 0x0065,0x0020,0x006F,0x0072,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020, + 0x006F,0x0072,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072, + 0x0020,0x0061,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076, + 0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0061,0x006E,0x006F,0x006E,0x0079,0x006D,0x006F,0x0075,0x0073,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } + , { 0x0061,0x006E,0x006F,0x006E,0x0079,0x006D,0x006F,0x0075,0x0073,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074, + 0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002C,0x0020,0x0028,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x007C,0x0020, + 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0029,0x003F,0x002C,0x0020,0x0028,0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x0020,0x007C,0x0020,0x006B,0x0065,0x0079,0x0020,0x007C,0x0020,0x006B,0x0065,0x0079,0x0072, + 0x0065,0x0066,0x0029,0x002A,0x0029,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D, + 0x0027,0x003B,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x006C,0x0069,0x0073,0x0074,0x002C,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x002C,0x0020,0x0061,0x006E,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F, + 0x006E,0x0020,0x0061,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x006C,0x0069,0x0073,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074, + 0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006C,0x0069,0x0073,0x0074,0x002C,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x002C,0x0020,0x006F,0x0072,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074, + 0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x006C,0x0069,0x0073,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020, + 0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020, + 0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069, + 0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073, + 0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069, + 0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0066,0x006F, + 0x0072,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069, + 0x006F,0x006E,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069, + 0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0027,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0027,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074, + 0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0064,0x0020,0x0074,0x006F, + 0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0055,0x0052,0x0049,0x00 } + , { 0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x003A,0x007B,0x0031,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079, + 0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D, + 0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0043,0x006F,0x006E, + 0x0074,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0043,0x006F, + 0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0066,0x0069, + 0x0078,0x0065,0x0064,0x0020,0x0061,0x006E,0x0064,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020, + 0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006F,0x0070,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020, + 0x006F,0x006E,0x0063,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0073,0x0063,0x006F,0x0070,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0027,0x0074, + 0x0079,0x0070,0x0065,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E, + 0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x003A,0x007B,0x0031,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020, + 0x0027,0x007B,0x0032,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0066,0x0069,0x0078,0x0065, + 0x0064,0x0020,0x0061,0x006E,0x0064,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x007B,0x0030,0x007D,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0027,0x0074,0x0079,0x0070, + 0x0065,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x002F,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078, + 0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006F,0x0072,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020, + 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x006F,0x0072, + 0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x00 } + , { 0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0064,0x0073, + 0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0066,0x0069,0x006E,0x0061,0x006C,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065, + 0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0065,0x0072,0x006D,0x0069,0x0074,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0061,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0069,0x006E, + 0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020, + 0x0068,0x0061,0x0076,0x0065,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0063,0x0061,0x006E, + 0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0062,0x0079,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069, + 0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069, + 0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C, + 0x0065,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069, + 0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C, + 0x0065,0x0078,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x00 } + , { 0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0069,0x0074,0x0073,0x0020,0x006F,0x0077, + 0x006E,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x002C,0x0020,0x006C,0x0069,0x0073,0x0074,0x002C,0x0020,0x006F,0x0072,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E, + 0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0062,0x006C,0x006F,0x0063,0x006B,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x00 } + , { 0x0066,0x0069,0x006E,0x0061,0x006C,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0070,0x0061,0x0072,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065, + 0x0020,0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0068,0x0065,0x0061,0x0064,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020,0x0064,0x006F,0x0065,0x0073, + 0x0020,0x006E,0x006F,0x0074,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x006C, + 0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0068,0x0065,0x0061,0x0064,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069, + 0x006F,0x006E,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E, + 0x0063,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0073,0x0063,0x006F,0x0070,0x0065,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027, + 0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072, + 0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0069,0x006E,0x006C,0x0069,0x006E,0x0065,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074, + 0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0027,0x0066,0x006F,0x0072,0x006D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0074,0x0079,0x0070,0x0065,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x003A, + 0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0064,0x0065,0x0072,0x0069,0x0076,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0062,0x0079,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0066,0x006F,0x0072,0x0062,0x0069,0x0064, + 0x0064,0x0065,0x006E,0x0020,0x0062,0x0079,0x0020,0x0065,0x0069,0x0074,0x0068,0x0065,0x0072,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0067,0x006C, + 0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x00 } + , { 0x0064,0x0065,0x0072,0x0069,0x0076,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0062,0x0079,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065, + 0x006E,0x0020,0x0062,0x0079,0x0020,0x0065,0x0069,0x0074,0x0068,0x0065,0x0072,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0067,0x006C,0x006F,0x0062, + 0x0061,0x006C,0x006C,0x0079,0x00 } + , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0043,0x006F,0x006E,0x0074,0x0065, + 0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070, + 0x0065,0x00 } + , { 0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074, + 0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x003B,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027, + 0x007B,0x0032,0x007D,0x0027,0x00 } + , { 0x0027,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x004C,0x006F,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020, + 0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0064,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074, + 0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0061,0x0074,0x0020,0x006D,0x006F,0x0073,0x0074,0x0020,0x006F,0x006E,0x0065,0x0020,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006D,0x0061,0x0074, + 0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002C,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x003F,0x0029,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x0067,0x006C,0x006F,0x0062, + 0x0061,0x006C,0x0020,0x007B,0x0031,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x006C,0x006F,0x0063,0x0061, + 0x006C,0x0020,0x007B,0x0031,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x0067,0x006C, + 0x006F,0x0062,0x0061,0x006C,0x0020,0x007B,0x0031,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x006C,0x006F, + 0x0063,0x0061,0x006C,0x0020,0x007B,0x0031,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } + , { 0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067, + 0x0072,0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0061,0x006E,0x0079,0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074, + 0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x007B,0x0030,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006E,0x0061, + 0x006D,0x0065,0x00 } + , { 0x0063,0x0069,0x0072,0x0063,0x0075,0x006C,0x0061,0x0072,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x003A,0x007B,0x0031,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065, + 0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0063,0x0065,0x0020,0x006F,0x0072,0x0020,0x0061,0x006C,0x0073,0x006F,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0061,0x0073,0x0020,0x007B,0x0032,0x007D,0x00 } + , { 0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x007B,0x0030,0x007D,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E, + 0x0020,0x006F,0x006E,0x0063,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020, + 0x0066,0x0061,0x0063,0x0065,0x0074,0x003B,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x0063,0x006F,0x006C,0x006C,0x0061,0x0070,0x0073,0x0065,0x0027,0x00 } + , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073, + 0x0074,0x0020,0x0062,0x0065,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063, + 0x0065,0x0020,0x006F,0x0066,0x0020,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x00 } + , { 0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E, + 0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0069,0x0066,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0069,0x006E,0x0020,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0020,0x0064,0x0065,0x0063, + 0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0063,0x006F,0x006E, + 0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x0066,0x0020,0x0069,0x0074,0x0073,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065, + 0x0064,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0049,0x0044,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x002F,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006F,0x0066,0x0020,0x004E,0x004F,0x0054,0x0041,0x0054, + 0x0049,0x004F,0x004E,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070, + 0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0027,0x0073,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0020,0x006D, + 0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x006D,0x0070,0x0074,0x0069,0x0061,0x0062,0x006C,0x0065,0x00 } + , { 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0068,0x0061,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0063,0x006F, + 0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0062,0x0075,0x0074,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x006F,0x0072, + 0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0065,0x006D,0x0070,0x0074,0x0069,0x0061,0x0062,0x006C,0x0065,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0073,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0061,0x006E, + 0x0064,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0062,0x0065,0x0020,0x006D, + 0x0069,0x0078,0x0065,0x0064,0x0020,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x002D,0x006F,0x006E,0x006C,0x0079,0x00 } + , { 0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064, + 0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0064,0x0065,0x0072,0x0069,0x0076,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0062,0x0079,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074, + 0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065,0x006E,0x0020,0x0062,0x0079,0x0020,0x0065,0x0069,0x0074,0x0068,0x0065,0x0072,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070, + 0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x00 } + , { 0x0069,0x0074,0x0065,0x006D,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0076,0x0061,0x0072,0x0069, + 0x0065,0x0074,0x0079,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x006F,0x006D,0x0069,0x0063,0x0020,0x006F,0x0072,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x0077,0x0068,0x0065,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x006D,0x0065, + 0x006D,0x0062,0x0065,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0074,0x006F,0x006D,0x0069,0x0063,0x00 } + , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0061,0x006C,0x006C,0x002C,0x0020,0x0063,0x0068,0x006F,0x0069,0x0063, + 0x0065,0x002C,0x0020,0x006F,0x0072,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073, + 0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002C,0x0020,0x0028,0x0028,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x007C, + 0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0029,0x002A,0x002C,0x0020,0x0061,0x006E,0x0079,0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x003F,0x0029,0x0029,0x00 } + , { 0x0074,0x006F,0x0070,0x002D,0x006C,0x0065,0x0076,0x0065,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0061,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x006D,0x0075,0x0073, + 0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0027,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072, + 0x0073,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0027,0x007B,0x0031,0x007D,0x003A,0x007B,0x0032,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020, + 0x006F,0x006E,0x006C,0x0079,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0061,0x0073,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0063,0x006F, + 0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074, + 0x0069,0x0074,0x0075,0x0074,0x0069,0x006E,0x0067,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C, + 0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0061,0x006E, + 0x0064,0x0020,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0031,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070, + 0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0061,0x0078,0x004F, + 0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0030,0x0020,0x006F,0x0072,0x0020,0x0031,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020, + 0x0069,0x006E,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0069,0x006E,0x0074,0x0065,0x0072,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075, + 0x0074,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x0062,0x006C,0x0065,0x00 } + , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x006E,0x0079,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075, + 0x0074,0x0065,0x0073,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0069,0x006E,0x0063,0x006F,0x006D,0x0070,0x0061,0x0074,0x0069,0x0062,0x006C,0x0065,0x0020,0x0075,0x0073, + 0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0064,0x0065,0x0072, + 0x0069,0x0076,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068, + 0x0065,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061, + 0x0073,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x0066,0x0069,0x0078, + 0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0072,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0076, + 0x0061,0x006C,0x0075,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020, + 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0072,0x0065,0x0073,0x0070,0x0065,0x0063,0x0074,0x0020,0x0074,0x006F,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020, + 0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x006F,0x0072,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x006F,0x0020, + 0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x0073,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068, + 0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0062,0x0075,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0074, + 0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0069, + 0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065, + 0x006E,0x0074,0x0020,0x0075,0x0073,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x0066, + 0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0075,0x0073,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x0070, + 0x0072,0x006F,0x0068,0x0069,0x0062,0x0069,0x0074,0x0065,0x0064,0x0027,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0074, + 0x0079,0x0070,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0063,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006F,0x0072,0x0020,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0065, + 0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020, + 0x0074,0x0068,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x003B,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0061, + 0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } + , { 0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072, + 0x0065,0x006E,0x0074,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020, + 0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069, + 0x006E,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x0072,0x0069,0x0067,0x0069,0x006E,0x0061,0x006C,0x0020,0x0074,0x0079,0x0070,0x0065, + 0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } + , { 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061, + 0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F, + 0x006E,0x00 } + , { 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066, + 0x0069,0x006E,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x0072,0x0069,0x0067,0x0069,0x006E,0x0061,0x006C,0x0020,0x0074,0x0079,0x0070, + 0x0065,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } + , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0061,0x006E,0x0064, + 0x0020,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0031,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x006E,0x0064,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073, + 0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0062,0x0065,0x0069,0x006E,0x0067,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067, + 0x0020,0x0074,0x006F,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0020,0x006D,0x0061,0x0079,0x0020,0x006F, + 0x006E,0x006C,0x0079,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x006F,0x0020,0x0069,0x0074,0x0073,0x0065,0x006C,0x0066, + 0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066, + 0x0069,0x006E,0x0065,0x0020,0x006D,0x0061,0x0079,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020, + 0x0074,0x006F,0x0020,0x0069,0x0074,0x0073,0x0065,0x006C,0x0066,0x00 } + , { 0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E, + 0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x003A,0x007B,0x0031,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020, + 0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0068, + 0x0061,0x0073,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073, + 0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002C,0x0020,0x0073,0x0065,0x006C,0x0065,0x0063,0x0074,0x006F,0x0072,0x002C,0x0020,0x0066,0x0069,0x0065, + 0x006C,0x0064,0x002B,0x0029,0x00 } + , { 0x006B,0x0065,0x0079,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0072,0x0065,0x0066, + 0x0065,0x0072,0x0073,0x0020,0x0074,0x006F,0x0020,0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x006B,0x0065,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0066,0x0069,0x0065,0x006C,0x0064,0x0020,0x0063,0x0061,0x0072,0x0064,0x0069,0x006E,0x0061,0x006C,0x0069,0x0074,0x0069,0x0065,0x0073,0x0020,0x0066,0x006F,0x0072,0x0020,0x006B,0x0065,0x0079,0x0072,0x0065,0x0066,0x0020,0x0027,0x007B,0x0030,0x007D, + 0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x006B,0x0065,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x00 } + , { 0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x006F,0x0072,0x0020,0x0065,0x006D,0x0070,0x0074, + 0x0079,0x00 } + , { 0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x006E,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020, + 0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0065,0x0074,0x0020,0x006F,0x0072,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0073,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0066,0x0069,0x0078,0x0065, + 0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0066,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006F,0x0066,0x0020,0x0049,0x0044,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0072,0x0020,0x0074,0x0079, + 0x0070,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0049,0x0044,0x0020,0x0061,0x006E,0x0064,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020, + 0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x002F,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0074, + 0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0061,0x0020, + 0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0049,0x0044,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0074, + 0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0077,0x0069,0x0074,0x0068, + 0x0020,0x0061,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0049,0x0044,0x00 } + , { 0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x004E,0x0061,0x006D,0x0065, + 0x0073,0x0070,0x0061,0x0063,0x0065,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x003B,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020, + 0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0062,0x0073,0x0065,0x006E,0x0074,0x0020,0x006F,0x0072,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x006E,0x006F,0x006E,0x002D,0x0065,0x006D,0x0070,0x0074,0x0079, + 0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x007B,0x0030,0x007D,0x00 } + , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0062,0x0065,0x0065,0x006E,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0064,0x0020,0x006F,0x0072,0x0020, + 0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x00 } + , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x006F, + 0x0075,0x0074,0x0020,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0069,0x0073,0x0020,0x0070,0x0061,0x0072,0x0074,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0063,0x006F, + 0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0069,0x0074,0x0075, + 0x0074,0x0065,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x006E,0x0074,0x0069,0x0072,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069, + 0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0061,0x0070,0x0070,0x0069,0x006E,0x0066,0x006F, + 0x0020,0x0061,0x006E,0x0064,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0066,0x0020,0x0058,0x004D,0x004C,0x0020,0x0053,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0064,0x006F,0x0063, + 0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0027,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0027,0x00 } + , { 0x0063,0x0069,0x0072,0x0063,0x0075,0x006C,0x0061,0x0072,0x0020,0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D, + 0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0058,0x004D,0x004C,0x0020, + 0x0053,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027, + 0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0068,0x0074,0x0074,0x0070,0x003A,0x002F,0x002F,0x0077,0x0077,0x0077,0x002E,0x0077,0x0033,0x002E,0x006F,0x0072,0x0067,0x002F,0x0032,0x0030,0x0030,0x0031,0x002F,0x0058, + 0x004D,0x004C,0x0053,0x0063,0x0068,0x0065,0x006D,0x0061,0x002D,0x0069,0x006E,0x0073,0x0074,0x0061,0x006E,0x0063,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0066,0x0069,0x0078,0x002D,0x0075,0x0070,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0070,0x0065,0x0072,0x0066,0x006F,0x0072,0x006D,0x0065, + 0x0064,0x0020,0x006F,0x006E,0x0020,0x0044,0x004F,0x004D,0x0020,0x004C,0x0065,0x0076,0x0065,0x006C,0x0020,0x0031,0x0020,0x006E,0x006F,0x0064,0x0065,0x00 } + , { 0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0061,0x006E,0x0079,0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074, + 0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069, + 0x006F,0x006E,0x00 } + , { 0x0061,0x006E,0x0079,0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062, + 0x0079,0x0020,0x006F,0x0074,0x0068,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } + , { 0x0045,0x005F,0x0045,0x006E,0x0064,0x00 } + , { 0x0046,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } + , { 0x0070,0x0061,0x0072,0x0073,0x0065,0x0072,0x0020,0x0068,0x0061,0x0073,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0065,0x0078,0x0070,0x0061,0x006E,0x0073,0x0069,0x006F,0x006E,0x0073,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065, + 0x006E,0x0074,0x003B,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0069,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x006C,0x0069,0x006D,0x0069,0x0074,0x0020,0x0069,0x006D,0x0070,0x006F,0x0073,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0074,0x0068, + 0x0065,0x0020,0x0061,0x0070,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x0020,0x006F,0x0072,0x0020,0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0072,0x0065,0x0070,0x0065,0x0074,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0069,0x006E,0x0020,0x006D, + 0x0069,0x0078,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x00 } + , { 0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063, + 0x0074,0x0065,0x0064,0x00 } + , { 0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0073,0x0069,0x0067,0x006E,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x003C,0x0021,0x002D,0x002D,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0075,0x0072,0x0065,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0076,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x002C,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x002C,0x0020,0x006F,0x0072,0x0020,0x0073,0x0074,0x0061,0x006E, + 0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0058,0x004D,0x004C,0x0020,0x0076,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0075,0x006E,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0058,0x004D,0x004C,0x0020,0x0076,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0058,0x004D,0x004C,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0058,0x004D,0x004C,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065, + 0x0064,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0069,0x006F,0x006E, + 0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0030,0x0078,0x007B,0x0030,0x007D,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0074,0x0061,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x0074,0x0061,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006F, + 0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0074,0x0061,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0074,0x0061,0x0067,0x0020,0x006E,0x0061,0x006D,0x0065,0x002C,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x002C,0x0020,0x0050,0x0049,0x002C,0x0020,0x006F,0x0072,0x0020, + 0x006F,0x0074,0x0068,0x0065,0x0072,0x0020,0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0027, + 0x0073,0x0020,0x0065,0x006E,0x0064,0x0020,0x0074,0x0061,0x0067,0x00 } + , { 0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x0020,0x006F,0x0072,0x0020,0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0065, + 0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0044,0x004F,0x0043,0x0054,0x0059,0x0050,0x0045,0x0020,0x0064,0x0065, + 0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0071,0x0075,0x006F,0x0074,0x0065,0x0064,0x0020,0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0070,0x0075,0x0062,0x006C,0x0069,0x0063,0x0020,0x0069,0x0064,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0030,0x0078,0x007B,0x0030,0x007D,0x0020,0x0069,0x006E,0x0020,0x0070,0x0075,0x0062,0x006C,0x0069,0x0063,0x0020,0x0069, + 0x0064,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0044,0x004F,0x0043,0x0054,0x0059,0x0050,0x0045,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0030,0x0078,0x007B,0x0030,0x007D,0x0020,0x0069,0x006E,0x0020,0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C, + 0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0030,0x0078,0x007B,0x0031,0x007D,0x0020,0x0069,0x006E,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074, + 0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0054,0x0045,0x0058,0x0054,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073, + 0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x00 } + , { 0x0063,0x006F,0x006E,0x0064,0x0069,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0073,0x0075,0x0062, + 0x0073,0x0065,0x0074,0x00 } + , { 0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0075,0x006E,0x0070,0x0061,0x0072,0x0073,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020, + 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027, + 0x00 } + , { 0x0072,0x0065,0x0063,0x0075,0x0072,0x0073,0x0069,0x0076,0x0065,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0065,0x0078,0x0070,0x0061,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0070,0x0061,0x0072,0x0074,0x0069,0x0061,0x006C,0x0020,0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x0020,0x0069,0x006E,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020, + 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0027,0x002A,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0074,0x0065,0x0072,0x006D,0x0069, + 0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0070,0x0072,0x006F,0x0070,0x0065,0x0072,0x006C,0x0079,0x00 } + , { 0x0073,0x0079,0x0073,0x0074,0x0065,0x006D,0x0020,0x006F,0x0072,0x0020,0x0070,0x0075,0x0062,0x006C,0x0069,0x0063,0x0020,0x0069,0x0064,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x002C,0x0027,0x002C,0x0020,0x0027,0x007C,0x0027,0x002C,0x0020,0x006F,0x0072,0x0020,0x0027,0x0029,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x007C,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0029,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x002C,0x0027,0x002C,0x0020,0x0027,0x007C,0x0027,0x002C,0x0020,0x006F,0x0072,0x0020,0x0027,0x0029,0x0027,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E, + 0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0075,0x006D,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072, + 0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x007C,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0029,0x0027,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x006C,0x0069,0x0074,0x0065,0x0072,0x0061,0x006C,0x00 } + , { 0x0075,0x006E,0x006D,0x0061,0x0074,0x0063,0x0068,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x0074,0x0061,0x0067,0x0020,0x0064,0x0065,0x0074,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0027,0x0028,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065, + 0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0027,0x003C,0x0027,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0061,0x0074,0x0074, + 0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x0075,0x0073,0x0065,0x0020,0x0026,0x006C,0x0074,0x003B,0x0020,0x0069,0x006E,0x0073,0x0074,0x0065,0x0061, + 0x0064,0x00 } + , { 0x006C,0x0065,0x0061,0x0064,0x0069,0x006E,0x0067,0x0020,0x0073,0x0075,0x0072,0x0072,0x006F,0x0067,0x0061,0x0074,0x0065,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020, + 0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0061,0x0020,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0073,0x0065,0x0063,0x006F,0x006E,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065, + 0x0072,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x005D,0x005D,0x003E,0x0027,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x006F,0x0020,0x0065,0x006E,0x0064,0x0020,0x0063,0x006F,0x006E,0x0064, + 0x0069,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0049,0x004E,0x0043,0x004C,0x0055,0x0044,0x0045,0x0020,0x006F,0x0072,0x0020,0x0049,0x0047,0x004E,0x004F,0x0052,0x0045,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020, + 0x0070,0x006F,0x0069,0x006E,0x0074,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x005B,0x0027,0x0020,0x0074,0x006F,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0020,0x0049,0x004E,0x0043,0x004C,0x0055,0x0044,0x0045,0x0020,0x006F,0x0072,0x0020,0x0049, + 0x0047,0x004E,0x004F,0x0052,0x0045,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0070,0x0072,0x006F,0x0070,0x0061,0x0067,0x0061,0x0074,0x0065,0x0064,0x0020,0x006F,0x0075,0x0074,0x0020,0x006F,0x0066,0x0020, + 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x002F,0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x00 } + , { 0x0075,0x006E,0x006D,0x0061,0x0074,0x0063,0x0068,0x0065,0x0064,0x0020,0x0027,0x005D,0x0027,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0064,0x0065,0x0074,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x006E,0x006F,0x0074, + 0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0069,0x006E,0x0073,0x0069,0x0064,0x0065,0x0020,0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x0020,0x0069,0x006E,0x0020,0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020, + 0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x00 } + , { 0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0070,0x0072,0x006F,0x0070,0x0061,0x0067,0x0061,0x0074,0x0065,0x0064,0x0020,0x006F,0x0075,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E, + 0x0074,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0074,0x006F,0x0020,0x006D,0x0069,0x0073,0x0063,0x0065,0x006C,0x006C,0x0061,0x006E,0x0065,0x006F,0x0075,0x0073,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0026,0x0023,0x0020,0x0074,0x006F,0x0020,0x0062,0x0065,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0061,0x0020,0x006E,0x0075,0x006D, + 0x0065,0x0072,0x0069,0x0063,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0027,0x005B,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0027,0x005D,0x005D,0x003E,0x0027,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0063,0x0068, + 0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0064,0x0061,0x0074,0x0061,0x00 } + , { 0x0027,0x002D,0x002D,0x0027,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074, + 0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x004E,0x0044,0x0041,0x0054,0x0041,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x004E,0x0044,0x0041,0x0054,0x0041,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0066,0x006F,0x0072,0x0020,0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069, + 0x0074,0x0069,0x0065,0x0073,0x00 } + , { 0x0068,0x0065,0x0078,0x0020,0x0072,0x0061,0x0064,0x0069,0x0078,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074, + 0x0020,0x0075,0x0073,0x0065,0x0020,0x0027,0x0078,0x0027,0x002C,0x0020,0x006E,0x006F,0x0074,0x0020,0x0027,0x0058,0x0027,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0073,0x0065,0x0065,0x006E,0x00 } + , { 0x0058,0x004D,0x004C,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x006F,0x0072, + 0x0064,0x0065,0x0072,0x003A,0x0020,0x0076,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x002C,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x002C,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x00 } + , { 0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0072,0x0065,0x0064,0x0020, + 0x0074,0x006F,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0058,0x004D,0x004C,0x0020,0x006F,0x0072,0x0020,0x0054,0x0045,0x0058,0x0054,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020, + 0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x003C,0x003F,0x0078,0x006D,0x006C,0x0020,0x0027,0x002C,0x0020,0x006E,0x006F,0x0074,0x0020,0x0027,0x003C,0x003F,0x0058,0x004D,0x004C,0x0020,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x006C,0x0069,0x0074,0x0065,0x0072,0x0061,0x006C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0072,0x0020,0x0070,0x0075, + 0x0062,0x006C,0x0069,0x0063,0x002F,0x0073,0x0079,0x0073,0x0074,0x0065,0x006D,0x0020,0x0069,0x0064,0x00 } + , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0064,0x0069,0x0067,0x0069,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0068,0x0065,0x0020, + 0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0072,0x0061,0x0064,0x0069,0x0078,0x00 } + , { 0x0069,0x006E,0x0070,0x0075,0x0074,0x0020,0x0065,0x006E,0x0064,0x0065,0x0064,0x0020,0x0062,0x0065,0x0066,0x006F,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0065,0x0064,0x0020,0x0074,0x0061,0x0067,0x0073, + 0x0020,0x0077,0x0065,0x0072,0x0065,0x0020,0x0065,0x006E,0x0064,0x0065,0x0064,0x003B,0x0020,0x006C,0x0061,0x0073,0x0074,0x0020,0x0074,0x0061,0x0067,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0065,0x0064,0x0020,0x0069,0x0073,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x00 } + , { 0x006E,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x00 } + , { 0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0064,0x0020,0x0074,0x006F, + 0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0055,0x0052,0x0049,0x00 } + , { 0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0061,0x006E,0x0064,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x006E,0x0064,0x0020,0x0074,0x0061,0x0067,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x0069,0x006E,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065, + 0x0072,0x0065,0x006E,0x0074,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0069,0x0065,0x0073,0x00 } + , { 0x0058,0x004D,0x004C,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x006F,0x0075,0x0074,0x0073,0x0069,0x0064,0x0065,0x0020,0x0074,0x0068, + 0x0065,0x0020,0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0074,0x0072,0x0061,0x0069,0x006C,0x0069,0x006E,0x0067,0x0020,0x0073,0x0075,0x0072,0x0072,0x006F,0x0067,0x0061,0x0074,0x0065,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061, + 0x0063,0x0074,0x0065,0x0072,0x00 } + , { 0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074, + 0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x0078,0x006D,0x006C,0x0027,0x00 } + , { 0x0058,0x004D,0x004C,0x0020,0x006F,0x0072,0x0020,0x0054,0x0045,0x0058,0x0054,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020, + 0x0061,0x0074,0x0020,0x006C,0x0069,0x006E,0x0065,0x0020,0x0031,0x002C,0x0020,0x0063,0x006F,0x006C,0x0075,0x006D,0x006E,0x0020,0x0031,0x00 } + , { 0x0076,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020, + 0x0058,0x004D,0x004C,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x006C,0x0065,0x0067,0x0061, + 0x006C,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x006D,0x0061,0x0069,0x006E,0x0020,0x0058,0x004D,0x004C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x00 } + , { 0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x0064,0x0020,0x0069,0x006E, + 0x0020,0x0054,0x0045,0x0058,0x0054,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0063,0x006F,0x006C,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0069,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0020,0x0077,0x0068,0x0065,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065, + 0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x0065,0x006E,0x0061,0x0062,0x006C,0x0065,0x0064,0x00 } + , { 0x007B,0x0030,0x007D,0x00 } + , { 0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x004C,0x006F,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x006E,0x0061,0x006D, + 0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x002D,0x006C,0x006F,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0070,0x0061,0x0069,0x0072,0x0073,0x00 } + , { 0x0066,0x0061,0x0074,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0064,0x0075,0x0072,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0073,0x0063,0x0061,0x006E,0x00 } + , { 0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x006F,0x0020,0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072, + 0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E, + 0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0070,0x0061,0x0072,0x0074,0x0069,0x0061,0x006C,0x0020,0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x0020,0x0069,0x006E,0x0020,0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020, + 0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0074,0x0065,0x0078,0x0074,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072, + 0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x006E,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x002D,0x006E, + 0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006D,0x0061,0x0070,0x0070,0x0069,0x006E,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0027,0x0078,0x006D,0x006C,0x006E,0x0073,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0078,0x0070,0x006C,0x0069,0x0063,0x0069,0x0074,0x006C,0x0079, + 0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0020,0x0074,0x006F,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x0078,0x006D,0x006C,0x006E,0x0073,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0078,0x0070, + 0x006C,0x0069,0x0063,0x0069,0x0074,0x006C,0x0079,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0020,0x0074,0x006F,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x00 } + , { 0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0027,0x0078,0x006D,0x006C,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0020,0x0074,0x006F,0x0020,0x006E,0x0061,0x006D, + 0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0074,0x0068,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0069,0x0074,0x0073,0x0020,0x0063,0x0061,0x006E,0x006F,0x006E,0x0069,0x0063,0x0061,0x006C,0x0020,0x006E,0x0061,0x006D, + 0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x0078,0x006D,0x006C,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064, + 0x0020,0x0074,0x006F,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x006F,0x0074,0x0068,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0027,0x0078,0x006D,0x006C,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0027,0x0078,0x006D,0x006C,0x006E,0x0073,0x0027,0x0020,0x0061, + 0x0073,0x0020,0x0069,0x0074,0x0073,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x00 } + , { 0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065, + 0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0044,0x004F,0x0043,0x0054,0x0059, + 0x0050,0x0045,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027, + 0x00 } + , { 0x0044,0x004F,0x0043,0x0054,0x0059,0x0050,0x0045,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0073,0x0065,0x0065,0x006E,0x00 } + , { 0x0066,0x0061,0x006C,0x006C,0x0062,0x0061,0x0063,0x006B,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0064,0x0069,0x0072,0x0065,0x0063,0x0074,0x0020,0x0063,0x0068, + 0x0069,0x006C,0x0064,0x0020,0x006F,0x0066,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0077,0x0069,0x0074,0x0068,0x006F,0x0075,0x0074,0x0020,0x0027,0x0068,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072, + 0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0058,0x0050,0x006F,0x0069,0x006E,0x0074,0x0065,0x0072,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069, + 0x0066,0x0069,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x003B,0x0020,0x0058,0x0050,0x006F,0x0069,0x006E,0x0074,0x0065,0x0072,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0079,0x0065,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F, + 0x0072,0x0074,0x0065,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0027,0x0070,0x0061,0x0072,0x0073,0x0065,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x003B,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x0074,0x0065,0x0078,0x0074,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0078,0x006D,0x006C,0x0027,0x00 } + , { 0x006D,0x0075,0x006C,0x0074,0x0069,0x0070,0x006C,0x0065,0x0020,0x0066,0x0061,0x006C,0x006C,0x0062,0x0061,0x0063,0x006B,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0069,0x006E,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D, + 0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0066,0x0061,0x0069,0x006C,0x0065,0x0064,0x0020,0x0061,0x006E,0x0064,0x0020,0x006E,0x006F,0x0020,0x0066,0x0061,0x006C,0x006C,0x0062,0x0061,0x0063,0x006B,0x0020,0x0065,0x006C,0x0065,0x006D, + 0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0063,0x0069,0x0072,0x0063,0x0075,0x006C,0x0061,0x0072,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D, + 0x0027,0x00 } + , { 0x0073,0x0065,0x006C,0x0066,0x002D,0x0069,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0061,0x0073,0x0020,0x0061,0x0020,0x0063, + 0x0068,0x0069,0x006C,0x0064,0x0020,0x006F,0x0066,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0064,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x006F,0x006E,0x0066,0x006C,0x0069,0x0063,0x0074,0x0073,0x0020,0x0077, + 0x0069,0x0074,0x0068,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x00 } + , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x006F,0x006E,0x0066,0x006C,0x0069,0x0063,0x0074,0x0073,0x0020,0x0077,0x0069,0x0074, + 0x0068,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x00 } + , { 0x0046,0x005F,0x0045,0x006E,0x0064,0x00 } + +}; +const unsigned int gXMLErrArraySize = 288; + +const XMLCh gXMLValidityArray[][128] = +{ + { 0x0045,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } + , { 0x006E,0x006F,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x00 } + , { 0x006E,0x006F,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020, + 0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0062,0x0075,0x0074,0x0020,0x0077,0x0061, + 0x0073,0x0020,0x006E,0x0065,0x0076,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } + , { 0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0073,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C, + 0x0061,0x0072,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0044,0x004F,0x0043,0x0054,0x0059,0x0050,0x0045,0x00 } + , { 0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x0064,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0063,0x006F, + 0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0049,0x0044,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0023,0x0049,0x004D,0x0050,0x004C,0x0049,0x0045,0x0044,0x0020,0x006F,0x0072,0x0020,0x0023,0x0052, + 0x0045,0x0051,0x0055,0x0049,0x0052,0x0045,0x0044,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0062,0x0065,0x0065,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C, + 0x0061,0x0072,0x0065,0x0064,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0049,0x0044,0x0020, + 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0049,0x0044,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0062,0x0065,0x0065,0x006E,0x0020,0x0075,0x0073,0x0065, + 0x0064,0x00 } + , { 0x0049,0x0044,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0062,0x0075, + 0x0074,0x0020,0x0077,0x0061,0x0073,0x0020,0x006E,0x0065,0x0076,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0073,0x0020,0x0074,0x006F,0x0020,0x0075,0x006E,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065, + 0x0064,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0044,0x004F,0x0043,0x0054,0x0059, + 0x0050,0x0045,0x0020,0x0062,0x0075,0x0074,0x0020,0x0077,0x0061,0x0073,0x0020,0x006E,0x0065,0x0076,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } + , { 0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0063,0x006F,0x006E,0x0074, + 0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0066,0x006F,0x0072, + 0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006F,0x0066,0x0020, + 0x0074,0x0079,0x0070,0x0065,0x0020,0x0045,0x004E,0x0054,0x0049,0x0054,0x0059,0x002F,0x0045,0x004E,0x0054,0x0049,0x0054,0x0049,0x0045,0x0053,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0020,0x0074,0x006F,0x0020, + 0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x002C,0x0020,0x0075,0x006E,0x0070,0x0061,0x0072,0x0073,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0073,0x0020,0x0074,0x006F,0x0020,0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0065, + 0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0049,0x0044,0x002F,0x0049,0x0044,0x0052,0x0045,0x0046,0x002F,0x0049,0x0044,0x0052,0x0045,0x0046,0x0053,0x002F,0x0045, + 0x004E,0x0054,0x0049,0x0054,0x0059,0x002F,0x0045,0x004E,0x0054,0x0049,0x0054,0x0049,0x0045,0x0053,0x002F,0x004E,0x004F,0x0054,0x0041,0x0054,0x0049,0x004F,0x004E,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074, + 0x0061,0x0069,0x006E,0x0020,0x0063,0x006F,0x006C,0x006F,0x006E,0x0020,0x0077,0x0068,0x0065,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x0065,0x006E,0x0061,0x0062,0x006C, + 0x0065,0x0064,0x00 } + , { 0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0027, + 0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006E,0x006F,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0064,0x0061,0x0074,0x0061,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0063,0x006F,0x006E, + 0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065, + 0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0069,0x0074,0x0073,0x0020,0x0074,0x0079,0x0070,0x0065,0x0027,0x0073,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0065,0x006E,0x0075,0x006D, + 0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006C,0x0069,0x0073,0x0074,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020, + 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x004E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x004E,0x004D,0x0054,0x004F,0x004B,0x0045,0x004E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0020,0x006D,0x0075,0x006C,0x0074, + 0x0069,0x0070,0x006C,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0074,0x0068,0x0061, + 0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0069,0x0074,0x0073,0x0020,0x0023,0x0046,0x0049,0x0058,0x0045,0x0044,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027, + 0x007B,0x0032,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0073,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0064,0x0020, + 0x0069,0x006E,0x0020,0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x00 } + , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x007B,0x0031,0x007D,0x0020,0x0063,0x006F,0x006D, + 0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x003B,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x002C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x002C,0x0020,0x0063,0x0068,0x006F,0x0069,0x0063, + 0x0065,0x002C,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x002C,0x0020,0x0061,0x006E,0x0064,0x0020,0x0061,0x006E,0x0079,0x0020,0x0061,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } + , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020, + 0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074, + 0x0065,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x00 } + , { 0x007B,0x0030,0x007D,0x00 } + , { 0x0070,0x0072,0x006F,0x0068,0x0069,0x0062,0x0069,0x0074,0x0065,0x0064,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065, + 0x006E,0x0074,0x00 } + , { 0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0027,0x0078,0x006D,0x006C,0x003A,0x0073,0x0070,0x0061,0x0063,0x0065,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074, + 0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063, + 0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0069,0x006E,0x0073,0x0074,0x0061,0x006E,0x0063,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006F,0x0066,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0061,0x006E,0x0064, + 0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0069,0x006E,0x0020,0x0069,0x0074,0x0073,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E, + 0x0074,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x006E,0x0064,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x0020,0x0066,0x006F,0x0072,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065, + 0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x00 } + , { 0x007B,0x0030,0x007D,0x00 } + , { 0x0027,0x0078,0x0073,0x0069,0x003A,0x006E,0x0069,0x006C,0x0027,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x006E,0x006F,0x006E,0x002D,0x006E,0x0069,0x006C,0x006C,0x0061,0x0062,0x006C, + 0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x0069,0x006C,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x006D, + 0x0070,0x0074,0x0079,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0073,0x0020,0x0066,0x0072, + 0x006F,0x006D,0x0020,0x0069,0x0074,0x0073,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x006E,0x0064,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x0020,0x0066,0x006F,0x0072,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065, + 0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0064,0x0075,0x0072,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0073,0x0063,0x0061,0x006E,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0071,0x0075,0x0061,0x006C,0x0069,0x0066,0x0069,0x0065,0x0064,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x006E,0x0071,0x0075,0x0061,0x006C,0x0069,0x0066,0x0069,0x0065,0x0064,0x00 } + , { 0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x006F,0x0020,0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072, + 0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064, + 0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0068,0x0061, + 0x0073,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069, + 0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0063,0x0068,0x0061,0x006E,0x0067,0x0065,0x0064, + 0x0020,0x0062,0x0079,0x0020,0x006E,0x006F,0x0072,0x006D,0x0061,0x006C,0x0069,0x007A,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x006F,0x0063, + 0x0075,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x006F,0x0063,0x0063,0x0075,0x0072,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E,0x0020,0x0065, + 0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x006C,0x0079,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0065,0x006C, + 0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E, + 0x0074,0x00 } + , { 0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0070,0x0061,0x0072,0x0074,0x0069,0x0061,0x006C,0x0020,0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x0020,0x0069,0x006E,0x0020,0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020, + 0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0074,0x0065,0x0078,0x0074,0x00 } + , { 0x0066,0x0061,0x0069,0x006C,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0076,0x0069,0x006F,0x006C,0x0061,0x0074,0x0065,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x0075,0x006E,0x0069, + 0x0071,0x0075,0x0065,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0069,0x006F,0x006E,0x0020,0x0072,0x0075,0x006C,0x0065,0x0020,0x0069,0x006E,0x0020,0x0069,0x0074, + 0x0073,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x006E,0x0065,0x006E,0x0074,0x0073,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x0027,0x007B,0x0032,0x007D,0x0027,0x00 } + , { 0x0061,0x0062,0x0073,0x0074,0x0072,0x0061,0x0063,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020, + 0x0069,0x006E,0x0020,0x0027,0x0078,0x0073,0x0069,0x003A,0x0074,0x0079,0x0070,0x0065,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x0062,0x0073,0x0074,0x0072,0x0061,0x0063,0x0074,0x003B,0x0020,0x0075,0x0073,0x0065,0x0020,0x006E,0x006F,0x006E,0x002D, + 0x0061,0x0062,0x0073,0x0074,0x0072,0x0061,0x0063,0x0074,0x0020,0x006D,0x0065,0x006D,0x0062,0x0065,0x0072,0x0020,0x006F,0x0066,0x0020,0x0069,0x0074,0x0073,0x0020,0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E, + 0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0069,0x006E,0x0073,0x0074,0x0065,0x0061,0x0064,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x0062,0x0073,0x0074,0x0072,0x0061,0x0063,0x0074,0x003B,0x0020, + 0x0075,0x0073,0x0065,0x0020,0x0027,0x0078,0x0073,0x0069,0x003A,0x0074,0x0079,0x0070,0x0065,0x0027,0x0020,0x0074,0x006F,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0079,0x0020,0x006E,0x006F,0x006E,0x002D,0x0061,0x0062,0x0073,0x0074,0x0072, + 0x0061,0x0063,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0073,0x0074,0x0065,0x0061,0x0064,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0027,0x0078,0x0073,0x0069,0x003A,0x0074,0x0079,0x0070,0x0065,0x0027,0x0020, + 0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0064,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0027,0x0078,0x0073,0x0069,0x003A,0x0074,0x0079,0x0070,0x0065,0x0027,0x0020, + 0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E, + 0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0065,0x0072,0x006D,0x0069,0x0074,0x0020,0x0073,0x0075,0x0062,0x0073,0x0074, + 0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0065,0x0072,0x006D,0x0069,0x0074,0x0020, + 0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0071,0x0075,0x0061,0x006C,0x0069,0x0066,0x0069,0x0065,0x0064,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x006E,0x0071,0x0075,0x0061,0x006C,0x0069,0x0066,0x0069,0x0065,0x0064, + 0x00 } + , { 0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0066,0x0069,0x0065,0x006C,0x0064,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0065,0x0073,0x0020,0x006D, + 0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0077,0x0069,0x0074,0x0068,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0063,0x006F,0x0070,0x0065, + 0x0020,0x006F,0x0066,0x0020,0x0069,0x0074,0x0073,0x0020,0x0073,0x0065,0x006C,0x0065,0x0063,0x0074,0x006F,0x0072,0x003B,0x0020,0x0066,0x0069,0x0065,0x006C,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020, + 0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0066,0x0069,0x0065,0x006C,0x0064,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069, + 0x006E,0x0074,0x0020,0x006B,0x0065,0x0079,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x006E,0x006F,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0065,0x006E,0x006F,0x0075,0x0067,0x0068,0x0020, + 0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x0020,0x0066,0x006F,0x0072,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x006B,0x0065,0x0079,0x0020, + 0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0073,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E, + 0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x006B,0x0065,0x0079,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0065,0x0073,0x0020,0x006E,0x0069,0x006C,0x006C,0x0061,0x0062,0x006C,0x0065,0x0020,0x0065, + 0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0073,0x0020,0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0069,0x0064, + 0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0073,0x0020,0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0069,0x0064, + 0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x006B,0x0065,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x00 } + , { 0x006B,0x0065,0x0079,0x0072,0x0065,0x0066,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0073,0x0020,0x0074,0x006F,0x0020,0x006F,0x0075,0x0074,0x0020,0x006F,0x0066,0x0020,0x0073,0x0063,0x006F,0x0070,0x0065, + 0x0020,0x006B,0x0065,0x0079,0x002F,0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x00 } + , { 0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x006B,0x0065,0x0079,0x0020,0x0066,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074, + 0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x006E,0x006F,0x006E,0x002D,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061, + 0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x006F,0x0074,0x0068,0x0065,0x0072, + 0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0061,0x0070,0x0070,0x0069,0x006E,0x0066,0x006F,0x0020,0x0061,0x006E,0x0064,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0045,0x004D,0x0050,0x0054,0x0059,0x0020,0x0062,0x0075,0x0074,0x0020,0x0068,0x0061, + 0x0073,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006F,0x0066,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x004E,0x004F,0x0054,0x0041,0x0054,0x0049,0x004F,0x004E,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0045,0x004D,0x0050,0x0054,0x0059,0x0020,0x0061,0x006E,0x0064,0x0020,0x0063,0x0061, + 0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x002C,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x0076,0x0065,0x006E,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020, + 0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0073,0x002C,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x0073,0x002C,0x0020,0x0050,0x0049,0x0073,0x002C,0x0020,0x006F,0x0072,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065, + 0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0061,0x0074,0x0074, + 0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x004E,0x004F,0x0054,0x0041,0x0054,0x0049,0x004F,0x004E,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x006F,0x006E,0x002D,0x0064,0x0069,0x0073,0x0074,0x0069,0x006E,0x0063,0x0074,0x0020,0x0074,0x006F, + 0x006B,0x0065,0x006E,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073, + 0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0020,0x0065,0x0073,0x0063,0x0061,0x0070,0x0065,0x0064,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x00 } + , { 0x0045,0x005F,0x0045,0x006E,0x0064,0x00 } + +}; +const unsigned int gXMLValidityArraySize = 84; + +const XMLCh gXMLExceptArray[][128] = +{ + { 0x0057,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0070,0x0072,0x0069,0x006D,0x0061,0x0072,0x0079,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0065,0x006E,0x0074, + 0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0057,0x005F,0x0045,0x006E,0x0064,0x00 } + , { 0x0046,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } + , { 0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0062,0x0065,0x0079,0x006F,0x006E,0x0064,0x0020,0x0061,0x0072,0x0072,0x0061,0x0079,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0073,0x00 } + , { 0x006E,0x0065,0x0077,0x0020,0x0061,0x0072,0x0072,0x0061,0x0079,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0069,0x0073,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x006C,0x0064, + 0x00 } + , { 0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0062,0x0065,0x0079,0x006F,0x006E,0x0064,0x0020,0x006D,0x0061,0x0078,0x0069,0x006D,0x0075,0x006D,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069, + 0x006E,0x0064,0x0065,0x0078,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0041,0x0074,0x0074,0x0054,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0044,0x0065,0x0066,0x0041,0x0074,0x0074,0x0054,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0062,0x0069,0x0074,0x0020,0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0062,0x0065,0x0079,0x006F,0x006E,0x0064,0x0020,0x0073,0x0065,0x0074,0x0020,0x0073,0x0069,0x007A,0x0065,0x00 } + , { 0x0062,0x0069,0x0074,0x0020,0x0073,0x0065,0x0074,0x0073,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0073,0x0069,0x007A,0x0065,0x0073,0x00 } + , { 0x006E,0x006F,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0073,0x0020,0x0061,0x0076,0x0061,0x0069,0x006C,0x0061,0x0062,0x006C,0x0065,0x00 } + , { 0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x006D,0x0061,0x006E,0x0061,0x0067,0x0065,0x0072,0x0027, + 0x0073,0x0020,0x0070,0x006F,0x006F,0x006C,0x00 } + , { 0x004E,0x0055,0x004C,0x004C,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0065,0x0072,0x00 } + , { 0x0062,0x0069,0x006E,0x0061,0x0072,0x0079,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0068,0x0061,0x0073,0x0020,0x0075,0x006E,0x0061,0x0072,0x0079,0x0020,0x006E,0x006F,0x0064, + 0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x006F,0x0072,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064, + 0x0072,0x0065,0x006E,0x00 } + , { 0x0050,0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0070,0x006F,0x0069,0x006E, + 0x0074,0x00 } + , { 0x0075,0x006E,0x0061,0x0072,0x0079,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0068,0x0061,0x0073,0x0020,0x0062,0x0069,0x006E,0x0061,0x0072,0x0079,0x0020,0x006E,0x006F,0x0064, + 0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0070,0x0061,0x0072,0x0065,0x006E,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x006F,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0020, + 0x006E,0x006F,0x0064,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0073,0x0070,0x0065,0x0063,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0072,0x0065,0x0061,0x0073,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0073,0x0074,0x0061,0x0063,0x006B,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0070,0x006F,0x0070,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0072,0x0065,0x0071,0x0075,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x006F,0x006E,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0073,0x0074, + 0x0061,0x0063,0x006B,0x00 } + , { 0x0070,0x0061,0x0072,0x0065,0x006E,0x0074,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0072,0x0065,0x0071,0x0075,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x006F,0x006E,0x006C, + 0x0079,0x0020,0x006F,0x006E,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x0063,0x006B,0x00 } + , { 0x006E,0x006F,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0069,0x006E,0x0020,0x0065,0x006E,0x0075,0x006D,0x0065,0x0072,0x0061,0x0074,0x006F,0x0072,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0071,0x0075,0x0065,0x0072,0x0079,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0070,0x006F,0x0073,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x006C,0x006F,0x0073,0x0065,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0073,0x0065,0x0065,0x006B,0x0020,0x0074,0x006F,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0073,0x0065,0x0065,0x006B,0x0020,0x0074,0x006F,0x0020,0x0074,0x0068,0x0065,0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x0064,0x0020,0x0070,0x006F,0x0073,0x0069, + 0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0068,0x0061,0x006E,0x0064,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0072,0x0065,0x0061,0x0064,0x0020,0x0064,0x0061,0x0074,0x0061,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0077,0x0072,0x0069,0x0074,0x0065,0x0020,0x0064,0x0061,0x0074,0x0061,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0072,0x0065,0x0073,0x0065,0x0074,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0070,0x006F,0x0073,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0074,0x006F,0x0020,0x0074,0x0068, + 0x0065,0x0020,0x0062,0x0065,0x0067,0x0069,0x006E,0x006E,0x0069,0x006E,0x0067,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0067,0x0065,0x0074,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0073,0x0069,0x007A,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0064,0x0065,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0065,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0070,0x0061,0x0074,0x0068,0x006E, + 0x0061,0x006D,0x0065,0x00 } + , { 0x0070,0x0061,0x0072,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0020,0x0070,0x0072,0x006F,0x0067,0x0072,0x0065,0x0073,0x0073,0x00 } + , { 0x0044,0x004F,0x0043,0x0054,0x0059,0x0050,0x0045,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0077,0x0061,0x0073,0x0020,0x0073,0x0065,0x0065,0x006E,0x0020,0x0062,0x0075,0x0074,0x0020,0x0069,0x006E, + 0x0073,0x0074,0x0061,0x006C,0x006C,0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0020, + 0x0044,0x0054,0x0044,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0044,0x0054,0x0044,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D, + 0x0027,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0069,0x006E,0x0070,0x0075,0x0074,0x00 } + , { 0x007A,0x0065,0x0072,0x006F,0x0020,0x0068,0x0061,0x0073,0x0068,0x0020,0x006D,0x006F,0x0064,0x0075,0x006C,0x0075,0x0073,0x00 } + , { 0x0068,0x0061,0x0073,0x0068,0x0069,0x006E,0x0067,0x0020,0x006B,0x0065,0x0079,0x0020,0x0070,0x0072,0x006F,0x0064,0x0075,0x0063,0x0065,0x0064,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0068,0x0061,0x0073,0x0068,0x00 } + , { 0x006E,0x006F,0x0020,0x0073,0x0075,0x0063,0x0068,0x0020,0x006B,0x0065,0x0079,0x0020,0x0069,0x006E,0x0020,0x0068,0x0061,0x0073,0x0068,0x0020,0x0074,0x0061,0x0062,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0064,0x0065,0x0073,0x0074,0x0072,0x006F,0x0079,0x0020,0x006D,0x0075,0x0074,0x0065,0x0078,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x004E,0x0065,0x0074,0x0041,0x0063,0x0063,0x0065,0x0073,0x0073,0x006F,0x0072,0x00 } + , { 0x004E,0x0065,0x0074,0x0041,0x0063,0x0063,0x0065,0x0073,0x0073,0x006F,0x0072,0x0020,0x0069,0x0073,0x0020,0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0064,0x0065,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0065,0x0020, + 0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x006F,0x0066,0x0020,0x0072,0x0065,0x006D,0x006F,0x0074,0x0065,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0069,0x006E,0x0069,0x0074,0x0069,0x0061,0x006C,0x0069,0x007A,0x0065,0x0020,0x004E,0x0065,0x0074,0x0041,0x0063,0x0063,0x0065,0x0073,0x0073,0x006F,0x0072,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0020,0x0068,0x006F,0x0073,0x0074,0x002F,0x0061,0x0064,0x0064,0x0072,0x0065,0x0073,0x0073,0x0020,0x0027,0x007B,0x0030,0x007D, + 0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x0020,0x0073,0x006F,0x0063,0x006B,0x0065,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0055,0x0052,0x004C,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x006F,0x006E,0x006E,0x0065,0x0063,0x0074,0x0020,0x0073,0x006F,0x0063,0x006B,0x0065,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0055,0x0052,0x004C,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0077,0x0072,0x0069,0x0074,0x0065,0x0020,0x0074,0x006F,0x0020,0x0073,0x006F,0x0063,0x006B,0x0065,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0055,0x0052,0x004C,0x0020,0x0027, + 0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0072,0x0065,0x0061,0x0064,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0073,0x006F,0x0063,0x006B,0x0065,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0055,0x0052,0x004C,0x0020, + 0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0048,0x0054,0x0054,0x0050,0x0020,0x006D,0x0065,0x0074,0x0068,0x006F,0x0064,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072, + 0x0074,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x004E,0x0065,0x0074,0x0041,0x0063,0x0063,0x0065,0x0073,0x0073,0x006F,0x0072,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0069,0x006E,0x0020,0x0070,0x006F,0x006F,0x006C,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0064,0x00 } + , { 0x007A,0x0065,0x0072,0x006F,0x0020,0x0068,0x0061,0x0073,0x0068,0x0020,0x006D,0x006F,0x0064,0x0075,0x006C,0x0075,0x0073,0x00 } + , { 0x0072,0x0065,0x0061,0x0064,0x0065,0x0072,0x0020,0x0069,0x0064,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0061,0x0075,0x0074,0x006F,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0064,0x0065,0x0063,0x006F,0x0064,0x0065,0x0020,0x0066,0x0069,0x0072,0x0073,0x0074,0x0020,0x006C,0x0069,0x006E,0x0065,0x0020,0x0069,0x006E,0x0020,0x0065,0x006E,0x0074,0x0069, + 0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0058,0x004D,0x004C,0x0020,0x006F,0x0072,0x0020,0x0054,0x0045,0x0058,0x0054,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F, + 0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x004E,0x0045,0x004C,0x0020,0x006F,0x0072,0x0020,0x006C,0x0073,0x0065,0x0070,0x00 } + , { 0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0074,0x0020,0x0074,0x0072,0x0061,0x006E,0x0073,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0073,0x0065,0x0072,0x0076,0x0069,0x0063,0x0065,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F, + 0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0020,0x0073,0x006F,0x0075,0x0072,0x0063,0x0065,0x0020,0x006F,0x0066,0x0066,0x0073,0x0065,0x0074,0x0020,0x0069,0x006E,0x0066,0x006F,0x0072,0x006D,0x0061,0x0074,0x0069,0x006F,0x006E, + 0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0070,0x0072,0x006F,0x0076,0x0069,0x0064,0x0065,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0064, + 0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0070,0x0072,0x0069,0x006D,0x0061,0x0072,0x0079,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0065,0x006E,0x0074, + 0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0062,0x0061,0x006C,0x0061,0x006E,0x0063,0x0065,0x0064,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x002F,0x0065,0x006E,0x0064,0x0020,0x0074,0x0061,0x0067,0x0073,0x00 } + , { 0x0063,0x0061,0x006C,0x006C,0x0020,0x0074,0x006F,0x0020,0x0073,0x0063,0x0061,0x006E,0x004E,0x0065,0x0078,0x0074,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073, + 0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x00 } + , { 0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0070,0x0061,0x0073,0x0074,0x0020,0x0074,0x006F,0x0070,0x0020,0x006F,0x0066,0x0020,0x0073,0x0074,0x0061,0x0063,0x006B,0x00 } + , { 0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0073,0x0074,0x0061,0x0063,0x006B,0x00 } + , { 0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x007A,0x0065,0x0072,0x006F,0x0020,0x006D,0x0061,0x0078,0x0020, + 0x0073,0x0069,0x007A,0x0065,0x00 } + , { 0x0075,0x006E,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0072,0x0061,0x0064,0x0069,0x0078,0x003B,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0032,0x002C,0x0020,0x0038,0x002C,0x0020,0x0031, + 0x0030,0x002C,0x0020,0x006F,0x0072,0x0020,0x0031,0x0036,0x00 } + , { 0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0069,0x0073,0x0020,0x0074,0x006F,0x006F,0x0020,0x0073,0x006D,0x0061,0x006C,0x006C,0x00 } + , { 0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0070,0x0061,0x0073,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0073,0x0074,0x0072,0x0069, + 0x006E,0x0067,0x00 } + , { 0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0072,0x0065,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0076,0x0065,0x0072,0x0066,0x006C,0x006F,0x0077,0x0073,0x0020,0x006F,0x0075,0x0074, + 0x0070,0x0075,0x0074,0x0020,0x0062,0x0069,0x006E,0x0061,0x0072,0x0079,0x0020,0x0072,0x0065,0x0073,0x0075,0x006C,0x0074,0x00 } + , { 0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0069,0x0064,0x00 } + , { 0x0063,0x0068,0x0061,0x0072,0x0020,0x0030,0x0078,0x007B,0x0030,0x007D,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0072,0x0065,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0061,0x0062,0x006C,0x0065,0x0020,0x0069,0x006E,0x0020, + 0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0075,0x006C,0x0074,0x0069,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0063,0x006F,0x0064,0x0065,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0020,0x0030,0x0078,0x007B,0x0030,0x007D,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x007B,0x0031, + 0x007D,0x0027,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x006C,0x0065,0x0061,0x0064,0x0069,0x006E,0x0067,0x0020,0x0073,0x0075,0x0072,0x0072,0x006F,0x0067,0x0061,0x0074,0x0065,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C, + 0x0069,0x0064,0x0020,0x0074,0x0072,0x0061,0x0069,0x006C,0x0069,0x006E,0x0067,0x0020,0x0073,0x0075,0x0072,0x0072,0x006F,0x0067,0x0061,0x0074,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x0020,0x0063,0x006F,0x006E,0x0076,0x0065,0x0072,0x0074,0x0065,0x0072,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D, + 0x0027,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x006D,0x0061,0x006C,0x0066,0x006F,0x0072,0x006D,0x0065,0x0064,0x0020,0x0055,0x0052,0x004C,0x00 } + , { 0x0075,0x006E,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0070,0x0072,0x006F,0x0074,0x006F,0x0063,0x006F,0x006C,0x0020,0x0069,0x006E,0x0020,0x0055,0x0052,0x004C,0x00 } + , { 0x0055,0x0052,0x004C,0x0020,0x0070,0x0072,0x006F,0x0074,0x006F,0x0063,0x006F,0x006C,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0075,0x006E,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x00 } + , { 0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0070,0x0072,0x006F,0x0074,0x006F,0x0063,0x006F,0x006C,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x002F,0x002F,0x0027,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0070,0x0072,0x006F,0x0074,0x006F,0x0063,0x006F,0x006C,0x00 } + , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0070,0x0061,0x0072,0x0074,0x0020,0x006F,0x0066,0x0020,0x0055,0x0052,0x004C,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x006C,0x0061,0x0074,0x0069,0x0076,0x0065, + 0x00 } + , { 0x0070,0x006F,0x0072,0x0074,0x0020,0x0066,0x0069,0x0065,0x006C,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0031,0x0036,0x002D,0x0062,0x0069,0x0074,0x0020,0x0064,0x0065,0x0063,0x0069,0x006D,0x0061,0x006C,0x0020,0x006E, + 0x0075,0x006D,0x0062,0x0065,0x0072,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0062,0x0079,0x0074,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0061,0x0074,0x0020,0x0070,0x006F,0x0073,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x007B,0x0030,0x007D,0x0020, + 0x006F,0x0066,0x0020,0x0061,0x0020,0x007B,0x0032,0x007D,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0062,0x0079,0x0074,0x0065,0x0073,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020, + 0x0033,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0069,0x0072,0x0072,0x0065,0x0067,0x0075,0x006C,0x0061,0x0072,0x0020,0x0062,0x0079,0x0074,0x0065,0x0073,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006F,0x0066,0x0020, + 0x0061,0x0020,0x0033,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0062,0x0079,0x0074,0x0065,0x0073,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020, + 0x0034,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0065,0x0064,0x0020,0x0062,0x0079,0x0074,0x0065,0x0020,0x006C,0x0069,0x006D,0x0069,0x0074,0x0020,0x0061,0x0074,0x0020,0x0062,0x0079,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069, + 0x006E,0x0020,0x0061,0x0020,0x007B,0x0031,0x007D,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0062,0x0065,0x0079,0x006F,0x006E,0x0064,0x0020,0x0076,0x0065,0x0063,0x0074,0x006F,0x0072,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0073,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0064,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0077,0x0068,0x0065,0x006E, + 0x0020,0x0072,0x0065,0x0075,0x0073,0x0069,0x006E,0x0067,0x0020,0x0074,0x0068,0x0065,0x0020,0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0072,0x0065,0x0063,0x006F,0x0067,0x006E,0x0069,0x007A,0x0065,0x0072,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0061,0x0074,0x0020,0x006F,0x0066,0x0066,0x0073,0x0065,0x0074,0x0020,0x007B,0x0030,0x007D,0x0020,0x0069,0x006E,0x0020, + 0x0072,0x0065,0x0067,0x0075,0x006C,0x0061,0x0072,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x006E,0x0075,0x006D,0x0062,0x0065,0x0072,0x00 } + , { 0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0062,0x0061,0x0063,0x006B,0x0073,0x006C,0x0061,0x0073,0x0068,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x003F,0x0027,0x003B,0x0020,0x0027,0x0028,0x003F,0x003A,0x0027,0x002C,0x0020,0x0027,0x0028,0x003F,0x003D,0x0027,0x002C,0x0020,0x0027,0x0028,0x003F,0x0021,0x0027, + 0x002C,0x0020,0x0027,0x0028,0x003F,0x003C,0x0027,0x002C,0x0020,0x0027,0x0028,0x003F,0x0023,0x0027,0x002C,0x0020,0x006F,0x0072,0x0020,0x0027,0x0028,0x003F,0x003E,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0027,0x0028,0x003F,0x003C,0x003D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0028,0x003F,0x003C,0x0021,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0027,0x0029,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x0020,0x0069,0x006E,0x0020,0x006D,0x006F,0x0064,0x0069,0x0066,0x0069, + 0x0065,0x0072,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } + , { 0x0027,0x003A,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0064,0x0069,0x0074, + 0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } + , { 0x0062,0x0061,0x0063,0x006B,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x002C,0x0020,0x0061,0x006E,0x0063,0x0068,0x006F,0x0072,0x002C,0x0020,0x006C,0x006F,0x006F,0x006B,0x0061,0x0068,0x0065,0x0061,0x0064,0x002C,0x0020, + 0x006F,0x0072,0x0020,0x006C,0x006F,0x006F,0x006B,0x0062,0x0065,0x0068,0x0069,0x006E,0x0064,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0064,0x0069,0x0074,0x0069,0x006F,0x006E, + 0x0061,0x006C,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x00 } + , { 0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0074,0x0068,0x0072,0x0065,0x0065,0x0020,0x0063,0x0068,0x006F,0x0069,0x0063,0x0065,0x0073,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0064,0x0069,0x0074,0x0069,0x006F, + 0x006E,0x0061,0x006C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } + , { 0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0055,0x002B,0x0030,0x0030,0x0034,0x0030,0x002D,0x0055,0x002B,0x0030,0x0030,0x0035,0x0066,0x0020,0x0072,0x0061,0x006E,0x0067, + 0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0020,0x0027,0x005C,0x0063,0x0027,0x00 } + , { 0x0027,0x007B,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0062,0x0065,0x0066,0x006F,0x0072,0x0065,0x0020,0x0063,0x0061,0x0074,0x0065,0x0067,0x006F,0x0072,0x0079,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063, + 0x0074,0x0065,0x0072,0x00 } + , { 0x0070,0x0072,0x006F,0x0070,0x0065,0x0072,0x0074,0x0079,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0063,0x006C,0x006F,0x0073,0x0065,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027, + 0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x006D,0x0065,0x0074,0x0061,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0070,0x0072,0x006F,0x0070,0x0065,0x0072,0x0074,0x0079,0x00 } + , { 0x0050,0x004F,0x0053,0x0049,0x0058,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0063,0x006C,0x0061,0x0073,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0063,0x006C,0x006F,0x0073,0x0065, + 0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x003A,0x005D,0x0027,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063, + 0x0074,0x0065,0x0072,0x0020,0x0063,0x006C,0x0061,0x0073,0x0073,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0050,0x004F,0x0053,0x0049,0x0058,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0063,0x006C, + 0x0061,0x0073,0x0073,0x00 } + , { 0x0027,0x005D,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x003B,0x0020,0x0075, + 0x0073,0x0065,0x0020,0x0027,0x005C,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0073,0x0074,0x0065,0x0061,0x0064,0x00 } + , { 0x0027,0x005B,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0027,0x0029,0x0027,0x002C,0x0020,0x0027,0x002D,0x005B,0x0027,0x002C,0x0020,0x0027,0x002B,0x005B,0x0027,0x002C,0x0020,0x006F,0x0072,0x0020,0x0027,0x0026,0x005B,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x0065,0x006E,0x0064,0x0020,0x0063,0x006F,0x0064,0x0065,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020, + 0x0074,0x0068,0x0061,0x006E,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0063,0x006F,0x0064,0x0065,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0020,0x0068,0x0065,0x0078,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0027,0x005C,0x0020,0x0078,0x007B,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0063,0x006C,0x006F,0x0073,0x0065,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0020,0x0063,0x006F,0x0064,0x0065,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x00 } + , { 0x0061,0x006E,0x0063,0x0068,0x006F,0x0072,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0070,0x006F, + 0x0069,0x006E,0x0074,0x00 } + , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0065,0x0073,0x0063,0x0061,0x0070,0x0065,0x0020,0x0073, + 0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0066,0x0069,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x0064,0x0069,0x0067,0x0069,0x0074,0x0020, + 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0066,0x0069,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069, + 0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x006F,0x0072,0x0020,0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0020,0x0027,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0066,0x0069,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x0064,0x0069,0x0067,0x0069,0x0074,0x0020, + 0x006F,0x0072,0x0020,0x0027,0x007D,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0066,0x0069,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x006D,0x0069,0x006E,0x0020,0x0071,0x0075, + 0x0061,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x006D, + 0x0061,0x0078,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0074,0x0079,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0066,0x0069,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069, + 0x0074,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0076,0x0065,0x0072,0x0066,0x006C,0x006F,0x0077,0x00 } + , { 0x0058,0x004D,0x004C,0x0020,0x0053,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0077,0x0061,0x0073,0x0020,0x0073,0x0065,0x0065,0x006E,0x0020,0x0062,0x0075,0x0074,0x0020,0x0069,0x006E,0x0073,0x0074,0x0061,0x006C,0x006C,0x0065,0x0064,0x0020,0x0076, + 0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0020,0x0058,0x004D,0x004C,0x0020,0x0053,0x0063,0x0068,0x0065,0x006D, + 0x0061,0x00 } + , { 0x0053,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x0047,0x0072,0x006F,0x0075,0x0070,0x0043,0x006F,0x006D,0x0070,0x0061,0x0072,0x0061,0x0074,0x006F,0x0072,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x006F,0x0020, + 0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0072,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0020,0x006E,0x006F,0x006E,0x002D,0x006E,0x0065, + 0x0067,0x0061,0x0074,0x0069,0x0076,0x0065,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x00 } + , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0020,0x006E,0x006F,0x006E, + 0x002D,0x006E,0x0065,0x0067,0x0061,0x0074,0x0069,0x0076,0x0065,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x00 } + , { 0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0020,0x006E,0x006F,0x006E, + 0x002D,0x006E,0x0065,0x0067,0x0061,0x0074,0x0069,0x0076,0x0065,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x00 } + , { 0x0062,0x006F,0x0074,0x0068,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065, + 0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x00 } + , { 0x0062,0x006F,0x0074,0x0068,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065, + 0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074, + 0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0074,0x0061,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F, + 0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074, + 0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065, + 0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020, + 0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B, + 0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020, + 0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B, + 0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074, + 0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065, + 0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074,0x0065,0x0072,0x0020, + 0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B, + 0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061, + 0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020, + 0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074, + 0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B, + 0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0065,0x006E,0x0075,0x006D,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072,0x006F, + 0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020, + 0x006F,0x0066,0x0020,0x0027,0x0070,0x0072,0x0065,0x0073,0x0065,0x0072,0x0076,0x0065,0x0027,0x002C,0x0020,0x0027,0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x0027,0x002C,0x0020,0x006F,0x0072,0x0020,0x0027,0x0063,0x006F,0x006C,0x006C,0x0061, + 0x0070,0x0073,0x0065,0x0027,0x00 } + , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x0070,0x0072,0x0065,0x0073,0x0065,0x0072,0x0076,0x0065,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027, + 0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x0027,0x0020,0x0077,0x0068,0x0069,0x006C,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065, + 0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x0063,0x006F,0x006C,0x006C,0x0061,0x0070,0x0073,0x0065,0x0027,0x00 } + , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x0070,0x0072,0x0065,0x0073,0x0065,0x0072,0x0076,0x0065,0x0027,0x0020,0x0077,0x0068,0x0069,0x006C, + 0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x0072,0x0065, + 0x0070,0x006C,0x0061,0x0063,0x0065,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0020,0x0070, + 0x006F,0x0073,0x0069,0x0074,0x0069,0x0076,0x0065,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x00 } + , { 0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020, + 0x0061,0x0020,0x006E,0x006F,0x006E,0x002D,0x006E,0x0065,0x0067,0x0061,0x0074,0x0069,0x0076,0x0065,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x00 } + , { 0x0062,0x006F,0x0074,0x0068,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020, + 0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x00 } + , { 0x0062,0x006F,0x0074,0x0068,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020, + 0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x00 } + , { 0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065, + 0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D, + 0x0027,0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E, + 0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061, + 0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065, + 0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061, + 0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061, + 0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E, + 0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061, + 0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E, + 0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061, + 0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065, + 0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072, + 0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072, + 0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072, + 0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072, + 0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073, + 0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075, + 0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020, + 0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076, + 0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020, + 0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074, + 0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071, + 0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031, + 0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071, + 0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031, + 0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071, + 0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031, + 0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071, + 0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031, + 0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071,0x0075, + 0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020, + 0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065, + 0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C, + 0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020, + 0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C, + 0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020, + 0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071,0x0075,0x0061, + 0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069, + 0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0077,0x0068,0x0069,0x006C,0x0065,0x0020,0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0066,0x0069,0x0078, + 0x0065,0x0064,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x00 } + , { 0x006C,0x0069,0x0073,0x0074,0x0020,0x0069,0x0074,0x0065,0x006D,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x006D,0x0065,0x006D,0x0062,0x0065,0x0072,0x0054,0x0079,0x0070,0x0065,0x0073,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0073, + 0x0074,0x0065,0x0061,0x0064,0x0020,0x006F,0x0066,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0072,0x0065,0x0067,0x0075,0x006C,0x0061,0x0072,0x0020, + 0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0042,0x0061,0x0073,0x0065,0x0036,0x0034,0x002D,0x0065,0x006E,0x0063,0x006F,0x0064, + 0x0065,0x0064,0x0020,0x0062,0x0069,0x006E,0x0061,0x0072,0x0079,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0048,0x0065,0x0078,0x002D,0x0065,0x006E,0x0063,0x006F,0x0064,0x0065,0x0064,0x0020, + 0x0062,0x0069,0x006E,0x0061,0x0072,0x0079,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020, + 0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0032,0x007D,0x0027, + 0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020, + 0x0069,0x0073,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020, + 0x0027,0x007B,0x0032,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020, + 0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020, + 0x0027,0x007B,0x0032,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0069,0x006E,0x0020,0x0065,0x006E,0x0075,0x006D,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0020,0x0064,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020, + 0x0077,0x0068,0x0069,0x0063,0x0068,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C, + 0x0075,0x0065,0x0020,0x0027,0x007B,0x0032,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0069,0x0067,0x0069, + 0x0074,0x0073,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0066,0x0061,0x0063, + 0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0032,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071, + 0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031, + 0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078, + 0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072, + 0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020, + 0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072, + 0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020, + 0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0072,0x0065,0x0070,0x006C,0x0061, + 0x0063,0x0065,0x0064,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0063,0x006F,0x006C,0x006C,0x0061, + 0x0070,0x0073,0x0065,0x0064,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x004E,0x0043,0x004E,0x0061,0x006D,0x0065,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x007B,0x0031,0x007D,0x00 } + , { 0x0049,0x0044,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0045,0x004E,0x0054,0x0049,0x0054,0x0059,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0051,0x004E,0x0061,0x006D,0x0065,0x00 } + , { 0x004E,0x004F,0x0054,0x0041,0x0054,0x0049,0x004F,0x004E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0051,0x004E,0x0061,0x006D,0x0065,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0061,0x006E,0x0079,0x0020,0x006D,0x0065,0x006D,0x0062, + 0x0065,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0073,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0061,0x006E,0x0079,0x0055,0x0052,0x0049,0x00 } + , { 0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x00 } + , { 0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0073,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x00 } + , { 0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0064,0x0065,0x0063,0x0069,0x006D,0x0061,0x006C,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074, + 0x0065,0x0072,0x0065,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x00 } + , { 0x004E,0x0055,0x004C,0x004C,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0020,0x0055,0x0052,0x0049,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x004E,0x0055,0x004C,0x004C,0x002F,0x0065, + 0x006D,0x0070,0x0074,0x0079,0x0020,0x007B,0x0030,0x007D,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0062,0x0065,0x0020,0x0073,0x0065,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0020,0x0067,0x0065,0x006E, + 0x0065,0x0072,0x0069,0x0063,0x0020,0x0055,0x0052,0x0049,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x0073,0x0063,0x0061,0x0070,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063, + 0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0027,0x007B,0x0031,0x007D, + 0x0027,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x004E,0x0055,0x004C,0x004C,0x00 } + , { 0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0063,0x006F,0x006E,0x0066,0x006F,0x0072,0x006D,0x0061,0x006E,0x0074,0x0020,0x0074,0x006F,0x0020,0x007B,0x0030,0x007D,0x00 } + , { 0x006E,0x006F,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0065,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0055,0x0052,0x0049,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006D,0x0061,0x0079,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x0066,0x0020,0x0068, + 0x006F,0x0073,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006D,0x0061,0x0079,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x0066,0x0020,0x0070, + 0x0061,0x0074,0x0068,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x00 } + , { 0x0070,0x006F,0x0072,0x0074,0x0020,0x006E,0x0075,0x006D,0x0062,0x0065,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0028,0x0030, + 0x002C,0x0036,0x0035,0x0035,0x0033,0x0035,0x0029,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0077,0x0068,0x0069,0x006C,0x0065,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x0069,0x006E,0x0067,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x00 } + , { 0x0072,0x0065,0x0073,0x0075,0x006C,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0065,0x0074,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0043,0x006F,0x006D,0x0070,0x0061,0x0063,0x0074,0x0052,0x0061,0x006E,0x0067,0x0065,0x0073,0x00 } + , { 0x006D,0x0069,0x0073,0x006D,0x0061,0x0074,0x0063,0x0068,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x004D,0x0065,0x0072,0x0067,0x0065,0x0052,0x0061,0x006E,0x0067,0x0065,0x0073,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0053,0x0075,0x0062,0x0074,0x0072,0x0061,0x0063,0x0074,0x0052,0x0061,0x006E,0x0067,0x0065,0x0073,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0049,0x006E,0x0074,0x0065,0x0072,0x0073,0x0065,0x0063,0x0074,0x0052,0x0061,0x006E,0x0067,0x0065,0x0073,0x00 } + , { 0x0061,0x0072,0x0067,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0052,0x0061,0x006E,0x0067,0x0065,0x0054,0x006F,0x006B,0x0065,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0061,0x0074,0x0065,0x0067,0x006F,0x0072,0x0079,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006B,0x0065,0x0079,0x0077,0x006F,0x0072,0x0064,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x006E,0x0075,0x006D,0x0062,0x0065,0x0072,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068, + 0x0061,0x006E,0x0020,0x007A,0x0065,0x0072,0x006F,0x00 } + , { 0x006F,0x0070,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0074,0x006F,0x006B,0x0065,0x006E,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0067,0x0065,0x0074,0x0020,0x0052,0x0061,0x006E,0x0067,0x0065,0x0054,0x006F,0x006B,0x0065,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x0069,0x006E,0x0064,0x0065,0x0078,0x00 } + , { 0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x007A,0x0065,0x0072,0x006F,0x002D,0x006C, + 0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x00 } + , { 0x0065,0x006E,0x0061,0x0062,0x006C,0x0069,0x006E,0x0067,0x0020,0x004E,0x0045,0x004C,0x0020,0x006F,0x0070,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0062,0x0065,0x0020,0x0064,0x006F,0x006E, + 0x0065,0x0020,0x006F,0x006E,0x0063,0x0065,0x0020,0x0070,0x0065,0x0072,0x0020,0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x00 } + , { 0x006F,0x0075,0x0074,0x0020,0x006F,0x0066,0x0020,0x006D,0x0065,0x006D,0x006F,0x0072,0x0079,0x00 } + , { 0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } + , { 0x0073,0x0065,0x006C,0x0065,0x0063,0x0074,0x006F,0x0072,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0073,0x0065,0x006C,0x0065,0x0063,0x0074,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0027,0x007C,0x0027,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0065,0x0067,0x0069,0x006E,0x006E,0x0069,0x006E,0x0067,0x0020,0x006F,0x0066,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065, + 0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x00 } + , { 0x0027,0x007C,0x007C,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C, + 0x00 } + , { 0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070, + 0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0074,0x006F,0x006B,0x0065,0x006E,0x003B,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0071,0x006E, + 0x0061,0x006D,0x0065,0x002C,0x0020,0x0061,0x006E,0x0079,0x002C,0x0020,0x006F,0x0072,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0074,0x0065,0x0073,0x0074,0x00 } + , { 0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069, + 0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065, + 0x0020,0x0055,0x0052,0x0049,0x00 } + , { 0x0027,0x003A,0x003A,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C, + 0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0074,0x0065,0x0070,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0027,0x0063,0x0068,0x0069,0x006C,0x0064,0x0027,0x0020,0x0074,0x006F,0x006B, + 0x0065,0x006E,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0074,0x0065,0x0070,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0027,0x002F,0x002F,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061, + 0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0074,0x0065,0x0070,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0027,0x002F,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074, + 0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0027,0x002F,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027,0x002F,0x002F,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068, + 0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0027,0x002F,0x002F,0x0027,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027,0x002E,0x0027,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020, + 0x0062,0x0065,0x0067,0x0069,0x006E,0x006E,0x0069,0x006E,0x0067,0x0020,0x006F,0x0066,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0027,0x002F,0x0027,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0065,0x0067,0x0069,0x006E,0x006E,0x0069,0x006E,0x0067,0x0020,0x006F,0x0066,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065, + 0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x00 } + , { 0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0073,0x0065,0x006C,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0069, + 0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0065,0x006E,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x007C, + 0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078, + 0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0075,0x006E,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0074,0x006F,0x006B,0x0065,0x006E,0x00 } + , { 0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020, + 0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0064,0x0061,0x0074,0x0065,0x0054,0x0069,0x006D,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0027,0x0054,0x0027,0x0020,0x0073,0x0065,0x0070,0x0061,0x0072,0x0061,0x0074,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0064,0x0061,0x0074,0x0065,0x0054,0x0069,0x006D,0x0065,0x0020,0x0076, + 0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x0044,0x0061,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x004D,0x006F,0x006E,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x004D,0x006F,0x006E,0x0074,0x0068,0x0044,0x0061,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0077,0x0069,0x0074, + 0x0068,0x0020,0x0027,0x002D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0050,0x0027,0x00 } + , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0027, + 0x0050,0x0027,0x00 } + , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0027,0x002D, + 0x0027,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0061,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x0066,0x0069,0x0072,0x0073,0x0074,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x00 } + , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C, + 0x0069,0x0064,0x0020,0x0074,0x0065,0x0078,0x0074,0x0020,0x0062,0x0065,0x0066,0x006F,0x0072,0x0065,0x0020,0x0027,0x0054,0x0027,0x00 } + , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x006F,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x0063,0x006F, + 0x006D,0x0070,0x006F,0x006E,0x0065,0x006E,0x0074,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027,0x0054,0x0027,0x00 } + , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0074,0x0020,0x006C, + 0x0065,0x0061,0x0073,0x0074,0x0020,0x006F,0x006E,0x0065,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x006E,0x0065,0x006E,0x0074,0x00 } + , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0074,0x0020,0x006C, + 0x0065,0x0061,0x0073,0x0074,0x0020,0x006F,0x006E,0x0065,0x0020,0x0064,0x0069,0x0067,0x0069,0x0074,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027,0x002E,0x0027,0x00 } + , { 0x0069,0x006E,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0064,0x0061,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0064,0x0061,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0073,0x0065,0x0063,0x006F,0x006E,0x0064,0x0073,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027, + 0x002E,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0067,0x0059,0x0065,0x0061,0x0072,0x004D,0x006F,0x006E,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x0059,0x0065,0x0061,0x0072,0x004D,0x006F,0x006E,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x0059,0x0065,0x0061,0x0072,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0079,0x0065,0x0061,0x0072,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0020,0x0027,0x0043,0x0043,0x0059,0x0059,0x0027, + 0x0020,0x0066,0x006F,0x0072,0x006D,0x0061,0x0074,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006C,0x0065,0x0061,0x0064,0x0069,0x006E,0x0067,0x0020,0x007A,0x0065,0x0072,0x006F,0x0020,0x0069,0x006E,0x0020,0x0067,0x0059,0x0065,0x0061,0x0072,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065, + 0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006D,0x006F,0x006E,0x0074,0x0068,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x006E,0x0065,0x006E,0x0074,0x0020,0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0020,0x0067,0x0059,0x0065,0x0061,0x0072,0x004D,0x006F,0x006E, + 0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0074,0x0069,0x006D,0x0065,0x0020,0x007A,0x006F,0x006E,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0074,0x0065,0x0078,0x0074,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027,0x005A,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x007A, + 0x006F,0x006E,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x007A,0x006F,0x006E,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0079,0x0065,0x0061,0x0072,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006D,0x006F,0x006E,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E,0x0020,0x0031, + 0x0020,0x0061,0x006E,0x0064,0x0020,0x0031,0x0032,0x00 } + , { 0x0064,0x0061,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E,0x0020,0x0031,0x0020,0x0061, + 0x006E,0x0064,0x0020,0x007B,0x0031,0x007D,0x00 } + , { 0x0068,0x006F,0x0075,0x0072,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E,0x0020,0x0030, + 0x0020,0x0061,0x006E,0x0064,0x0020,0x0032,0x0033,0x00 } + , { 0x006D,0x0069,0x006E,0x0075,0x0074,0x0065,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E, + 0x0020,0x0030,0x0020,0x0061,0x006E,0x0064,0x0020,0x0035,0x0039,0x00 } + , { 0x0073,0x0065,0x0063,0x006F,0x006E,0x0064,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E, + 0x0020,0x0030,0x0020,0x0061,0x006E,0x0064,0x0020,0x0036,0x0030,0x00 } + , { 0x006D,0x0069,0x006E,0x0075,0x0074,0x0065,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E, + 0x0020,0x0030,0x0020,0x0061,0x006E,0x0064,0x0020,0x0035,0x0039,0x00 } + , { 0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065, + 0x0020,0x0068,0x0061,0x0073,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0077,0x0068,0x0069,0x006C,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070, + 0x0074,0x0079,0x00 } + , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061, + 0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006F,0x0063,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069, + 0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0065, + 0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0027,0x0073,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x002F,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069, + 0x006F,0x006E,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x006F,0x0066,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E, + 0x0064,0x0069,0x006E,0x0067,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x0069,0x006C,0x006C,0x0061,0x0062,0x006C,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0072,0x0065, + 0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0077,0x0068,0x0069,0x006C,0x0065,0x0020,0x0069,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x006E,0x002D,0x006E,0x0069,0x006C,0x006C,0x0061,0x0062,0x006C,0x0065,0x0020, + 0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0065,0x0069,0x0074,0x0068,0x0065,0x0072,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006F, + 0x0072,0x0020,0x0069,0x0073,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x0061,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0063,0x006F,0x006D, + 0x0070,0x0061,0x0072,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074, + 0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0064,0x0069,0x0073,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x0066,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E, + 0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0061,0x0072,0x0065,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0073,0x0075,0x0070,0x0065,0x0072,0x0073,0x0065,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x006F,0x0073,0x0065, + 0x0020,0x0066,0x006F,0x0072,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062, + 0x0061,0x0073,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F, + 0x0074,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067, + 0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0066,0x0065,0x0077,0x0065,0x0072,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F, + 0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0073,0x0020,0x0063,0x006F,0x006D,0x0070,0x0061,0x0072,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067, + 0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069, + 0x006E,0x0074,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F, + 0x006E,0x0064,0x0069,0x006E,0x0067,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006F,0x0063,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020, + 0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x006F,0x0063,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0072,0x0061,0x006E, + 0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } + , { 0x006E,0x006F,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0066,0x0075,0x006E,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x006D,0x0061,0x0070,0x0070,0x0069,0x006E,0x0067,0x0020,0x0062,0x0065,0x0074,0x0077, + 0x0065,0x0065,0x006E,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0073,0x00 } + , { 0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0061,0x006E,0x0079,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063, + 0x006C,0x0065,0x00 } + , { 0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073, + 0x0069,0x0074,0x006F,0x0072,0x00 } + , { 0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0063,0x0068,0x006F,0x0069,0x0063,0x0065,0x0020,0x0063,0x006F,0x006D, + 0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x00 } + , { 0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0020,0x0063, + 0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x00 } + , { 0x006F,0x0063,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074, + 0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061, + 0x0072,0x0064,0x0027,0x0073,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x00 } + , { 0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x0020,0x006F,0x0066,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070, + 0x006F,0x006E,0x0064,0x0069,0x006E,0x0067,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006F,0x0063,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020, + 0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0027,0x0073,0x0020,0x0072,0x0061,0x006E,0x0067, + 0x0065,0x00 } + , { 0x006E,0x006F,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0066,0x0075,0x006E,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x006D,0x0061,0x0070,0x0070,0x0069,0x006E,0x0067,0x0020,0x0062,0x0065,0x0074,0x0077, + 0x0065,0x0065,0x006E,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0073,0x00 } + , { 0x006E,0x006F,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0066,0x0075,0x006E,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x006D,0x0061,0x0070,0x0070,0x0069,0x006E,0x0067,0x0020,0x0062,0x0065,0x0074,0x0077, + 0x0065,0x0065,0x006E,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0073,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x004E,0x006F,0x0064,0x0065,0x0049,0x0044,0x004D,0x0061,0x0070,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x006C,0x0061,0x0072,0x0067,0x0065,0x0073,0x0074,0x0020,0x0061,0x0076,0x0061,0x0069,0x006C,0x0061,0x0062,0x006C,0x0065, + 0x0020,0x0073,0x0069,0x007A,0x0065,0x00 } + , { 0x0050,0x0072,0x006F,0x0074,0x006F,0x0054,0x0079,0x0070,0x0065,0x0020,0x0068,0x0061,0x0073,0x0020,0x004E,0x0055,0x004C,0x004C,0x0020,0x0063,0x006C,0x0061,0x0073,0x0073,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } + , { 0x0050,0x0072,0x006F,0x0074,0x006F,0x0054,0x0079,0x0070,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0073, + 0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0050,0x0072,0x006F,0x0074,0x006F,0x0054,0x0079,0x0070,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0073,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0065, + 0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0049,0x006E,0x0070,0x0075,0x0074,0x0053,0x0074,0x0072,0x0065,0x0061,0x006D,0x0020,0x0072,0x0065,0x0061,0x0064,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E, + 0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0049,0x006E,0x0070,0x0075,0x0074,0x0053,0x0074,0x0072,0x0065,0x0061,0x006D,0x0020,0x0072,0x0065,0x0061,0x0064,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0062,0x0065,0x0079,0x006F,0x006E,0x0064,0x0020,0x0061,0x0076, + 0x0061,0x0069,0x006C,0x0061,0x0062,0x006C,0x0065,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0073,0x0074,0x006F,0x0072,0x0069,0x006E,0x0067,0x0020,0x0076,0x0069,0x006F,0x006C,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0073,0x0074,0x006F,0x0072,0x0065,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0076,0x0069,0x006F,0x006C,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x002C,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x00 } + , { 0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0074,0x0061,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x006C,0x006F,0x0061,0x0064,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020, + 0x0075,0x0070,0x0070,0x0065,0x0072,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0061,0x0072,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x006C,0x006F,0x0061,0x0064,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0074,0x0061,0x006C,0x006C,0x0079, + 0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0063,0x006F,0x0075,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x006C,0x006F,0x0061,0x0064,0x0069,0x006E,0x0067,0x0020,0x0076,0x0069,0x006F,0x006C,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x006C,0x006F,0x0061,0x0064,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0076,0x0069,0x006F,0x006C,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x002C,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006C,0x0061,0x0073,0x0073,0x0020,0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x002C,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0065,0x0063,0x006B,0x0046,0x0069,0x006C,0x006C,0x0042,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0065,0x0063,0x006B,0x0046,0x006C,0x0075,0x0073,0x0068,0x0042,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027, + 0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x004E,0x0055,0x004C,0x004C,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x00 } + , { 0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x004F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0066,0x0061,0x0069,0x006C,0x0073,0x00 } + , { 0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0063,0x006F,0x0075,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x0075,0x0070,0x0070,0x0065,0x0072,0x0020,0x0062,0x006F, + 0x0075,0x006E,0x0064,0x0061,0x0072,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0073,0x0074,0x006F,0x0072,0x0065,0x0072,0x0020,0x006C,0x0065,0x0076,0x0065,0x006C,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x006C, + 0x006F,0x0061,0x0064,0x0065,0x0072,0x0020,0x006C,0x0065,0x0076,0x0065,0x006C,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0069,0x006E,0x0020,0x0051,0x004E,0x0061,0x006D,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x00 } + , { 0x0046,0x005F,0x0045,0x006E,0x0064,0x00 } + +}; +const unsigned int gXMLExceptArraySize = 369; + +const XMLCh gXMLDOMMsgArray[][128] = +{ + { 0x0046,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } + , { 0x0064,0x0075,0x006D,0x006D,0x0079,0x00 } + , { 0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x006F,0x0072,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x0065,0x0067,0x0061,0x0074,0x0069,0x0076,0x0065,0x002C,0x0020,0x006F,0x0072,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074, + 0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0065,0x0078,0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x0069, + 0x0074,0x0020,0x0069,0x006E,0x0074,0x006F,0x0020,0x0044,0x004F,0x004D,0x0053,0x0074,0x0072,0x0069,0x006E,0x0067,0x00 } + , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x0069,0x006E,0x0073,0x0065,0x0072,0x0074,0x0020,0x0061,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0077,0x0068, + 0x0065,0x0072,0x0065,0x0020,0x0069,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0065,0x0072,0x006D,0x0069,0x0074,0x0074,0x0065,0x0064,0x00 } + , { 0x006E,0x006F,0x0064,0x0065,0x0020,0x0069,0x0073,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0061,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E, + 0x0074,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x0064,0x0020,0x0069,0x0074,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006F,0x0072,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0058,0x004D,0x004C,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x00 } + , { 0x006E,0x006F,0x0064,0x0065,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0020,0x0073,0x0074,0x006F,0x0072,0x0069,0x006E,0x0067,0x0020,0x0064,0x0061,0x0074,0x0061,0x00 } + , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x006D,0x006F,0x0064,0x0069,0x0066,0x0079,0x0020,0x0061,0x006E,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074, + 0x0020,0x0077,0x0068,0x0065,0x0072,0x0065,0x0020,0x006D,0x006F,0x0064,0x0069,0x0066,0x0069,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065, + 0x0064,0x00 } + , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0061,0x0020,0x006E,0x006F,0x0064,0x0065, + 0x0020,0x0069,0x006E,0x0020,0x0061,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x0078,0x0074,0x0020,0x0077,0x0068,0x0065,0x0072,0x0065,0x0020,0x0069,0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x0078,0x0069, + 0x0073,0x0074,0x00 } + , { 0x0069,0x006D,0x0070,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0020,0x0074,0x0068,0x0065, + 0x0020,0x0072,0x0065,0x0071,0x0075,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x006F,0x0072,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074, + 0x0069,0x006F,0x006E,0x00 } + , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x0061,0x0064,0x0064,0x0020,0x0061,0x006E,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065, + 0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0069,0x006E,0x0020,0x0075,0x0073,0x0065,0x0020,0x0065,0x006C,0x0073,0x0065,0x0077,0x0068,0x0065,0x0072,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x0075,0x0073,0x0065,0x0020,0x0061,0x006E,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0074,0x0068, + 0x0061,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006F,0x0072,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0020,0x006C,0x006F,0x006E,0x0067,0x0065,0x0072,0x0020,0x0075,0x0073,0x0061,0x0062,0x006C,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006F,0x0072,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x00 } + , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x006D,0x006F,0x0064,0x0069,0x0066,0x0079,0x0020,0x0074,0x0068,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020, + 0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0075,0x006E,0x0064,0x0065,0x0072,0x006C,0x0079,0x0069,0x006E,0x0067,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x00 } + , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x0020,0x006F,0x0072,0x0020,0x0063,0x0068,0x0061,0x006E,0x0067,0x0065, + 0x0020,0x0061,0x006E,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0069,0x006E,0x0020,0x0061,0x0020,0x0077,0x0061,0x0079,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0063,0x006F,0x0072,0x0072, + 0x0065,0x0063,0x0074,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0072,0x0065,0x0073,0x0070,0x0065,0x0063,0x0074,0x0020,0x0074,0x006F,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x00 } + , { 0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x006F,0x0072,0x0020,0x0072,0x0065,0x0071,0x0075,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073, + 0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0074,0x0068,0x0065,0x0020,0x0075,0x006E,0x0064,0x0065,0x0072,0x006C,0x0079,0x0069,0x006E,0x0067,0x0020,0x006F,0x0062, + 0x006A,0x0065,0x0063,0x0074,0x00 } + , { 0x0063,0x0061,0x006C,0x006C,0x0020,0x0074,0x006F,0x0020,0x0061,0x0020,0x006D,0x0065,0x0074,0x0068,0x006F,0x0064,0x0020,0x0073,0x0075,0x0063,0x0068,0x0020,0x0061,0x0073,0x0020,0x0069,0x006E,0x0073,0x0065,0x0072,0x0074,0x0042,0x0065,0x0066,0x006F, + 0x0072,0x0065,0x0020,0x006F,0x0072,0x0020,0x0072,0x0065,0x006D,0x006F,0x0076,0x0065,0x0043,0x0068,0x0069,0x006C,0x0064,0x0020,0x0077,0x006F,0x0075,0x006C,0x0064,0x0020,0x006D,0x0061,0x006B,0x0065,0x0020,0x0074,0x0068,0x0065,0x0020,0x006E,0x006F, + 0x0064,0x0065,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0072,0x0065,0x0073,0x0070,0x0065,0x0063,0x0074,0x0020,0x0074,0x006F,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074, + 0x0020,0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x006E,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0063,0x006F,0x006D,0x0070,0x0061,0x0074,0x0069,0x0062,0x006C,0x0065,0x0020,0x0077, + 0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0070,0x0061,0x0072,0x0061,0x006D,0x0065, + 0x0074,0x0065,0x0072,0x0020,0x0061,0x0073,0x0073,0x006F,0x0063,0x0069,0x0061,0x0074,0x0065,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x00 } + , { 0x0064,0x0075,0x006D,0x006D,0x0079,0x00 } + , { 0x0062,0x006F,0x0075,0x006E,0x0064,0x0061,0x0072,0x0079,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0073,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x0064,0x006F,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D, + 0x0065,0x0065,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0063,0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0065,0x0072,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0061,0x0072,0x0079,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074, + 0x0020,0x0069,0x0073,0x0020,0x0073,0x0065,0x0074,0x0020,0x0074,0x006F,0x0020,0x0061,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x006E,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x0079,0x0070, + 0x0065,0x0020,0x006F,0x0072,0x0020,0x0074,0x006F,0x0020,0x0061,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0061,0x006E,0x0020,0x0061,0x006E,0x0063,0x0065,0x0073,0x0074,0x006F,0x0072,0x0020,0x006F,0x0066,0x0020, + 0x0061,0x006E,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0064,0x0075,0x006D,0x006D,0x0079,0x00 } + , { 0x0066,0x0061,0x0069,0x006C,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x006C,0x006F,0x0061,0x0064,0x0020,0x0061,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x006F,0x0072,0x0020,0x0061,0x006E,0x0020,0x0058,0x004D,0x004C, + 0x0020,0x0066,0x0072,0x0061,0x0067,0x006D,0x0065,0x006E,0x0074,0x0020,0x0075,0x0073,0x0069,0x006E,0x0067,0x0020,0x0044,0x004F,0x004D,0x004C,0x0053,0x0050,0x0061,0x0072,0x0073,0x0065,0x0072,0x00 } + , { 0x0066,0x0061,0x0069,0x006C,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x0073,0x0065,0x0072,0x0069,0x0061,0x006C,0x0069,0x007A,0x0065,0x0020,0x0061,0x0020,0x0044,0x004F,0x004D,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0075,0x0073,0x0069,0x006E, + 0x0067,0x0020,0x0044,0x004F,0x004D,0x004C,0x0053,0x0053,0x0065,0x0072,0x0069,0x0061,0x006C,0x0069,0x007A,0x0065,0x0072,0x00 } + , { 0x0064,0x0075,0x006D,0x006D,0x0079,0x00 } + , { 0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0068,0x0061,0x0073,0x0020,0x0069,0x006E,0x0063,0x006F,0x0072,0x0072,0x0065,0x0063,0x0074,0x0020,0x0073,0x0079,0x006E,0x0074,0x0061,0x0078,0x0020,0x006F,0x0072,0x0020, + 0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0073,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0066,0x0065,0x0061,0x0074,0x0075,0x0072,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074, + 0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0074,0x0068,0x0065,0x0020,0x0058,0x004D,0x004C,0x0020,0x0053,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x00 } + , { 0x0072,0x0065,0x0071,0x0075,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x0072,0x0065,0x0073,0x0075,0x006C,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064, + 0x00 } + , { 0x006E,0x006F,0x0020,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0074,0x0020,0x0072,0x0065,0x0073,0x0075,0x006C,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0072,0x0065,0x0073,0x0075,0x006C,0x0074,0x0020,0x006F,0x0062,0x006A, + 0x0065,0x0063,0x0074,0x00 } + , { 0x006E,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } + , { 0x0075,0x006E,0x0072,0x0065,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0061,0x0062,0x006C,0x0065,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x00 } + , { 0x0075,0x006E,0x0072,0x0065,0x0063,0x006F,0x0067,0x006E,0x0069,0x007A,0x0065,0x0064,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0070,0x0061,0x0072,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0020,0x0070,0x0072,0x006F,0x0067,0x0072,0x0065,0x0073,0x0073,0x00 } + , { 0x0070,0x0061,0x0072,0x0073,0x0069,0x006E,0x0067,0x0020,0x0061,0x0062,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0074,0x0068,0x0065,0x0020,0x0075,0x0073,0x0065,0x0072,0x00 } + , { 0x0070,0x0061,0x0072,0x0073,0x0069,0x006E,0x0067,0x0020,0x0066,0x0061,0x0069,0x006C,0x0065,0x0064,0x00 } + , { 0x0046,0x005F,0x0045,0x006E,0x0064,0x00 } + +}; +const unsigned int gXMLDOMMsgArraySize = 41; + +XERCES_CPP_NAMESPACE_END + diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/MutexManagers/StdMutexMgr.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/MutexManagers/StdMutexMgr.hpp new file mode 100644 index 000000000000..00c300df5198 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/MutexManagers/StdMutexMgr.hpp @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_STDMUTEXMGR_HPP) +#define XERCESC_INCLUDE_GUARD_STDMUTEXMGR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Std mutex implementation. +class StdMutexMgr : public XMLMutexMgr +{ + public: + StdMutexMgr(); + virtual ~StdMutexMgr(); + + // Mutex operations + virtual XMLMutexHandle create(MemoryManager* const manager); + virtual void destroy(XMLMutexHandle mtx, MemoryManager* const manager); + virtual void lock(XMLMutexHandle mtx); + virtual void unlock(XMLMutexHandle mtx); +}; + +XERCES_CPP_NAMESPACE_END + + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/Mutexes.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/Mutexes.hpp new file mode 100644 index 000000000000..50d981753fe2 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/Mutexes.hpp @@ -0,0 +1,108 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_MUTEXES_HPP) +#define XERCESC_INCLUDE_GUARD_MUTEXES_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLMutex : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLMutex(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~XMLMutex(); + + + // ----------------------------------------------------------------------- + // Lock control methods + // ----------------------------------------------------------------------- + void lock(); + void unlock(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLMutex(const XMLMutex&); + XMLMutex& operator=(const XMLMutex&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fHandle + // The raw mutex handle. Its just a void pointer so we do not + // pass judgement on its value at all. We just pass it into the + // platform utilities methods which knows what's really in it. + // fManager + // The MemoryManager that this XMLMutex was initialized with. + // ----------------------------------------------------------------------- + void* fHandle; + MemoryManager* fManager; + + + // ----------------------------------------------------------------------- + // Sun PlatformUtils needs access to fHandle to initialize the + // atomicOpsMutex at startup. + // ----------------------------------------------------------------------- + friend class XMLPlatformUtils; +}; + + +class XMLUTIL_EXPORT XMLMutexLock : public XMemory +{ + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- +public: + XMLMutexLock(XMLMutex* const toLock); + ~XMLMutexLock(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLMutexLock(); + XMLMutexLock(const XMLMutexLock&); + XMLMutexLock& operator=(const XMLMutexLock&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fToLock + // The mutex object that we are locking + // ----------------------------------------------------------------------- + XMLMutex* fToLock; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/NameIdPool.c b/src/libs/xerces-c/mingw/include/xercesc/util/NameIdPool.c new file mode 100644 index 000000000000..022d154525d1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/NameIdPool.c @@ -0,0 +1,284 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// NameIdPool: Constructors and Destructor +// --------------------------------------------------------------------------- +template +NameIdPool::NameIdPool( const XMLSize_t hashModulus + , const XMLSize_t initSize + , MemoryManager* const manager) : + fMemoryManager(manager) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) + , fBucketList(hashModulus, manager) +{ + if (!hashModulus) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_ZeroModulus, fMemoryManager); + + // + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + fIdPtrs = (TElem**) fMemoryManager->allocate + ( + fIdPtrsCount * sizeof(TElem*) + ); + fIdPtrs[0] = 0; +} + +template NameIdPool::~NameIdPool() +{ + // + // Delete the id pointers list. The stuff it points to will be cleaned + // up when we clean the bucket lists. + // + fMemoryManager->deallocate(fIdPtrs); //delete [] fIdPtrs; +} + + +// --------------------------------------------------------------------------- +// NameIdPool: Element management +// --------------------------------------------------------------------------- +template +inline bool NameIdPool:: +containsKey(const XMLCh* const key) const +{ + if (fIdCounter == 0) return false; + return fBucketList.containsKey(key); +} + + +template void NameIdPool::removeAll() +{ + if (fIdCounter == 0) return; + + fBucketList.removeAll(); + + // Reset the id counter + fIdCounter = 0; +} + + +// --------------------------------------------------------------------------- +// NameIdPool: Getters +// --------------------------------------------------------------------------- +template +inline TElem* NameIdPool:: +getByKey(const XMLCh* const key) +{ + if (fIdCounter == 0) return 0; + return fBucketList.get(key); +} + +template +inline const TElem* NameIdPool:: +getByKey(const XMLCh* const key) const +{ + if (fIdCounter == 0) return 0; + return fBucketList.get(key); +} + +template +inline TElem* NameIdPool:: +getById(const XMLSize_t elemId) +{ + // If its either zero or beyond our current id, its an error + if (!elemId || (elemId > fIdCounter)) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); + + return fIdPtrs[elemId]; +} + +template +inline const TElem* NameIdPool:: +getById(const XMLSize_t elemId) const +{ + // If its either zero or beyond our current id, its an error + if (!elemId || (elemId > fIdCounter)) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); + + return fIdPtrs[elemId]; +} + +template +inline MemoryManager* NameIdPool::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// NameIdPool: Setters +// --------------------------------------------------------------------------- +template +XMLSize_t NameIdPool::put(TElem* const elemToAdopt) +{ + // First see if the key exists already. If so, its an error + if(containsKey(elemToAdopt->getKey())) + { + ThrowXMLwithMemMgr1 + ( + IllegalArgumentException + , XMLExcepts::Pool_ElemAlreadyExists + , elemToAdopt->getKey() + , fMemoryManager + ); + } + + fBucketList.put((void*)elemToAdopt->getKey(), elemToAdopt); + + // + // Give this new one the next available id and add to the pointer list. + // Expand the list if that is now required. + // + if (fIdCounter + 1 == fIdPtrsCount) + { + // Create a new count 1.5 times larger and allocate a new array + XMLSize_t newCount = (XMLSize_t)(fIdPtrsCount * 1.5); + TElem** newArray = (TElem**) fMemoryManager->allocate + ( + newCount * sizeof(TElem*) + ); //new TElem*[newCount]; + + // Copy over the old contents to the new array + memcpy(newArray, fIdPtrs, fIdPtrsCount * sizeof(TElem*)); + + // Ok, toss the old array and store the new data + fMemoryManager->deallocate(fIdPtrs); //delete [] fIdPtrs; + fIdPtrs = newArray; + fIdPtrsCount = newCount; + } + const XMLSize_t retId = ++fIdCounter; + fIdPtrs[retId] = elemToAdopt; + + // Set the id on the passed element + elemToAdopt->setId(retId); + + // Return the id that we gave to this element + return retId; +} + + +// --------------------------------------------------------------------------- +// NameIdPoolEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template NameIdPoolEnumerator:: +NameIdPoolEnumerator(NameIdPool* const toEnum + , MemoryManager* const manager) : + + XMLEnumerator() + , fCurIndex(0) + , fToEnum(toEnum) + , fMemoryManager(manager) +{ + Reset(); +} + +template NameIdPoolEnumerator:: +NameIdPoolEnumerator(const NameIdPoolEnumerator& toCopy) : + XMLEnumerator(toCopy) + , XMemory(toCopy) + , fCurIndex(toCopy.fCurIndex) + , fToEnum(toCopy.fToEnum) + , fMemoryManager(toCopy.fMemoryManager) +{ +} + +template NameIdPoolEnumerator::~NameIdPoolEnumerator() +{ + // We don't own the pool being enumerated, so no cleanup required +} + + +// --------------------------------------------------------------------------- +// NameIdPoolEnumerator: Public operators +// --------------------------------------------------------------------------- +template NameIdPoolEnumerator& NameIdPoolEnumerator:: +operator=(const NameIdPoolEnumerator& toAssign) +{ + if (this == &toAssign) + return *this; + fMemoryManager = toAssign.fMemoryManager; + fCurIndex = toAssign.fCurIndex; + fToEnum = toAssign.fToEnum; + return *this; +} + +// --------------------------------------------------------------------------- +// NameIdPoolEnumerator: Enum interface +// --------------------------------------------------------------------------- +template bool NameIdPoolEnumerator:: +hasMoreElements() const +{ + // If our index is zero or past the end, then we are done + if (!fCurIndex || (fCurIndex > fToEnum->fIdCounter)) + return false; + return true; +} + +template TElem& NameIdPoolEnumerator::nextElement() +{ + // If our index is zero or past the end, then we are done + if (!fCurIndex || (fCurIndex > fToEnum->fIdCounter)) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // Return the current element and bump the index + return *fToEnum->fIdPtrs[fCurIndex++]; +} + + +template void NameIdPoolEnumerator::Reset() +{ + // + // Find the next available bucket element in the pool. We use the id + // array since its very easy to enumerator through by just maintaining + // an index. If the id counter is zero, then its empty and we leave the + // current index to zero. + // + fCurIndex = fToEnum->fIdCounter ? 1:0; +} + +template XMLSize_t NameIdPoolEnumerator::size() const +{ + return fToEnum->fIdCounter; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/NameIdPool.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/NameIdPool.hpp new file mode 100644 index 000000000000..542b832e69b7 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/NameIdPool.hpp @@ -0,0 +1,207 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NAMEIDPOOL_HPP) +#define XERCESC_INCLUDE_GUARD_NAMEIDPOOL_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// Forward declare the enumerator so he can be our friend. Can you say +// friend? Sure... +// +template class NameIdPoolEnumerator; + + +// +// This class is provided to serve as the basis of many of the pools that +// are used by the scanner and validators. They often need to be able to +// store objects in such a way that they can be quickly accessed by the +// name field of the object, and such that each element added is assigned +// a unique id via which it can be accessed almost instantly. +// +// Object names are enforced as being unique, since that's what all these +// pools require. So its effectively a hash table in conjunction with an +// array of references into the hash table by id. Ids are assigned such that +// id N can be used to get the Nth element from the array of references. +// This provides very fast access by id. +// +// The way these pools are used, elements are never removed except when the +// whole thing is flushed. This makes it very easy to maintain the two +// access methods in sync. +// +// For efficiency reasons, the id reference array is never flushed until +// the dtor. This way, it does not have to be regrown every time its reused. +// +// All elements are assumed to be owned by the pool! +// + +template class NameIdPool : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + NameIdPool + ( + const XMLSize_t hashModulus + , const XMLSize_t initSize = 128 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~NameIdPool(); + + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + bool containsKey(const XMLCh* const key) const; + void removeAll(); + + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + TElem* getByKey(const XMLCh* const key); + const TElem* getByKey(const XMLCh* const key) const; + TElem* getById(const XMLSize_t elemId); + const TElem* getById(const XMLSize_t elemId) const; + + MemoryManager* getMemoryManager() const; + // ----------------------------------------------------------------------- + // Putters + // + // Dups are not allowed and cause an IllegalArgumentException. The id + // of the new element is returned. + // ----------------------------------------------------------------------- + XMLSize_t put(TElem* const valueToAdopt); + + +protected : + // ----------------------------------------------------------------------- + // Declare the enumerator our friend so he can see our members + // ----------------------------------------------------------------------- + friend class NameIdPoolEnumerator; + + +private : + // ----------------------------------------------------------------------- + // Unused constructors and operators + // ----------------------------------------------------------------------- + NameIdPool(const NameIdPool&); + NameIdPool& operator=(const NameIdPool&); + + // ----------------------------------------------------------------------- + // Data members + // + // fBucketList + // This is the hash table that contains the values. + // + // fIdPtrs + // fIdPtrsCount + // This is the array of pointers to the bucket elements in order of + // their assigned ids. So taking id N and referencing this array + // gives you the element with that id. The count field indicates + // the current size of this list. When fIdCounter+1 reaches this + // value the list must be expanded. + // + // fIdCounter + // This is used to give out unique ids to added elements. It starts + // at zero (which means empty), and is bumped up for each newly added + // element. So the first element is 1, the next is 2, etc... This + // means that this value is set to the top index of the fIdPtrs array. + // + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + TElem** fIdPtrs; + XMLSize_t fIdPtrsCount; + XMLSize_t fIdCounter; + RefHashTableOf fBucketList; +}; + + +// +// An enumerator for a name id pool. It derives from the basic enumerator +// class, so that pools can be generically enumerated. +// +template class NameIdPoolEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + NameIdPoolEnumerator + ( + NameIdPool* const toEnum + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + NameIdPoolEnumerator + ( + const NameIdPoolEnumerator& toCopy + ); + + virtual ~NameIdPoolEnumerator(); + + // ----------------------------------------------------------------------- + // Public operators + // ----------------------------------------------------------------------- + NameIdPoolEnumerator& operator= + ( + const NameIdPoolEnumerator& toAssign + ); + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TElem& nextElement(); + void Reset(); + XMLSize_t size() const; + +private : + // ----------------------------------------------------------------------- + // Data Members + // + // fCurIndex + // This is the current index into the pool's id mapping array. This + // is now we enumerate it. + // + // fToEnum + // The name id pool that is being enumerated. + // ----------------------------------------------------------------------- + XMLSize_t fCurIndex; + NameIdPool* fToEnum; + MemoryManager* fMemoryManager; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/NoSuchElementException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/NoSuchElementException.hpp new file mode 100644 index 000000000000..b4a5da639a1d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/NoSuchElementException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NOSUCHELEMENTEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_NOSUCHELEMENTEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(NoSuchElementException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/NullPointerException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/NullPointerException.hpp new file mode 100644 index 000000000000..3906d554d4db --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/NullPointerException.hpp @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NULLPOINTEREXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_NULLPOINTEREXCEPTION_HPP + + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(NullPointerException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/NumberFormatException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/NumberFormatException.hpp new file mode 100644 index 000000000000..07e2ba9dbcda --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/NumberFormatException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NUMBERFORMATEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_NUMBERFORMATEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(NumberFormatException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/OutOfMemoryException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/OutOfMemoryException.hpp new file mode 100644 index 000000000000..5b2d60418c14 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/OutOfMemoryException.hpp @@ -0,0 +1,96 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_OUT_OF_MEMORY_EXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_OUT_OF_MEMORY_EXCEPTION_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +static const XMLCh gDefOutOfMemoryErrMsg[] = +{ + chLatin_O, chLatin_u, chLatin_t, chLatin_O + , chLatin_f, chLatin_M, chLatin_e, chLatin_m + , chLatin_o, chLatin_r, chLatin_y, chNull +}; + +class XMLUTIL_EXPORT OutOfMemoryException : public XMemory +{ +public: + + OutOfMemoryException(); + ~OutOfMemoryException(); + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLExcepts::Codes getCode() const; + const XMLCh* getMessage() const; + const XMLCh* getType() const; + const char* getSrcFile() const; + XMLFileLoc getSrcLine() const; + + OutOfMemoryException(const OutOfMemoryException& toCopy); + OutOfMemoryException& operator=(const OutOfMemoryException& toAssign); +}; + +// constructors/destructors... +inline OutOfMemoryException::OutOfMemoryException() {} +inline OutOfMemoryException::~OutOfMemoryException() {} +inline OutOfMemoryException::OutOfMemoryException(const OutOfMemoryException& other) : XMemory(other) {} +inline OutOfMemoryException& OutOfMemoryException::operator=(const OutOfMemoryException&) +{ + return *this; +} + +// --------------------------------------------------------------------------- +// OutOfMemoryException: Getter methods +// --------------------------------------------------------------------------- +inline XMLExcepts::Codes OutOfMemoryException::getCode() const +{ + return XMLExcepts::Out_Of_Memory; +} + +inline const XMLCh* OutOfMemoryException::getMessage() const +{ + return gDefOutOfMemoryErrMsg; +} + +inline const XMLCh* OutOfMemoryException::getType() const +{ + return gDefOutOfMemoryErrMsg; +} + +inline const char* OutOfMemoryException::getSrcFile() const +{ + return ""; +} + +inline XMLFileLoc OutOfMemoryException::getSrcLine() const { + return 0; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/PSVIUni.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/PSVIUni.hpp new file mode 100644 index 000000000000..b06dcb350196 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/PSVIUni.hpp @@ -0,0 +1,239 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PSVIUNI_HPP) +#define XERCESC_INCLUDE_GUARD_PSVIUNI_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT PSVIUni +{ +public : + + static const XMLCh fgPsvColon[]; + + //Infoset Element Names + static const XMLCh fgAllDeclarationsProcessed[]; + static const XMLCh fgAttribute[]; + static const XMLCh fgAttributes[]; + static const XMLCh fgAttributeType[]; + static const XMLCh fgBaseURI[]; + static const XMLCh fgCharacter[]; + static const XMLCh fgCharacterEncodingScheme[]; + static const XMLCh fgChildren[]; + static const XMLCh fgComment[]; + static const XMLCh fgContent[]; + static const XMLCh fgDocument[]; + static const XMLCh fgDocTypeDeclaration[]; + static const XMLCh fgDocumentElement[]; + static const XMLCh fgElement[]; + static const XMLCh fgInScopeNamespaces[]; + static const XMLCh fgLocalName[]; + static const XMLCh fgNamespace[]; + static const XMLCh fgNamespaceAttributes[]; + static const XMLCh fgNamespaceName[]; + static const XMLCh fgNormalizedValue[]; + static const XMLCh fgNotations[]; + static const XMLCh fgPrefix[]; + static const XMLCh fgProcessingInstruction[]; + static const XMLCh fgReferences[]; + static const XMLCh fgSpecified[]; + static const XMLCh fgStandalone[]; + static const XMLCh fgTarget[]; + static const XMLCh fgText[]; + static const XMLCh fgTextContent[]; + static const XMLCh fgUnparsedEntities[]; + static const XMLCh fgVersion[]; + + //PSVI Element Names + static const XMLCh fgAbstract[]; + static const XMLCh fgAnnotation[]; + static const XMLCh fgAnnotations[]; + static const XMLCh fgApplicationInformation[]; + static const XMLCh fgAttributeDeclaration[]; + static const XMLCh fgAttributeGroupDefinition[]; + static const XMLCh fgAttributeUse[]; + static const XMLCh fgAttributeUses[]; + static const XMLCh fgAttributeWildcard[]; + static const XMLCh fgBaseTypeDefinition[]; + static const XMLCh fgCanonicalRepresentation[]; + static const XMLCh fgComplexTypeDefinition[]; + static const XMLCh fgCompositor[]; + static const XMLCh fgContentType[]; + static const XMLCh fgDeclaration[]; + static const XMLCh fgDerivationMethod[]; + static const XMLCh fgDisallowedSubstitutions[]; + static const XMLCh fgPsvDocument[]; + static const XMLCh fgDocumentLocation[]; + static const XMLCh fgElementDeclaration[]; + static const XMLCh fgFacets[]; + static const XMLCh fgFacetFixed[]; + static const XMLCh fgFields[]; + static const XMLCh fgFinal[]; + static const XMLCh fgFundamentalFacets[]; + static const XMLCh fgIdentityConstraintCategory[]; + static const XMLCh fgIdentityConstraintDefinition[]; + static const XMLCh fgIdentityConstraintDefinitions[]; + static const XMLCh fgIdentityConstraintTable[]; + static const XMLCh fgIdIdrefTable[]; + static const XMLCh fgItemTypeDefinition[]; + static const XMLCh fgMaxOccurs[]; + static const XMLCh fgMemberTypeDefinition[]; + static const XMLCh fgMemberTypeDefinitions[]; + static const XMLCh fgMinOccurs[]; + static const XMLCh fgModelGroup[]; + static const XMLCh fgModelGroupDefinition[]; + static const XMLCh fgName[]; + static const XMLCh fgNamespaceConstraint[]; + static const XMLCh fgNamespaces[]; + static const XMLCh fgNamespaceSchemaInformation[]; + static const XMLCh fgNil[]; + static const XMLCh fgNillable[]; + static const XMLCh fgNotation[]; + static const XMLCh fgNotationDeclaration[]; + static const XMLCh fgParticle[]; + static const XMLCh fgParticles[]; + static const XMLCh fgPrimitiveTypeDefinition[]; + static const XMLCh fgProcessContents[]; + static const XMLCh fgProhibitedSubstitutions[]; + static const XMLCh fgPublicIdentifier[]; + static const XMLCh fgReferencedKey[]; + static const XMLCh fgRequired[]; + static const XMLCh fgSchemaAnnotations[]; + static const XMLCh fgSchemaComponents[]; + static const XMLCh fgSchemaDefault[]; + static const XMLCh fgSchemaDocument[]; + static const XMLCh fgSchemaDocuments[]; + static const XMLCh fgSchemaErrorCode[]; + static const XMLCh fgSchemaInformation[]; + static const XMLCh fgSchemaNamespace[]; + static const XMLCh fgSchemaNormalizedValue[]; + static const XMLCh fgSchemaSpecified[]; + static const XMLCh fgScope[]; + static const XMLCh fgSelector[]; + static const XMLCh fgSimpleTypeDefinition[]; + static const XMLCh fgSubstitutionGroupAffiliation[]; + static const XMLCh fgSubstitutionGroupExclusions[]; + static const XMLCh fgSystemIdentifier[]; + static const XMLCh fgTargetNamespace[]; + static const XMLCh fgTerm[]; + static const XMLCh fgTypeDefinition[]; + static const XMLCh fgUserInformation[]; + static const XMLCh fgValidationAttempted[]; + static const XMLCh fgValidationContext[]; + static const XMLCh fgValidity[]; + static const XMLCh fgValue[]; + static const XMLCh fgValueConstraint[]; + static const XMLCh fgVariety[]; + static const XMLCh fgWildcard[]; + static const XMLCh fgXpath[]; + + //PSVI Element Values + static const XMLCh fgAll[]; + static const XMLCh fgAny[]; + static const XMLCh fgAppinfo[]; + static const XMLCh fgAtomic[]; + static const XMLCh fgChoice[]; + static const XMLCh fgDefault[]; + static const XMLCh fgDocumentation[]; + static const XMLCh fgElementOnly[]; + static const XMLCh fgEmpty[]; + static const XMLCh fgExtension[]; + static const XMLCh fgFalse[]; + static const XMLCh fgFull[]; + static const XMLCh fgGlobal[]; + static const XMLCh fgInfoset[]; + static const XMLCh fgInvalid[]; + static const XMLCh fgKey[]; + static const XMLCh fgKeyref[]; + static const XMLCh fgLax[]; + static const XMLCh fgList[]; + static const XMLCh fgLocal[]; + static const XMLCh fgMixed[]; + static const XMLCh fgNone[]; + static const XMLCh fgNotKnown[]; + static const XMLCh fgNsNamespace[]; + static const XMLCh fgOnePointZero[]; + static const XMLCh fgPartial[]; + static const XMLCh fgRestrict[]; + static const XMLCh fgRestriction[]; + static const XMLCh fgSchema[]; + static const XMLCh fgSequence[]; + static const XMLCh fgSimple[]; + static const XMLCh fgSkip[]; + static const XMLCh fgStrict[]; + static const XMLCh fgSubstitution[]; + static const XMLCh fgTotal[]; + static const XMLCh fgTrue[]; + static const XMLCh fgUnbounded[]; + static const XMLCh fgUnion[]; + static const XMLCh fgUnique[]; + static const XMLCh fgUnknown[]; + static const XMLCh fgValid[]; + static const XMLCh fgVCFixed[]; + static const XMLCh fgXMLChNull[]; + + //PSVI Element Types (Shortened) + static const XMLCh fgAg[]; + static const XMLCh fgAnnot[]; + static const XMLCh fgAttr[]; + static const XMLCh fgAu[]; + static const XMLCh fgElt[]; + static const XMLCh fgIdc[]; + static const XMLCh fgMg[]; + static const XMLCh fgNot[]; + static const XMLCh fgType[]; + + //Facets + static const XMLCh fgBounded[]; + static const XMLCh fgCardinality[]; + static const XMLCh fgEnumeration[]; + static const XMLCh fgFractionDigits[]; + static const XMLCh fgLength[]; + static const XMLCh fgMaxExclusive[]; + static const XMLCh fgMaxInclusive[]; + static const XMLCh fgMaxLength[]; + static const XMLCh fgMinExclusive[]; + static const XMLCh fgMinInclusive[]; + static const XMLCh fgMinLength[]; + static const XMLCh fgNumeric[]; + static const XMLCh fgOrdered[]; + static const XMLCh fgPattern[]; + static const XMLCh fgTotalDigits[]; + static const XMLCh fgWhiteSpace[]; + + //Namespaces and prefixes + + static const XMLCh fgNamespaceInfoset[]; + static const XMLCh fgXsi[]; + static const XMLCh fgNamespaceInstance[]; + static const XMLCh fgPsv[]; + static const XMLCh fgNamespacePsvi[]; + static const XMLCh fgXml[]; + static const XMLCh fgNamespaceXmlSchema[]; + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/PanicHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/PanicHandler.hpp new file mode 100644 index 000000000000..cf07adc7eb94 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/PanicHandler.hpp @@ -0,0 +1,112 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PANICHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_PANICHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Receive notification of panic. + * + *

This is the interface, through which the Xercesc reports + * a panic to the application. + *

+ * + *

Application may implement this interface, instantiate an + * object of the derivative, and plug it to Xercesc in the + * invocation to XMLPlatformUtils::Initialize(), if it prefers + * to handling panic itself rather than Xercesc doing it. + *

+ * + */ + +class XMLUTIL_EXPORT PanicHandler +{ +public: + + /** @name Public Types */ + //@{ + enum PanicReasons + { + Panic_NoTransService + , Panic_NoDefTranscoder + , Panic_CantFindLib + , Panic_UnknownMsgDomain + , Panic_CantLoadMsgDomain + , Panic_SynchronizationErr + , Panic_SystemInit + , Panic_AllStaticInitErr + , Panic_MutexErr + , PanicReasons_Count + }; + //@} + +protected: + + /** @name hidden Constructors */ + //@{ + /** Default constructor */ + PanicHandler(){}; + +public: + + /** Destructor */ + virtual ~PanicHandler(){}; + //@} + + /** @name The virtual panic handler interface */ + //@{ + /** + * Receive notification of panic + * + * This method is called when an unrecoverable error has occurred in the Xerces library. + * + * This method must not return normally, otherwise, the results are undefined. + * + * Ways of handling this call could include throwing an exception or exiting the process. + * + * Once this method has been called, the results of calling any other Xerces API, + * or using any existing Xerces objects are undefined. + * + * @param reason The reason of panic + * + */ + virtual void panic(const PanicHandler::PanicReasons reason) = 0; + //@} + + static const char* getPanicReasonString(const PanicHandler::PanicReasons reason); + +private: + + /* Unimplemented Constructors and operators */ + /* Copy constructor */ + PanicHandler(const PanicHandler&); + + /** Assignment operator */ + PanicHandler& operator=(const PanicHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/ParseException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/ParseException.hpp new file mode 100644 index 000000000000..6e7fe383e91a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/ParseException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PARSEEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_PARSEEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(ParseException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/PlatformUtils.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/PlatformUtils.hpp new file mode 100644 index 000000000000..0123ff12c642 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/PlatformUtils.hpp @@ -0,0 +1,839 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PLATFORMUTILS_HPP) +#define XERCESC_INCLUDE_GUARD_PLATFORMUTILS_HPP + +#include +#include +#include + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLMsgLoader; +class XMLNetAccessor; +class XMLTransService; +class MemoryManager; +class XMLMutex; + +// +// For internal use only +// +// This class provides a simple abstract API via which lazily evaluated +// data can be cleaned up. +// +class XMLUTIL_EXPORT XMLDeleter +{ +public : + virtual ~XMLDeleter(); + +protected : + XMLDeleter(); + +private : + XMLDeleter(const XMLDeleter&); + XMLDeleter& operator=(const XMLDeleter&); +}; + + +/** + * Utilities that must be implemented in a platform-specific way. + * + * This class contains methods that must be implemented in a platform + * specific manner. The actual implementations of these methods are + * available in the per-platform files inside src/util/Platforms + * . + */ +class XMLUTIL_EXPORT XMLPlatformUtils +{ +public : + + /** @name Public Static Data */ + //@{ + + /** The network accessor + * + * This is provided by the per-platform driver, so each platform can + * choose what actual implementation it wants to use. The object must + * be dynamically allocated. + * + * Note that you may optionally, if your platform driver does not + * install a network accessor, set it manually from your client code + * after calling Initialize(). This works because this object is + * not required during initialization, and only comes into play during + * actual XML parsing. + */ + static XMLNetAccessor* fgNetAccessor; + + /** The transcoding service. + * + * This is provided by the per platform driver, so each platform can + * choose what implementation it wants to use. When the platform + * independent initialization code needs to get a transcoding service + * object, it will call makeTransService() to ask the + * per-platform code to create one. Only one transcoding service + * object is requested per-process, so it is shared and synchronized + * among parser instances within that process. + */ + static XMLTransService* fgTransService; +#ifdef OS390 + static XMLTransService* fgTransService2; +#endif + + /** The Panic Handler + * + * This is the application provided panic handler. + */ + static PanicHandler* fgUserPanicHandler; + + /** The Panic Handler + * + * This is the default panic handler. + */ + static PanicHandler* fgDefaultPanicHandler; + + /** The configurable memory manager + * + * This is the pluggable memory manager. If it is not provided by an + * application, a default implementation is used. + */ + static MemoryManager* fgMemoryManager; + + static XMLFileMgr* fgFileMgr; + static XMLMutexMgr* fgMutexMgr; + + /** Global mutex for fast or infrequent operations. + * + * Use this mutex only for fast (e.g., increment an integer, + * check flag, etc.) or infrequent (e.g., once-off initialization) + * operations. + */ + static XMLMutex* fgAtomicMutex; + + static bool fgXMLChBigEndian; + static bool fgSSE2ok; + //@} + + + /** @name Initialization and Panic methods */ + //@{ + + /** Perform per-process parser initialization + * + * Initialization must be called first in any client code. + * + * @param locale The locale to use for messages. + * + * The locale is set iff the Initialize() is invoked for the very first time, + * to ensure that each and every message loader, in the process space, share + * the same locale. + * + * All subsequent invocations of Initialize(), with a different locale, have + * no effect on the message loaders, either instantiated, or to be instantiated. + * + * To set to a different locale, client application needs to Terminate() (or + * multiple Terminate() in the case where multiple Initialize() have been invoked + * before), followed by Initialize(new_locale). + * + * The default locale is "en_US". + * + * @param nlsHome User specified location where MsgLoader retrieves error message files. + * the discussion above with regard to locale, applies to nlsHome as well. + * + * @param panicHandler Application's panic handler, application owns this handler. + * Application shall make sure that the plugged panic handler persists + * through the call to XMLPlatformUtils::Terminate(). + * + * @param memoryManager Plugged-in memory manager which is owned by the + * application. Applications must make sure that the + * plugged-in memory manager persist through the call to + * XMLPlatformUtils::Terminate() + */ + static void Initialize(const char* const locale = XMLUni::fgXercescDefaultLocale + , const char* const nlsHome = 0 + , PanicHandler* const panicHandler = 0 + , MemoryManager* const memoryManager = 0); + + /** Perform per-process parser initialization + * + * Initialization must be called first in any client code. + * + * @param initialDOMHeapAllocSize The size of the first memory block + * allocated by the DOMDocument heap. Note that changing this parameter + * may result in poor performance and/or excessive memory usage. For + * the default value refer to dom/impl/DOMDocumentImpl.cpp. + * + * @param maxDOMHeapAllocSize The maximum size of the memory block + * allocated by the DOMDocument heap. As the document grows, the + * allocated by the heap memory blocks grow from initialDOMHeapAllocSize + * to maxDOMHeapAllocSize. Note that changing this parameter may result + * in poor performance and/or excessive memory usage. For the default + * value refer to dom/impl/DOMDocumentImpl.cpp. + * + * @param maxDOMSubAllocationSize The maximum size of the memory block + * requested that is handled by the DOMDocument heap. A request for a + * larger block is handled directly by the memory manager. Note that + * changing this parameter may result in poor performance and/or + * excessive memory usage. For the default value refer to + * dom/impl/DOMDocumentImpl.cpp. + * + * @param locale The locale to use for messages. + * + * The locale is set iff the Initialize() is invoked for the very first time, + * to ensure that each and every message loader, in the process space, share + * the same locale. + * + * All subsequent invocations of Initialize(), with a different locale, have + * no effect on the message loaders, either instantiated, or to be instantiated. + * + * To set to a different locale, client application needs to Terminate() (or + * multiple Terminate() in the case where multiple Initialize() have been invoked + * before), followed by Initialize(new_locale). + * + * The default locale is "en_US". + * + * @param nlsHome User specified location where MsgLoader retrieves error message files. + * the discussion above with regard to locale, applies to nlsHome as well. + * + * @param panicHandler Application's panic handler, application owns this handler. + * Application shall make sure that the plugged panic handler persists + * through the call to XMLPlatformUtils::Terminate(). + * + * @param memoryManager Plugged-in memory manager which is owned by the + * application. Applications must make sure that the plugged-in memory + * manager persist through the call to XMLPlatformUtils::Terminate() + */ + static void Initialize(XMLSize_t initialDOMHeapAllocSize + , XMLSize_t maxDOMHeapAllocSize + , XMLSize_t maxDOMSubAllocationSize + , const char* const locale = XMLUni::fgXercescDefaultLocale + , const char* const nlsHome = 0 + , PanicHandler* const panicHandler = 0 + , MemoryManager* const memoryManager = 0); + + /** Perform per-process parser termination + * + * The termination call is currently optional, to aid those dynamically + * loading the parser to clean up before exit, or to avoid spurious + * reports from leak detectors. + */ + static void Terminate(); + + /** The panic mechanism. + * + * If, during initialization, we cannot even get far enough along + * to get transcoding up or get message loading working, we call + * this method.

+ * + * Each platform can implement it however they want. This method will + * delegate the panic handling to a user specified panic handler or + * in the absence of it, the default panic handler. + * + * In case the default panic handler does not support a particular + * platform, the platform specific panic handling shall be implemented + * here

. + * + * @param reason The enumeration that defines the cause of the failure + */ + static void panic + ( + const PanicHandler::PanicReasons reason + ); + + //@} + + /** @name File Methods */ + //@{ + + /** Make a new file object appropriate for the platform. + * + * @param manager The MemoryManager to use to allocate objects + */ + static XMLFileMgr* makeFileMgr(MemoryManager* const manager); + + /** Get the current file position + * + * This must be implemented by the per-platform driver, which should + * use local file services to determine the current position within + * the passed file. + * + * Since the file API provided here only reads, if the host platform + * supports separate read/write positions, only the read position is + * of any interest, and hence should be the one returned. + * + * @param theFile The file handle + * @param manager The MemoryManager to use to allocate objects + */ + static XMLFilePos curFilePos(FileHandle theFile + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Closes the file handle + * + * This must be implemented by the per-platform driver, which should + * use local file services to close the passed file handle, and to + * destroy the passed file handle and any allocated data or system + * resources it contains. + * + * @param theFile The file handle to close + * @param manager The MemoryManager to use to allocate objects + */ + static void closeFile(FileHandle theFile + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Returns the file size + * + * This must be implemented by the per-platform driver, which should + * use local file services to determine the current size of the file + * represented by the passed handle. + * + * @param theFile The file handle whose size you want + * @param manager The MemoryManager to use to allocate objects + * @return Returns the size of the file in bytes + */ + static XMLFilePos fileSize(FileHandle theFile + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Opens the file + * + * This must be implemented by the per-platform driver, which should + * use local file services to open passed file. If it fails, a + * null handle pointer should be returned. + * + * @param fileName The string containing the name of the file + * @param manager The MemoryManager to use to allocate objects + * @return The file handle of the opened file + */ + static FileHandle openFile(const char* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Opens a named file + * + * This must be implemented by the per-platform driver, which should + * use local file services to open the passed file. If it fails, a + * null handle pointer should be returned. + * + * @param fileName The string containing the name of the file + * @param manager The MemoryManager to use to allocate objects + * @return The file handle of the opened file + */ + static FileHandle openFile(const XMLCh* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Open a named file to write + * + * This must be implemented by the per-platform driver, which should + * use local file services to open passed file. If it fails, a + * null handle pointer should be returned. + * + * @param fileName The string containing the name of the file + * @param manager The MemoryManager to use to allocate objects + * @return The file handle of the opened file + */ + static FileHandle openFileToWrite(const char* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Open a named file to write + * + * This must be implemented by the per-platform driver, which should + * use local file services to open the passed file. If it fails, a + * null handle pointer should be returned. + * + * @param fileName The string containing the name of the file + * @param manager The MemoryManager to use to allocate objects + * @return The file handle of the opened file + */ + static FileHandle openFileToWrite(const XMLCh* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Opens the standard input as a file + * + * This must be implemented by the per-platform driver, which should + * use local file services to open a handle to the standard input. + * It should be a copy of the standard input handle, since it will + * be closed later! + * + * @param manager The MemoryManager to use to allocate objects + * @return The file handle of the standard input stream + */ + static FileHandle openStdInHandle(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Reads the file buffer + * + * This must be implemented by the per-platform driver, which should + * use local file services to read up to 'toRead' bytes of data from + * the passed file, and return those bytes in the 'toFill' buffer. It + * is not an error not to read the requested number of bytes. When the + * end of file is reached, zero should be returned. + * + * @param theFile The file handle to be read from. + * @param toRead The maximum number of byte to read from the current + * position + * @param toFill The byte buffer to fill + * @param manager The MemoryManager to use to allocate objects + * + * @return Returns the number of bytes read from the stream or file + */ + static XMLSize_t readFileBuffer + ( + FileHandle theFile + , const XMLSize_t toRead + , XMLByte* const toFill + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Writes the buffer to the file + * + * This must be implemented by the per-platform driver, which should + * use local file services to write up to 'toWrite' bytes of data to + * the passed file. Unless exception raised by local file services, + * 'toWrite' bytes of data is to be written to the passed file. + * + * @param theFile The file handle to be written to. + * @param toWrite The maximum number of byte to write from the current + * position + * @param toFlush The byte buffer to flush + * @param manager The MemoryManager to use to allocate objects + * @return void + */ + static void writeBufferToFile + ( + FileHandle const theFile + , XMLSize_t toWrite + , const XMLByte* const toFlush + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Resets the file handle + * + * This must be implemented by the per-platform driver which will use + * local file services to reset the file position to the start of the + * the file. + * + * @param theFile The file handle that you want to reset + * @param manager The MemoryManager to use to allocate objects + */ + static void resetFile(FileHandle theFile + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + + /** @name File System Methods */ + //@{ + /** Gets the full path from a relative path + * + * This must be implemented by the per-platform driver. It should + * complete a relative path using the 'current directory', or whatever + * the local equivalent of a current directory is. If the passed + * source path is actually fully qualified, then a straight copy of it + * will be returned. + * + * @param srcPath The path of the file for which you want the full path + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * + * @return Returns the fully qualified path of the file name including + * the file name. This is dyanmically allocated and must be + * deleted by the caller when its no longer needed! The memory + * returned will beallocated using the static memory manager, if + * user do not supply a memory manager. Users then need to make + * sure to use either the default or user specific memory manager + * to deallocate the memory. + */ + static XMLCh* getFullPath + ( + const XMLCh* const srcPath + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Gets the current working directory + * + * This must be implemented by the per-platform driver. It returns + * the current working directory is. + * @param manager The MemoryManager to use to allocate objects + * @return Returns the current working directory. + * This is dyanmically allocated and must be deleted + * by the caller when its no longer needed! The memory returned + * will be allocated using the static memory manager, if users + * do not supply a memory manager. Users then need to make sure + * to use either the default or user specific memory manager to + * deallocate the memory. + */ + static XMLCh* getCurrentDirectory + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Check if a character is a slash + * + * This must be implemented by the per-platform driver. + * + * @param c the character to be examined + * + * @return true if the character examined is a slash + * false otherwise + */ + static inline bool isAnySlash(XMLCh c); + + /** Remove occurrences of the pair of dot slash + * + * To remove the sequence, dot slash if it is part of the sequence, + * slash dot slash. + * + * @param srcPath The path for which you want to remove the dot slash sequence. + * @param manager The MemoryManager to use to allocate objects + * @return + */ + static void removeDotSlash(XMLCh* const srcPath + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Remove occurrences of the dot dot slash + * + * To remove the sequence, slash dot dot slash and its preceding path segment + * if and only if the preceding path segment is not slash dot dot slash. + * + * @param srcPath The path for which you want to remove the slash dot + * dot slash sequence and its preceding path segment. + * @param manager The MemoryManager to use to allocate objects + * @return + */ + static void removeDotDotSlash(XMLCh* const srcPath + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Determines if a path is relative or absolute + * + * This must be implemented by the per-platform driver, which should + * determine whether the passed path is relative or not. The concept + * of relative and absolute might be... well relative on different + * platforms. But, as long as the determination is made consistently + * and in coordination with the weavePaths() method, it should work + * for any platform. + * + * @param toCheck The file name which you want to check + * @param manager The MemoryManager to use to allocate objects + * @return Returns true if the filename appears to be relative + */ + static bool isRelative(const XMLCh* const toCheck + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Utility to join two paths + * + * This must be implemented by the per-platform driver, and should + * weave the relative path part together with the base part and return + * a new path that represents this combination. + * + * If the relative part turns out to be fully qualified, it will be + * returned as is. If it is not, then it will be woven onto the + * passed base path, by removing one path component for each leading + * "../" (or whatever is the equivalent in the local system) in the + * relative path. + * + * @param basePath The string containing the base path + * @param relativePath The string containing the relative path + * @param manager The MemoryManager to use to allocate objects + * @return Returns a string containing the 'woven' path. It should + * be dynamically allocated and becomes the responsibility of the + * caller to delete. + */ + static XMLCh* weavePaths + ( + const XMLCh* const basePath + , const XMLCh* const relativePath + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Timing Methods */ + //@{ + + /** Gets the system time in milliseconds + * + * This must be implemented by the per-platform driver, which should + * use local services to return the current value of a running + * millisecond timer. Note that the value returned is only as accurate + * as the millisecond time of the underlying host system. + * + * @return Returns the system time as an unsigned long + */ + static unsigned long getCurrentMillis(); + //@} + + /** @name Mutex Methods */ + //@{ + + /** Factory method for creating MutexMgr object. + * + * This factory method creates a mutexmgr that will be used + * on the particular platform. + * + * @param manager The MemoryManager to use to allocate objects + */ + static XMLMutexMgr* makeMutexMgr(MemoryManager* const manager); + + /** Closes a mutex handle + * + * Each per-platform driver must implement this. Only it knows what + * the actual content of the passed mutex handle is. + * + * @param mtxHandle The mutex handle that you want to close + * @param manager The MemoryManager used to allocate the object + */ + static void closeMutex(void* const mtxHandle, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Locks a mutex handle + * + * Each per-platform driver must implement this. Only it knows what + * the actual content of the passed mutex handle is. + * + * @param mtxHandle The mutex handle that you want to lock + */ + static void lockMutex(void* const mtxHandle); + + /** Make a new mutex + * + * Each per-platform driver must implement this. Only it knows what + * the actual content of the passed mutex handle is. The returned + * handle pointer will be eventually passed to closeMutex() which is + * also implemented by the platform driver. + * + * @param manager The MemoryManager to use to allocate objects + */ + static void* makeMutex(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Unlocks a mutex + * + * Each per-platform driver must implement this. Only it knows what + * the actual content of the passed mutex handle is. + * + * Note that, since the underlying system synchronization services + * are used, Xerces cannot guarantee that lock/unlock operations are + * correctly enforced on a per-thread basis or that incorrect nesting + * of lock/unlock operations will be caught. + * + * @param mtxHandle The mutex handle that you want to unlock + */ + static void unlockMutex(void* const mtxHandle); + + //@} + + + /** @name External Message Support */ + //@{ + + /** Loads the message set from among the available domains + * + * The returned object must be dynamically allocated and the caller + * becomes responsible for cleaning it up. + * + * @param msgDomain The message domain which you want to load + */ + static XMLMsgLoader* loadMsgSet(const XMLCh* const msgDomain); + + //@} + + + /** @name NEL Character Handling */ + //@{ + /** + * This function enables the recognition of NEL(0x85) char and LSEP (0x2028) as newline chars + * which is disabled by default. + * It is only called once per process. Once it is set, any subsequent calls + * will result in exception being thrown. + * + * Note: 1. Turning this option on will make the parser non compliant to XML 1.0. + * 2. This option has no effect to document conforming to XML 1.1 compliant, + * which always recognize these two chars (0x85 and 0x2028) as newline characters. + * + */ + static void recognizeNEL(bool state + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Return the value of fgNEL flag. + */ + static bool isNELRecognized(); + //@} + + /** @name Strict IANA Encoding Checking */ + //@{ + /** + * This function enables/disables strict IANA encoding names checking. + * + * The strict checking is disabled by default. + * + * @param state If true, a strict IANA encoding name check is performed, + * otherwise, no checking. + * + */ + static void strictIANAEncoding(const bool state); + + /** + * Returns whether a strict IANA encoding name check is enabled or + * disabled. + */ + static bool isStrictIANAEncoding(); + //@} + + /** + * Aligns the specified pointer per platform block allocation + * requirements. + * + * The results of this function may be altered by defining + * XML_PLATFORM_NEW_BLOCK_ALIGNMENT. + */ + static inline XMLSize_t alignPointerForNewBlockAllocation(XMLSize_t ptrSize); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLPlatformUtils(); + + /** @name Private static methods */ + //@{ + + /** Loads a message set from the available domains + * + * @param msgDomain The message domain containing the message to be + * loaded + */ + static XMLMsgLoader* loadAMsgSet(const XMLCh* const msgDomain); + + /** Creates a net accessor object. + * + * Each per-platform driver must implement this method. However, + * having a Net Accessor is optional and this method can return a + * null pointer if remote access via HTTP and FTP URLs is not required. + * + * @return An object derived from XMLNetAccessor. It must be dynamically + * allocated, since it will be deleted later. + */ + static XMLNetAccessor* makeNetAccessor(); + + /** Creates a Transcoding service + * + * Each per-platform driver must implement this method and return some + * derivative of the XMLTransService class. This object serves as the + * transcoder factory for this process. The object must be dynamically + * allocated and the caller is responsible for cleaning it up. + * + * @return A dynamically allocated object of some class derived from + * the XMLTransService class. + */ + static XMLTransService* makeTransService(); + + /** Search for sequence, slash dot dot slash + * + * @param srcPath the path to search + * + * @return the position of the first occurrence of slash dot dot slash + * -1 if no such sequence is found + */ + static int searchSlashDotDotSlash(XMLCh* const srcPath); + + //@} + + /** @name Private static methods */ + //@{ + + /** + * Indicates whether the memory manager was supplied by the user + * or not. Users own the memory manager, and if none is supplied, + * Xerces uses a default one that it owns and is responsible for + * deleting in Terminate(). + */ + static bool fgMemMgrAdopted; + + //@} +}; + + +MakeXMLException(XMLPlatformUtilsException, XMLUTIL_EXPORT) + + +// --------------------------------------------------------------------------- +// XMLPlatformUtils: alignPointerForNewBlockAllocation +// --------------------------------------------------------------------------- +// Calculate alignment required by platform for a new +// block allocation. We use this in our custom allocators +// to ensure that returned blocks are properly aligned. +// Note that, although this will take a pointer and return the position +// at which it should be placed for correct alignment, in our code +// we normally use XMLSize_t parameters to discover what the alignment +// of header blocks should be. Thus, if this is to be +// used for the former purpose, to make compilers happy +// some casting will be necessary - neilg. +// +// Note: XML_PLATFORM_NEW_BLOCK_ALIGNMENT may be specified on a +// per-architecture basis to dictate the alignment requirements +// of the architecture. In the absense of this specification, +// this routine guesses at the correct alignment value. +// +// A XML_PLATFORM_NEW_BLOCK_ALIGNMENT value of zero is illegal. +// If a platform requires absolutely no alignment, a value +// of 1 should be specified ("align pointers on 1 byte boundaries"). +// +inline XMLSize_t +XMLPlatformUtils::alignPointerForNewBlockAllocation(XMLSize_t ptrSize) +{ + // Macro XML_PLATFORM_NEW_BLOCK_ALIGNMENT may be defined + // as needed to dictate alignment requirements on a + // per-architecture basis. In the absense of that we + // take an educated guess. +#ifdef XML_PLATFORM_NEW_BLOCK_ALIGNMENT + const XMLSize_t alignment = XML_PLATFORM_NEW_BLOCK_ALIGNMENT; +#else + const XMLSize_t alignment = (sizeof(void*) >= sizeof(double)) ? sizeof(void*) : sizeof(double); +#endif + + // Calculate current alignment of pointer + XMLSize_t current = ptrSize % alignment; + + // Adjust pointer alignment as needed + return (current == 0) + ? ptrSize + : (ptrSize + alignment - current); +} + + + +// --------------------------------------------------------------------------- +// XMLDeleter: Public Destructor +// --------------------------------------------------------------------------- +inline XMLDeleter::~XMLDeleter() +{ +} + +// --------------------------------------------------------------------------- +// XMLDeleter: Hidden constructors and operators +// --------------------------------------------------------------------------- +inline XMLDeleter::XMLDeleter() +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/QName.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/QName.hpp new file mode 100644 index 000000000000..a950d0d84bad --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/QName.hpp @@ -0,0 +1,217 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_QNAME_HPP) +#define XERCESC_INCLUDE_GUARD_QNAME_HPP + +#include +#include +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT QName : public XSerializable, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** Default constructor. */ + QName(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Constructs a specified qname using prefix, and localpart. */ + QName + ( + const XMLCh* const prefix + , const XMLCh* const localPart + , const unsigned int uriId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Constructs a specified qname using rawName. */ + QName + ( + const XMLCh* const rawName + , const unsigned int uriId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Copy constructor. */ + QName(const QName& qname); + + ~QName(); + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + const XMLCh* getPrefix() const; + XMLCh* getPrefix(); + + const XMLCh* getLocalPart() const; + XMLCh* getLocalPart(); + + unsigned int getURI() const; + + const XMLCh* getRawName() const; + XMLCh* getRawName(); + + MemoryManager* getMemoryManager() const; + + // ----------------------------------------------------------------------- + // Setters + // ----------------------------------------------------------------------- + void setName + ( + const XMLCh* const prefix + , const XMLCh* const localPart + , const unsigned int uriId + ); + + void setName + ( + const XMLCh* const rawName + , const unsigned int uriId + ); + + void setPrefix(const XMLCh*) ; + void setLocalPart(const XMLCh*) ; + void setNPrefix(const XMLCh*, const XMLSize_t ) ; + void setNLocalPart(const XMLCh*, const XMLSize_t ) ; + void setURI(const unsigned int) ; + + void setValues(const QName& qname); + + // ----------------------------------------------------------------------- + // comparison + // ----------------------------------------------------------------------- + bool operator==(const QName&) const; + + // ----------------------------------------------------------------------- + // Misc + // ----------------------------------------------------------------------- + void cleanUp(); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(QName) + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + QName& operator=(const QName&); + + // ----------------------------------------------------------------------- + // Private instance variables + // + // We copy the followings from XMLAttr.hpp, but stick to Java version's + // naming convention + // + // fPrefix + // fPrefixBufSz + // The prefix that was applied to this attribute's name, and the + // current size of the buffer (minus one for the null.) Prefixes + // really don't matter technically but it might be required for + // practical reasons, to recreate the original document for instance. + // + // fLocalPart + // fLocalPartBufSz + // The base part of the name of the attribute, and the current size + // of the buffer (minus one, where the null is.) + // + // fRawName + // fRawNameBufSz + // This is the QName form of the name, which is faulted in (from the + // prefix and name) upon request. The size field indicates the + // current size of the buffer (minus one for the null.) It will be + // zero until filled in. + // + // fURIId + // The id of the URI that this attribute belongs to. + // ----------------------------------------------------------------------- + XMLSize_t fPrefixBufSz; + XMLSize_t fLocalPartBufSz; + XMLSize_t fRawNameBufSz; + unsigned int fURIId; + XMLCh* fPrefix; + XMLCh* fLocalPart; + XMLCh* fRawName; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// QName: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh* QName::getPrefix() const +{ + return fPrefix; +} + +inline XMLCh* QName::getPrefix() +{ + return fPrefix; +} + +inline const XMLCh* QName::getLocalPart() const +{ + return fLocalPart; +} + +inline XMLCh* QName::getLocalPart() +{ + return fLocalPart; +} + +inline unsigned int QName::getURI() const +{ + return fURIId; +} + +inline MemoryManager* QName::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// QName: Setter methods +// --------------------------------------------------------------------------- +inline void QName::setURI(const unsigned int uriId) +{ + fURIId = uriId; +} + +inline void QName::setPrefix(const XMLCh* prefix) +{ + setNPrefix(prefix, XMLString::stringLen(prefix)); +} + +inline void QName::setLocalPart(const XMLCh* localPart) +{ + setNLocalPart(localPart, XMLString::stringLen(localPart)); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/RefArrayOf.c b/src/libs/xerces-c/mingw/include/xercesc/util/RefArrayOf.c new file mode 100644 index 000000000000..6e22db3742e1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/RefArrayOf.c @@ -0,0 +1,269 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// RefArrayOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +RefArrayOf::RefArrayOf(const XMLSize_t size, + MemoryManager* const manager) : + + fSize(size) + , fArray(0) + , fMemoryManager(manager) +{ + fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize]; + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = 0; +} + +template +RefArrayOf::RefArrayOf(TElem* values[], + const XMLSize_t size, + MemoryManager* const manager) : + + fSize(size) + , fArray(0) + , fMemoryManager(manager) +{ + fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize]; + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = values[index]; +} + +template RefArrayOf:: +RefArrayOf(const RefArrayOf& source) : + + fSize(source.fSize) + , fArray(0) + , fMemoryManager(source.fMemoryManager) +{ + fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize]; + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = source.fArray[index]; +} + +template RefArrayOf::~RefArrayOf() +{ + fMemoryManager->deallocate(fArray);//delete [] fArray; +} + + +// --------------------------------------------------------------------------- +// RefArrayOf: Public operators +// --------------------------------------------------------------------------- +template TElem*& RefArrayOf:: +operator[](const XMLSize_t index) +{ + if (index >= fSize) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + return fArray[index]; +} + +template const TElem* RefArrayOf:: +operator[](const XMLSize_t index) const +{ + if (index >= fSize) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + return fArray[index]; +} + +template RefArrayOf& RefArrayOf:: +operator=(const RefArrayOf& toAssign) +{ + if (this == &toAssign) + return *this; + + // Reallocate if not the same size + if (toAssign.fSize != fSize) + { + fMemoryManager->deallocate(fArray);//delete [] fArray; + fSize = toAssign.fSize; + fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize]; + } + + // Copy over the source elements + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = toAssign.fArray[index]; + + return *this; +} + +template bool RefArrayOf:: +operator==(const RefArrayOf& toCompare) const +{ + if (this == &toCompare) + return true; + + if (fSize != toCompare.fSize) + return false; + + for (XMLSize_t index = 0; index < fSize; index++) + { + if (fArray[index] != toCompare.fArray[index]) + return false; + } + return true; +} + +template bool RefArrayOf:: +operator!=(const RefArrayOf& toCompare) const +{ + return !operator==(toCompare); +} + + +// --------------------------------------------------------------------------- +// RefArrayOf: Copy operations +// --------------------------------------------------------------------------- +template XMLSize_t RefArrayOf:: +copyFrom(const RefArrayOf& srcArray) +{ + // + // Copy over as many of the source elements as will fit into + // this array. + // + const XMLSize_t count = fSize < srcArray.fSize ? + fSize : srcArray.fSize; + + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = srcArray.fArray[index]; + + return count; +} + + +// --------------------------------------------------------------------------- +// RefArrayOf: Getter methods +// --------------------------------------------------------------------------- +template XMLSize_t RefArrayOf::length() const +{ + return fSize; +} + +template TElem** RefArrayOf::rawData() const +{ + return fArray; +} + + +// --------------------------------------------------------------------------- +// RefArrayOf: Element management methods +// --------------------------------------------------------------------------- +template void RefArrayOf::deleteAt(const XMLSize_t index) +{ + if (index >= fSize) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + + delete fArray[index]; + fArray[index] = 0; +} + +template void RefArrayOf::deleteAllElements() +{ + for (XMLSize_t index = 0; index < fSize; index++) + { + delete fArray[index]; + fArray[index] = 0; + } +} + +template void RefArrayOf::resize(const XMLSize_t newSize) +{ + if (newSize == fSize) + return; + + if (newSize < fSize) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Array_BadNewSize, fMemoryManager); + + // Allocate the new array + TElem** newArray = (TElem**) fMemoryManager->allocate + ( + newSize * sizeof(TElem*) + );//new TElem*[newSize]; + + // Copy the existing values + XMLSize_t index = 0; + for (; index < fSize; index++) + newArray[index] = fArray[index]; + + for (; index < newSize; index++) + newArray[index] = 0; + + // Delete the old array and update our members + fMemoryManager->deallocate(fArray);//delete [] fArray; + fArray = newArray; + fSize = newSize; +} + + + + +// --------------------------------------------------------------------------- +// RefArrayEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template RefArrayEnumerator:: +RefArrayEnumerator( RefArrayOf* const toEnum + , const bool adopt) : + fAdopted(adopt) + , fCurIndex(0) + , fToEnum(toEnum) +{ +} + +template RefArrayEnumerator::~RefArrayEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// RefArrayEnumerator: Enum interface +// --------------------------------------------------------------------------- +template bool RefArrayEnumerator::hasMoreElements() const +{ + if (fCurIndex >= fToEnum->length()) + return false; + return true; +} + +template TElem& RefArrayEnumerator::nextElement() +{ + return *(*fToEnum)[fCurIndex++]; +} + +template void RefArrayEnumerator::Reset() +{ + fCurIndex = 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/RefArrayOf.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/RefArrayOf.hpp new file mode 100644 index 000000000000..1bd949a2551f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/RefArrayOf.hpp @@ -0,0 +1,150 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REFARRAY_HPP) +#define XERCESC_INCLUDE_GUARD_REFARRAY_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class RefArrayOf : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefArrayOf + ( + const XMLSize_t size + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + RefArrayOf + ( + TElem* values[] + , const XMLSize_t size + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + RefArrayOf(const RefArrayOf& source); + ~RefArrayOf(); + + + // ----------------------------------------------------------------------- + // Public operators + // ----------------------------------------------------------------------- + TElem*& operator[](const XMLSize_t index); + const TElem* operator[](const XMLSize_t index) const; + RefArrayOf& operator=(const RefArrayOf& toAssign); + bool operator==(const RefArrayOf& toCompare) const; + bool operator!=(const RefArrayOf& toCompare) const; + + + // ----------------------------------------------------------------------- + // Copy operations + // ----------------------------------------------------------------------- + XMLSize_t copyFrom(const RefArrayOf& srcArray); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t length() const; + TElem** rawData() const; + + + // ----------------------------------------------------------------------- + // Element management methods + // ----------------------------------------------------------------------- + void deleteAt(const XMLSize_t index); + void deleteAllElements(); + void resize(const XMLSize_t newSize); + + +private : + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + XMLSize_t fSize; + TElem** fArray; + MemoryManager* fMemoryManager; +}; + + +// +// An enumerator for a reference array. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template class RefArrayEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefArrayEnumerator + ( + RefArrayOf* const toEnum + , const bool adopt = false + ); + virtual ~RefArrayEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TElem& nextElement(); + void Reset(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefArrayEnumerator(const RefArrayEnumerator&); + RefArrayEnumerator& operator=(const RefArrayEnumerator&); + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed array. If so then + // we delete it when we are destroyed. + // + // fCurIndex + // This is the current index into the array. + // + // fToEnum + // The reference array being enumerated. + // ----------------------------------------------------------------------- + bool fAdopted; + XMLSize_t fCurIndex; + RefArrayOf* fToEnum; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/RefArrayVectorOf.c b/src/libs/xerces-c/mingw/include/xercesc/util/RefArrayVectorOf.c new file mode 100644 index 000000000000..d932773d2f16 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/RefArrayVectorOf.c @@ -0,0 +1,122 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include "RefArrayVectorOf.hpp" +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// RefArrayVectorOf: Constructor and Destructor +// --------------------------------------------------------------------------- +template +RefArrayVectorOf::RefArrayVectorOf( const XMLSize_t maxElems + , const bool adoptElems + , MemoryManager* const manager) + : BaseRefVectorOf(maxElems, adoptElems, manager) +{ +} + + +template RefArrayVectorOf::~RefArrayVectorOf() +{ + if (this->fAdoptedElems) + { + for (XMLSize_t index = 0; index < this->fCurCount; index++) + this->fMemoryManager->deallocate(this->fElemList[index]);//delete[] fElemList[index]; + } + this->fMemoryManager->deallocate(this->fElemList);//delete [] fElemList; +} + +template void +RefArrayVectorOf::setElementAt(TElem* const toSet, const XMLSize_t setAt) +{ + if (setAt >= this->fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, this->fMemoryManager); + + if (this->fAdoptedElems) + this->fMemoryManager->deallocate(this->fElemList[setAt]); + + this->fElemList[setAt] = toSet; +} + +template void RefArrayVectorOf::removeAllElements() +{ + for (XMLSize_t index = 0; index < this->fCurCount; index++) + { + if (this->fAdoptedElems) + this->fMemoryManager->deallocate(this->fElemList[index]); + + // Keep unused elements zero for sanity's sake + this->fElemList[index] = 0; + } + this->fCurCount = 0; +} + +template void RefArrayVectorOf:: +removeElementAt(const XMLSize_t removeAt) +{ + if (removeAt >= this->fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, this->fMemoryManager); + + if (this->fAdoptedElems) + this->fMemoryManager->deallocate(this->fElemList[removeAt]); + + // Optimize if its the last element + if (removeAt == this->fCurCount-1) + { + this->fElemList[removeAt] = 0; + this->fCurCount--; + return; + } + + // Copy down every element above remove point + for (XMLSize_t index = removeAt; index < this->fCurCount-1; index++) + this->fElemList[index] = this->fElemList[index+1]; + + // Keep unused elements zero for sanity's sake + this->fElemList[this->fCurCount-1] = 0; + + // And bump down count + this->fCurCount--; +} + +template void RefArrayVectorOf::removeLastElement() +{ + if (!this->fCurCount) + return; + this->fCurCount--; + + if (this->fAdoptedElems) + this->fMemoryManager->deallocate(this->fElemList[this->fCurCount]); +} + +template void RefArrayVectorOf::cleanup() +{ + if (this->fAdoptedElems) + { + for (XMLSize_t index = 0; index < this->fCurCount; index++) + this->fMemoryManager->deallocate(this->fElemList[index]); + } + this->fMemoryManager->deallocate(this->fElemList);//delete [] fElemList; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/RefArrayVectorOf.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/RefArrayVectorOf.hpp new file mode 100644 index 000000000000..50491b4043d8 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/RefArrayVectorOf.hpp @@ -0,0 +1,70 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REFARRAYVECTOROF_HPP) +#define XERCESC_INCLUDE_GUARD_REFARRAYVECTOROF_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Class with implementation for vectors of pointers to arrays - implements from + * the Abstract class Vector + */ +template class RefArrayVectorOf : public BaseRefVectorOf +{ +public : + // ----------------------------------------------------------------------- + // Constructor + // ----------------------------------------------------------------------- + RefArrayVectorOf( const XMLSize_t maxElems + , const bool adoptElems = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ----------------------------------------------------------------------- + // Destructor + // ----------------------------------------------------------------------- + ~RefArrayVectorOf(); + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + void setElementAt(TElem* const toSet, const XMLSize_t setAt); + void removeAllElements(); + void removeElementAt(const XMLSize_t removeAt); + void removeLastElement(); + void cleanup(); +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefArrayVectorOf(const RefArrayVectorOf&); + RefArrayVectorOf& operator=(const RefArrayVectorOf&); +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/RefHash2KeysTableOf.c b/src/libs/xerces-c/mingw/include/xercesc/util/RefHash2KeysTableOf.c new file mode 100644 index 000000000000..d37e008774a0 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/RefHash2KeysTableOf.c @@ -0,0 +1,692 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOf: Constructors and Destructor +// --------------------------------------------------------------------------- + +template +RefHash2KeysTableOf::RefHash2KeysTableOf( + const XMLSize_t modulus, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(true) + , fBucketList(0) + , fHashModulus(modulus) + , fCount(0) +{ + initialize(modulus); +} + +template +RefHash2KeysTableOf::RefHash2KeysTableOf( + const XMLSize_t modulus, + const THasher& hasher, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(true) + , fBucketList(0) + , fHashModulus(modulus) + , fCount(0) + , fHasher (hasher) +{ + initialize(modulus); +} + +template +RefHash2KeysTableOf::RefHash2KeysTableOf( + const XMLSize_t modulus, + const bool adoptElems, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fCount(0) + +{ + initialize(modulus); +} + +template +RefHash2KeysTableOf::RefHash2KeysTableOf( + const XMLSize_t modulus, + const bool adoptElems, + const THasher& hasher, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fCount(0) + , fHasher (hasher) +{ + initialize(modulus); +} + +template +void RefHash2KeysTableOf::initialize(const XMLSize_t modulus) +{ + if (modulus == 0) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); + + // Allocate the bucket list and zero them + fBucketList = (RefHash2KeysTableBucketElem**) fMemoryManager->allocate + ( + fHashModulus * sizeof(RefHash2KeysTableBucketElem*) + ); //new RefHash2KeysTableBucketElem*[fHashModulus]; + memset(fBucketList, 0, sizeof(fBucketList[0]) * fHashModulus); +} + +template +RefHash2KeysTableOf::~RefHash2KeysTableOf() +{ + removeAll(); + + // Then delete the bucket list & hasher + fMemoryManager->deallocate(fBucketList); //delete [] fBucketList; + fBucketList = 0; +} + + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOf: Element management +// --------------------------------------------------------------------------- +template +bool RefHash2KeysTableOf::isEmpty() const +{ + return (fCount==0); +} + +template +bool RefHash2KeysTableOf:: +containsKey(const void* const key1, const int key2) const +{ + XMLSize_t hashVal; + const RefHash2KeysTableBucketElem* findIt = findBucketElem(key1, key2, hashVal); + return (findIt != 0); +} + +template +void RefHash2KeysTableOf:: +removeKey(const void* const key1, const int key2) +{ + // Hash the key + XMLSize_t hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + RefHash2KeysTableBucketElem* curElem = fBucketList[hashVal]; + RefHash2KeysTableBucketElem* lastElem = 0; + + while (curElem) + { + if((key2==curElem->fKey2) && (fHasher.equals(key1, curElem->fKey1))) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + // If we adopted the elements, then delete the data + if (fAdoptedElems) + delete curElem->fData; + + // Delete the current element + // delete curElem; + // destructor is empty... + // curElem->~RefHash2KeysTableBucketElem(); + fMemoryManager->deallocate(curElem); + fCount--; + return; + } + + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + + // We never found that key + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, fMemoryManager); +} + +template +void RefHash2KeysTableOf:: +removeKey(const void* const key1) +{ + // Hash the key + XMLSize_t hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + RefHash2KeysTableBucketElem* curElem = fBucketList[hashVal]; + RefHash2KeysTableBucketElem* lastElem = 0; + + while (curElem) + { + if(fHasher.equals(key1, curElem->fKey1)) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + // If we adopted the elements, then delete the data + if (fAdoptedElems) + delete curElem->fData; + + RefHash2KeysTableBucketElem* toBeDeleted=curElem; + curElem = curElem->fNext; + + // Delete the current element + // delete curElem; + // destructor is empty... + // curElem->~RefHash2KeysTableBucketElem(); + fMemoryManager->deallocate(toBeDeleted); + fCount--; + } + else + { + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + } +} + +template +void RefHash2KeysTableOf::removeAll() +{ + if(isEmpty()) + return; + + // Clean up the buckets first + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + // Get the bucket list head for this entry + RefHash2KeysTableBucketElem* curElem = fBucketList[buckInd]; + RefHash2KeysTableBucketElem* nextElem; + while (curElem) + { + // Save the next element before we hose this one + nextElem = curElem->fNext; + + // If we adopted the data, then delete it too + // (Note: the userdata hash table instance has data type of void *. + // This will generate compiler warnings here on some platforms, but they + // can be ignored since fAdoptedElements is false. + if (fAdoptedElems) + delete curElem->fData; + + // Then delete the current element and move forward + // destructor is empty... + // curElem->~RefHash2KeysTableBucketElem(); + fMemoryManager->deallocate(curElem); + curElem = nextElem; + } + + // Clean out this entry + fBucketList[buckInd] = 0; + } + fCount=0; +} + +// this function transfer the data from key1 to key2 +template +void RefHash2KeysTableOf::transferElement(const void* const key1, void* key2) +{ + // Hash the key + XMLSize_t hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + RefHash2KeysTableBucketElem* curElem = fBucketList[hashVal]; + RefHash2KeysTableBucketElem* lastElem = 0; + + while (curElem) + { + // if this element has the same primary key, remove it and add it using the new primary key + if(fHasher.equals(key1, curElem->fKey1)) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + // this code comes from put(), but it doesn't update fCount + XMLSize_t hashVal2; + RefHash2KeysTableBucketElem* newBucket = findBucketElem(key2, curElem->fKey2, hashVal2); + if (newBucket) + { + if (fAdoptedElems) + delete newBucket->fData; + newBucket->fData = curElem->fData; + newBucket->fKey1 = key2; + newBucket->fKey2 = curElem->fKey2; + } + else + { + newBucket = + new (fMemoryManager->allocate(sizeof(RefHash2KeysTableBucketElem))) + RefHash2KeysTableBucketElem(key2, curElem->fKey2, curElem->fData, fBucketList[hashVal2]); + fBucketList[hashVal2] = newBucket; + } + + RefHash2KeysTableBucketElem* elemToDelete = curElem; + + // Update just curElem; lastElem must stay the same + curElem = curElem->fNext; + + // Delete the current element + // delete elemToDelete; + // destructor is empty... + // curElem->~RefHash2KeysTableBucketElem(); + fMemoryManager->deallocate(elemToDelete); + } + else + { + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + } +} + + + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOf: Getters +// --------------------------------------------------------------------------- +template +TVal* RefHash2KeysTableOf::get(const void* const key1, const int key2) +{ + XMLSize_t hashVal; + RefHash2KeysTableBucketElem* findIt = findBucketElem(key1, key2, hashVal); + if (!findIt) + return 0; + return findIt->fData; +} + +template +const TVal* RefHash2KeysTableOf:: +get(const void* const key1, const int key2) const +{ + XMLSize_t hashVal; + const RefHash2KeysTableBucketElem* findIt = findBucketElem(key1, key2, hashVal); + if (!findIt) + return 0; + return findIt->fData; +} + +template +MemoryManager* RefHash2KeysTableOf::getMemoryManager() const +{ + return fMemoryManager; +} + +template +XMLSize_t RefHash2KeysTableOf::getHashModulus() const +{ + return fHashModulus; +} + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOf: Putters +// --------------------------------------------------------------------------- +template +void RefHash2KeysTableOf::put(void* key1, int key2, TVal* const valueToAdopt) +{ + // Apply 4 load factor to find threshold. + XMLSize_t threshold = fHashModulus * 4; + + // If we've grown too big, expand the table and rehash. + if (fCount >= threshold) + rehash(); + + // First see if the key exists already + XMLSize_t hashVal; + RefHash2KeysTableBucketElem* newBucket = findBucketElem(key1, key2, hashVal); + + // + // If so,then update its value. If not, then we need to add it to + // the right bucket + // + if (newBucket) + { + if (fAdoptedElems) + delete newBucket->fData; + newBucket->fData = valueToAdopt; + newBucket->fKey1 = key1; + newBucket->fKey2 = key2; + } + else + { + newBucket = + new (fMemoryManager->allocate(sizeof(RefHash2KeysTableBucketElem))) + RefHash2KeysTableBucketElem(key1, key2, valueToAdopt, fBucketList[hashVal]); + fBucketList[hashVal] = newBucket; + fCount++; + } +} + + + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOf: Private methods +// --------------------------------------------------------------------------- +template +inline RefHash2KeysTableBucketElem* RefHash2KeysTableOf:: +findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal) +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + RefHash2KeysTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if((key2==curElem->fKey2) && (fHasher.equals(key1, curElem->fKey1))) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + +template +inline const RefHash2KeysTableBucketElem* RefHash2KeysTableOf:: +findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal) const +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + const RefHash2KeysTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if((key2==curElem->fKey2) && (fHasher.equals(key1, curElem->fKey1))) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + + +template +void RefHash2KeysTableOf:: +rehash() +{ + const XMLSize_t newMod = (fHashModulus * 8)+1; + + RefHash2KeysTableBucketElem** newBucketList = + (RefHash2KeysTableBucketElem**) fMemoryManager->allocate + ( + newMod * sizeof(RefHash2KeysTableBucketElem*) + );//new RefHash2KeysTableBucketElem*[fHashModulus]; + + // Make sure the new bucket list is destroyed if an + // exception is thrown. + ArrayJanitor*> guard(newBucketList, fMemoryManager); + + memset(newBucketList, 0, newMod * sizeof(newBucketList[0])); + + // Rehash all existing entries. + for (XMLSize_t index = 0; index < fHashModulus; index++) + { + // Get the bucket list head for this entry + RefHash2KeysTableBucketElem* curElem = fBucketList[index]; + while (curElem) + { + // Save the next element before we detach this one + RefHash2KeysTableBucketElem* nextElem = curElem->fNext; + + const XMLSize_t hashVal = fHasher.getHashVal(curElem->fKey1, newMod); + assert(hashVal < newMod); + + RefHash2KeysTableBucketElem* newHeadElem = newBucketList[hashVal]; + + // Insert at the start of this bucket's list. + curElem->fNext = newHeadElem; + newBucketList[hashVal] = curElem; + + curElem = nextElem; + } + } + + RefHash2KeysTableBucketElem** const oldBucketList = fBucketList; + + // Everything is OK at this point, so update the + // member variables. + fBucketList = guard.release(); + fHashModulus = newMod; + + // Delete the old bucket list. + fMemoryManager->deallocate(oldBucketList);//delete[] oldBucketList; + +} + + + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOfEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template +RefHash2KeysTableOfEnumerator:: +RefHash2KeysTableOfEnumerator(RefHash2KeysTableOf* const toEnum + , const bool adopt + , MemoryManager* const manager) + : fAdopted(adopt), fCurElem(0), fCurHash((XMLSize_t)-1), fToEnum(toEnum) + , fMemoryManager(manager) + , fLockPrimaryKey(0) +{ + if (!toEnum) + ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, fMemoryManager); + + // + // Find the next available bucket element in the hash table. If it + // comes back zero, that just means the table is empty. + // + // Note that the -1 in the current hash tells it to start + // from the beginning. + // + findNext(); +} + +template +RefHash2KeysTableOfEnumerator::~RefHash2KeysTableOfEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOfEnumerator: Enum interface +// --------------------------------------------------------------------------- +template +bool RefHash2KeysTableOfEnumerator::hasMoreElements() const +{ + // + // If our current has is at the max and there are no more elements + // in the current bucket, then no more elements. + // + if (!fCurElem && (fCurHash == fToEnum->fHashModulus)) + return false; + return true; +} + +template +TVal& RefHash2KeysTableOfEnumerator::nextElement() +{ + // Make sure we have an element to return + if (!hasMoreElements()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + RefHash2KeysTableBucketElem* saveElem = fCurElem; + findNext(); + + return *saveElem->fData; +} + +template +void RefHash2KeysTableOfEnumerator::nextElementKey(void*& retKey1, int& retKey2) +{ + // Make sure we have an element to return + if (!hasMoreElements()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + RefHash2KeysTableBucketElem* saveElem = fCurElem; + findNext(); + + retKey1 = saveElem->fKey1; + retKey2 = saveElem->fKey2; + + return; +} + +template +void RefHash2KeysTableOfEnumerator::Reset() +{ + if(fLockPrimaryKey) + fCurHash=fToEnum->fHasher.getHashVal(fLockPrimaryKey, fToEnum->fHashModulus); + else + fCurHash = (XMLSize_t)-1; + + fCurElem = 0; + findNext(); +} + + +template +void RefHash2KeysTableOfEnumerator::setPrimaryKey(const void* key) +{ + fLockPrimaryKey=key; + Reset(); +} + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOfEnumerator: Private helper methods +// --------------------------------------------------------------------------- +template +void RefHash2KeysTableOfEnumerator::findNext() +{ + // Code to execute if we have to return only values with the primary key + if(fLockPrimaryKey) + { + if(!fCurElem) + fCurElem = fToEnum->fBucketList[fCurHash]; + else + fCurElem = fCurElem->fNext; + while (fCurElem && (!fToEnum->fHasher.equals(fLockPrimaryKey, fCurElem->fKey1))) + fCurElem = fCurElem->fNext; + // if we didn't found it, make so hasMoreElements() returns false + if(!fCurElem) + fCurHash = fToEnum->fHashModulus; + return; + } + // + // If there is a current element, move to its next element. If this + // hits the end of the bucket, the next block will handle the rest. + // + if (fCurElem) + fCurElem = fCurElem->fNext; + + // + // If the current element is null, then we have to move up to the + // next hash value. If that is the hash modulus, then we cannot + // go further. + // + if (!fCurElem) + { + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + + // Else find the next non-empty bucket + while (fToEnum->fBucketList[fCurHash]==0) + { + // Bump to the next hash value. If we max out return + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + } + fCurElem = fToEnum->fBucketList[fCurHash]; + } +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/RefHash2KeysTableOf.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/RefHash2KeysTableOf.hpp new file mode 100644 index 000000000000..d2639e8cc707 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/RefHash2KeysTableOf.hpp @@ -0,0 +1,258 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REFHASH2KEYSTABLEOF_HPP) +#define XERCESC_INCLUDE_GUARD_REFHASH2KEYSTABLEOF_HPP + + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// This hash table is similar to RefHashTableOf with an additional integer as key2 + +// Forward declare the enumerator so it can be our friend. +// +template +class RefHash2KeysTableOfEnumerator; + +// +// This should really be a nested class, but some of the compilers we +// have to support cannot deal with that! +// +template +struct RefHash2KeysTableBucketElem +{ + RefHash2KeysTableBucketElem(void* key1, int key2, TVal* const value, RefHash2KeysTableBucketElem* next) + : fData(value), fNext(next), fKey1(key1), fKey2(key2) + { + } + ~RefHash2KeysTableBucketElem() {}; + + TVal* fData; + RefHash2KeysTableBucketElem* fNext; + void* fKey1; + int fKey2; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHash2KeysTableBucketElem(const RefHash2KeysTableBucketElem&); + RefHash2KeysTableBucketElem& operator=(const RefHash2KeysTableBucketElem&); +}; + + +template +class RefHash2KeysTableOf : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + RefHash2KeysTableOf( + const XMLSize_t modulus, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHash2KeysTableOf( + const XMLSize_t modulus, + const THasher& hasher, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHash2KeysTableOf( + const XMLSize_t modulus, + const bool adoptElems, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHash2KeysTableOf( + const XMLSize_t modulus, + const bool adoptElems, + const THasher& hasher, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~RefHash2KeysTableOf(); + + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + bool isEmpty() const; + bool containsKey(const void* const key1, const int key2) const; + void removeKey(const void* const key1, const int key2); + void removeKey(const void* const key1); + void removeAll(); + void transferElement(const void* const key1, void* key2); + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + TVal* get(const void* const key1, const int key2); + const TVal* get(const void* const key1, const int key2) const; + + MemoryManager* getMemoryManager() const; + XMLSize_t getHashModulus() const; + + // ----------------------------------------------------------------------- + // Putters + // ----------------------------------------------------------------------- + void put(void* key1, int key2, TVal* const valueToAdopt); + +private : + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class RefHash2KeysTableOfEnumerator; + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHash2KeysTableOf(const RefHash2KeysTableOf&); + RefHash2KeysTableOf& operator=(const RefHash2KeysTableOf&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + RefHash2KeysTableBucketElem* findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal); + const RefHash2KeysTableBucketElem* findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal) const; + void initialize(const XMLSize_t modulus); + void rehash(); + + + // ----------------------------------------------------------------------- + // Data members + // + // fAdoptedElems + // Indicates whether the values added are adopted or just referenced. + // If adopted, then they are deleted when they are removed from the + // hash table. + // + // fBucketList + // This is the array that contains the heads of all of the list + // buckets, one for each possible hash value. + // + // fHashModulus + // The modulus used for this hash table, to hash the keys. This is + // also the number of elements in the bucket list. + // + // fCount + // The number of elements currently in the map + // + // fHash + // The hasher for the key1 data type. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + bool fAdoptedElems; + RefHash2KeysTableBucketElem** fBucketList; + XMLSize_t fHashModulus; + XMLSize_t fCount; + THasher fHasher; +}; + + + +// +// An enumerator for a value array. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template +class RefHash2KeysTableOfEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefHash2KeysTableOfEnumerator(RefHash2KeysTableOf* const toEnum + , const bool adopt = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~RefHash2KeysTableOfEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TVal& nextElement(); + void Reset(); + + // ----------------------------------------------------------------------- + // New interface + // ----------------------------------------------------------------------- + void nextElementKey(void*&, int&); + void setPrimaryKey(const void* key); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHash2KeysTableOfEnumerator(const RefHash2KeysTableOfEnumerator&); + RefHash2KeysTableOfEnumerator& operator=(const RefHash2KeysTableOfEnumerator&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + void findNext(); + + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed vector. If so then + // we delete the vector when we are destroyed. + // + // fCurElem + // This is the current bucket bucket element that we are on. + // + // fCurHash + // The is the current hash buck that we are working on. Once we hit + // the end of the bucket that fCurElem is in, then we have to start + // working this one up to the next non-empty bucket. + // + // fToEnum + // The value array being enumerated. + // + // fLockPrimaryKey + // Indicates that we are requested to iterate over the secondary keys + // associated with the given primary key + // + // ----------------------------------------------------------------------- + bool fAdopted; + RefHash2KeysTableBucketElem* fCurElem; + XMLSize_t fCurHash; + RefHash2KeysTableOf* fToEnum; + MemoryManager* const fMemoryManager; + const void* fLockPrimaryKey; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/RefHash3KeysIdPool.c b/src/libs/xerces-c/mingw/include/xercesc/util/RefHash3KeysIdPool.c new file mode 100644 index 000000000000..4fdd59524403 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/RefHash3KeysIdPool.c @@ -0,0 +1,572 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// RefHash3KeysIdPool: Constructors and Destructor +// --------------------------------------------------------------------------- +template +RefHash3KeysIdPool::RefHash3KeysIdPool( + const XMLSize_t modulus, + const XMLSize_t initSize, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(true) + , fBucketList(0) + , fHashModulus(modulus) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) +{ + initialize(modulus); + + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*)); //new TVal*[fIdPtrsCount]; + fIdPtrs[0] = 0; +} + +template +RefHash3KeysIdPool::RefHash3KeysIdPool( + const XMLSize_t modulus, + const THasher& hasher, + const XMLSize_t initSize, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(true) + , fBucketList(0) + , fHashModulus(modulus) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) + , fHasher(hasher) +{ + initialize(modulus); + + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*)); //new TVal*[fIdPtrsCount]; + fIdPtrs[0] = 0; +} + +template +RefHash3KeysIdPool::RefHash3KeysIdPool( + const XMLSize_t modulus, + const bool adoptElems, + const XMLSize_t initSize, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) + +{ + initialize(modulus); + + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*)); //new TVal*[fIdPtrsCount]; + fIdPtrs[0] = 0; +} + +template +RefHash3KeysIdPool::RefHash3KeysIdPool( + const XMLSize_t modulus, + const bool adoptElems, + const THasher& hasher, + const XMLSize_t initSize, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) + , fHasher(hasher) +{ + initialize(modulus); + + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*)); //new TVal*[fIdPtrsCount]; + fIdPtrs[0] = 0; +} + +template +void RefHash3KeysIdPool::initialize(const XMLSize_t modulus) +{ + if (modulus == 0) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); + + // Allocate the bucket list and zero them + fBucketList = (RefHash3KeysTableBucketElem**) fMemoryManager->allocate + ( + fHashModulus * sizeof(RefHash3KeysTableBucketElem*) + ); //new RefHash3KeysTableBucketElem*[fHashModulus]; + memset(fBucketList, 0, sizeof(fBucketList[0]) * fHashModulus); +} + +template +RefHash3KeysIdPool::~RefHash3KeysIdPool() +{ + removeAll(); + + // Then delete the bucket list & hasher & id pointers list + fMemoryManager->deallocate(fIdPtrs); //delete [] fIdPtrs; + fIdPtrs = 0; + fMemoryManager->deallocate(fBucketList); //delete [] fBucketList; + fBucketList = 0; +} + + +// --------------------------------------------------------------------------- +// RefHash3KeysIdPool: Element management +// --------------------------------------------------------------------------- +template +bool RefHash3KeysIdPool::isEmpty() const +{ + // Just check the bucket list for non-empty elements + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + if (fBucketList[buckInd] != 0) + return false; + } + return true; +} + +template +bool RefHash3KeysIdPool:: +containsKey(const void* const key1, const int key2, const int key3) const +{ + XMLSize_t hashVal; + const RefHash3KeysTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); + return (findIt != 0); +} + +template +void RefHash3KeysIdPool::removeAll() +{ + if (fIdCounter == 0) return; + + // Clean up the buckets first + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + // Get the bucket list head for this entry + RefHash3KeysTableBucketElem* curElem = fBucketList[buckInd]; + RefHash3KeysTableBucketElem* nextElem; + while (curElem) + { + // Save the next element before we hose this one + nextElem = curElem->fNext; + + // If we adopted the data, then delete it too + // (Note: the userdata hash table instance has data type of void *. + // This will generate compiler warnings here on some platforms, but they + // can be ignored since fAdoptedElements is false. + if (fAdoptedElems) + delete curElem->fData; + + // Then delete the current element and move forward + // delete curElem; + // destructor is empty... + // curElem->~RefHash3KeysTableBucketElem(); + fMemoryManager->deallocate(curElem); + curElem = nextElem; + } + + // Clean out this entry + fBucketList[buckInd] = 0; + } + + // Reset the id counter + fIdCounter = 0; +} + + +// --------------------------------------------------------------------------- +// RefHash3KeysIdPool: Getters +// --------------------------------------------------------------------------- +template +TVal* +RefHash3KeysIdPool::getByKey(const void* const key1, const int key2, const int key3) +{ + XMLSize_t hashVal; + RefHash3KeysTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); + if (!findIt) + return 0; + return findIt->fData; +} + +template +const TVal* +RefHash3KeysIdPool::getByKey(const void* const key1, const int key2, const int key3) const +{ + XMLSize_t hashVal; + const RefHash3KeysTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); + if (!findIt) + return 0; + return findIt->fData; +} + +template +TVal* +RefHash3KeysIdPool::getById(const unsigned int elemId) +{ + // If its either zero or beyond our current id, its an error + if (!elemId || (elemId > fIdCounter)) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); + + return fIdPtrs[elemId]; +} + +template +const TVal* +RefHash3KeysIdPool::getById(const unsigned int elemId) const +{ + // If its either zero or beyond our current id, its an error + if (!elemId || (elemId > fIdCounter)) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); + + return fIdPtrs[elemId]; +} + +template +MemoryManager* RefHash3KeysIdPool::getMemoryManager() const +{ + return fMemoryManager; +} + +template +XMLSize_t RefHash3KeysIdPool::getHashModulus() const +{ + return fHashModulus; +} + +// --------------------------------------------------------------------------- +// RefHash3KeysIdPool: Putters +// --------------------------------------------------------------------------- +template +XMLSize_t +RefHash3KeysIdPool::put(void* key1, int key2, int key3, TVal* const valueToAdopt) +{ + // First see if the key exists already + XMLSize_t hashVal; + XMLSize_t retId; + RefHash3KeysTableBucketElem* newBucket = findBucketElem(key1, key2, key3, hashVal); + + // + // If so,then update its value. If not, then we need to add it to + // the right bucket + // + if (newBucket) + { + retId = newBucket->fData->getId(); + if (fAdoptedElems) + delete newBucket->fData; + newBucket->fData = valueToAdopt; + newBucket->fKey1 = key1; + newBucket->fKey2 = key2; + newBucket->fKey3 = key3; + } + else + { + // Revisit: the gcc compiler 2.95.x is generating an + // internal compiler error message. So we use the default + // memory manager for now. +#if defined (XML_GCC_VERSION) && (XML_GCC_VERSION < 29600) + newBucket = new RefHash3KeysTableBucketElem(key1, key2, key3, valueToAdopt, fBucketList[hashVal]); +#else + newBucket = + new (fMemoryManager->allocate(sizeof(RefHash3KeysTableBucketElem))) + RefHash3KeysTableBucketElem(key1, key2, key3, valueToAdopt, fBucketList[hashVal]); +#endif + fBucketList[hashVal] = newBucket; + + // + // Give this new one the next available id and add to the pointer list. + // Expand the list if that is now required. + // + if (fIdCounter + 1 == fIdPtrsCount) + { + // Create a new count 1.5 times larger and allocate a new array + XMLSize_t newCount = (XMLSize_t)(fIdPtrsCount * 1.5); + TVal** newArray = (TVal**) fMemoryManager->allocate + ( + newCount * sizeof(TVal*) + ); //new TVal*[newCount]; + + // Copy over the old contents to the new array + memcpy(newArray, fIdPtrs, fIdPtrsCount * sizeof(TVal*)); + + // Ok, toss the old array and store the new data + fMemoryManager->deallocate(fIdPtrs); //delete [] fIdPtrs; + fIdPtrs = newArray; + fIdPtrsCount = newCount; + } + retId = ++fIdCounter; + } + + fIdPtrs[retId] = valueToAdopt; + + // Set the id on the passed element + valueToAdopt->setId(retId); + + // Return the id that we gave to this element + return retId; +} + +// --------------------------------------------------------------------------- +// RefHash3KeysIdPool: Private methods +// --------------------------------------------------------------------------- +template +inline RefHash3KeysTableBucketElem* RefHash3KeysIdPool:: +findBucketElem(const void* const key1, const int key2, const int key3, XMLSize_t& hashVal) +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + RefHash3KeysTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if((key2==curElem->fKey2) && (key3==curElem->fKey3) && (fHasher.equals(key1, curElem->fKey1))) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + +template +inline const RefHash3KeysTableBucketElem* RefHash3KeysIdPool:: +findBucketElem(const void* const key1, const int key2, const int key3, XMLSize_t& hashVal) const +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + const RefHash3KeysTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if((key2==curElem->fKey2) && (key3==curElem->fKey3) && (fHasher.equals(key1, curElem->fKey1))) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + + +// --------------------------------------------------------------------------- +// RefHash3KeysIdPoolEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template +RefHash3KeysIdPoolEnumerator:: +RefHash3KeysIdPoolEnumerator(RefHash3KeysIdPool* const toEnum + , const bool adopt + , MemoryManager* const manager) + : fAdoptedElems(adopt), fCurIndex(0), fToEnum(toEnum), fMemoryManager(manager) +{ + if (!toEnum) + ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, fMemoryManager); + + Reset(); + resetKey(); +} + +template +RefHash3KeysIdPoolEnumerator::~RefHash3KeysIdPoolEnumerator() +{ + if (fAdoptedElems) + delete fToEnum; +} + +template +RefHash3KeysIdPoolEnumerator:: +RefHash3KeysIdPoolEnumerator(const RefHash3KeysIdPoolEnumerator& toCopy) : + XMLEnumerator(toCopy) + , XMemory(toCopy) + , fAdoptedElems(toCopy.fAdoptedElems) + , fCurIndex(toCopy.fCurIndex) + , fToEnum(toCopy.fToEnum) + , fCurElem(toCopy.fCurElem) + , fCurHash(toCopy.fCurHash) + , fMemoryManager(toCopy.fMemoryManager) +{ +} + +// --------------------------------------------------------------------------- +// RefHash3KeysIdPoolEnumerator: Enum interface +// --------------------------------------------------------------------------- +template +bool RefHash3KeysIdPoolEnumerator::hasMoreElements() const +{ + // If our index is zero or past the end, then we are done + if (!fCurIndex || (fCurIndex > fToEnum->fIdCounter)) + return false; + return true; +} + +template +TVal& RefHash3KeysIdPoolEnumerator::nextElement() +{ + // If our index is zero or past the end, then we are done + if (!fCurIndex || (fCurIndex > fToEnum->fIdCounter)) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // Return the current element and bump the index + return *fToEnum->fIdPtrs[fCurIndex++]; +} + +template +void RefHash3KeysIdPoolEnumerator::Reset() +{ + // + // Find the next available bucket element in the pool. We use the id + // array since its very easy to enumerator through by just maintaining + // an index. If the id counter is zero, then its empty and we leave the + // current index to zero. + // + fCurIndex = fToEnum->fIdCounter ? 1:0; + +} + +template +XMLSize_t RefHash3KeysIdPoolEnumerator::size() const +{ + return fToEnum->fIdCounter; +} + +template +void RefHash3KeysIdPoolEnumerator::resetKey() +{ + fCurHash = (XMLSize_t)-1; + fCurElem = 0; + findNext(); +} + +template +bool RefHash3KeysIdPoolEnumerator::hasMoreKeys() const +{ + // + // If our current has is at the max and there are no more elements + // in the current bucket, then no more elements. + // + if (!fCurElem && (fCurHash == fToEnum->fHashModulus)) + return false; + + return true; +} + +template +void RefHash3KeysIdPoolEnumerator::nextElementKey(void*& retKey1, int& retKey2, int& retKey3) +{ + // Make sure we have an element to return + if (!hasMoreKeys()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + RefHash3KeysTableBucketElem* saveElem = fCurElem; + findNext(); + + retKey1 = saveElem->fKey1; + retKey2 = saveElem->fKey2; + retKey3 = saveElem->fKey3; + + return; +} + +template +void RefHash3KeysIdPoolEnumerator::findNext() +{ + // + // If there is a current element, move to its next element. If this + // hits the end of the bucket, the next block will handle the rest. + // + if (fCurElem) + fCurElem = fCurElem->fNext; + + // + // If the current element is null, then we have to move up to the + // next hash value. If that is the hash modulus, then we cannot + // go further. + // + if (!fCurElem) + { + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + + // Else find the next non-empty bucket + while (fToEnum->fBucketList[fCurHash]==0) + { + // Bump to the next hash value. If we max out return + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + } + fCurElem = fToEnum->fBucketList[fCurHash]; + } +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/RefHash3KeysIdPool.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/RefHash3KeysIdPool.hpp new file mode 100644 index 000000000000..666abebfc2d7 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/RefHash3KeysIdPool.hpp @@ -0,0 +1,279 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REFHASH3KEYSIDPOOL_HPP) +#define XERCESC_INCLUDE_GUARD_REFHASH3KEYSIDPOOL_HPP + + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// This hash table is a combination of RefHash2KeyTableOf (with an additional integer as key3) +// and NameIdPool with an id as index + +// Forward declare the enumerator so it can be our friend. +// +template +class RefHash3KeysIdPoolEnumerator; + + +// +// This should really be a nested class, but some of the compilers we +// have to support cannot deal with that! +// +template +struct RefHash3KeysTableBucketElem +{ + RefHash3KeysTableBucketElem( + void* key1 + , int key2 + , int key3 + , TVal* const value + , RefHash3KeysTableBucketElem* next) : + fData(value) + , fNext(next) + , fKey1(key1) + , fKey2(key2) + , fKey3(key3) + { + } + + RefHash3KeysTableBucketElem() {}; + ~RefHash3KeysTableBucketElem() {}; + + TVal* fData; + RefHash3KeysTableBucketElem* fNext; + void* fKey1; + int fKey2; + int fKey3; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHash3KeysTableBucketElem(const RefHash3KeysTableBucketElem&); + RefHash3KeysTableBucketElem& operator=(const RefHash3KeysTableBucketElem&); +}; + + +template +class RefHash3KeysIdPool : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefHash3KeysIdPool( + const XMLSize_t modulus, + const XMLSize_t initSize = 128, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHash3KeysIdPool( + const XMLSize_t modulus, + const THasher& hasher, + const XMLSize_t initSize = 128, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHash3KeysIdPool( + const XMLSize_t modulus, + const bool adoptElems, + const XMLSize_t initSize = 128, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHash3KeysIdPool( + const XMLSize_t modulus, + const bool adoptElems, + const THasher& hasher, + const XMLSize_t initSize = 128, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~RefHash3KeysIdPool(); + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + bool isEmpty() const; + bool containsKey(const void* const key1, const int key2, const int key3) const; + void removeAll(); + + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + TVal* getByKey(const void* const key1, const int key2, const int key3); + const TVal* getByKey(const void* const key1, const int key2, const int key3) const; + + TVal* getById(const unsigned int elemId); + const TVal* getById(const unsigned int elemId) const; + + MemoryManager* getMemoryManager() const; + XMLSize_t getHashModulus() const; + + // ----------------------------------------------------------------------- + // Putters + // ----------------------------------------------------------------------- + XMLSize_t put(void* key1, int key2, int key3, TVal* const valueToAdopt); + + +private : + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class RefHash3KeysIdPoolEnumerator; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHash3KeysIdPool(const RefHash3KeysIdPool&); + RefHash3KeysIdPool& operator=(const RefHash3KeysIdPool&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + RefHash3KeysTableBucketElem* findBucketElem(const void* const key1, const int key2, const int key3, XMLSize_t& hashVal); + const RefHash3KeysTableBucketElem* findBucketElem(const void* const key1, const int key2, const int key3, XMLSize_t& hashVal) const; + void initialize(const XMLSize_t modulus); + + + // ----------------------------------------------------------------------- + // Data members + // + // fAdoptedElems + // Indicates whether the values added are adopted or just referenced. + // If adopted, then they are deleted when they are removed from the + // hash table. + // + // fBucketList + // This is the array that contains the heads of all of the list + // buckets, one for each possible hash value. + // + // fHashModulus + // The modulus used for this hash table, to hash the keys. This is + // also the number of elements in the bucket list. + // + // fHash + // The hasher for the key1 data type. + // + // fIdPtrs + // fIdPtrsCount + // This is the array of pointers to the bucket elements in order of + // their assigned ids. So taking id N and referencing this array + // gives you the element with that id. The count field indicates + // the current size of this list. When fIdCounter+1 reaches this + // value the list must be expanded. + // + // fIdCounter + // This is used to give out unique ids to added elements. It starts + // at zero (which means empty), and is bumped up for each newly added + // element. So the first element is 1, the next is 2, etc... This + // means that this value is set to the top index of the fIdPtrs array. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + bool fAdoptedElems; + RefHash3KeysTableBucketElem** fBucketList; + XMLSize_t fHashModulus; + TVal** fIdPtrs; + XMLSize_t fIdPtrsCount; + XMLSize_t fIdCounter; + THasher fHasher; +}; + + + +// +// An enumerator for a value array. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template +class RefHash3KeysIdPoolEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefHash3KeysIdPoolEnumerator(RefHash3KeysIdPool* const toEnum + , const bool adopt = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~RefHash3KeysIdPoolEnumerator(); + + RefHash3KeysIdPoolEnumerator(const RefHash3KeysIdPoolEnumerator&); + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TVal& nextElement(); + void Reset(); + XMLSize_t size() const; + + // ----------------------------------------------------------------------- + // New interface + // ----------------------------------------------------------------------- + void resetKey(); + void nextElementKey(void*&, int&, int&); + bool hasMoreKeys() const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHash3KeysIdPoolEnumerator& + operator=(const RefHash3KeysIdPoolEnumerator&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + void findNext(); + + // ----------------------------------------------------------------------- + // Data Members + // fAdoptedElems + // Indicates whether the values added are adopted or just referenced. + // If adopted, then they are deleted when they are removed from the + // hash table + // + // fCurIndex + // This is the current index into the pool's id mapping array. This + // is now we enumerate it. + // + // fToEnum + // The name id pool that is being enumerated. + // ----------------------------------------------------------------------- + bool fAdoptedElems; + XMLSize_t fCurIndex; + RefHash3KeysIdPool* fToEnum; + RefHash3KeysTableBucketElem* fCurElem; + XMLSize_t fCurHash; + MemoryManager* const fMemoryManager; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/RefHashTableOf.c b/src/libs/xerces-c/mingw/include/xercesc/util/RefHashTableOf.c new file mode 100644 index 000000000000..e413e36eb531 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/RefHashTableOf.c @@ -0,0 +1,663 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// RefHashTableOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +RefHashTableOf::RefHashTableOf( + const XMLSize_t modulus, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(true) + , fBucketList(0) + , fHashModulus(modulus) + , fInitialModulus(modulus) + , fCount(0) +{ + initialize(modulus); +} + +template +RefHashTableOf::RefHashTableOf( + const XMLSize_t modulus, + const THasher& hasher, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(true) + , fBucketList(0) + , fHashModulus(modulus) + , fInitialModulus(modulus) + , fCount(0) + , fHasher (hasher) +{ + initialize(modulus); +} + +template +RefHashTableOf::RefHashTableOf( + const XMLSize_t modulus, + const bool adoptElems, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fInitialModulus(modulus) + , fCount(0) + +{ + initialize(modulus); +} + +template +RefHashTableOf::RefHashTableOf( + const XMLSize_t modulus, + const bool adoptElems, + const THasher& hasher, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fInitialModulus(modulus) + , fCount(0) + , fHasher (hasher) +{ + initialize(modulus); +} + +template +void RefHashTableOf::initialize(const XMLSize_t modulus) +{ + if (modulus == 0) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); + + // Allocate the bucket list and zero them + fBucketList = (RefHashTableBucketElem**) fMemoryManager->allocate + ( + fHashModulus * sizeof(RefHashTableBucketElem*) + ); + for (XMLSize_t index = 0; index < fHashModulus; index++) + fBucketList[index] = 0; +} + +template +RefHashTableOf::~RefHashTableOf() +{ + cleanup(); +} + + +// --------------------------------------------------------------------------- +// RefHashTableOf: Element management +// --------------------------------------------------------------------------- +template +inline bool RefHashTableOf::isEmpty() const +{ + return fCount==0; +} + +template +inline bool RefHashTableOf::containsKey(const void* const key) const +{ + XMLSize_t hashVal; + const RefHashTableBucketElem* findIt = findBucketElem(key, hashVal); + return (findIt != 0); +} + +template +void RefHashTableOf:: +removeKey(const void* const key) +{ + // Hash the key + XMLSize_t hashVal = fHasher.getHashVal(key, fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + RefHashTableBucketElem* curElem = fBucketList[hashVal]; + RefHashTableBucketElem* lastElem = 0; + + while (curElem) + { + if (fHasher.equals(key, curElem->fKey)) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + // If we adopted the data, then delete it too + // (Note: the userdata hash table instance has data type of void *. + // This will generate compiler warnings here on some platforms, but they + // can be ignored since fAdoptedElements is false. + if (fAdoptedElems) + delete curElem->fData; + + // Then delete the current element and move forward + // delete curElem; + // destructor doesn't do anything... + fMemoryManager->deallocate(curElem); + + fCount--; + + return; + } + + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + + // We never found that key + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, fMemoryManager); +} + +template +void RefHashTableOf::removeAll() +{ + if(isEmpty()) + return; + + // Clean up the buckets first + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + // Get the bucket list head for this entry + RefHashTableBucketElem* curElem = fBucketList[buckInd]; + RefHashTableBucketElem* nextElem; + while (curElem) + { + // Save the next element before we hose this one + nextElem = curElem->fNext; + + // If we adopted the data, then delete it too + // (Note: the userdata hash table instance has data type of void *. + // This will generate compiler warnings here on some platforms, but they + // can be ignored since fAdoptedElements is false. + if (fAdoptedElems) + delete curElem->fData; + + // Then delete the current element and move forward + // delete curElem; + // destructor doesn't do anything... + // curElem->~RefHashTableBucketElem(); + fMemoryManager->deallocate(curElem); + curElem = nextElem; + } + + // Clean out this entry + fBucketList[buckInd] = 0; + } + + fCount = 0; +} + +// This method returns the data associated with a key. The key entry is deleted. The caller +// now owns the returned data (case of hashtable adopting the data). +// This function is called by transferElement so that the undeleted data can be transferred +// to a new key which will own that data. +template TVal* RefHashTableOf:: +orphanKey(const void* const key) +{ + // Hash the key + TVal* retVal = 0; + XMLSize_t hashVal = fHasher.getHashVal(key, fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + RefHashTableBucketElem* curElem = fBucketList[hashVal]; + RefHashTableBucketElem* lastElem = 0; + + while (curElem) + { + if (fHasher.equals(key, curElem->fKey)) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + retVal = curElem->fData; + + // Delete the current element + // delete curElem; + // destructor doesn't do anything... + // curElem->~RefHashTableBucketElem(); + fMemoryManager->deallocate(curElem); + break; + } + + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + + // We never found that key + if (!retVal) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, fMemoryManager); + + return retVal; +} + +// +// cleanup(): +// similar to destructor +// called to cleanup the memory, in case destructor cannot be called +// +template +void RefHashTableOf::cleanup() +{ + removeAll(); + + // Then delete the bucket list & hasher + fMemoryManager->deallocate(fBucketList); + fBucketList = 0; +} + +// +// reinitialize(): +// similar to constructor +// called to re-construct the fElemList from scratch again +// +template +void RefHashTableOf::reinitialize(const THasher& hasher) +{ + if (fBucketList) + cleanup(); + + fHasher = hasher; + + fHashModulus = fInitialModulus; + initialize(fHashModulus); +} + + + +// this function transfer the data from key1 to key2 +// this is equivalent to calling +// 1. get(key1) to retrieve the data, +// 2. removeKey(key1), +// 3. and then put(key2, data) +// except that the data is not deleted in "removeKey" even it is adopted so that it +// can be transferred to key2. +// whatever key2 has originally will be purged (if adopted) +template +inline void RefHashTableOf::transferElement(const void* const key1, void* key2) +{ + put(key2, orphanKey(key1)); +} + + +// --------------------------------------------------------------------------- +// RefHashTableOf: Getters +// --------------------------------------------------------------------------- +template +inline TVal* RefHashTableOf::get(const void* const key) +{ + XMLSize_t hashVal; + RefHashTableBucketElem* findIt = findBucketElem(key, hashVal); + return findIt ? findIt->fData : 0; +} + +template +inline const TVal* RefHashTableOf:: +get(const void* const key) const +{ + XMLSize_t hashVal; + const RefHashTableBucketElem* findIt = findBucketElem(key, hashVal); + return findIt ? findIt->fData : 0; +} + +template +inline MemoryManager* RefHashTableOf::getMemoryManager() const +{ + return fMemoryManager; +} + +template +inline XMLSize_t RefHashTableOf::getHashModulus() const +{ + return fHashModulus; +} + +template +inline XMLSize_t RefHashTableOf::getCount() const +{ + return fCount; +} + +// --------------------------------------------------------------------------- +// RefHashTableOf: Getters +// --------------------------------------------------------------------------- +template +inline void RefHashTableOf::setAdoptElements(const bool aValue) +{ + fAdoptedElems = aValue; +} + +// --------------------------------------------------------------------------- +// RefHashTableOf: Putters +// --------------------------------------------------------------------------- +template +void RefHashTableOf::put(void* key, TVal* const valueToAdopt) +{ + // Apply 0.75 load factor to find threshold. + XMLSize_t threshold = fHashModulus * 3 / 4; + + // If we've grown too big, expand the table and rehash. + if (fCount >= threshold) + rehash(); + + // First see if the key exists already + XMLSize_t hashVal; + RefHashTableBucketElem* newBucket = findBucketElem(key, hashVal); + + // + // If so,then update its value. If not, then we need to add it to + // the right bucket + // + if (newBucket) + { + if (fAdoptedElems) + delete newBucket->fData; + newBucket->fData = valueToAdopt; + newBucket->fKey = key; + } + else + { + newBucket = + new (fMemoryManager->allocate(sizeof(RefHashTableBucketElem))) + RefHashTableBucketElem(key, valueToAdopt, fBucketList[hashVal]); + fBucketList[hashVal] = newBucket; + fCount++; + } +} + + + +// --------------------------------------------------------------------------- +// RefHashTableOf: Private methods +// --------------------------------------------------------------------------- +template +void RefHashTableOf::rehash() +{ + const XMLSize_t newMod = (fHashModulus * 2) + 1; + + RefHashTableBucketElem** newBucketList = + (RefHashTableBucketElem**) fMemoryManager->allocate + ( + newMod * sizeof(RefHashTableBucketElem*) + ); + + // Make sure the new bucket list is destroyed if an + // exception is thrown. + ArrayJanitor*> guard(newBucketList, fMemoryManager); + + memset(newBucketList, 0, newMod * sizeof(newBucketList[0])); + + + // Rehash all existing entries. + for (XMLSize_t index = 0; index < fHashModulus; index++) + { + // Get the bucket list head for this entry + RefHashTableBucketElem* curElem = fBucketList[index]; + + while (curElem) + { + // Save the next element before we detach this one + RefHashTableBucketElem* const nextElem = curElem->fNext; + + const XMLSize_t hashVal = fHasher.getHashVal(curElem->fKey, newMod); + + RefHashTableBucketElem* const newHeadElem = newBucketList[hashVal]; + + // Insert at the start of this bucket's list. + curElem->fNext = newHeadElem; + newBucketList[hashVal] = curElem; + + curElem = nextElem; + } + } + + RefHashTableBucketElem** const oldBucketList = fBucketList; + + // Everything is OK at this point, so update the + // member variables. + fBucketList = guard.release(); + fHashModulus = newMod; + + // Delete the old bucket list. + fMemoryManager->deallocate(oldBucketList);//delete[] oldBucketList; + +} + +template +inline RefHashTableBucketElem* RefHashTableOf:: +findBucketElem(const void* const key, XMLSize_t& hashVal) +{ + // Hash the key + hashVal = fHasher.getHashVal(key, fHashModulus); + + // Search that bucket for the key + RefHashTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if (fHasher.equals(key, curElem->fKey)) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + +template +inline const RefHashTableBucketElem* RefHashTableOf:: +findBucketElem(const void* const key, XMLSize_t& hashVal) const +{ + // Hash the key + hashVal = fHasher.getHashVal(key, fHashModulus); + + // Search that bucket for the key + const RefHashTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if (fHasher.equals(key, curElem->fKey)) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + + +// --------------------------------------------------------------------------- +// RefHashTableOfEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template RefHashTableOfEnumerator:: +RefHashTableOfEnumerator(RefHashTableOf* const toEnum + , const bool adopt + , MemoryManager* const manager) + : fAdopted(adopt), fCurElem(0), fCurHash((XMLSize_t)-1), fToEnum(toEnum) + , fMemoryManager(manager) +{ + if (!toEnum) + ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, fMemoryManager); + + // + // Find the next available bucket element in the hash table. If it + // comes back zero, that just means the table is empty. + // + // Note that the -1 in the current hash tells it to start + // from the beginning. + // + findNext(); +} + +template +RefHashTableOfEnumerator::~RefHashTableOfEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +template RefHashTableOfEnumerator:: +RefHashTableOfEnumerator(const RefHashTableOfEnumerator& toCopy) : + XMLEnumerator(toCopy) + , XMemory(toCopy) + , fAdopted(toCopy.fAdopted) + , fCurElem(toCopy.fCurElem) + , fCurHash(toCopy.fCurHash) + , fToEnum(toCopy.fToEnum) + , fMemoryManager(toCopy.fMemoryManager) +{ +} +// --------------------------------------------------------------------------- +// RefHashTableOfEnumerator: Enum interface +// --------------------------------------------------------------------------- +template +bool RefHashTableOfEnumerator::hasMoreElements() const +{ + // + // If our current has is at the max and there are no more elements + // in the current bucket, then no more elements. + // + if (!fCurElem && (fCurHash == fToEnum->fHashModulus)) + return false; + return true; +} + +template +TVal& RefHashTableOfEnumerator::nextElement() +{ + // Make sure we have an element to return + if (!hasMoreElements()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + RefHashTableBucketElem* saveElem = fCurElem; + findNext(); + + return *saveElem->fData; +} + +template +void* RefHashTableOfEnumerator::nextElementKey() +{ + // Make sure we have an element to return + if (!hasMoreElements()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + RefHashTableBucketElem* saveElem = fCurElem; + findNext(); + + return saveElem->fKey; +} + +template +void RefHashTableOfEnumerator::Reset() +{ + fCurHash = (XMLSize_t)-1; + fCurElem = 0; + findNext(); +} + + + +// --------------------------------------------------------------------------- +// RefHashTableOfEnumerator: Private helper methods +// --------------------------------------------------------------------------- +template +void RefHashTableOfEnumerator::findNext() +{ + // + // If there is a current element, move to its next element. If this + // hits the end of the bucket, the next block will handle the rest. + // + if (fCurElem) + fCurElem = fCurElem->fNext; + + // + // If the current element is null, then we have to move up to the + // next hash value. If that is the hash modulus, then we cannot + // go further. + // + if (!fCurElem) + { + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + + // Else find the next non-empty bucket + while (fToEnum->fBucketList[fCurHash]==0) + { + // Bump to the next hash value. If we max out return + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + } + fCurElem = fToEnum->fBucketList[fCurHash]; + } +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/RefHashTableOf.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/RefHashTableOf.hpp new file mode 100644 index 000000000000..12572eb6d20a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/RefHashTableOf.hpp @@ -0,0 +1,255 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REFHASHTABLEOF_HPP) +#define XERCESC_INCLUDE_GUARD_REFHASHTABLEOF_HPP + +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Forward declare the enumerator so it can be our friend. +// +template +class RefHashTableOfEnumerator; + +// +// This should really be a nested class, but some of the compilers we +// have to support cannot deal with that! +// +template +struct RefHashTableBucketElem +{ + RefHashTableBucketElem(void* key, TVal* const value, RefHashTableBucketElem* next) + : fData(value), fNext(next), fKey(key) + { + } + + RefHashTableBucketElem(){}; + ~RefHashTableBucketElem(){}; + + TVal* fData; + RefHashTableBucketElem* fNext; + void* fKey; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHashTableBucketElem(const RefHashTableBucketElem&); + RefHashTableBucketElem& operator=(const RefHashTableBucketElem&); +}; + + +template +class RefHashTableOf : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefHashTableOf( + const XMLSize_t modulus, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHashTableOf( + const XMLSize_t modulus, + const THasher& hasher, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHashTableOf( + const XMLSize_t modulus, + const bool adoptElems, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHashTableOf( + const XMLSize_t modulus, + const bool adoptElems, + const THasher& hasher, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~RefHashTableOf(); + + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + bool isEmpty() const; + bool containsKey(const void* const key) const; + void removeKey(const void* const key); + void removeAll(); + void cleanup(); + void reinitialize(const THasher& hasher); + void transferElement(const void* const key1, void* key2); + TVal* orphanKey(const void* const key); + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + TVal* get(const void* const key); + const TVal* get(const void* const key) const; + MemoryManager* getMemoryManager() const; + XMLSize_t getHashModulus() const; + XMLSize_t getCount() const; + + // ----------------------------------------------------------------------- + // Setters + // ----------------------------------------------------------------------- + void setAdoptElements(const bool aValue); + + + // ----------------------------------------------------------------------- + // Putters + // ----------------------------------------------------------------------- + void put(void* key, TVal* const valueToAdopt); + + +private : + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class RefHashTableOfEnumerator; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHashTableOf(const RefHashTableOf&); + RefHashTableOf& operator=(const RefHashTableOf&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + RefHashTableBucketElem* findBucketElem(const void* const key, XMLSize_t& hashVal); + const RefHashTableBucketElem* findBucketElem(const void* const key, XMLSize_t& hashVal) const; + void initialize(const XMLSize_t modulus); + void rehash(); + + + // ----------------------------------------------------------------------- + // Data members + // + // fAdoptedElems + // Indicates whether the values added are adopted or just referenced. + // If adopted, then they are deleted when they are removed from the + // hash table. + // + // fBucketList + // This is the array that contains the heads of all of the list + // buckets, one for each possible hash value. + // + // fHashModulus + // The modulus used for this hash table, to hash the keys. This is + // also the number of elements in the bucket list. + // + // fHash + // The hasher for the key data type. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + bool fAdoptedElems; + RefHashTableBucketElem** fBucketList; + XMLSize_t fHashModulus; + XMLSize_t fInitialModulus; + XMLSize_t fCount; + THasher fHasher; +}; + + + +// +// An enumerator for a value array. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template +class RefHashTableOfEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefHashTableOfEnumerator(RefHashTableOf* const toEnum + , const bool adopt = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~RefHashTableOfEnumerator(); + + RefHashTableOfEnumerator(const RefHashTableOfEnumerator&); + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TVal& nextElement(); + void Reset(); + + // ----------------------------------------------------------------------- + // New interface specific for key used in RefHashable + // ----------------------------------------------------------------------- + void* nextElementKey(); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHashTableOfEnumerator& + operator=(const RefHashTableOfEnumerator&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + void findNext(); + + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed vector. If so then + // we delete the vector when we are destroyed. + // + // fCurElem + // This is the current bucket bucket element that we are on. + // + // fCurHash + // The current hash buck that we are working on. Once we hit the + // end of the bucket that fCurElem is in, then we have to start + // working this one up to the next non-empty bucket. + // + // fToEnum + // The value array being enumerated. + // ----------------------------------------------------------------------- + bool fAdopted; + RefHashTableBucketElem* fCurElem; + XMLSize_t fCurHash; + RefHashTableOf* fToEnum; + MemoryManager* const fMemoryManager; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/RefStackOf.c b/src/libs/xerces-c/mingw/include/xercesc/util/RefStackOf.c new file mode 100644 index 000000000000..92286fb8f93e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/RefStackOf.c @@ -0,0 +1,160 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// RefStackOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +RefStackOf::RefStackOf(const XMLSize_t initElems, + const bool adoptElems, + MemoryManager* const manager) : + + fVector(initElems, adoptElems, manager) +{ +} + +template RefStackOf::~RefStackOf() +{ +} + + +// --------------------------------------------------------------------------- +// RefStackOf: Element management methods +// --------------------------------------------------------------------------- +template const TElem* RefStackOf:: +elementAt(const XMLSize_t index) const +{ + if (index >= fVector.size()) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Stack_BadIndex, fVector.getMemoryManager()); + return fVector.elementAt(index); +} + +template TElem* RefStackOf::popAt(const XMLSize_t index) +{ + if (index >= fVector.size()) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Stack_BadIndex, fVector.getMemoryManager()); + + // Orphan off the element from the slot in the vector + return fVector.orphanElementAt(index); +} + +template void RefStackOf::push(TElem* const toPush) +{ + fVector.addElement(toPush); +} + +template const TElem* RefStackOf::peek() const +{ + const XMLSize_t curSize = fVector.size(); + if (curSize == 0) + ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::Stack_EmptyStack, fVector.getMemoryManager()); + + return fVector.elementAt(curSize-1); +} + +template TElem* RefStackOf::pop() +{ + const XMLSize_t curSize = fVector.size(); + if (curSize == 0) + ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::Stack_EmptyStack, fVector.getMemoryManager()); + + // Orphan off the element from the last slot in the vector + return fVector.orphanElementAt(curSize-1); +} + +template void RefStackOf::removeAllElements() +{ + fVector.removeAllElements(); +} + + +// --------------------------------------------------------------------------- +// RefStackOf: Getter methods +// --------------------------------------------------------------------------- +template bool RefStackOf::empty() +{ + return (fVector.size() == 0); +} + +template XMLSize_t RefStackOf::curCapacity() +{ + return fVector.curCapacity(); +} + +template XMLSize_t RefStackOf::size() +{ + return fVector.size(); +} + + + + +// --------------------------------------------------------------------------- +// RefStackEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template RefStackEnumerator:: +RefStackEnumerator( RefStackOf* const toEnum + , const bool adopt) : + fAdopted(adopt) + , fCurIndex(0) + , fToEnum(toEnum) + , fVector(&toEnum->fVector) +{ +} + +template RefStackEnumerator::~RefStackEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// RefStackEnumerator: Enum interface +// --------------------------------------------------------------------------- +template bool RefStackEnumerator::hasMoreElements() const +{ + if (fCurIndex >= fVector->size()) + return false; + return true; +} + +template TElem& RefStackEnumerator::nextElement() +{ + return *fVector->elementAt(fCurIndex++); +} + +template void RefStackEnumerator::Reset() +{ + fCurIndex = 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/RefStackOf.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/RefStackOf.hpp new file mode 100644 index 000000000000..5b16889fae58 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/RefStackOf.hpp @@ -0,0 +1,152 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REFSTACKOF_HPP) +#define XERCESC_INCLUDE_GUARD_REFSTACKOF_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// Forward declare the enumerator so he can be our friend. Can you say +// friend? Sure... +// +template class RefStackEnumerator; + + +template class RefStackOf : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefStackOf(const XMLSize_t initElems, + const bool adoptElems = true, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~RefStackOf(); + + + // ----------------------------------------------------------------------- + // Element management methods + // ----------------------------------------------------------------------- + const TElem* elementAt(const XMLSize_t index) const; + TElem* popAt(const XMLSize_t index); + void push(TElem* const toPush); + const TElem* peek() const; + TElem* pop(); + void removeAllElements(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool empty(); + XMLSize_t curCapacity(); + XMLSize_t size(); + + +private : + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class RefStackEnumerator; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefStackOf(const RefStackOf&); + RefStackOf& operator=(const RefStackOf&); + + // ----------------------------------------------------------------------- + // Data Members + // + // fVector + // The vector that is used as the backing data structure for the + // stack. + // ----------------------------------------------------------------------- + RefVectorOf fVector; +}; + + + +// +// An enumerator for a value stack. It derives from the basic enumerator +// class, so that value stacks can be generically enumerated. +// +template class RefStackEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefStackEnumerator + ( + RefStackOf* const toEnum + , const bool adopt = false + ); + virtual ~RefStackEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TElem& nextElement(); + void Reset(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefStackEnumerator(const RefStackEnumerator&); + RefStackEnumerator& operator=(const RefStackEnumerator&); + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed stack. If so then + // we delete the stack when we are destroyed. + // + // fCurIndex + // This is the current index into the vector inside the stack being + // enumerated. + // + // fToEnum + // The stack that is being enumerated. This is just kept for + // adoption purposes, since we really are enumerating the vector + // inside of it. + // ----------------------------------------------------------------------- + bool fAdopted; + XMLSize_t fCurIndex; + RefVectorOf* fVector; + RefStackOf* fToEnum; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/RefVectorOf.c b/src/libs/xerces-c/mingw/include/xercesc/util/RefVectorOf.c new file mode 100644 index 000000000000..793e0d3b86c4 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/RefVectorOf.c @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// RefVectorOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +RefVectorOf::RefVectorOf(const XMLSize_t maxElems, + const bool adoptElems, + MemoryManager* const manager) + : BaseRefVectorOf(maxElems, adoptElems, manager) +{ +} + +template RefVectorOf::~RefVectorOf() +{ + if (this->fAdoptedElems) + { + for (XMLSize_t index = 0; index < this->fCurCount; index++) + delete this->fElemList[index]; + } + this->fMemoryManager->deallocate(this->fElemList);//delete [] this->fElemList; +} + + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/RefVectorOf.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/RefVectorOf.hpp new file mode 100644 index 000000000000..42296eb497de --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/RefVectorOf.hpp @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REFVECTOROF_HPP) +#define XERCESC_INCLUDE_GUARD_REFVECTOROF_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Class with implementation for vectors of References - implements from the + * Abstract class Vector + */ +template class RefVectorOf : public BaseRefVectorOf +{ +public : + // ----------------------------------------------------------------------- + // Constructor + // ----------------------------------------------------------------------- + RefVectorOf(const XMLSize_t maxElems, + const bool adoptElems = true, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ----------------------------------------------------------------------- + // Destructor + // ----------------------------------------------------------------------- + ~RefVectorOf(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefVectorOf(const RefVectorOf&); + RefVectorOf& operator=(const RefVectorOf&); +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/RuntimeException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/RuntimeException.hpp new file mode 100644 index 000000000000..cd339048f7e7 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/RuntimeException.hpp @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_RUNTIMEEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_RUNTIMEEXCEPTION_HPP + + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(RuntimeException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/SchemaDateTimeException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/SchemaDateTimeException.hpp new file mode 100644 index 000000000000..8c3b6101a9a4 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/SchemaDateTimeException.hpp @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +#if !defined(SCHEMA_DATETIME_EXCEPTION_HPP) +#define SCHEMA_DATETIME_EXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(SchemaDateTimeException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/SecurityManager.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/SecurityManager.hpp new file mode 100644 index 000000000000..b0185600b039 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/SecurityManager.hpp @@ -0,0 +1,116 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SECURITYMANAGER_HPP) +#define XERCESC_INCLUDE_GUARD_SECURITYMANAGER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Allow application to force the parser to behave in a security-conscious + * way. + * + *

There are cases in which an XML- or XmL-schema- + * conformant processor can be presented with documents the + * processing of which can involve the consumption of + * prohibitive amounts of system resources. Applications can + * attach instances of this class to parsers that they've + * created, via the + * http://apache.org/xml/properties/security-manager property. + *

+ * + *

Defaults will be provided for all known security holes. + * Setter methods will be provided on this class to ensure that + * an application can customize each limit as it chooses. + * Components that are vulnerable to any given hole need to be + * written to act appropriately when an instance of this class + * has been set on the calling parser. + *

+ */ + +class XMLUTIL_EXPORT SecurityManager +{ +public: + + enum { ENTITY_EXPANSION_LIMIT = 50000}; + + /** @name default Constructors */ + //@{ + /** Default constructor */ + SecurityManager() + : fEntityExpansionLimit((XMLSize_t)ENTITY_EXPANSION_LIMIT) + { + } + + /** Destructor */ + virtual ~SecurityManager(){}; + //@} + + /** @name The Security Manager */ + //@{ + /** + * An application should call this method when it wishes to specify a particular + * limit to the number of entity expansions the parser will permit in a + * particular document. The default behaviour should allow the parser + * to validate nearly all XML non-malicious XML documents; if an + * application knows that it is operating in a domain where entities are + * uncommon, for instance, it may wish to provide a limit lower than the + * parser's default. + * + * @param newLimit the new entity expansion limit + * + */ + virtual void setEntityExpansionLimit(XMLSize_t newLimit) + { + fEntityExpansionLimit = newLimit; + } + + /** + * Permits the application or a parser component to query the current + * limit for entity expansions. + * + * @return the current setting of the entity expansion limit + * + */ + virtual XMLSize_t getEntityExpansionLimit() const + { + return fEntityExpansionLimit; + } + //@} + +protected: + XMLSize_t fEntityExpansionLimit; + +private: + + /* Unimplemented Constructors and operators */ + /* Copy constructor */ + SecurityManager(const SecurityManager&); + + /** Assignment operator */ + SecurityManager& operator=(const SecurityManager&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/StringPool.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/StringPool.hpp new file mode 100644 index 000000000000..6dfbfabbb7a4 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/StringPool.hpp @@ -0,0 +1,175 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_STRINGPOOL_HPP) +#define XERCESC_INCLUDE_GUARD_STRINGPOOL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class implements a string pool, in which strings can be added and +// given a unique id by which they can be referred. It has to provide fast +// access both mapping from a string to its id and mapping from an id to +// its string. This requires that it provide two separate data structures. +// The map one is a hash table for quick storage and look up by name. The +// other is an array ordered by unique id which maps to the element in the +// hash table. +// +// This works because strings cannot be removed from the pool once added, +// other than flushing it completely, and because ids are assigned +// sequentially from 1. +// +class XMLUTIL_EXPORT XMLStringPool : public XSerializable, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLStringPool + ( + const unsigned int modulus = 109 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~XMLStringPool(); + + + // ----------------------------------------------------------------------- + // Pool management methods + // ----------------------------------------------------------------------- + virtual unsigned int addOrFind(const XMLCh* const newString); + virtual bool exists(const XMLCh* const newString) const; + virtual bool exists(const unsigned int id) const; + virtual void flushAll(); + virtual unsigned int getId(const XMLCh* const toFind) const; + virtual const XMLCh* getValueForId(const unsigned int id) const; + virtual unsigned int getStringCount() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLStringPool) + + XMLStringPool(MemoryManager* const manager); + +private : + // ----------------------------------------------------------------------- + // Private data types + // ----------------------------------------------------------------------- + struct PoolElem + { + unsigned int fId; + XMLCh* fString; + }; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLStringPool(const XMLStringPool&); + XMLStringPool& operator=(const XMLStringPool&); + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + unsigned int addNewEntry(const XMLCh* const newString); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fIdMap + // This is an array of pointers to the pool elements. It is ordered + // by unique id, so using an id to index it gives instant access to + // the string of that id. This is grown as required. + // + // fHashTable + // This is the hash table used to store and quickly access the + // strings. + // + // fMapCapacity + // The current capacity of the id map. When the current id hits this + // value the map must must be expanded. + // + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + PoolElem** fIdMap; + RefHashTableOf* fHashTable; + unsigned int fMapCapacity; + +protected: + // protected data members + // fCurId + // This is the counter used to assign unique ids. It is just bumped + // up one for each new string added. + unsigned int fCurId; +}; + + +// Provide inline versions of some of the simple functions to improve performance. +inline unsigned int XMLStringPool::addOrFind(const XMLCh* const newString) +{ + PoolElem* elemToFind = fHashTable->get(newString); + if (elemToFind) + return elemToFind->fId; + + return addNewEntry(newString); +} + +inline unsigned int XMLStringPool::getId(const XMLCh* const toFind) const +{ + PoolElem* elemToFind = fHashTable->get(toFind); + if (elemToFind) + return elemToFind->fId; + + // Not found, so return zero, which is never a legal id + return 0; +} + +inline bool XMLStringPool::exists(const XMLCh* const newString) const +{ + return fHashTable->containsKey(newString); +} + +inline bool XMLStringPool::exists(const unsigned int id) const +{ + return (id > 0 && (id < fCurId)); +} + +inline const XMLCh* XMLStringPool::getValueForId(const unsigned int id) const +{ + if (!id || (id >= fCurId)) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::StrPool_IllegalId, fMemoryManager); + + // Just index the id map and return that element's string + return fIdMap[id]->fString; +} + +inline unsigned int XMLStringPool::getStringCount() const +{ + return fCurId-1; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/SynchronizedStringPool.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/SynchronizedStringPool.hpp new file mode 100644 index 000000000000..b8cb0fe6ef57 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/SynchronizedStringPool.hpp @@ -0,0 +1,86 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SYNCHRONIZEDSTRINGPOOL_HPP) +#define XERCESC_INCLUDE_GUARD_SYNCHRONIZEDSTRINGPOOL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides a synchronized string pool implementation. +// This will necessarily be slower than the regular XMLStringPool, so it +// should only be used when updates need to be made in a thread-safe +// way. Updates will be made on datastructures local to this object; +// all queries that don't involve mutation will first be directed at +// the XMLStringPool implementation with which this object is +// constructed. +class XMLUTIL_EXPORT XMLSynchronizedStringPool : public XMLStringPool +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLSynchronizedStringPool + ( + const XMLStringPool * constPool + , const unsigned int modulus = 109 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~XMLSynchronizedStringPool(); + + + // ----------------------------------------------------------------------- + // Pool management methods + // ----------------------------------------------------------------------- + virtual unsigned int addOrFind(const XMLCh* const newString); + virtual bool exists(const XMLCh* const newString) const; + virtual bool exists(const unsigned int id) const; + virtual void flushAll(); + virtual unsigned int getId(const XMLCh* const toFind) const; + virtual const XMLCh* getValueForId(const unsigned int id) const; + virtual unsigned int getStringCount() const; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLSynchronizedStringPool(const XMLSynchronizedStringPool&); + XMLSynchronizedStringPool& operator=(const XMLSynchronizedStringPool&); + + + // ----------------------------------------------------------------------- + // private data members + // fConstPool + // the pool whose immutability we're protecting + // fMutex + // mutex to permit synchronous updates of our StringPool + const XMLStringPool* fConstPool; + XMLMutex fMutex; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/TransENameMap.c b/src/libs/xerces-c/mingw/include/xercesc/util/TransENameMap.c new file mode 100644 index 000000000000..bbe27f31d40f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/TransENameMap.c @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// ENameMapFor: Constructors and Destructor +// --------------------------------------------------------------------------- +template +ENameMapFor::ENameMapFor(const XMLCh* const encodingName) : + + ENameMap(encodingName) +{ +} + +template ENameMapFor::~ENameMapFor() +{ +} + + +// --------------------------------------------------------------------------- +// ENameMapFor: Implementation of virtual factory method +// --------------------------------------------------------------------------- +template XMLTranscoder* +ENameMapFor::makeNew(const XMLSize_t blockSize, + MemoryManager* const manager) const +{ + return new (manager) TType(getKey(), blockSize, manager); +} + + + + +// --------------------------------------------------------------------------- +// ENameMapFor: Constructors and Destructor +// --------------------------------------------------------------------------- +template EEndianNameMapFor::EEndianNameMapFor(const XMLCh* const encodingName, const bool swapped) : + + ENameMap(encodingName) + , fSwapped(swapped) +{ +} + +template EEndianNameMapFor::~EEndianNameMapFor() +{ +} + + +// --------------------------------------------------------------------------- +// ENameMapFor: Implementation of virtual factory method +// --------------------------------------------------------------------------- +template XMLTranscoder* +EEndianNameMapFor::makeNew(const XMLSize_t blockSize, + MemoryManager* const manager) const +{ + return new (manager) TType(getKey(), blockSize, fSwapped, manager); +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/TransENameMap.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/TransENameMap.hpp new file mode 100644 index 000000000000..e896bc9fec85 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/TransENameMap.hpp @@ -0,0 +1,166 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TRANSENAMEMAP_HPP) +#define XERCESC_INCLUDE_GUARD_TRANSENAMEMAP_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class is really private to the TransService class. However, some +// compilers are too dumb to allow us to hide this class there in the Cpp +// file that uses it. +// +class ENameMap : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Destructor + // ----------------------------------------------------------------------- + virtual ~ENameMap() + { + //delete [] fEncodingName; + XMLPlatformUtils::fgMemoryManager->deallocate(fEncodingName); + } + + + + // ----------------------------------------------------------------------- + // Virtual factory method + // ----------------------------------------------------------------------- + virtual XMLTranscoder* makeNew + ( + const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const = 0; + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const XMLCh* getKey() const + { + return fEncodingName; + } + + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + ENameMap(const XMLCh* const encodingName) : + fEncodingName(XMLString::replicate(encodingName, XMLPlatformUtils::fgMemoryManager)) + { + } + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ENameMap(); + ENameMap(const ENameMap&); + ENameMap& operator=(const ENameMap&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fEncodingName + // This is the encoding name for the transcoder that is controlled + // by this map instance. + // ----------------------------------------------------------------------- + XMLCh* fEncodingName; +}; + + +template class ENameMapFor : public ENameMap +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ENameMapFor(const XMLCh* const encodingName); + ~ENameMapFor(); + + + // ----------------------------------------------------------------------- + // Implementation of virtual factory method + // ----------------------------------------------------------------------- + virtual XMLTranscoder* makeNew(const XMLSize_t blockSize, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ENameMapFor(); + ENameMapFor(const ENameMapFor&); + ENameMapFor& operator=(const ENameMapFor&); +}; + + +template class EEndianNameMapFor : public ENameMap +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + EEndianNameMapFor(const XMLCh* const encodingName, const bool swapped); + ~EEndianNameMapFor(); + + + // ----------------------------------------------------------------------- + // Implementation of virtual factory method + // ----------------------------------------------------------------------- + virtual XMLTranscoder* makeNew(const XMLSize_t blockSize, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + EEndianNameMapFor(const EEndianNameMapFor&); + EEndianNameMapFor& operator=(const EEndianNameMapFor&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fSwapped + // Indicates whether the endianness of the encoding is opposite of + // that of the local host. + // ----------------------------------------------------------------------- + bool fSwapped; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/TransService.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/TransService.hpp new file mode 100644 index 000000000000..337a89a186a6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/TransService.hpp @@ -0,0 +1,707 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TRANSSERVICE_HPP) +#define XERCESC_INCLUDE_GUARD_TRANSSERVICE_HPP + +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Forward references +//class XMLPlatformUtils; +class XMLLCPTranscoder; +class XMLTranscoder; +class ENameMap; + + +// +// This class is an abstract base class which are used to abstract the +// transcoding services that Xerces uses. The parser's actual transcoding +// needs are small so it is desirable to allow different implementations +// to be provided. +// +// The transcoding service has to provide a couple of required string +// and character operations, but its most important service is the creation +// of transcoder objects. There are two types of transcoders, which are +// discussed below in the XMLTranscoder class' description. +// +class XMLUTIL_EXPORT XMLTransService : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Class specific types + // ----------------------------------------------------------------------- + enum Codes + { + Ok + , UnsupportedEncoding + , InternalFailure + , SupportFilesNotFound + }; + + struct TransRec + { + XMLCh intCh; + XMLByte extCh; + }; + + + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + virtual ~XMLTransService(); + + + // ----------------------------------------------------------------------- + // Non-virtual API + // ----------------------------------------------------------------------- + XMLTranscoder* makeNewTranscoderFor + ( + const XMLCh* const encodingName + , XMLTransService::Codes& resValue + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XMLTranscoder* makeNewTranscoderFor + ( + const char* const encodingName + , XMLTransService::Codes& resValue + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XMLTranscoder* makeNewTranscoderFor + ( + XMLRecognizer::Encodings encodingEnum + , XMLTransService::Codes& resValue + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + + // ----------------------------------------------------------------------- + // The virtual transcoding service API + // ----------------------------------------------------------------------- + virtual int compareIString + ( + const XMLCh* const comp1 + , const XMLCh* const comp2 + ) = 0; + + virtual int compareNIString + ( + const XMLCh* const comp1 + , const XMLCh* const comp2 + , const XMLSize_t maxChars + ) = 0; + + virtual const XMLCh* getId() const = 0; + + // ----------------------------------------------------------------------- + // Create a new transcoder for the local code page. + // + // @param manager The memory manager to use. + // ----------------------------------------------------------------------- + virtual XMLLCPTranscoder* makeNewLCPTranscoder(MemoryManager* manager) = 0; + + virtual bool supportsSrcOfs() const = 0; + + virtual void upperCase(XMLCh* const toUpperCase) = 0; + virtual void lowerCase(XMLCh* const toLowerCase) = 0; + + // ----------------------------------------------------------------------- + // Allow users to add their own encodings to the intrinsic mapping + // table + // Usage: + // XMLTransService::addEncoding ( + // gMyEncodingNameString + // , new ENameMapFor(gMyEncodingNameString) + // ); + // ----------------------------------------------------------------------- + static void addEncoding(const XMLCh* const encoding, ENameMap* const ownMapping); + + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XMLTransService(); + + + // ----------------------------------------------------------------------- + // Protected virtual methods. + // ----------------------------------------------------------------------- +#ifdef OS390 + friend class Uniconv390TransService; +#endif + virtual XMLTranscoder* makeNewXMLTranscoder + ( + const XMLCh* const encodingName + , XMLTransService::Codes& resValue + , const XMLSize_t blockSize + , MemoryManager* const manager + ) = 0; + + // ----------------------------------------------------------------------- + // Protected init method for platform utils to call + // ----------------------------------------------------------------------- + friend class XMLPlatformUtils; + virtual void initTransService(); + + // ----------------------------------------------------------------------- + // protected static members + // gMappings + // This is a hash table of ENameMap objects. It is created and filled + // in when the platform init calls our initTransService() method. + // + // gMappingsRecognizer + // This is an array of ENameMap objects, predefined for those + // already recognized by XMLRecognizer::Encodings. + // + + static RefHashTableOf* gMappings; + static RefVectorOf* gMappingsRecognizer; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLTransService(const XMLTransService&); + XMLTransService& operator=(const XMLTransService&); + + // ----------------------------------------------------------------------- + // Hidden method to enable/disable strict IANA encoding check + // Caller: XMLPlatformUtils + // ----------------------------------------------------------------------- + void strictIANAEncoding(const bool newState); + bool isStrictIANAEncoding(); + + friend class XMLInitializer; +}; + +/** + * XMLTranscoder is for transcoding non-local code + * page encodings, i.e. named encodings. These are used internally + * by the scanner to internalize raw XML into the internal Unicode + * format, and by writer classes to convert that internal Unicode + * format (which comes out of the parser) back out to a format that + * the receiving client code wants to use. + */ +class XMLUTIL_EXPORT XMLTranscoder : public XMemory +{ +public : + + /** + * This enum is used by the transcodeTo() method + * to indicate how to react to unrepresentable characters. The + * transcodeFrom() method always works the + * same. It will consider any invalid data to be an error and + * throw. + */ + enum UnRepOpts + { + UnRep_Throw /**< Throw an exception */ + , UnRep_RepChar /**< Use the replacement char */ + }; + + + /** @name Destructor. */ + //@{ + + /** + * Destructor for XMLTranscoder + * + */ + virtual ~XMLTranscoder(); + //@} + + + + /** @name The virtual transcoding interface */ + //@{ + + /** Converts from the encoding of the service to the internal XMLCh* encoding + * + * @param srcData the source buffer to be transcoded + * @param srcCount number of bytes in the source buffer + * @param toFill the destination buffer + * @param maxChars the max number of characters in the destination buffer + * @param bytesEaten after transcoding, this will hold the number of bytes + * that were processed from the source buffer + * @param charSizes an array which must be at least as big as maxChars + * into which will be inserted values that indicate how many + * bytes from the input went into each XMLCh that was created + * into toFill. Since many encodings use variable numbers of + * byte per character, this provides a means to find out what + * bytes in the input went into making a particular output + * UTF-16 character. + * @return Returns the number of chars put into the target buffer + */ + + + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ) = 0; + + /** Converts from the internal XMLCh* encoding to the encoding of the service + * + * @param srcData the source buffer to be transcoded + * @param srcCount number of characters in the source buffer + * @param toFill the destination buffer + * @param maxBytes the max number of bytes in the destination buffer + * @param charsEaten after transcoding, this will hold the number of chars + * that were processed from the source buffer + * @param options options to pass to the transcoder that explain how to + * respond to an unrepresentable character + * @return Returns the number of chars put into the target buffer + */ + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ) = 0; + + /** Query whether the transcoder can handle a given character + * + * @param toCheck the character code point to check + */ + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ) = 0; + + //@} + + /** @name Getter methods */ + //@{ + + /** Get the internal block size + * + * @return The block size indicated in the constructor. + */ + XMLSize_t getBlockSize() const; + + /** Get the encoding name + * + * @return the name of the encoding that this + * XMLTranscoder object is for + */ + const XMLCh* getEncodingName() const; + //@} + + /** @name Getter methods*/ + //@{ + + /** Get the plugged-in memory manager + * + * This method returns the plugged-in memory manager user for dynamic + * memory allocation/deallocation. + * + * @return the plugged-in memory manager + */ + MemoryManager* getMemoryManager() const; + + //@} + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XMLTranscoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + + // ----------------------------------------------------------------------- + // Protected helper methods + // ----------------------------------------------------------------------- + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLTranscoder(const XMLTranscoder&); + XMLTranscoder& operator=(const XMLTranscoder&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fBlockSize + // This is the block size indicated in the constructor. + // + // fEncodingName + // This is the name of the encoding this encoder is for. All basic + // XML transcoder's are for named encodings. + // ----------------------------------------------------------------------- + XMLSize_t fBlockSize; + XMLCh* fEncodingName; + MemoryManager* fMemoryManager; +}; + + +// +// This class is a specialized transcoder that only transcodes between +// the internal XMLCh format and the local code page. It is specialized +// for the very common job of translating data from the client app's +// native code page to the internal format and vice versa. +// +class XMLUTIL_EXPORT XMLLCPTranscoder : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + virtual ~XMLLCPTranscoder(); + + + // ----------------------------------------------------------------------- + // The virtual transcoder API + // + // NOTE: All these APIs don't include null terminator characters in + // their parameters. So calcRequiredSize() returns the number + // of actual chars, not including the null. maxBytes and maxChars + // parameters refer to actual chars, not including the null so + // its assumed that the buffer is physically one char or byte + // larger. + // ----------------------------------------------------------------------- + + // ----------------------------------------------------------------------- + // The 'normal' way to transcode a XMLCh-string from/to local string + // representation + // + // NOTE: Both methods return a string allocated via the MemoryManager. + // It is the responsibility of the calling environment to + // release this string after use. + // ----------------------------------------------------------------------- + virtual char* transcode(const XMLCh* const toTranscode, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + virtual XMLCh* transcode(const char* const toTranscode, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + + // ----------------------------------------------------------------------- + // DEPRECATED old transcode interface + // ----------------------------------------------------------------------- + virtual XMLSize_t calcRequiredSize(const char* const srcText + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + virtual XMLSize_t calcRequiredSize(const XMLCh* const srcText + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + virtual bool transcode + ( + const char* const toTranscode + , XMLCh* const toFill + , const XMLSize_t maxChars + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) = 0; + + virtual bool transcode + ( + const XMLCh* const toTranscode + , char* const toFill + , const XMLSize_t maxBytes + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) = 0; + + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XMLLCPTranscoder(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLLCPTranscoder(const XMLLCPTranscoder&); + XMLLCPTranscoder& operator=(const XMLLCPTranscoder&); +}; + +// +// This class can be used to transcode to a target encoding. It manages the +// memory allocated for the transcode in an exception safe manner, automatically +// deleting it when the class goes out of scope. +// +class XMLUTIL_EXPORT TranscodeToStr +{ +public: + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + + /** Converts from the internal XMLCh* encoding to the specified encoding + * + * @param in the null terminated source buffer to be transcoded + * @param encoding the name of the encoding to transcode to + * @param manager the memory manager to use + */ + TranscodeToStr(const XMLCh *in, const char *encoding, + MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); + + /** Converts from the internal XMLCh* encoding to the specified encoding + * + * @param in the source buffer to be transcoded + * @param length the length of the source buffer + * @param encoding the name of the encoding to transcode to + * @param manager the memory manager to use + */ + TranscodeToStr(const XMLCh *in, XMLSize_t length, const char *encoding, + MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); + + /** Converts from the internal XMLCh* encoding to the specified encoding + * + * @param in the null terminated source buffer to be transcoded + * @param trans the transcoder to use + * @param manager the memory manager to use + */ + TranscodeToStr(const XMLCh *in, XMLTranscoder* trans, + MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); + + /** Converts from the internal XMLCh* encoding to the specified encoding + * + * @param in the source buffer to be transcoded + * @param length the length of the source buffer + * @param trans the transcoder to use + * @param manager the memory manager to use + */ + TranscodeToStr(const XMLCh *in, XMLSize_t length, XMLTranscoder* trans, + MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); + + ~TranscodeToStr(); + + /** @name Getter methods */ + //@{ + + /** Returns the transcoded, null terminated string + * @return the transcoded string + */ + const XMLByte *str() const; + + /** Returns the transcoded, null terminated string - adopting + * the memory allocated to it from the TranscodeToStr object + * @return the transcoded string + */ + XMLByte *adopt(); + + /** Returns the length of the transcoded string in bytes. The length + * does not include the null terminator. + * @return the length of the transcoded string in bytes + */ + XMLSize_t length () const; + + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + TranscodeToStr(const TranscodeToStr &); + TranscodeToStr &operator=(const TranscodeToStr &); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void transcode(const XMLCh *in, XMLSize_t len, XMLTranscoder* trans); + + // ----------------------------------------------------------------------- + // Private data members + // + // fString + // The transcoded string + // + // fBytesWritten + // The length of the transcoded string in bytes + // ----------------------------------------------------------------------- + ArrayJanitor fString; + XMLSize_t fBytesWritten; + MemoryManager *fMemoryManager; +}; + +// +// This class can be used to transcode from a source encoding. It manages the +// memory allocated for the transcode in an exception safe manner, automatically +// deleting it when the class goes out of scope. +// +class XMLUTIL_EXPORT TranscodeFromStr +{ +public: + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + + /** Converts from the specified encoding to the internal XMLCh* encoding + * + * @param data the source buffer to be transcoded + * @param length the length of the source buffer + * @param encoding the name of the encoding to transcode to + * @param manager the memory manager to use + */ + TranscodeFromStr(const XMLByte *data, XMLSize_t length, const char *encoding, + MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); + + /** Converts from the specified encoding to the internal XMLCh* encoding + * + * @param data the source buffer to be transcoded + * @param length the length of the source buffer + * @param trans the transcoder to use + * @param manager the memory manager to use + */ + TranscodeFromStr(const XMLByte *data, XMLSize_t length, XMLTranscoder *trans, + MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); + + ~TranscodeFromStr(); + + /** @name Getter methods */ + //@{ + + /** Returns the transcoded, null terminated string + * @return the transcoded string + */ + const XMLCh *str() const; + + /** Returns the transcoded, null terminated string - adopting + * the memory allocated to it from the TranscodeFromStr object + * @return the transcoded string + */ + XMLCh *adopt(); + + /** Returns the length of the transcoded string in characters. The length + * does not include the null terminator. + * @return the length of the transcoded string in characters + */ + XMLSize_t length() const; + + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + TranscodeFromStr(const TranscodeFromStr &); + TranscodeFromStr &operator=(const TranscodeFromStr &); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void transcode(const XMLByte *in, XMLSize_t length, XMLTranscoder *trans); + + // ----------------------------------------------------------------------- + // Private data members + // + // fString + // The transcoded string + // + // fCharsWritten + // The length of the transcoded string in characters + // ----------------------------------------------------------------------- + ArrayJanitor fString; + XMLSize_t fCharsWritten; + MemoryManager *fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// XMLTranscoder: Getter methods +// --------------------------------------------------------------------------- +inline MemoryManager* XMLTranscoder::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// XMLTranscoder: Protected helper methods +// --------------------------------------------------------------------------- +inline XMLSize_t XMLTranscoder::getBlockSize() const +{ + return fBlockSize; +} + +inline const XMLCh* XMLTranscoder::getEncodingName() const +{ + return fEncodingName; +} + +// --------------------------------------------------------------------------- +// TranscodeToStr: Getter methods +// --------------------------------------------------------------------------- +inline const XMLByte *TranscodeToStr::str() const +{ + return fString.get(); +} + +inline XMLByte *TranscodeToStr::adopt() +{ + fBytesWritten = 0; + return fString.release(); +} + +inline XMLSize_t TranscodeToStr::length () const +{ + return fBytesWritten; +} + +// --------------------------------------------------------------------------- +// TranscodeFromStr: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh *TranscodeFromStr::str() const +{ + return fString.get(); +} + +inline XMLCh *TranscodeFromStr::adopt() +{ + fCharsWritten = 0; + return fString.release(); +} + +inline XMLSize_t TranscodeFromStr::length() const +{ + return fCharsWritten; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/extern/xerces-c/include/xercesc/util/Transcoders/Win32/Win32TransService.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/Transcoders/Win32/Win32TransService.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/Transcoders/Win32/Win32TransService.hpp rename to src/libs/xerces-c/mingw/include/xercesc/util/Transcoders/Win32/Win32TransService.hpp diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/TranscodingException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/TranscodingException.hpp new file mode 100644 index 000000000000..147b75136b15 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/TranscodingException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TRANSCODINGEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_TRANSCODINGEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(TranscodingException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/UTFDataFormatException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/UTFDataFormatException.hpp new file mode 100644 index 000000000000..3257e1ef3c1e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/UTFDataFormatException.hpp @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_UTFDATAFORMATEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_UTFDATAFORMATEXCEPTION_HPP + + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(UTFDataFormatException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/UnexpectedEOFException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/UnexpectedEOFException.hpp new file mode 100644 index 000000000000..db1a6b240499 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/UnexpectedEOFException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_UNEXPECTEDEOFEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_UNEXPECTEDEOFEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(UnexpectedEOFException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/UnsupportedEncodingException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/UnsupportedEncodingException.hpp new file mode 100644 index 000000000000..0da26a6d4e02 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/UnsupportedEncodingException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_UNSUPPORTEDENCODINGEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_UNSUPPORTEDENCODINGEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(UnsupportedEncodingException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/ValueArrayOf.c b/src/libs/xerces-c/mingw/include/xercesc/util/ValueArrayOf.c new file mode 100644 index 000000000000..1683e1b679d5 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/ValueArrayOf.c @@ -0,0 +1,252 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// ValueArrayOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +ValueArrayOf::ValueArrayOf(const XMLSize_t size, + MemoryManager* const manager) : + + fSize(size) + , fArray(0) + , fMemoryManager(manager) +{ + fArray = (TElem*) fMemoryManager->allocate(fSize * sizeof(TElem)); //new TElem[fSize]; +} + +template +ValueArrayOf::ValueArrayOf( const TElem* values + , const XMLSize_t size + , MemoryManager* const manager) : + + fSize(size) + , fArray(0) + , fMemoryManager(manager) +{ + fArray = (TElem*) fMemoryManager->allocate(fSize * sizeof(TElem)); //new TElem[fSize]; + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = values[index]; +} + +template +ValueArrayOf::ValueArrayOf(const ValueArrayOf& source) : + XMemory(source) + , fSize(source.fSize) + , fArray(0) + , fMemoryManager(source.fMemoryManager) +{ + fArray = (TElem*) fMemoryManager->allocate(fSize * sizeof(TElem)); //new TElem[fSize]; + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = source.fArray[index]; +} + +template ValueArrayOf::~ValueArrayOf() +{ + fMemoryManager->deallocate(fArray); //delete [] fArray; +} + + +// --------------------------------------------------------------------------- +// ValueArrayOf: Public operators +// --------------------------------------------------------------------------- +template TElem& ValueArrayOf:: +operator[](const XMLSize_t index) +{ + if (index >= fSize) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + return fArray[index]; +} + +template const TElem& ValueArrayOf:: +operator[](const XMLSize_t index) const +{ + if (index >= fSize) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + return fArray[index]; +} + +template ValueArrayOf& ValueArrayOf:: +operator=(const ValueArrayOf& toAssign) +{ + if (this == &toAssign) + return *this; + + // Reallocate if not the same size + if (toAssign.fSize != fSize) + { + fMemoryManager->deallocate(fArray); //delete [] fArray; + fSize = toAssign.fSize; + fArray = (TElem*) fMemoryManager->allocate(fSize * sizeof(TElem)); //new TElem[fSize]; + } + + // Copy over the source elements + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = toAssign.fArray[index]; + + return *this; +} + +template bool ValueArrayOf:: +operator==(const ValueArrayOf& toCompare) const +{ + if (this == &toCompare) + return true; + + if (fSize != toCompare.fSize) + return false; + + for (XMLSize_t index = 0; index < fSize; index++) + { + if (fArray[index] != toCompare.fArray[index]) + return false; + } + + return true; +} + +template bool ValueArrayOf:: +operator!=(const ValueArrayOf& toCompare) const +{ + return !operator==(toCompare); +} + + +// --------------------------------------------------------------------------- +// ValueArrayOf: Copy operations +// --------------------------------------------------------------------------- +template XMLSize_t ValueArrayOf:: +copyFrom(const ValueArrayOf& srcArray) +{ + // + // Copy over as many of the source elements as will fit into + // this array. + // + const XMLSize_t count = fSize < srcArray.fSize ? + fSize : srcArray.fSize; + + for (XMLSize_t index = 0; index < count; index++) + fArray[index] = srcArray.fArray[index]; + + return count; +} + + +// --------------------------------------------------------------------------- +// ValueArrayOf: Getter methods +// --------------------------------------------------------------------------- +template XMLSize_t ValueArrayOf:: +length() const +{ + return fSize; +} + +template TElem* ValueArrayOf:: +rawData() const +{ + return fArray; +} + + +// --------------------------------------------------------------------------- +// ValueArrayOf: Miscellaneous methods +// --------------------------------------------------------------------------- +template void ValueArrayOf:: +resize(const XMLSize_t newSize) +{ + if (newSize == fSize) + return; + + if (newSize < fSize) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Array_BadNewSize, fMemoryManager); + + // Allocate the new array + TElem* newArray = (TElem*) fMemoryManager->allocate + ( + newSize * sizeof(TElem) + ); //new TElem[newSize]; + + // Copy the existing values + XMLSize_t index = 0; + for (; index < fSize; index++) + newArray[index] = fArray[index]; + + for (; index < newSize; index++) + newArray[index] = TElem(0); + + // Delete the old array and update our members + fMemoryManager->deallocate(fArray); //delete [] fArray; + fArray = newArray; + fSize = newSize; +} + + + +// --------------------------------------------------------------------------- +// ValueArrayEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template ValueArrayEnumerator:: +ValueArrayEnumerator(ValueArrayOf* const toEnum, const bool adopt) : + fAdopted(adopt) + , fCurIndex(0) + , fToEnum(toEnum) +{ +} + +template ValueArrayEnumerator::~ValueArrayEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// ValueArrayEnumerator: Enum interface +// --------------------------------------------------------------------------- +template bool ValueArrayEnumerator::hasMoreElements() const +{ + if (fCurIndex >= fToEnum->length()) + return false; + return true; +} + +template TElem& ValueArrayEnumerator::nextElement() +{ + return (*fToEnum)[fCurIndex++]; +} + +template void ValueArrayEnumerator::Reset() +{ + fCurIndex = 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/ValueArrayOf.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/ValueArrayOf.hpp new file mode 100644 index 000000000000..e47631ec617d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/ValueArrayOf.hpp @@ -0,0 +1,150 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALUEARRAY_HPP) +#define XERCESC_INCLUDE_GUARD_VALUEARRAY_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class ValueArrayOf : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueArrayOf + ( + const XMLSize_t size + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ValueArrayOf + ( + const TElem* values + , const XMLSize_t size + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ValueArrayOf(const ValueArrayOf& source); + ~ValueArrayOf(); + + + // ----------------------------------------------------------------------- + // Public operators + // ----------------------------------------------------------------------- + TElem& operator[](const XMLSize_t index); + const TElem& operator[](const XMLSize_t index) const; + ValueArrayOf& operator=(const ValueArrayOf& toAssign); + bool operator==(const ValueArrayOf& toCompare) const; + bool operator!=(const ValueArrayOf& toCompare) const; + + + // ----------------------------------------------------------------------- + // Copy operations + // ----------------------------------------------------------------------- + XMLSize_t copyFrom(const ValueArrayOf& srcArray); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t length() const; + TElem* rawData() const; + + + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + void resize(const XMLSize_t newSize); + + +private : + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + XMLSize_t fSize; + TElem* fArray; + MemoryManager* fMemoryManager; +}; + + +// +// An enumerator for a value array. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template class ValueArrayEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueArrayEnumerator + ( + ValueArrayOf* const toEnum + , const bool adopt = false + ); + virtual ~ValueArrayEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TElem& nextElement(); + void Reset(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueArrayEnumerator(const ValueArrayEnumerator&); + ValueArrayEnumerator& operator=(const ValueArrayEnumerator&); + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed vector. If so then + // we delete the vector when we are destroyed. + // + // fCurIndex + // This is the current index into the vector. + // + // fToEnum + // The value array being enumerated. + // ----------------------------------------------------------------------- + bool fAdopted; + XMLSize_t fCurIndex; + ValueArrayOf* fToEnum; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/ValueHashTableOf.c b/src/libs/xerces-c/mingw/include/xercesc/util/ValueHashTableOf.c new file mode 100644 index 000000000000..b8925ac89095 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/ValueHashTableOf.c @@ -0,0 +1,489 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// ValueHashTableOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +ValueHashTableOf::ValueHashTableOf( const XMLSize_t modulus + , const THasher& hasher + , MemoryManager* const manager) + : fMemoryManager(manager) + , fBucketList(0) + , fHashModulus(modulus) + , fInitialModulus(modulus) + , fCount(0) + , fHasher(hasher) +{ + initialize(modulus); +} + +template +ValueHashTableOf::ValueHashTableOf( const XMLSize_t modulus + , MemoryManager* const manager) + : fMemoryManager(manager) + , fBucketList(0) + , fHashModulus(modulus) + , fInitialModulus(modulus) + , fCount(0) + , fHasher() +{ + initialize(modulus); +} + +template +void ValueHashTableOf::initialize(const XMLSize_t modulus) +{ + if (modulus == 0) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); + + // Allocate the bucket list and zero them + fBucketList = (ValueHashTableBucketElem**) fMemoryManager->allocate + ( + fHashModulus * sizeof(ValueHashTableBucketElem*) + ); //new ValueHashTableBucketElem*[fHashModulus]; + memset(fBucketList, 0, sizeof(fBucketList[0]) * fHashModulus); +} + +template +ValueHashTableOf::~ValueHashTableOf() +{ + removeAll(); + + // Then delete the bucket list & hasher + fMemoryManager->deallocate(fBucketList); //delete [] fBucketList; +} + + +// --------------------------------------------------------------------------- +// ValueHashTableOf: Element management +// --------------------------------------------------------------------------- +template +bool ValueHashTableOf::isEmpty() const +{ + return fCount==0; +} + +template +bool ValueHashTableOf:: +containsKey(const void* const key) const +{ + XMLSize_t hashVal; + const ValueHashTableBucketElem* findIt = findBucketElem(key, hashVal); + return (findIt != 0); +} + +template +void ValueHashTableOf:: +removeKey(const void* const key) +{ + XMLSize_t hashVal; + removeBucketElem(key, hashVal); +} + +template +void ValueHashTableOf::removeAll() +{ + if(isEmpty()) + return; + + // Clean up the buckets first + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + // Get the bucket list head for this entry + ValueHashTableBucketElem* curElem = fBucketList[buckInd]; + ValueHashTableBucketElem* nextElem; + while (curElem) + { + // Save the next element before we hose this one + nextElem = curElem->fNext; + + // delete the current element and move forward + // destructor is empty... + // curElem->~ValueHashTableBucketElem(); + fMemoryManager->deallocate(curElem); + curElem = nextElem; + } + + // Clean out this entry + fBucketList[buckInd] = 0; + } + fCount = 0; +} + + +// --------------------------------------------------------------------------- +// ValueHashTableOf: Getters +// --------------------------------------------------------------------------- +template +TVal& ValueHashTableOf::get(const void* const key, MemoryManager* const manager) +{ + XMLSize_t hashVal; + ValueHashTableBucketElem* findIt = findBucketElem(key, hashVal); + if (!findIt) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, manager); + + return findIt->fData; +} + +template +const TVal& ValueHashTableOf:: +get(const void* const key) const +{ + XMLSize_t hashVal; + const ValueHashTableBucketElem* findIt = findBucketElem(key, hashVal); + if (!findIt) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, fMemoryManager); + + return findIt->fData; +} + + +// --------------------------------------------------------------------------- +// ValueHashTableOf: Putters +// --------------------------------------------------------------------------- +template +void ValueHashTableOf::put(void* key, const TVal& valueToAdopt) +{ + // Apply 0.75 load factor to find threshold. + XMLSize_t threshold = fHashModulus * 3 / 4; + + // If we've grown too big, expand the table and rehash. + if (fCount >= threshold) + rehash(); + + // First see if the key exists already + XMLSize_t hashVal; + ValueHashTableBucketElem* newBucket = findBucketElem(key, hashVal); + + // + // If so,then update its value. If not, then we need to add it to + // the right bucket + // + if (newBucket) + { + newBucket->fData = valueToAdopt; + newBucket->fKey = key; + } + else + { + newBucket = + new (fMemoryManager->allocate(sizeof(ValueHashTableBucketElem))) + ValueHashTableBucketElem(key, valueToAdopt, fBucketList[hashVal]); + fBucketList[hashVal] = newBucket; + fCount++; + } +} + + + +// --------------------------------------------------------------------------- +// ValueHashTableOf: Private methods +// --------------------------------------------------------------------------- +template +void ValueHashTableOf::rehash() +{ + const XMLSize_t newMod = (fHashModulus * 2) + 1; + + ValueHashTableBucketElem** newBucketList = + (ValueHashTableBucketElem**) fMemoryManager->allocate + ( + newMod * sizeof(ValueHashTableBucketElem*) + );//new RefHashTableBucketElem*[newMod]; + + // Make sure the new bucket list is destroyed if an + // exception is thrown. + ArrayJanitor*> guard(newBucketList, fMemoryManager); + + memset(newBucketList, 0, newMod * sizeof(newBucketList[0])); + + + // Rehash all existing entries. + for (XMLSize_t index = 0; index < fHashModulus; index++) + { + // Get the bucket list head for this entry + ValueHashTableBucketElem* curElem = fBucketList[index]; + + while (curElem) + { + // Save the next element before we detach this one + ValueHashTableBucketElem* const nextElem = curElem->fNext; + + const XMLSize_t hashVal = fHasher.getHashVal(curElem->fKey, newMod); + assert(hashVal < newMod); + + ValueHashTableBucketElem* const newHeadElem = newBucketList[hashVal]; + + // Insert at the start of this bucket's list. + curElem->fNext = newHeadElem; + newBucketList[hashVal] = curElem; + + curElem = nextElem; + } + } + + ValueHashTableBucketElem** const oldBucketList = fBucketList; + + // Everything is OK at this point, so update the + // member variables. + fBucketList = guard.release(); + fHashModulus = newMod; + + // Delete the old bucket list. + fMemoryManager->deallocate(oldBucketList);//delete[] oldBucketList; + +} + +template +inline ValueHashTableBucketElem* ValueHashTableOf:: +findBucketElem(const void* const key, XMLSize_t& hashVal) +{ + // Hash the key + hashVal = fHasher.getHashVal(key, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + ValueHashTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if (fHasher.equals(key, curElem->fKey)) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + +template +inline const ValueHashTableBucketElem* ValueHashTableOf:: +findBucketElem(const void* const key, XMLSize_t& hashVal) const +{ + // Hash the key + hashVal = fHasher.getHashVal(key, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + const ValueHashTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if (fHasher.equals(key, curElem->fKey)) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + + +template +void ValueHashTableOf:: +removeBucketElem(const void* const key, XMLSize_t& hashVal) +{ + // Hash the key + hashVal = fHasher.getHashVal(key, fHashModulus); + assert(hashVal < fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + ValueHashTableBucketElem* curElem = fBucketList[hashVal]; + ValueHashTableBucketElem* lastElem = 0; + + while (curElem) + { + if (fHasher.equals(key, curElem->fKey)) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + // Delete the current element + // delete curElem; + // destructor is empty... + // curElem->~ValueHashTableBucketElem(); + fMemoryManager->deallocate(curElem); + + fCount--; + + return; + } + + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + + // We never found that key + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, fMemoryManager); +} + + + + +// --------------------------------------------------------------------------- +// ValueHashTableOfEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template +ValueHashTableOfEnumerator:: +ValueHashTableOfEnumerator(ValueHashTableOf* const toEnum + , const bool adopt + , MemoryManager* const manager) + : fAdopted(adopt), fCurElem(0), fCurHash((XMLSize_t)-1), fToEnum(toEnum), fMemoryManager(manager) +{ + if (!toEnum) + ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, manager); + + // + // Find the next available bucket element in the hash table. If it + // comes back zero, that just means the table is empty. + // + // Note that the -1 in the current hash tells it to start from the + // beginning. + // + findNext(); +} + +template +ValueHashTableOfEnumerator::~ValueHashTableOfEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// ValueHashTableOfEnumerator: Enum interface +// --------------------------------------------------------------------------- +template +bool ValueHashTableOfEnumerator::hasMoreElements() const +{ + // + // If our current has is at the max and there are no more elements + // in the current bucket, then no more elements. + // + if (!fCurElem && (fCurHash == fToEnum->fHashModulus)) + return false; + return true; +} + +template +TVal& ValueHashTableOfEnumerator::nextElement() +{ + // Make sure we have an element to return + if (!hasMoreElements()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + ValueHashTableBucketElem* saveElem = fCurElem; + findNext(); + + return saveElem->fData; +} + +template +void* ValueHashTableOfEnumerator::nextElementKey() +{ + // Make sure we have an element to return + if (!hasMoreElements()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + ValueHashTableBucketElem* saveElem = fCurElem; + findNext(); + + return saveElem->fKey; +} + + +template +void ValueHashTableOfEnumerator::Reset() +{ + fCurHash = (XMLSize_t)-1; + fCurElem = 0; + findNext(); +} + + + +// --------------------------------------------------------------------------- +// ValueHashTableOfEnumerator: Private helper methods +// --------------------------------------------------------------------------- +template +void ValueHashTableOfEnumerator::findNext() +{ + // + // If there is a current element, move to its next element. If this + // hits the end of the bucket, the next block will handle the rest. + // + if (fCurElem) + fCurElem = fCurElem->fNext; + + // + // If the current element is null, then we have to move up to the + // next hash value. If that is the hash modulus, then we cannot + // go further. + // + if (!fCurElem) + { + if (++fCurHash == fToEnum->fHashModulus) + return; + + // Else find the next non-empty bucket + while (fToEnum->fBucketList[fCurHash]==0) + { + // Bump to the next hash value. If we max out return + if (++fCurHash == fToEnum->fHashModulus) + return; + } + fCurElem = fToEnum->fBucketList[fCurHash]; + } +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/ValueHashTableOf.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/ValueHashTableOf.hpp new file mode 100644 index 000000000000..a7cbe9dcf43e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/ValueHashTableOf.hpp @@ -0,0 +1,229 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALUEHASHTABLEOF_HPP) +#define XERCESC_INCLUDE_GUARD_VALUEHASHTABLEOF_HPP + + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Forward declare the enumerator so it can be our friend. +// +template +class ValueHashTableOfEnumerator; + + +// +// This should really be a nested class, but some of the compilers we +// have to support cannot deal with that! +// +template +struct ValueHashTableBucketElem +{ + ValueHashTableBucketElem(void* key, const TVal& value, ValueHashTableBucketElem* next) + : fData(value), fNext(next), fKey(key) + { + } + ValueHashTableBucketElem(){}; + ~ValueHashTableBucketElem(){}; + + TVal fData; + ValueHashTableBucketElem* fNext; + void* fKey; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueHashTableBucketElem(const ValueHashTableBucketElem&); + ValueHashTableBucketElem& operator=(const ValueHashTableBucketElem&); +}; + + +template +class ValueHashTableOf : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueHashTableOf( + const XMLSize_t modulus, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ValueHashTableOf( + const XMLSize_t modulus, + const THasher& hasher, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~ValueHashTableOf(); + + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + bool isEmpty() const; + bool containsKey(const void* const key) const; + void removeKey(const void* const key); + void removeAll(); + + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + TVal& get(const void* const key, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + const TVal& get(const void* const key) const; + + + // ----------------------------------------------------------------------- + // Putters + // ----------------------------------------------------------------------- + void put(void* key, const TVal& valueToAdopt); + + +private : + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class ValueHashTableOfEnumerator; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueHashTableOf(const ValueHashTableOf&); + ValueHashTableOf& operator=(const ValueHashTableOf&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + ValueHashTableBucketElem* findBucketElem(const void* const key, XMLSize_t& hashVal); + const ValueHashTableBucketElem* findBucketElem(const void* const key, XMLSize_t& hashVal) const; + void removeBucketElem(const void* const key, XMLSize_t& hashVal); + void initialize(const XMLSize_t modulus); + void rehash(); + + + // ----------------------------------------------------------------------- + // Data members + // + // fBucketList + // This is the array that contains the heads of all of the list + // buckets, one for each possible hash value. + // + // fHashModulus + // The modulus used for this hash table, to hash the keys. This is + // also the number of elements in the bucket list. + // + // fHash + // The hasher for the key data type. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + ValueHashTableBucketElem** fBucketList; + XMLSize_t fHashModulus; + XMLSize_t fInitialModulus; + XMLSize_t fCount; + THasher fHasher; +}; + + + +// +// An enumerator for a value array. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template +class ValueHashTableOfEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueHashTableOfEnumerator(ValueHashTableOf* const toEnum + , const bool adopt = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~ValueHashTableOfEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TVal& nextElement(); + void Reset(); + + // ----------------------------------------------------------------------- + // New interface specific for key used in ValueHashable + // ----------------------------------------------------------------------- + void* nextElementKey(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueHashTableOfEnumerator(const ValueHashTableOfEnumerator&); + ValueHashTableOfEnumerator& operator=(const ValueHashTableOfEnumerator&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + void findNext(); + + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed vector. If so then + // we delete the vector when we are destroyed. + // + // fCurElem + // This is the current bucket bucket element that we are on. + // + // fCurHash + // The is the current hash buck that we are working on. Once we hit + // the end of the bucket that fCurElem is in, then we have to start + // working this one up to the next non-empty bucket. + // + // fToEnum + // The value array being enumerated. + // ----------------------------------------------------------------------- + bool fAdopted; + ValueHashTableBucketElem* fCurElem; + XMLSize_t fCurHash; + ValueHashTableOf* fToEnum; + MemoryManager* const fMemoryManager; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/ValueStackOf.c b/src/libs/xerces-c/mingw/include/xercesc/util/ValueStackOf.c new file mode 100644 index 000000000000..fda3ba1c4548 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/ValueStackOf.c @@ -0,0 +1,146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + + +// --------------------------------------------------------------------------- +// ValueStackOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +ValueStackOf::ValueStackOf(const XMLSize_t fInitCapacity, + MemoryManager* const manager, + const bool toCallDestructor) : + + fVector(fInitCapacity, manager, toCallDestructor) +{ +} + +template ValueStackOf::~ValueStackOf() +{ +} + + +// --------------------------------------------------------------------------- +// ValueStackOf: Element management methods +// --------------------------------------------------------------------------- +template void ValueStackOf::push(const TElem& toPush) +{ + fVector.addElement(toPush); +} + +template const TElem& ValueStackOf::peek() const +{ + const XMLSize_t curSize = fVector.size(); + if (curSize == 0) + ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::Stack_EmptyStack, fVector.getMemoryManager()); + + return fVector.elementAt(curSize-1); +} + +template TElem ValueStackOf::pop() +{ + const XMLSize_t curSize = fVector.size(); + if (curSize == 0) + ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::Stack_EmptyStack, fVector.getMemoryManager()); + + TElem retVal = fVector.elementAt(curSize-1); + fVector.removeElementAt(curSize-1); + return retVal; +} + +template void ValueStackOf::removeAllElements() +{ + fVector.removeAllElements(); +} + + +// --------------------------------------------------------------------------- +// ValueStackOf: Getter methods +// --------------------------------------------------------------------------- +template bool ValueStackOf::empty() +{ + return (fVector.size() == 0); +} + +template XMLSize_t ValueStackOf::curCapacity() +{ + return fVector.curCapacity(); +} + +template XMLSize_t ValueStackOf::size() +{ + return fVector.size(); +} + + + + +// --------------------------------------------------------------------------- +// ValueStackEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template ValueStackEnumerator:: +ValueStackEnumerator( ValueStackOf* const toEnum + , const bool adopt) : + + fAdopted(adopt) + , fCurIndex(0) + , fToEnum(toEnum) + , fVector(&toEnum->fVector) +{ +} + +template ValueStackEnumerator::~ValueStackEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// ValueStackEnumerator: Enum interface +// --------------------------------------------------------------------------- +template bool ValueStackEnumerator::hasMoreElements() const +{ + if (fCurIndex >= fVector->size()) + return false; + return true; +} + +template TElem& ValueStackEnumerator::nextElement() +{ + return fVector->elementAt(fCurIndex++); +} + +template void ValueStackEnumerator::Reset() +{ + fCurIndex = 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/ValueStackOf.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/ValueStackOf.hpp new file mode 100644 index 000000000000..255e65864a93 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/ValueStackOf.hpp @@ -0,0 +1,155 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALUESTACKOF_HPP) +#define XERCESC_INCLUDE_GUARD_VALUESTACKOF_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// Forward declare the enumerator so he can be our friend. Can you say +// friend? Sure... +// +template class ValueStackEnumerator; + + +template class ValueStackOf : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueStackOf + ( + const XMLSize_t fInitCapacity + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , const bool toCallDestructor = false + ); + ~ValueStackOf(); + + + // ----------------------------------------------------------------------- + // Element management methods + // ----------------------------------------------------------------------- + void push(const TElem& toPush); + const TElem& peek() const; + TElem pop(); + void removeAllElements(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool empty(); + XMLSize_t curCapacity(); + XMLSize_t size(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueStackOf(const ValueStackOf&); + ValueStackOf& operator=(const ValueStackOf&); + + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class ValueStackEnumerator; + + + // ----------------------------------------------------------------------- + // Data Members + // + // fVector + // The vector that is used as the backing data structure for the + // stack. + // ----------------------------------------------------------------------- + ValueVectorOf fVector; +}; + + + +// +// An enumerator for a value stack. It derives from the basic enumerator +// class, so that value stacks can be generically enumerated. +// +template class ValueStackEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueStackEnumerator + ( + ValueStackOf* const toEnum + , const bool adopt = false + ); + virtual ~ValueStackEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TElem& nextElement(); + void Reset(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueStackEnumerator(const ValueStackEnumerator&); + ValueStackEnumerator& operator=(const ValueStackEnumerator&); + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed stack. If so then + // we delete the stack when we are destroyed. + // + // fCurIndex + // This is the current index into the vector inside the stack being + // enumerated. + // + // fToEnum + // The stack that is being enumerated. This is just kept for + // adoption purposes, since we really are enumerating the vector + // inside of it. + // ----------------------------------------------------------------------- + bool fAdopted; + XMLSize_t fCurIndex; + ValueVectorOf* fVector; + ValueStackOf* fToEnum; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/ValueVectorOf.c b/src/libs/xerces-c/mingw/include/xercesc/util/ValueVectorOf.c new file mode 100644 index 000000000000..1aca7364e92a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/ValueVectorOf.c @@ -0,0 +1,299 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// ValueVectorOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +ValueVectorOf::ValueVectorOf(const XMLSize_t maxElems, + MemoryManager* const manager, + const bool toCallDestructor) : + + fCallDestructor(toCallDestructor) + , fCurCount(0) + , fMaxCount(maxElems) + , fElemList(0) + , fMemoryManager(manager) +{ + fElemList = (TElem*) fMemoryManager->allocate + ( + fMaxCount * sizeof(TElem) + ); //new TElem[fMaxCount]; + + memset(fElemList, 0, fMaxCount * sizeof(TElem)); +} + +template +ValueVectorOf::ValueVectorOf(const ValueVectorOf& toCopy) : + XMemory(toCopy) + , fCallDestructor(toCopy.fCallDestructor) + , fCurCount(toCopy.fCurCount) + , fMaxCount(toCopy.fMaxCount) + , fElemList(0) + , fMemoryManager(toCopy.fMemoryManager) +{ + fElemList = (TElem*) fMemoryManager->allocate + ( + fMaxCount * sizeof(TElem) + ); //new TElem[fMaxCount]; + + memset(fElemList, 0, fMaxCount * sizeof(TElem)); + for (XMLSize_t index = 0; index < fCurCount; index++) + fElemList[index] = toCopy.fElemList[index]; +} + +template ValueVectorOf::~ValueVectorOf() +{ + if (fCallDestructor) { + for (XMLSize_t index=fMaxCount; index > 0; index--) + fElemList[index-1].~TElem(); + } + fMemoryManager->deallocate(fElemList); //delete [] fElemList; +} + + +// --------------------------------------------------------------------------- +// ValueVectorOf: Operators +// --------------------------------------------------------------------------- +template ValueVectorOf& +ValueVectorOf::operator=(const ValueVectorOf& toAssign) +{ + if (this == &toAssign) + return *this; + + if (fCallDestructor) { + for (XMLSize_t index=fMaxCount; index > 0; index--) + fElemList[index-1].~TElem(); + } + + // Reallocate if required + if (fMaxCount < toAssign.fCurCount) + { + fMemoryManager->deallocate(fElemList); //delete [] fElemList; + fElemList = (TElem*) fMemoryManager->allocate + ( + toAssign.fMaxCount * sizeof(TElem) + ); //new TElem[toAssign.fMaxCount]; + fMaxCount = toAssign.fMaxCount; + } + + fCurCount = toAssign.fCurCount; + for (XMLSize_t index = 0; index < fCurCount; index++) + fElemList[index] = toAssign.fElemList[index]; + + return *this; +} + + +// --------------------------------------------------------------------------- +// ValueVectorOf: Element management +// --------------------------------------------------------------------------- +template void ValueVectorOf::addElement(const TElem& toAdd) +{ + ensureExtraCapacity(1); + fElemList[fCurCount++] = toAdd; +} + +template void ValueVectorOf:: +setElementAt(const TElem& toSet, const XMLSize_t setAt) +{ + if (setAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + fElemList[setAt] = toSet; +} + +template void ValueVectorOf:: +insertElementAt(const TElem& toInsert, const XMLSize_t insertAt) +{ + if (insertAt == fCurCount) + { + addElement(toInsert); + return; + } + + if (insertAt > fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + + // Make room for the newbie + ensureExtraCapacity(1); + for (XMLSize_t index = fCurCount; index > insertAt; index--) + fElemList[index] = fElemList[index-1]; + + // And stick it in and bump the count + fElemList[insertAt] = toInsert; + fCurCount++; +} + +template void ValueVectorOf:: +removeElementAt(const XMLSize_t removeAt) +{ + if (removeAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + + // Copy down every element above remove point + for (XMLSize_t index = removeAt; index < fCurCount-1; index++) + fElemList[index] = fElemList[index+1]; + + // And bump down count + fCurCount--; +} + +template void ValueVectorOf::removeAllElements() +{ + fCurCount = 0; +} + +template +bool ValueVectorOf::containsElement(const TElem& toCheck, + const XMLSize_t startIndex) { + + for (XMLSize_t i = startIndex; i < fCurCount; i++) { + if (fElemList[i] == toCheck) { + return true; + } + } + + return false; +} + + +// --------------------------------------------------------------------------- +// ValueVectorOf: Getter methods +// --------------------------------------------------------------------------- +template const TElem& ValueVectorOf:: +elementAt(const XMLSize_t getAt) const +{ + if (getAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + return fElemList[getAt]; +} + +template TElem& ValueVectorOf:: +elementAt(const XMLSize_t getAt) +{ + if (getAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + return fElemList[getAt]; +} + +template XMLSize_t ValueVectorOf::curCapacity() const +{ + return fMaxCount; +} + +template XMLSize_t ValueVectorOf::size() const +{ + return fCurCount; +} + +template +MemoryManager* ValueVectorOf::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// ValueVectorOf: Miscellaneous +// --------------------------------------------------------------------------- +template void ValueVectorOf:: +ensureExtraCapacity(const XMLSize_t length) +{ + XMLSize_t newMax = fCurCount + length; + + if (newMax > fMaxCount) + { + // Avoid too many reallocations by expanding by a percentage + XMLSize_t minNewMax = (XMLSize_t)((double)fCurCount * 1.25); + if (newMax < minNewMax) + newMax = minNewMax; + + TElem* newList = (TElem*) fMemoryManager->allocate + ( + newMax * sizeof(TElem) + ); //new TElem[newMax]; + for (XMLSize_t index = 0; index < fCurCount; index++) + newList[index] = fElemList[index]; + + fMemoryManager->deallocate(fElemList); //delete [] fElemList; + fElemList = newList; + fMaxCount = newMax; + } +} + +template const TElem* ValueVectorOf::rawData() const +{ + return fElemList; +} + + + +// --------------------------------------------------------------------------- +// ValueVectorEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template ValueVectorEnumerator:: +ValueVectorEnumerator( ValueVectorOf* const toEnum + , const bool adopt) : + fAdopted(adopt) + , fCurIndex(0) + , fToEnum(toEnum) +{ +} + +template ValueVectorEnumerator::~ValueVectorEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// ValueVectorEnumerator: Enum interface +// --------------------------------------------------------------------------- +template bool +ValueVectorEnumerator::hasMoreElements() const +{ + if (fCurIndex >= fToEnum->size()) + return false; + return true; +} + +template TElem& ValueVectorEnumerator::nextElement() +{ + return fToEnum->elementAt(fCurIndex++); +} + +template void ValueVectorEnumerator::Reset() +{ + fCurIndex = 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/ValueVectorOf.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/ValueVectorOf.hpp new file mode 100644 index 000000000000..015dbeda3c6d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/ValueVectorOf.hpp @@ -0,0 +1,162 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALUEVECTOROF_HPP) +#define XERCESC_INCLUDE_GUARD_VALUEVECTOROF_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class ValueVectorOf : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueVectorOf + ( + const XMLSize_t maxElems + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , const bool toCallDestructor = false + ); + ValueVectorOf(const ValueVectorOf& toCopy); + ~ValueVectorOf(); + + + // ----------------------------------------------------------------------- + // Operators + // ----------------------------------------------------------------------- + ValueVectorOf& operator=(const ValueVectorOf& toAssign); + + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + void addElement(const TElem& toAdd); + void setElementAt(const TElem& toSet, const XMLSize_t setAt); + void insertElementAt(const TElem& toInsert, const XMLSize_t insertAt); + void removeElementAt(const XMLSize_t removeAt); + void removeAllElements(); + bool containsElement(const TElem& toCheck, const XMLSize_t startIndex = 0); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const TElem& elementAt(const XMLSize_t getAt) const; + TElem& elementAt(const XMLSize_t getAt); + XMLSize_t curCapacity() const; + XMLSize_t size() const; + MemoryManager* getMemoryManager() const; + + + // ----------------------------------------------------------------------- + // Miscellaneous + // ----------------------------------------------------------------------- + void ensureExtraCapacity(const XMLSize_t length); + const TElem* rawData() const; + + +private: + // ----------------------------------------------------------------------- + // Data members + // + // fCurCount + // The count of values current added to the vector, which may be + // less than the internal capacity. + // + // fMaxCount + // The current capacity of the vector. + // + // fElemList + // The list of elements, which is dynamically allocated to the needed + // size. + // ----------------------------------------------------------------------- + bool fCallDestructor; + XMLSize_t fCurCount; + XMLSize_t fMaxCount; + TElem* fElemList; + MemoryManager* fMemoryManager; +}; + + +// +// An enumerator for a value vector. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template class ValueVectorEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueVectorEnumerator + ( + ValueVectorOf* const toEnum + , const bool adopt = false + ); + virtual ~ValueVectorEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TElem& nextElement(); + void Reset(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueVectorEnumerator(const ValueVectorEnumerator&); + ValueVectorEnumerator& operator=(const ValueVectorEnumerator&); + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed vector. If so then + // we delete the vector when we are destroyed. + // + // fCurIndex + // This is the current index into the vector. + // + // fToEnum + // The value vector being enumerated. + // ----------------------------------------------------------------------- + bool fAdopted; + XMLSize_t fCurIndex; + ValueVectorOf* fToEnum; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XML256TableTranscoder.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XML256TableTranscoder.hpp new file mode 100644 index 000000000000..efc214d0f871 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XML256TableTranscoder.hpp @@ -0,0 +1,146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML256TABLETRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XML256TABLETRANSCODER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class implements the functionality of a common type of transcoder +// for an 8 bit, single byte encoding based on a set of 'to' and 'from' +// translation tables. Actual derived classes are trivial and just have to +// provide us with pointers to their tables and we do all the work. +// +class XMLUTIL_EXPORT XML256TableTranscoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + virtual ~XML256TableTranscoder(); + + + // ----------------------------------------------------------------------- + // The virtual transcoding interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XML256TableTranscoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , const XMLCh* const fromTable + , const XMLTransService::TransRec* const toTable + , const XMLSize_t toTableSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + + // ----------------------------------------------------------------------- + // Protected helper methods + // ----------------------------------------------------------------------- + XMLByte xlatOneTo + ( + const XMLCh toXlat + ) const; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XML256TableTranscoder(); + XML256TableTranscoder(const XML256TableTranscoder&); + XML256TableTranscoder& operator=(const XML256TableTranscoder&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fFromTable + // This is the 'from' table that we were given during construction. + // It is a 256 entry table of XMLCh chars. Each entry is the + // Unicode code point for the external encoding point of that value. + // So fFromTable[N] is the Unicode translation of code point N of + // the source encoding. + // + // We don't own this table, we just refer to it. It is assumed that + // the table is static, for performance reasons. + // + // fToSize + // The 'to' table is variable sized. This indicates how many records + // are in it. + // + // fToTable + // This is a variable sized table of TransRec structures. It must + // be sorted by the intCh field, i.e. the XMLCh field. It is searched + // binarily to find the record for a particular Unicode char. Then + // that record's extch field is the translation record. + // + // We don't own this table, we just refer to it. It is assumed that + // the table is static, for performance reasons. + // + // NOTE: There may be dups of the extCh field, since there might be + // multiple Unicode code points which map to the same external code + // point. Normally this won't happen, since the parser assumes that + // internalization is normalized, but we have to be prepared to do + // the right thing if some client code gives us non-normalized data + // itself. + // ----------------------------------------------------------------------- + const XMLCh* fFromTable; + XMLSize_t fToSize; + const XMLTransService::TransRec* fToTable; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XML88591Transcoder.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XML88591Transcoder.hpp new file mode 100644 index 000000000000..5935278b5003 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XML88591Transcoder.hpp @@ -0,0 +1,93 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML88591TRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XML88591TRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple 8859-1 transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +class XMLUTIL_EXPORT XML88591Transcoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XML88591Transcoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XML88591Transcoder(); + + + // ----------------------------------------------------------------------- + // Implementation of the XMLTranscoder interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XML88591Transcoder(const XML88591Transcoder&); + XML88591Transcoder& operator=(const XML88591Transcoder&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLASCIITranscoder.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLASCIITranscoder.hpp new file mode 100644 index 000000000000..dccd9921304c --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLASCIITranscoder.hpp @@ -0,0 +1,93 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLASCIITRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLASCIITRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple ASCII transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +class XMLUTIL_EXPORT XMLASCIITranscoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Constructors and destructor + // ----------------------------------------------------------------------- + XMLASCIITranscoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLASCIITranscoder(); + + + // ----------------------------------------------------------------------- + // Implementation of the XMLTranscoder interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLASCIITranscoder(const XMLASCIITranscoder&); + XMLASCIITranscoder& operator=(const XMLASCIITranscoder&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLAbstractDoubleFloat.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLAbstractDoubleFloat.hpp new file mode 100644 index 000000000000..f5712b972f69 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLAbstractDoubleFloat.hpp @@ -0,0 +1,221 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML_ABSTRACT_DOUBLE_FLOAT_HPP) +#define XERCESC_INCLUDE_GUARD_XML_ABSTRACT_DOUBLE_FLOAT_HPP + + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/*** + * 3.2.5.1 Lexical representation + * + * double values have a lexical representation consisting of a mantissa followed, + * optionally, by the character "E" or "e", followed by an exponent. + * + * The exponent must be an integer. + * The mantissa must be a decimal number. + * The representations for exponent and mantissa must follow the lexical rules + * for integer and decimal. + * + * If the "E" or "e" and the following exponent are omitted, + * an exponent value of 0 is assumed. +***/ + +/*** + * 3.2.4.1 Lexical representation + * + * float values have a lexical representation consisting of a mantissa followed, + * optionally, by the character "E" or "e", followed by an exponent. + * + * The exponent must be an integer. + * The mantissa must be a decimal number. + * The representations for exponent and mantissa must follow the lexical rules + * for integer and decimal. + * + * If the "E" or "e" and the following exponent are omitted, + * an exponent value of 0 is assumed. +***/ + +class XMLUTIL_EXPORT XMLAbstractDoubleFloat : public XMLNumber +{ +public: + + enum LiteralType + { + NegINF, + PosINF, + NaN, + SpecialTypeNum, + Normal + }; + + virtual ~XMLAbstractDoubleFloat(); + + static XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager + ); + + virtual XMLCh* getRawData() const; + + virtual const XMLCh* getFormattedString() const; + + virtual int getSign() const; + + MemoryManager* getMemoryManager() const; + + inline bool isDataConverted() const; + + inline bool isDataOverflowed() const; + + inline double getValue() const; + + inline LiteralType getType() const; + + /*** + * + * The decimal point delimiter for the schema double/float type is + * defined to be a period and is not locale-specific. So, it must + * be replaced with the local-specific delimiter before converting + * from string to double/float. + * + ***/ + static void normalizeDecimalPoint(char* const toNormal); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLAbstractDoubleFloat) + +protected: + + // + // To be used by derived class exclusively + // + XMLAbstractDoubleFloat(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + void init(const XMLCh* const strValue); + + /** + * Compares this object to the specified object. + * The result is true if and only if the argument is not + * null and is an XMLAbstractDoubleFloat object that contains + * the same int value as this object. + * + * @param lValue the object to compare with. + * @param rValue the object to compare against. + * @param manager The MemoryManager to use to allocate objects + * @return true if the objects are the same; + * false otherwise. + */ + + static int compareValues(const XMLAbstractDoubleFloat* const lValue + , const XMLAbstractDoubleFloat* const rValue + , MemoryManager* const manager); + + // + // to be overridden by derived class + // + virtual void checkBoundary(char* const strValue) = 0; + + void + convert(char* const strValue); + +private: + // + // Unimplemented + // + // copy ctor + // assignment ctor + // + XMLAbstractDoubleFloat(const XMLAbstractDoubleFloat& toCopy); + XMLAbstractDoubleFloat& operator=(const XMLAbstractDoubleFloat& toAssign); + + void normalizeZero(XMLCh* const); + + inline bool isSpecialValue() const; + + static int compareSpecial(const XMLAbstractDoubleFloat* const specialValue + , MemoryManager* const manager); + + void formatString(); + +protected: + double fValue; + LiteralType fType; + bool fDataConverted; + bool fDataOverflowed; + +private: + int fSign; + XMLCh* fRawData; + + // + // If the original string is not lexcially the same as the five + // special value notations, and the value is converted to + // special value due underlying platform restriction on data + // representation, then this string is constructed and + // takes the form "original_string (special_value_notation)", + // otherwise it is empty. + // + XMLCh* fFormattedString; + MemoryManager* fMemoryManager; + +}; + +inline bool XMLAbstractDoubleFloat::isSpecialValue() const +{ + return (fType < SpecialTypeNum); +} + +inline MemoryManager* XMLAbstractDoubleFloat::getMemoryManager() const +{ + return fMemoryManager; +} + +inline bool XMLAbstractDoubleFloat::isDataConverted() const +{ + return fDataConverted; +} + +inline bool XMLAbstractDoubleFloat::isDataOverflowed() const +{ + return fDataOverflowed; +} + +inline double XMLAbstractDoubleFloat::getValue() const +{ + return fValue; +} + +inline XMLAbstractDoubleFloat::LiteralType XMLAbstractDoubleFloat::getType() const +{ + return fType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLBigDecimal.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLBigDecimal.hpp new file mode 100644 index 000000000000..23195623fde1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLBigDecimal.hpp @@ -0,0 +1,206 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML_BIGDECIMAL_HPP) +#define XERCESC_INCLUDE_GUARD_XML_BIGDECIMAL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLBigDecimal : public XMLNumber +{ +public: + + /** + * Constructs a newly allocated XMLBigDecimal object that + * represents the value represented by the string. + * + * @param strValue the String to be converted to an + * XMLBigDecimal. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @exception NumberFormatException if the String does not + * contain a parsable XMLBigDecimal. + */ + + XMLBigDecimal + ( + const XMLCh* const strValue + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~XMLBigDecimal(); + + static int compareValues(const XMLBigDecimal* const lValue + , const XMLBigDecimal* const rValue + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + static XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager + ); + + static void parseDecimal + ( + const XMLCh* const toParse + , XMLCh* const retBuffer + , int& sign + , int& totalDigits + , int& fractDigits + , MemoryManager* const manager + ); + + static void parseDecimal + ( + const XMLCh* const toParse + , MemoryManager* const manager + ); + + virtual XMLCh* getRawData() const; + + virtual const XMLCh* getFormattedString() const; + + virtual int getSign() const; + + const XMLCh* getValue() const; + + unsigned int getScale() const; + + unsigned int getTotalDigit() const; + + inline XMLCh* getIntVal() const; + + /** + * Compares this object to the specified object. + * + * @param other the object to compare with. + * @return -1 value is less than other's + * 0 value equals to other's + * +1 value is greater than other's + */ + int toCompare(const XMLBigDecimal& other) const; + + /* + * Sets the value to be converted + * + * @param strValue the value to convert + */ + void setDecimalValue(const XMLCh* const strValue); + + MemoryManager* getMemoryManager() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLBigDecimal) + + XMLBigDecimal(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + + void cleanUp(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLBigDecimal(const XMLBigDecimal& other); + XMLBigDecimal& operator=(const XMLBigDecimal& other); + + // ----------------------------------------------------------------------- + // Private data members + // + // fSign + // sign + // + // fTotalDigits + // the total number of digits + // + // fScale + // the number of digits to the right of the decimal point + // + // fIntVal + // The value of this BigDecimal, w/o + // leading whitespace, leading zero + // decimal point + // trailing zero, trailing whitespace + // + // fRawData + // to preserve the original string used to construct this object, + // needed for pattern matching. + // + // ----------------------------------------------------------------------- + int fSign; + unsigned int fTotalDigits; + unsigned int fScale; + XMLSize_t fRawDataLen; + XMLCh* fRawData; + XMLCh* fIntVal; + MemoryManager* fMemoryManager; + +}; + +inline int XMLBigDecimal::getSign() const +{ + return fSign; +} + +inline const XMLCh* XMLBigDecimal::getValue() const +{ + return fIntVal; +} + +inline unsigned int XMLBigDecimal::getScale() const +{ + return fScale; +} + +inline unsigned int XMLBigDecimal::getTotalDigit() const +{ + return fTotalDigits; +} + +inline XMLCh* XMLBigDecimal::getRawData() const +{ + return fRawData; +} + +inline const XMLCh* XMLBigDecimal::getFormattedString() const +{ + return fRawData; +} + +inline MemoryManager* XMLBigDecimal::getMemoryManager() const +{ + return fMemoryManager; +} + +inline XMLCh* XMLBigDecimal::getIntVal() const +{ + return fIntVal; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLBigInteger.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLBigInteger.hpp new file mode 100644 index 000000000000..f49577fb2f6b --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLBigInteger.hpp @@ -0,0 +1,175 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML_BIGINTEGER_HPP) +#define XERCESC_INCLUDE_GUARD_XML_BIGINTEGER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLBigInteger : public XMemory +{ +public: + + /** + * Constructs a newly allocated XMLBigInteger object that + * represents the value represented by the string. The string is + * converted to an int value as if by the valueOf method. + * + * @param strValue the String to be converted to an + * XMLBigInteger. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @exception NumberFormatException if the String does not + * contain a parsable XMLBigInteger. + */ + + XMLBigInteger + ( + const XMLCh* const strValue + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~XMLBigInteger(); + + XMLBigInteger(const XMLBigInteger& toCopy); + + static XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager + , bool isNonPositiveInteger = false + ); + + static void parseBigInteger(const XMLCh* const toConvert + , XMLCh* const retBuffer + , int& signValue + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + static int compareValues(const XMLBigInteger* const lValue + ,const XMLBigInteger* const rValue + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + + static int compareValues(const XMLCh* const lString + , const int& lSign + , const XMLCh* const rString + , const int& rSign + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + void multiply(const unsigned int byteToShift); + + void divide(const unsigned int byteToShift); + + unsigned int getTotalDigit() const; + + /** + * Return a copy of the fMagnitude. + * This is similar to toString, except the internal buffer is returned directly + * Caller is not required to delete the returned memory. + */ + inline XMLCh* getRawData() const; + + /** + * Compares this object to the specified object. + * The result is true if and only if the argument is not + * null and is an XMLBigInteger object that contains + * the same int value as this object. + * + * @param toCompare the object to compare with. + * @return true if the objects are the same; + * false otherwise. + */ + bool operator==(const XMLBigInteger& toCompare) const; + + /** + * Returns the signum function of this number (i.e., -1, 0 or 1 as + * the value of this number is negative, zero or positive). + */ + int getSign() const; + + int intValue() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLBigInteger& operator=(const XMLBigInteger&); + + + void setSign(int); + + /* + * The number is internally stored in "minimal" sign-fMagnitude format + * (i.e., no BigIntegers have a leading zero byte in their magnitudes). + * Zero is represented with a signum of 0 (and a zero-length fMagnitude). + * Thus, there is exactly one representation for each value. + */ + // ----------------------------------------------------------------------- + // Private data members + // + // fSign + // to represent the sign of the number. + // + // fMagnitude + // the buffer holding the number. + // + // fRawData + // to preserve the original string used to construct this object, + // needed for pattern matching. + // + // ----------------------------------------------------------------------- + + int fSign; + XMLCh* fMagnitude; //null terminated + XMLCh* fRawData; + MemoryManager* fMemoryManager; +}; + +inline int XMLBigInteger::getSign() const +{ + return fSign; +} + +inline unsigned int XMLBigInteger::getTotalDigit() const +{ + return ((getSign() ==0) ? 0 : (unsigned int)XMLString::stringLen(fMagnitude)); +} + +inline bool XMLBigInteger::operator==(const XMLBigInteger& toCompare) const +{ + return ( compareValues(this, &toCompare, fMemoryManager) ==0 ? true : false); +} + +inline void XMLBigInteger::setSign(int newSign) +{ + fSign = newSign; +} + +inline XMLCh* XMLBigInteger::getRawData() const +{ + return fRawData; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLChTranscoder.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLChTranscoder.hpp new file mode 100644 index 000000000000..c1fc3a76cfb6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLChTranscoder.hpp @@ -0,0 +1,90 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLCHTRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLCHTRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple XMLCh transcoder. This is used for internal entities, which +// are already in the native XMLCh format. +// +class XMLUTIL_EXPORT XMLChTranscoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLChTranscoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLChTranscoder(); + + + // ----------------------------------------------------------------------- + // Implementation of the XMLTranscoder interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLChTranscoder(const XMLChTranscoder&); + XMLChTranscoder& operator=(const XMLChTranscoder&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLChar.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLChar.hpp new file mode 100644 index 000000000000..60697b8d42fc --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLChar.hpp @@ -0,0 +1,461 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLCHAR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLCHAR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// This file defines Char and utility that conforms to XML 1.0 and XML 1.1 +// --------------------------------------------------------------------------- +// Masks for the fgCharCharsTable1_0 array +const XMLByte gNCNameCharMask = 0x1; +const XMLByte gFirstNameCharMask = 0x2; +const XMLByte gNameCharMask = 0x4; +const XMLByte gPlainContentCharMask = 0x8; +const XMLByte gSpecialStartTagCharMask = 0x10; +const XMLByte gControlCharMask = 0x20; +const XMLByte gXMLCharMask = 0x40; +const XMLByte gWhitespaceCharMask = 0x80; + +// --------------------------------------------------------------------------- +// This class is for XML 1.0 +// --------------------------------------------------------------------------- +class XMLUTIL_EXPORT XMLChar1_0 +{ +public: + // ----------------------------------------------------------------------- + // Public, static methods, check the string + // ----------------------------------------------------------------------- + static bool isAllSpaces + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool containsWhiteSpace + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidNmtoken + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidName + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidName + ( + const XMLCh* const toCheck + ); + + static bool isValidNCName + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidQName + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + // ----------------------------------------------------------------------- + // Public, static methods, check the XMLCh + // surrogate pair is assumed if second parameter is not null + // ----------------------------------------------------------------------- + static bool isXMLLetter(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isFirstNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isPlainContentChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isSpecialStartTagChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isXMLChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isWhitespace(const XMLCh toCheck); + static bool isWhitespace(const XMLCh toCheck, const XMLCh toCheck2); + static bool isControlChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + + static bool isPublicIdChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isFirstNCNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isNCNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + + // ----------------------------------------------------------------------- + // Special Non-conformant Public, static methods + // ----------------------------------------------------------------------- + /** + * Return true if NEL (0x85) and LSEP (0x2028) to be treated as white space char. + */ + static bool isNELRecognized(); + + /** + * Method to enable NEL (0x85) and LSEP (0x2028) to be treated as white space char. + */ + static void enableNELWS(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLChar1_0(); + + // ----------------------------------------------------------------------- + // Static data members + // + // fgCharCharsTable1_0 + // The character characteristics table. Bits in each byte, represent + // the characteristics of each character. It is generated via some + // code and then hard coded into the cpp file for speed. + // + // fNEL + // Flag to represents whether NEL and LSEP newline recognition is enabled + // or disabled + // ----------------------------------------------------------------------- + static XMLByte fgCharCharsTable1_0[0x10000]; + static bool enableNEL; + + friend class XMLReader; +}; + + +// --------------------------------------------------------------------------- +// XMLReader: Public, static methods +// --------------------------------------------------------------------------- +inline bool XMLChar1_0::isXMLLetter(const XMLCh toCheck, const XMLCh toCheck2) +{ + // An XML letter is a FirstNameChar minus ':' and '_'. + if (!toCheck2) { + return (((fgCharCharsTable1_0[toCheck] & gFirstNameCharMask) != 0) + && (toCheck != chColon) && (toCheck != chUnderscore)); + } + return false; +} + +inline bool XMLChar1_0::isFirstNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gFirstNameCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_0::isFirstNCNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) { + return (((fgCharCharsTable1_0[toCheck] & gFirstNameCharMask) != 0) && (toCheck != chColon)); + } + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_0::isNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gNameCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_0::isNCNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gNCNameCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_0::isPlainContentChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gPlainContentCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDBFF)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + + +inline bool XMLChar1_0::isSpecialStartTagChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gSpecialStartTagCharMask) != 0); + return false; +} + +inline bool XMLChar1_0::isXMLChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gXMLCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDBFF)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_0::isWhitespace(const XMLCh toCheck) +{ + return ((fgCharCharsTable1_0[toCheck] & gWhitespaceCharMask) != 0); +} + +inline bool XMLChar1_0::isWhitespace(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gWhitespaceCharMask) != 0); + return false; +} + +inline bool XMLChar1_0::isControlChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gControlCharMask) != 0); + return false; +} + +inline bool XMLChar1_0::isNELRecognized() { + + return enableNEL; +} + + +// --------------------------------------------------------------------------- +// This class is for XML 1.1 +// --------------------------------------------------------------------------- +class XMLUTIL_EXPORT XMLChar1_1 +{ +public: + // ----------------------------------------------------------------------- + // Public, static methods, check the string + // ----------------------------------------------------------------------- + static bool isAllSpaces + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool containsWhiteSpace + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidNmtoken + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidName + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidName + ( + const XMLCh* const toCheck + ); + + static bool isValidNCName + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidQName + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + // ----------------------------------------------------------------------- + // Public, static methods, check the XMLCh + // ----------------------------------------------------------------------- + static bool isXMLLetter(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isFirstNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isPlainContentChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isSpecialStartTagChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isXMLChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isWhitespace(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isControlChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + + static bool isPublicIdChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isFirstNCNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isNCNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLChar1_1(); + + // ----------------------------------------------------------------------- + // Static data members + // + // fgCharCharsTable1_1 + // The character characteristics table. Bits in each byte, represent + // the characteristics of each character. It is generated via some + // code and then hard coded into the cpp file for speed. + // + // ----------------------------------------------------------------------- + static XMLByte fgCharCharsTable1_1[0x10000]; + + friend class XMLReader; +}; + + +// --------------------------------------------------------------------------- +// XMLReader: Public, static methods +// --------------------------------------------------------------------------- +inline bool XMLChar1_1::isXMLLetter(const XMLCh toCheck, const XMLCh toCheck2) +{ + /** XML 1.1 does not define a letter, so we use the 1.0 definition */ + return XMLChar1_0::isXMLLetter(toCheck, toCheck2); +} + +inline bool XMLChar1_1::isFirstNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gFirstNameCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_1::isFirstNCNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) { + return (((fgCharCharsTable1_1[toCheck] & gFirstNameCharMask) != 0) && (toCheck != chColon)); + } + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_1::isNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gNameCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_1::isNCNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gNCNameCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_1::isPlainContentChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gPlainContentCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDBFF)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + + +inline bool XMLChar1_1::isSpecialStartTagChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gSpecialStartTagCharMask) != 0); + return false; +} + +inline bool XMLChar1_1::isXMLChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gXMLCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDBFF)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_1::isWhitespace(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gWhitespaceCharMask) != 0); + return false; +} + +inline bool XMLChar1_1::isControlChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gControlCharMask) != 0); + return false; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLDOMMsg.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLDOMMsg.hpp new file mode 100644 index 000000000000..3ca44003af3f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLDOMMsg.hpp @@ -0,0 +1,104 @@ +// This file is generated, don't edit it!! + +#if !defined(XERCESC_INCLUDE_GUARD_ERRHEADER_XMLDOMMsg) +#define XERCESC_INCLUDE_GUARD_ERRHEADER_XMLDOMMsg + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLDOMMsg +{ +public : + enum Codes + { + NoError = 0 + , F_LowBounds = 1 + , DOMEXCEPTION_ERRX = 2 + , INDEX_SIZE_ERR = 3 + , DOMSTRING_SIZE_ERR = 4 + , HIERARCHY_REQUEST_ERR = 5 + , WRONG_DOCUMENT_ERR = 6 + , INVALID_CHARACTER_ERR = 7 + , NO_DATA_ALLOWED_ERR = 8 + , NO_MODIFICATION_ALLOWED_ERR = 9 + , NOT_FOUND_ERR = 10 + , NOT_SUPPORTED_ERR = 11 + , INUSE_ATTRIBUTE_ERR = 12 + , INVALID_STATE_ERR = 13 + , SYNTAX_ERR = 14 + , INVALID_MODIFICATION_ERR = 15 + , NAMESPACE_ERR = 16 + , INVALID_ACCESS_ERR = 17 + , VALIDATION_ERR = 18 + , TYPE_MISMATCH_ERR = 19 + , DOMRANGEEXCEPTION_ERRX = 20 + , BAD_BOUNDARYPOINTS_ERR = 21 + , INVALID_NODE_TYPE_ERR = 22 + , DOMLSEXCEPTION_ERRX = 23 + , PARSE_ERR = 24 + , SERIALIZE_ERR = 25 + , DOMXPATHEXCEPTION_ERRX = 26 + , INVALID_EXPRESSION_ERR = 27 + , TYPE_ERR = 28 + , NO_RESULT_ERR = 29 + , Writer_NestedCDATA = 30 + , Writer_NotRepresentChar = 31 + , Writer_NotRecognizedType = 32 + , LSParser_ParseInProgress = 33 + , LSParser_ParsingAborted = 34 + , LSParser_ParsingFailed = 35 + , F_HighBounds = 36 + , W_LowBounds = 37 + , W_HighBounds = 38 + , E_LowBounds = 39 + , E_HighBounds = 40 + }; + + static bool isFatal(const XMLDOMMsg::Codes toCheck) + { + return ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)); + } + + static bool isWarning(const XMLDOMMsg::Codes toCheck) + { + return ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)); + } + + static bool isError(const XMLDOMMsg::Codes toCheck) + { + return ((toCheck >= E_LowBounds) && (toCheck <= E_HighBounds)); + } + + static XMLErrorReporter::ErrTypes errorType(const XMLDOMMsg::Codes toCheck) + { + if ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)) + return XMLErrorReporter::ErrType_Warning; + else if ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)) + return XMLErrorReporter::ErrType_Fatal; + else if ((toCheck >= E_LowBounds) && (toCheck <= E_HighBounds)) + return XMLErrorReporter::ErrType_Error; + return XMLErrorReporter::ErrTypes_Unknown; + } + static DOMError::ErrorSeverity DOMErrorType(const XMLDOMMsg::Codes toCheck) + { + if ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)) + return DOMError::DOM_SEVERITY_WARNING; + else if ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)) + return DOMError::DOM_SEVERITY_FATAL_ERROR; + else return DOMError::DOM_SEVERITY_ERROR; + } + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLDOMMsg(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLDateTime.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLDateTime.hpp new file mode 100644 index 000000000000..54e2516133b1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLDateTime.hpp @@ -0,0 +1,378 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML_DATETIME_HPP) +#define XERCESC_INCLUDE_GUARD_XML_DATETIME_HPP + +#include +#include +#include +#include +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XSValue; + +class XMLUTIL_EXPORT XMLDateTime : public XMLNumber +{ +public: + + enum valueIndex + { + CentYear = 0, + Month , + Day , + Hour , + Minute , + Second , + MiliSecond , //not to be used directly + utc , + TOTAL_SIZE + }; + + enum utcType + { + UTC_UNKNOWN = 0, + UTC_STD , // set in parse() or normalize() + UTC_POS , // set in parse() + UTC_NEG // set in parse() + }; + + // ----------------------------------------------------------------------- + // ctors and dtor + // ----------------------------------------------------------------------- + + XMLDateTime(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + XMLDateTime(const XMLCh* const, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + XMLDateTime(time_t epoch, bool duration, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~XMLDateTime(); + + inline void setBuffer(const XMLCh* const); + + // ----------------------------------------------------------------------- + // Copy ctor and Assignment operators + // ----------------------------------------------------------------------- + + XMLDateTime(const XMLDateTime&); + + XMLDateTime& operator=(const XMLDateTime&); + + // ----------------------------------------------------------------------- + // Implementation of Abstract Interface + // ----------------------------------------------------------------------- + + virtual XMLCh* getRawData() const; + + virtual const XMLCh* getFormattedString() const; + + virtual int getSign() const; + + // ----------------------------------------------------------------------- + // Canonical Representation + // ----------------------------------------------------------------------- + + XMLCh* getDateTimeCanonicalRepresentation(MemoryManager* const memMgr) const; + + XMLCh* getTimeCanonicalRepresentation(MemoryManager* const memMgr) const; + + XMLCh* getDateCanonicalRepresentation(MemoryManager* const memMgr) const; + + // ----------------------------------------------------------------------- + // parsers + // ----------------------------------------------------------------------- + + void parseDateTime(); //DateTime + + void parseDate(); //Date + + void parseTime(); //Time + + void parseDay(); //gDay + + void parseMonth(); //gMonth + + void parseYear(); //gYear + + void parseMonthDay(); //gMonthDay + + void parseYearMonth(); //gYearMonth + + void parseDuration(); //duration + + // ----------------------------------------------------------------------- + // Comparison + // ----------------------------------------------------------------------- + static int compare(const XMLDateTime* const + , const XMLDateTime* const); + + static int compare(const XMLDateTime* const + , const XMLDateTime* const + , bool ); + + static int compareOrder(const XMLDateTime* const + , const XMLDateTime* const); + + int getYear() const {return fValue[CentYear];} + int getMonth() const {return fValue[Month];} + int getDay() const {return fValue[Day];} + int getHour() const {return fValue[Hour];} + int getMinute() const {return fValue[Minute];} + int getSecond() const {return fValue[Second];} + time_t getEpoch(bool duration=false) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLDateTime) + +private: + + // ----------------------------------------------------------------------- + // Constant data + // ----------------------------------------------------------------------- + // + + enum timezoneIndex + { + hh = 0, + mm , + TIMEZONE_ARRAYSIZE + }; + + // ----------------------------------------------------------------------- + // Comparison + // ----------------------------------------------------------------------- + static int compareResult(int + , int + , bool); + + static void addDuration(XMLDateTime* pDuration + , const XMLDateTime* const pBaseDate + , int index); + + + static int compareResult(const XMLDateTime* const + , const XMLDateTime* const + , bool + , int); + + static inline int getRetVal(int, int); + + // ----------------------------------------------------------------------- + // helper + // ----------------------------------------------------------------------- + + inline void reset(); + + inline void assertBuffer() const; + + inline void copy(const XMLDateTime&); + + // allow multiple parsing + inline bool initParser(); + + inline bool isNormalized() const; + + // ----------------------------------------------------------------------- + // scaners + // ----------------------------------------------------------------------- + + void getDate(); + + void getTime(); + + void getYearMonth(); + + void getTimeZone(const XMLSize_t); + + void parseTimeZone(); + + // ----------------------------------------------------------------------- + // locator and converter + // ----------------------------------------------------------------------- + + int findUTCSign(const XMLSize_t start); + + int indexOf(const XMLSize_t start + , const XMLSize_t end + , const XMLCh ch) const; + + int parseInt(const XMLSize_t start + , const XMLSize_t end) const; + + int parseIntYear(const XMLSize_t end) const; + + double parseMiliSecond(const XMLSize_t start + , const XMLSize_t end) const; + + // ----------------------------------------------------------------------- + // validator and normalizer + // ----------------------------------------------------------------------- + + void validateDateTime() const; + + void normalize(); + + void fillString(XMLCh*& ptr, int value, XMLSize_t expLen) const; + + int fillYearString(XMLCh*& ptr, int value) const; + + void searchMiliSeconds(XMLCh*& miliStartPtr, XMLCh*& miliEndPtr) const; + + // ----------------------------------------------------------------------- + // Unimplemented operator == + // ----------------------------------------------------------------------- + bool operator==(const XMLDateTime& toCompare) const; + + + // ----------------------------------------------------------------------- + // Private data members + // + // fValue[] + // object representation of date time. + // + // fTimeZone[] + // temporary storage for normalization + // + // fStart, fEnd + // pointers to the portion of fBuffer being parsed + // + // fBuffer + // raw data to be parsed, own it. + // + // ----------------------------------------------------------------------- + + int fValue[TOTAL_SIZE]; + int fTimeZone[TIMEZONE_ARRAYSIZE]; + XMLSize_t fStart; + XMLSize_t fEnd; + XMLSize_t fBufferMaxLen; + + double fMilliSecond; + bool fHasTime; + + XMLCh* fBuffer; + MemoryManager* fMemoryManager; + + friend class XSValue; +}; + +inline void XMLDateTime::setBuffer(const XMLCh* const aString) +{ + reset(); + + fEnd = XMLString::stringLen(aString); + + for (; fEnd > 0; fEnd--) + { + if (!XMLChar1_0::isWhitespace(aString[fEnd - 1])) + break; + } + + if (fEnd > 0) { + + if (fEnd > fBufferMaxLen) + { + fMemoryManager->deallocate(fBuffer); + fBufferMaxLen = fEnd + 8; + fBuffer = (XMLCh*) fMemoryManager->allocate((fBufferMaxLen+1) * sizeof(XMLCh)); + } + + memcpy(fBuffer, aString, (fEnd) * sizeof(XMLCh)); + fBuffer[fEnd] = '\0'; + } +} + +inline void XMLDateTime::reset() +{ + for ( int i=0; i < TOTAL_SIZE; i++ ) + fValue[i] = 0; + + fMilliSecond = 0; + fHasTime = false; + fTimeZone[hh] = fTimeZone[mm] = 0; + fStart = fEnd = 0; + + if (fBuffer) + *fBuffer = 0; +} + +inline void XMLDateTime::copy(const XMLDateTime& rhs) +{ + for ( int i = 0; i < TOTAL_SIZE; i++ ) + fValue[i] = rhs.fValue[i]; + + fMilliSecond = rhs.fMilliSecond; + fHasTime = rhs.fHasTime; + fTimeZone[hh] = rhs.fTimeZone[hh]; + fTimeZone[mm] = rhs.fTimeZone[mm]; + fStart = rhs.fStart; + fEnd = rhs.fEnd; + + if (fEnd > 0) + { + if (fEnd > fBufferMaxLen) + { + fMemoryManager->deallocate(fBuffer);//delete[] fBuffer; + fBufferMaxLen = rhs.fBufferMaxLen; + fBuffer = (XMLCh*) fMemoryManager->allocate((fBufferMaxLen+1) * sizeof(XMLCh)); + } + + memcpy(fBuffer, rhs.fBuffer, (fEnd+1) * sizeof(XMLCh)); + } +} + +inline bool XMLDateTime::initParser() +{ + if (!fBuffer || fBuffer[0] == chNull) + return false; + + fStart = 0; // to ensure scan from the very first beginning + // in case the pointer is updated accidentally by + // someone else. + return true; +} + +inline bool XMLDateTime::isNormalized() const +{ + return ( fValue[utc] == UTC_STD ? true : false ); +} + +inline int XMLDateTime::getRetVal(int c1, int c2) +{ + if ((c1 == LESS_THAN && c2 == GREATER_THAN) || + (c1 == GREATER_THAN && c2 == LESS_THAN) ) + { + return INDETERMINATE; + } + + return ( c1 != INDETERMINATE ) ? c1 : c2; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLDouble.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLDouble.hpp new file mode 100644 index 000000000000..e1daadc1a2b5 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLDouble.hpp @@ -0,0 +1,99 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML_DOUBLE_HPP) +#define XERCESC_INCLUDE_GUARD_XML_DOUBLE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLDouble : public XMLAbstractDoubleFloat +{ +public: + + /** + * Constructs a newly allocated XMLDouble object that + * represents the value represented by the string. + * + * @param strValue the String to be converted to an + * XMLDouble. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @exception NumberFormatException if the String does not + * contain a parsable XMLDouble. + */ + + XMLDouble(const XMLCh* const strValue, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~XMLDouble(); + + /** + * Compares this object to the specified object. + * The result is true if and only if the argument is not + * null and is an XMLDouble object that contains + * the same int value as this object. + * + * @param lValue the object to compare with. + * @param rValue the object to compare against. + * @return true if the objects are the same; + * false otherwise. + */ + + inline static int compareValues(const XMLDouble* const lValue + , const XMLDouble* const rValue); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLDouble) + + XMLDouble(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +protected: + + virtual void checkBoundary(char* const strValue); + +private: + // + // Unimplemented + // + // copy ctor + // assignment ctor + // + XMLDouble(const XMLDouble& toCopy); + XMLDouble& operator=(const XMLDouble& toAssign); + +}; + +inline int XMLDouble::compareValues(const XMLDouble* const lValue + , const XMLDouble* const rValue) +{ + return XMLAbstractDoubleFloat::compareValues((const XMLAbstractDoubleFloat*) lValue, + (const XMLAbstractDoubleFloat*) rValue + , ((XMLAbstractDoubleFloat*)lValue)->getMemoryManager()); +} + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLEBCDICTranscoder.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLEBCDICTranscoder.hpp new file mode 100644 index 000000000000..70153d24677d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLEBCDICTranscoder.hpp @@ -0,0 +1,73 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLEBCDICTRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLEBCDICTRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple EBCDIC-US transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +// EBCDIC-US is the same as IBM037, CP37, EBCDIC-CP-US, etc... +// +class XMLUTIL_EXPORT XMLEBCDICTranscoder : public XML256TableTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public, static methods + // ----------------------------------------------------------------------- + static XMLCh xlatThisOne(const XMLByte toXlat); + + + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLEBCDICTranscoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLEBCDICTranscoder(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLEBCDICTranscoder(); + XMLEBCDICTranscoder(const XMLEBCDICTranscoder&); + XMLEBCDICTranscoder& operator=(const XMLEBCDICTranscoder&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLEntityResolver.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLEntityResolver.hpp new file mode 100644 index 000000000000..8651a53d4a6f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLEntityResolver.hpp @@ -0,0 +1,178 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLENTITYRESOLVER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLENTITYRESOLVER_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class InputSource; + +/** + * Revised interface for resolving entities. + * + *

If an application needs to implement customized handling + * for external entities, it can implement this interface and + * register an instance with the parser using the parser's + * setXMLEntityResolver method or it can use the basic SAX interface + * (EntityResolver). The difference between the two interfaces is + * the arguments to the resolveEntity() method. With the SAX + * EntityResolve the arguments are systemId and publicId. With this + * interface the argument is a XMLResourceIdentifier object. Only + * one EntityResolver can be set using setEntityResolver() or + * setXMLEntityResolver, if both are set the last one set is + * used.

+ * + *

The parser will then allow the application to intercept any + * external entities (including the external DTD subset and external + * parameter entities, if any) before including them.

+ * + *

Many applications will not need to implement this interface, + * but it will be especially useful for applications that build + * XML documents from databases or other specialised input sources, + * or for applications that use URI types other than URLs.

+ * + *

The following resolver would provide the application + * with a special character stream for the entity with the system + * identifier "http://www.myhost.com/today":

+ * + * + * \#include
+ * \#include
+ *
+ * class MyResolver : public XMLEntityResolver {
+ *  public:
+ *   InputSource* resolveEntity (XMLResourceIdentifier* xmlri);
+ *   ...
+ *  };
+ *
+ * MyResolver::resolveEntity(XMLResourceIdentifier* xmlri) {
+ *  switch(xmlri->getResourceIdentifierType()) {
+ *   case XMLResourceIdentifier::SystemId:
+ *    if (XMLString::compareString(xmlri->getSystemId(), "http://www.myhost.com/today")) {
+ *     MyReader* reader = new MyReader();
+ *     return new InputSource(reader);
+ *    } else {
+ *     return null;
+ *    }
+ *    break;
+ *   default:
+ *    return null;
+ *  }
+ * }
+ * + *

The application can also use this interface to redirect system + * identifiers to local URIs or to look up replacements in a catalog + * (possibly by using the public identifier).

+ * + *

The HandlerBase class implements the default behaviour for + * this interface, which is simply always to return null (to request + * that the parser use the default system identifier).

+ * + * @see XMLResourceIdentifier + * @see Parser#setXMLEntityResolver + * @see InputSource#InputSource + * @see HandlerBase#HandlerBase + */ +class XMLUTIL_EXPORT XMLEntityResolver +{ +public: + /** @name Constructors and Destructor */ + //@{ + + + /** Destructor */ + virtual ~XMLEntityResolver() + { + } + + //@} + + /** @name The XMLEntityResolver interface */ + //@{ + + /** + * Allow the application to resolve external entities. + * + *

The Parser will call this method before opening any external + * entity except the top-level document entity (including the + * external DTD subset, external entities referenced within the + * DTD, and external entities referenced within the document + * element): the application may request that the parser resolve + * the entity itself, that it use an alternative URI, or that it + * use an entirely different input source.

+ * + *

Application writers can use this method to redirect external + * system identifiers to secure and/or local URIs, to look up + * public identifiers in a catalogue, or to read an entity from a + * database or other input source (including, for example, a dialog + * box).

+ * + *

If the system identifier is a URL, the SAX parser must + * resolve it fully before reporting it to the application.

+ * + * @param resourceIdentifier An object containing the type of + * resource to be resolved and the associated data members + * corresponding to this type. + * @return An InputSource object describing the new input source, + * or null to request that the parser open a regular + * URI connection to the system identifier. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception IOException An IO exception, + * possibly the result of creating a new InputStream + * or Reader for the InputSource. + * + * @see InputSource#InputSource + * @see XMLResourceIdentifier + */ + virtual InputSource* resolveEntity + ( + XMLResourceIdentifier* resourceIdentifier + ) = 0; + + //@} +protected: + /** Default Constructor */ + XMLEntityResolver() + { + } + +private : + /* Unimplemented constructors and operators */ + + /* Copy constructor */ + XMLEntityResolver(const XMLEntityResolver&); + + /* Assignment operator */ + XMLEntityResolver& operator=(const XMLEntityResolver&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLEnumerator.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLEnumerator.hpp new file mode 100644 index 000000000000..6f53c244615a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLEnumerator.hpp @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLENUMERATOR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLENUMERATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class XMLEnumerator +{ +public : + // ----------------------------------------------------------------------- + // Destructor + // ----------------------------------------------------------------------- + virtual ~XMLEnumerator() {}; + + // ----------------------------------------------------------------------- + // XMLEnumerator interface + // ----------------------------------------------------------------------- + virtual bool hasMoreElements() const = 0; + virtual TElem& nextElement() = 0; + virtual void Reset() = 0; + + XMLEnumerator() {} + XMLEnumerator(const XMLEnumerator&) {} + +private: + // ----------------------------------------------------------------------- + // Unimplemented operators + // ----------------------------------------------------------------------- + XMLEnumerator& operator=(const XMLEnumerator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLExceptMsgs.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLExceptMsgs.hpp new file mode 100644 index 000000000000..e4c7f7067dee --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLExceptMsgs.hpp @@ -0,0 +1,408 @@ +// This file is generated, don't edit it!! + +#if !defined(XERCESC_INCLUDE_GUARD_ERRHEADER_XMLExcepts) +#define XERCESC_INCLUDE_GUARD_ERRHEADER_XMLExcepts + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Ignore warning about private constructor +#if defined __GNUC__ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5)) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wctor-dtor-privacy" +#endif + +class XMLExcepts +{ +public : + enum Codes + { + NoError = 0 + , W_LowBounds = 1 + , Scan_CouldNotOpenSource_Warning = 2 + , W_HighBounds = 3 + , F_LowBounds = 4 + , Array_BadIndex = 5 + , Array_BadNewSize = 6 + , AttrList_BadIndex = 7 + , AttDef_BadAttType = 8 + , AttDef_BadDefAttType = 9 + , Bitset_BadIndex = 10 + , Bitset_NotEqualSize = 11 + , BufMgr_NoMoreBuffers = 12 + , BufMgr_BufferNotInPool = 13 + , CPtr_PointerIsZero = 14 + , CM_BinOpHadUnaryType = 15 + , CM_MustBeMixedOrChildren = 16 + , CM_NoPCDATAHere = 17 + , CM_UnaryOpHadBinType = 18 + , CM_UnknownCMType = 19 + , CM_UnknownCMSpecType = 20 + , CM_NoParentCSN = 21 + , CM_NotValidSpecTypeForNode = 22 + , DTD_UnknownCreateReason = 23 + , ElemStack_EmptyStack = 24 + , ElemStack_StackUnderflow = 25 + , ElemStack_NoParentPushed = 26 + , Enum_NoMoreElements = 27 + , File_CouldNotOpenFile = 28 + , File_CouldNotGetCurPos = 29 + , File_CouldNotCloseFile = 30 + , File_CouldNotSeekToEnd = 31 + , File_CouldNotSeekToPos = 32 + , File_CouldNotDupHandle = 33 + , File_CouldNotReadFromFile = 34 + , File_CouldNotWriteToFile = 35 + , File_CouldNotResetFile = 36 + , File_CouldNotGetSize = 37 + , File_CouldNotGetBasePathName = 38 + , Gen_ParseInProgress = 39 + , Gen_NoDTDValidator = 40 + , Gen_CouldNotOpenDTD = 41 + , Gen_CouldNotOpenExtEntity = 42 + , Gen_UnexpectedEOF = 43 + , HshTbl_ZeroModulus = 44 + , HshTbl_BadHashFromKey = 45 + , HshTbl_NoSuchKeyExists = 46 + , Mutex_CouldNotDestroy = 47 + , NetAcc_InternalError = 48 + , NetAcc_LengthError = 49 + , NetAcc_InitFailed = 50 + , NetAcc_TargetResolution = 51 + , NetAcc_CreateSocket = 52 + , NetAcc_ConnSocket = 53 + , NetAcc_WriteSocket = 54 + , NetAcc_ReadSocket = 55 + , NetAcc_UnsupportedMethod = 56 + , Pool_ElemAlreadyExists = 57 + , Pool_InvalidId = 58 + , Pool_ZeroModulus = 59 + , RdrMgr_ReaderIdNotFound = 60 + , Reader_BadAutoEncoding = 61 + , Reader_CouldNotDecodeFirstLine = 62 + , Reader_NelLsepinDecl = 63 + , Reader_SrcOfsNotSupported = 64 + , Reader_EncodingStrRequired = 65 + , Scan_CouldNotOpenSource = 66 + , Scan_UnbalancedStartEnd = 67 + , Scan_BadPScanToken = 68 + , Stack_BadIndex = 69 + , Stack_EmptyStack = 70 + , Str_ZeroSizedTargetBuf = 71 + , Str_UnknownRadix = 72 + , Str_TargetBufTooSmall = 73 + , Str_StartIndexPastEnd = 74 + , Str_ConvertOverflow = 75 + , StrPool_IllegalId = 76 + , Trans_Unrepresentable = 77 + , Trans_BadSrcSeq = 78 + , Trans_BadSrcCP = 79 + , Trans_BadTrailingSurrogate = 80 + , Trans_CantCreateCvtrFor = 81 + , URL_MalformedURL = 82 + , URL_UnsupportedProto = 83 + , URL_UnsupportedProto1 = 84 + , URL_NoProtocolPresent = 85 + , URL_ExpectingTwoSlashes = 86 + , URL_RelativeBaseURL = 87 + , URL_BadPortField = 88 + , UTF8_FormatError = 89 + , UTF8_Invalid_3BytesSeq = 90 + , UTF8_Irregular_3BytesSeq = 91 + , UTF8_Invalid_4BytesSeq = 92 + , UTF8_Exceeds_BytesLimit = 93 + , Vector_BadIndex = 94 + , Val_InvalidElemId = 95 + , Val_CantHaveIntSS = 96 + , XMLRec_UnknownEncoding = 97 + , Parser_Parse1 = 98 + , Parser_Parse2 = 99 + , Parser_Next1 = 100 + , Parser_Next2 = 101 + , Parser_Next3 = 102 + , Parser_Next4 = 103 + , Parser_Factor1 = 104 + , Parser_Factor2 = 105 + , Parser_Factor3 = 106 + , Parser_Factor4 = 107 + , Parser_Factor5 = 108 + , Parser_Factor6 = 109 + , Parser_Atom1 = 110 + , Parser_Atom2 = 111 + , Parser_Atom3 = 112 + , Parser_Atom4 = 113 + , Parser_Atom5 = 114 + , Parser_CC1 = 115 + , Parser_CC2 = 116 + , Parser_CC3 = 117 + , Parser_CC5 = 118 + , Parser_CC6 = 119 + , Parser_Ope1 = 120 + , Parser_Ope2 = 121 + , Parser_Ope3 = 122 + , Parser_Descape1 = 123 + , Parser_Descape3 = 124 + , Parser_Descape4 = 125 + , Parser_Descape5 = 126 + , Parser_Process2 = 127 + , Parser_Quantifier1 = 128 + , Parser_Quantifier2 = 129 + , Parser_Quantifier3 = 130 + , Parser_Quantifier4 = 131 + , Parser_Quantifier5 = 132 + , Gen_NoSchemaValidator = 133 + , SubGrpComparator_NGR = 134 + , FACET_Invalid_Len = 135 + , FACET_Invalid_maxLen = 136 + , FACET_Invalid_minLen = 137 + , FACET_NonNeg_Len = 138 + , FACET_NonNeg_maxLen = 139 + , FACET_NonNeg_minLen = 140 + , FACET_Len_maxLen = 141 + , FACET_Len_minLen = 142 + , FACET_maxLen_minLen = 143 + , FACET_Invalid_Tag = 144 + , FACET_Len_baseLen = 145 + , FACET_minLen_baseminLen = 146 + , FACET_minLen_basemaxLen = 147 + , FACET_maxLen_basemaxLen = 148 + , FACET_maxLen_baseminLen = 149 + , FACET_Len_baseMinLen = 150 + , FACET_Len_baseMaxLen = 151 + , FACET_minLen_baseLen = 152 + , FACET_maxLen_baseLen = 153 + , FACET_enum_base = 154 + , FACET_Invalid_WS = 155 + , FACET_WS_collapse = 156 + , FACET_WS_replace = 157 + , FACET_Invalid_MaxIncl = 158 + , FACET_Invalid_MaxExcl = 159 + , FACET_Invalid_MinIncl = 160 + , FACET_Invalid_MinExcl = 161 + , FACET_Invalid_TotalDigit = 162 + , FACET_Invalid_FractDigit = 163 + , FACET_PosInt_TotalDigit = 164 + , FACET_NonNeg_FractDigit = 165 + , FACET_max_Incl_Excl = 166 + , FACET_min_Incl_Excl = 167 + , FACET_maxExcl_minExcl = 168 + , FACET_maxExcl_minIncl = 169 + , FACET_maxIncl_minExcl = 170 + , FACET_maxIncl_minIncl = 171 + , FACET_TotDigit_FractDigit = 172 + , FACET_maxIncl_base_maxExcl = 173 + , FACET_maxIncl_base_maxIncl = 174 + , FACET_maxIncl_base_minIncl = 175 + , FACET_maxIncl_base_minExcl = 176 + , FACET_maxExcl_base_maxExcl = 177 + , FACET_maxExcl_base_maxIncl = 178 + , FACET_maxExcl_base_minIncl = 179 + , FACET_maxExcl_base_minExcl = 180 + , FACET_minExcl_base_maxExcl = 181 + , FACET_minExcl_base_maxIncl = 182 + , FACET_minExcl_base_minIncl = 183 + , FACET_minExcl_base_minExcl = 184 + , FACET_minIncl_base_maxExcl = 185 + , FACET_minIncl_base_maxIncl = 186 + , FACET_minIncl_base_minIncl = 187 + , FACET_minIncl_base_minExcl = 188 + , FACET_maxIncl_notFromBase = 189 + , FACET_maxExcl_notFromBase = 190 + , FACET_minIncl_notFromBase = 191 + , FACET_minExcl_notFromBase = 192 + , FACET_totalDigit_base_totalDigit = 193 + , FACET_fractDigit_base_totalDigit = 194 + , FACET_fractDigit_base_fractDigit = 195 + , FACET_maxIncl_base_fixed = 196 + , FACET_maxExcl_base_fixed = 197 + , FACET_minIncl_base_fixed = 198 + , FACET_minExcl_base_fixed = 199 + , FACET_totalDigit_base_fixed = 200 + , FACET_fractDigit_base_fixed = 201 + , FACET_maxLen_base_fixed = 202 + , FACET_minLen_base_fixed = 203 + , FACET_whitespace_base_fixed = 204 + , FACET_internalError_fixed = 205 + , FACET_List_Null_baseValidator = 206 + , FACET_Union_Null_memberTypeValidators = 207 + , FACET_Union_Null_baseValidator = 208 + , FACET_Union_invalid_baseValidatorType = 209 + , VALUE_NotMatch_Pattern = 210 + , VALUE_Not_Base64 = 211 + , VALUE_Not_HexBin = 212 + , VALUE_GT_maxLen = 213 + , VALUE_LT_minLen = 214 + , VALUE_NE_Len = 215 + , VALUE_NotIn_Enumeration = 216 + , VALUE_exceed_totalDigit = 217 + , VALUE_exceed_fractDigit = 218 + , VALUE_exceed_maxIncl = 219 + , VALUE_exceed_maxExcl = 220 + , VALUE_exceed_minIncl = 221 + , VALUE_exceed_minExcl = 222 + , VALUE_WS_replaced = 223 + , VALUE_WS_collapsed = 224 + , VALUE_Invalid_NCName = 225 + , VALUE_Invalid_Name = 226 + , VALUE_ID_Not_Unique = 227 + , VALUE_ENTITY_Invalid = 228 + , VALUE_QName_Invalid = 229 + , VALUE_NOTATION_Invalid = 230 + , VALUE_no_match_memberType = 231 + , VALUE_URI_Malformed = 232 + , XMLNUM_emptyString = 233 + , XMLNUM_WSString = 234 + , XMLNUM_2ManyDecPoint = 235 + , XMLNUM_Inv_chars = 236 + , XMLNUM_null_ptr = 237 + , XMLNUM_URI_Component_Empty = 238 + , XMLNUM_URI_Component_for_GenURI_Only = 239 + , XMLNUM_URI_Component_Invalid_EscapeSequence = 240 + , XMLNUM_URI_Component_Invalid_Char = 241 + , XMLNUM_URI_Component_Set_Null = 242 + , XMLNUM_URI_Component_Not_Conformant = 243 + , XMLNUM_URI_No_Scheme = 244 + , XMLNUM_URI_NullHost = 245 + , XMLNUM_URI_NullPath = 246 + , XMLNUM_URI_PortNo_Invalid = 247 + , XMLNUM_DBL_FLT_InvalidType = 248 + , Regex_Result_Not_Set = 249 + , Regex_CompactRangesError = 250 + , Regex_MergeRangesTypeMismatch = 251 + , Regex_SubtractRangesError = 252 + , Regex_IntersectRangesError = 253 + , Regex_ComplementRangesInvalidArg = 254 + , Regex_InvalidCategoryName = 255 + , Regex_KeywordNotFound = 256 + , Regex_BadRefNo = 257 + , Regex_UnknownOption = 258 + , Regex_UnknownTokenType = 259 + , Regex_RangeTokenGetError = 260 + , Regex_NotSupported = 261 + , Regex_InvalidChildIndex = 262 + , Regex_RepPatMatchesZeroString = 263 + , Regex_InvalidRepPattern = 264 + , NEL_RepeatedCalls = 265 + , Out_Of_Memory = 266 + , DV_InvalidOperation = 267 + , XPath_NoAttrSelector = 268 + , XPath_NoUnionAtStart = 269 + , XPath_NoMultipleUnion = 270 + , XPath_MissingAttr = 271 + , XPath_ExpectedToken1 = 272 + , XPath_PrefixNoURI = 273 + , XPath_NoDoubleColon = 274 + , XPath_ExpectedStep1 = 275 + , XPath_ExpectedStep2 = 276 + , XPath_ExpectedStep3 = 277 + , XPath_NoForwardSlash = 278 + , XPath_NoDoubleForwardSlash = 279 + , XPath_NoForwardSlashAtStart = 280 + , XPath_NoSelectionOfRoot = 281 + , XPath_EmptyExpr = 282 + , XPath_NoUnionAtEnd = 283 + , XPath_InvalidChar = 284 + , XPath_TokenNotSupported = 285 + , XPath_FindSolution = 286 + , DateTime_dt_invalid = 287 + , DateTime_dt_missingT = 288 + , DateTime_gDay_invalid = 289 + , DateTime_gMth_invalid = 290 + , DateTime_gMthDay_invalid = 291 + , DateTime_dur_invalid = 292 + , DateTime_dur_Start_dashP = 293 + , DateTime_dur_noP = 294 + , DateTime_dur_DashNotFirst = 295 + , DateTime_dur_inv_b4T = 296 + , DateTime_dur_NoTimeAfterT = 297 + , DateTime_dur_NoElementAtAll = 298 + , DateTime_dur_inv_seconds = 299 + , DateTime_date_incomplete = 300 + , DateTime_date_invalid = 301 + , DateTime_time_incomplete = 302 + , DateTime_time_invalid = 303 + , DateTime_ms_noDigit = 304 + , DateTime_ym_incomplete = 305 + , DateTime_ym_invalid = 306 + , DateTime_year_invalid = 307 + , DateTime_year_tooShort = 308 + , DateTime_year_leadingZero = 309 + , DateTime_ym_noMonth = 310 + , DateTime_tz_noUTCsign = 311 + , DateTime_tz_stuffAfterZ = 312 + , DateTime_tz_invalid = 313 + , DateTime_year_zero = 314 + , DateTime_mth_invalid = 315 + , DateTime_day_invalid = 316 + , DateTime_hour_invalid = 317 + , DateTime_min_invalid = 318 + , DateTime_second_invalid = 319 + , DateTime_tz_hh_invalid = 320 + , PD_EmptyBase = 321 + , PD_NSCompat1 = 322 + , PD_OccurRangeE = 323 + , PD_NameTypeOK1 = 324 + , PD_NameTypeOK2 = 325 + , PD_NameTypeOK3 = 326 + , PD_NameTypeOK4 = 327 + , PD_NameTypeOK5 = 328 + , PD_NameTypeOK6 = 329 + , PD_NameTypeOK7 = 330 + , PD_Recurse1 = 331 + , PD_Recurse2 = 332 + , PD_ForbiddenRes1 = 333 + , PD_ForbiddenRes2 = 334 + , PD_ForbiddenRes3 = 335 + , PD_ForbiddenRes4 = 336 + , PD_NSSubset1 = 337 + , PD_NSSubset2 = 338 + , PD_NSRecurseCheckCardinality1 = 339 + , PD_RecurseUnordered = 340 + , PD_MapAndSum = 341 + , PD_InvalidContentType = 342 + , NodeIDMap_GrowErr = 343 + , XSer_ProtoType_Null_ClassName = 344 + , XSer_ProtoType_NameLen_Dif = 345 + , XSer_ProtoType_Name_Dif = 346 + , XSer_InStream_Read_LT_Req = 347 + , XSer_InStream_Read_OverFlow = 348 + , XSer_Storing_Violation = 349 + , XSer_StoreBuffer_Violation = 350 + , XSer_LoadPool_UppBnd_Exceed = 351 + , XSer_LoadPool_NoTally_ObjCnt = 352 + , XSer_Loading_Violation = 353 + , XSer_LoadBuffer_Violation = 354 + , XSer_Inv_ClassIndex = 355 + , XSer_Inv_checkFillBuffer_Size = 356 + , XSer_Inv_checkFlushBuffer_Size = 357 + , XSer_Inv_Null_Pointer = 358 + , XSer_CreateObject_Fail = 359 + , XSer_ObjCount_UppBnd_Exceed = 360 + , XSer_GrammarPool_Empty = 361 + , XSer_GrammarPool_NotEmpty = 362 + , XSer_StringPool_NotEmpty = 363 + , XSer_Storer_Loader_Mismatch = 364 + , VALUE_QName_Invalid2 = 365 + , F_HighBounds = 366 + , E_LowBounds = 367 + , E_HighBounds = 368 + }; + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLExcepts(); +}; + +#if defined __GNUC__ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5)) +# pragma GCC diagnostic pop +#endif + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLException.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLException.hpp new file mode 100644 index 000000000000..ff90a7a8fc82 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLException.hpp @@ -0,0 +1,276 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_XMLEXCEPTION_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// This is the base class from which all the XML parser exceptions are +// derived. The virtual interface is very simple and most of the functionality +// is in this class. +// +// Because all derivatives are EXACTLY the same except for the static +// string that is used to hold the name of the class, a macro is provided +// below via which they are all created. +// --------------------------------------------------------------------------- +class XMLUTIL_EXPORT XMLException : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Virtual Destructor + // ----------------------------------------------------------------------- + virtual ~XMLException(); + + + // ----------------------------------------------------------------------- + // The XML exception virtual interface + // ----------------------------------------------------------------------- + virtual const XMLCh* getType() const = 0; + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLExcepts::Codes getCode() const; + const XMLCh* getMessage() const; + const char* getSrcFile() const; + XMLFileLoc getSrcLine() const; + XMLErrorReporter::ErrTypes getErrorType() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setPosition(const char* const file, const XMLFileLoc line); + + + // ----------------------------------------------------------------------- + // Hidden constructors and operators + // + // NOTE: Technically, these should be protected, since this is a + // base class that is never used directly. However, VC++ 6.0 will + // fail to catch via a reference to base class if the ctors are + // not public!! This seems to have been caused by the install + // of IE 5.0. + // ----------------------------------------------------------------------- + XMLException(); + XMLException(const char* const srcFile, const XMLFileLoc srcLine, MemoryManager* const memoryManager = 0); + XMLException(const XMLException& toCopy); + XMLException& operator=(const XMLException& toAssign); + +protected : + // ----------------------------------------------------------------------- + // Protected methods + // ----------------------------------------------------------------------- + void loadExceptText + ( + const XMLExcepts::Codes toLoad + ); + void loadExceptText + ( + const XMLExcepts::Codes toLoad + , const XMLCh* const text1 + , const XMLCh* const text2 = 0 + , const XMLCh* const text3 = 0 + , const XMLCh* const text4 = 0 + ); + void loadExceptText + ( + const XMLExcepts::Codes toLoad + , const char* const text1 + , const char* const text2 = 0 + , const char* const text3 = 0 + , const char* const text4 = 0 + ); + + +private : + // ----------------------------------------------------------------------- + // Data members + // + // fCode + // The error code that this exception represents. + // + // fSrcFile + // fSrcLine + // These are the file and line information from the source where the + // exception was thrown from. + // + // fMsg + // The loaded message text for this exception. + // ----------------------------------------------------------------------- + XMLExcepts::Codes fCode; + char* fSrcFile; + XMLFileLoc fSrcLine; + XMLCh* fMsg; + +protected: + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// XMLException: Getter methods +// --------------------------------------------------------------------------- +inline XMLExcepts::Codes XMLException::getCode() const +{ + return fCode; +} + +inline const XMLCh* XMLException::getMessage() const +{ + return fMsg; +} + +inline const char* XMLException::getSrcFile() const +{ + if (!fSrcFile) + return ""; + return fSrcFile; +} + +inline XMLFileLoc XMLException::getSrcLine() const +{ + return fSrcLine; +} + +inline XMLErrorReporter::ErrTypes XMLException::getErrorType() const +{ + if ((fCode >= XMLExcepts::W_LowBounds) && (fCode <= XMLExcepts::W_HighBounds)) + return XMLErrorReporter::ErrType_Warning; + else if ((fCode >= XMLExcepts::F_LowBounds) && (fCode <= XMLExcepts::F_HighBounds)) + return XMLErrorReporter::ErrType_Fatal; + else if ((fCode >= XMLExcepts::E_LowBounds) && (fCode <= XMLExcepts::E_HighBounds)) + return XMLErrorReporter::ErrType_Error; + return XMLErrorReporter::ErrTypes_Unknown; +} + +// --------------------------------------------------------------------------- +// This macro is used to create derived classes. They are all identical +// except the name of the exception, so it crazy to type them in over and +// over. +// --------------------------------------------------------------------------- +#define MakeXMLException(theType, expKeyword) \ +class expKeyword theType : public XMLException \ +{ \ +public: \ + \ + theType(const char* const srcFile \ + , const XMLFileLoc srcLine \ + , const XMLExcepts::Codes toThrow \ + , MemoryManager* memoryManager = 0) : \ + XMLException(srcFile, srcLine, memoryManager) \ + { \ + loadExceptText(toThrow); \ + } \ + \ + theType(const theType& toCopy) : \ + \ + XMLException(toCopy) \ + { \ + } \ + \ + theType(const char* const srcFile \ + , const XMLFileLoc srcLine \ + , const XMLExcepts::Codes toThrow \ + , const XMLCh* const text1 \ + , const XMLCh* const text2 = 0 \ + , const XMLCh* const text3 = 0 \ + , const XMLCh* const text4 = 0 \ + , MemoryManager* memoryManager = 0) : \ + XMLException(srcFile, srcLine, memoryManager) \ + { \ + loadExceptText(toThrow, text1, text2, text3, text4); \ + } \ + \ + theType(const char* const srcFile \ + , const XMLFileLoc srcLine \ + , const XMLExcepts::Codes toThrow \ + , const char* const text1 \ + , const char* const text2 = 0 \ + , const char* const text3 = 0 \ + , const char* const text4 = 0 \ + , MemoryManager* memoryManager = 0) : \ + XMLException(srcFile, srcLine, memoryManager) \ + { \ + loadExceptText(toThrow, text1, text2, text3, text4); \ + } \ + \ + virtual ~theType() {} \ + \ + theType& operator=(const theType& toAssign) \ + { \ + XMLException::operator=(toAssign); \ + return *this; \ + } \ + \ + virtual XMLException* duplicate() const \ + { \ + return new (fMemoryManager) theType(*this); \ + } \ + \ + virtual const XMLCh* getType() const \ + { \ + return XMLUni::fg##theType##_Name; \ + } \ + \ +private : \ + theType(); \ +}; + + + +// --------------------------------------------------------------------------- +// This macros is used to actually throw an exception. It is used in order +// to make sure that source code line/col info is stored correctly, and to +// give flexibility for other stuff in the future. +// --------------------------------------------------------------------------- + +#define ThrowXML(type,code) throw type(__FILE__, __LINE__, code) + +#define ThrowXML1(type,code,p1) throw type(__FILE__, __LINE__, code, p1) + +#define ThrowXML2(type,code,p1,p2) throw type(__FILE__, __LINE__, code, p1, p2) + +#define ThrowXML3(type,code,p1,p2,p3) throw type(__FILE__, __LINE__, code, p1, p2, p3) + +#define ThrowXML4(type,code,p1,p2,p3,p4) throw type(__FILE__, __LINE__, code, p1, p2, p3, p4) + +#define ThrowXMLwithMemMgr(type,code,memMgr) throw type(__FILE__, __LINE__, code, memMgr) + +#define ThrowXMLwithMemMgr1(type,code,p1,memMgr) throw type(__FILE__, __LINE__, code, p1, 0, 0, 0, memMgr) + +#define ThrowXMLwithMemMgr2(type,code,p1,p2,memMgr) throw type(__FILE__, __LINE__, code, p1, p2, 0, 0, memMgr) + +#define ThrowXMLwithMemMgr3(type,code,p1,p2,p3,memMgr) throw type(__FILE__, __LINE__, code, p1, p2, p3, 0, memMgr) + +#define ThrowXMLwithMemMgr4(type,code,p1,p2,p3,p4,memMgr) throw type(__FILE__, __LINE__, code, p1, p2, p3, p4, memMgr) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLFileMgr.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLFileMgr.hpp new file mode 100644 index 000000000000..db96d1d31aa4 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLFileMgr.hpp @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLFILEMGR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLFILEMGR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +typedef void* FileHandle; +#define XERCES_Invalid_File_Handle 0 + +// Abstract class for files. This is be used to allow multiple file handling implementations. +class XMLFileMgr : public XMemory +{ + public: + XMLFileMgr() {} + virtual ~XMLFileMgr() {} + + // File access + virtual FileHandle fileOpen(const XMLCh* path, bool toWrite, MemoryManager* const manager) = 0; + virtual FileHandle fileOpen(const char* path, bool toWrite, MemoryManager* const manager) = 0; + virtual FileHandle openStdIn(MemoryManager* const manager) = 0; + + virtual void fileClose(FileHandle f, MemoryManager* const manager) = 0; + virtual void fileReset(FileHandle f, MemoryManager* const manager) = 0; + + virtual XMLFilePos curPos(FileHandle f, MemoryManager* const manager) = 0; + virtual XMLFilePos fileSize(FileHandle f, MemoryManager* const manager) = 0; + + virtual XMLSize_t fileRead(FileHandle f, XMLSize_t byteCount, XMLByte* buffer, MemoryManager* const manager) = 0; + virtual void fileWrite(FileHandle f, XMLSize_t byteCount, const XMLByte* buffer, MemoryManager* const manager) = 0; + + // Ancillary path handling routines + virtual XMLCh* getFullPath(const XMLCh* const srcPath, MemoryManager* const manager) = 0; + virtual XMLCh* getCurrentDirectory(MemoryManager* const manager) = 0; + virtual bool isRelative(const XMLCh* const toCheck, MemoryManager* const manager) = 0; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLFloat.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLFloat.hpp new file mode 100644 index 000000000000..caf12fe3c75c --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLFloat.hpp @@ -0,0 +1,97 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML_FLOAT_HPP) +#define XERCESC_INCLUDE_GUARD_XML_FLOAT_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLFloat : public XMLAbstractDoubleFloat +{ +public: + + /** + * Constructs a newly allocated XMLFloat object that + * represents the value represented by the string. + * + * @param strValue the String to be converted to an + * XMLFloat. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @exception NumberFormatException if the String does not + * contain a parsable XMLFloat. + */ + + XMLFloat(const XMLCh* const strValue, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~XMLFloat(); + + /** + * Compares the two specified XMLFloat objects. + * The result is true if and only if the argument is not + * null and that contains the same int value. + * + * @param lValue the object to compare with. + * @param rValue the object to compare against. + * @return true if the objects are the same; + * false otherwise. + */ + + inline static int compareValues(const XMLFloat* const lValue + , const XMLFloat* const rValue); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLFloat) + + XMLFloat(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +protected: + + virtual void checkBoundary(char* const strValue); + +private: + // + // Unimplemented + // + // copy ctor + // assignment ctor + // + XMLFloat(const XMLFloat& toCopy); + XMLFloat& operator=(const XMLFloat& toAssign); + +}; + +inline int XMLFloat::compareValues(const XMLFloat* const lValue + , const XMLFloat* const rValue) +{ + return XMLAbstractDoubleFloat::compareValues((const XMLAbstractDoubleFloat*) lValue, + (const XMLAbstractDoubleFloat*) rValue + , ((XMLAbstractDoubleFloat*)lValue)->getMemoryManager()); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLIBM1047Transcoder.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLIBM1047Transcoder.hpp new file mode 100644 index 000000000000..25393eec0f5e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLIBM1047Transcoder.hpp @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLIBM1047TRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLIBM1047TRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple 1047-US transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +// +class XMLUTIL_EXPORT XMLIBM1047Transcoder : public XML256TableTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public, static methods + // ----------------------------------------------------------------------- + static XMLCh xlatThisOne(const XMLByte toXlat); + + + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLIBM1047Transcoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLIBM1047Transcoder(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLIBM1047Transcoder(); + XMLIBM1047Transcoder(const XMLIBM1047Transcoder&); + void operator=(const XMLIBM1047Transcoder&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLIBM1140Transcoder.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLIBM1140Transcoder.hpp new file mode 100644 index 000000000000..95384dba21fa --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLIBM1140Transcoder.hpp @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLIBM1140TRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLIBM1140TRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple IBM-1140 transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +class XMLUTIL_EXPORT XMLIBM1140Transcoder : public XML256TableTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public, static methods + // ----------------------------------------------------------------------- + static XMLCh xlatThisOne(const XMLByte toXlat); + + + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLIBM1140Transcoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLIBM1140Transcoder(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLIBM1140Transcoder(); + XMLIBM1140Transcoder(const XMLIBM1140Transcoder&); + XMLIBM1140Transcoder& operator=(const XMLIBM1140Transcoder&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLInitializer.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLInitializer.hpp new file mode 100644 index 000000000000..3dcf85a88648 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLInitializer.hpp @@ -0,0 +1,164 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLINITIALIZER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLINITIALIZER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * Utilities that must be implemented in a class-specific way. + * + * This class contains methods that must be implemented by different + * classes that have static data (class or local) that they need + * to initialize when XMLPlatformUtils::Initialize is invoked. + */ +class XMLUTIL_EXPORT XMLInitializer +{ +protected : + /** @name Initialization methods */ + //@{ + + /** Perform per-class allocationa and initialization of static data + * + * These functions should be called from XMLPlatformUtils::Initialize. + */ + static void initializeTransService(); + static void initializeStaticData(); + + /** Perform per-class release of static data + * + * These functions should be called from XMLPlatformUtils::Terminate. + */ + static void terminateStaticData(); + static void terminateTransService(); + + //@} + + friend class XMLPlatformUtils; + +private : + XMLInitializer(); + XMLInitializer(const XMLInitializer& toCopy); + XMLInitializer& operator=(const XMLInitializer&); + +private: + // Note: The name of each function should be in the form + // initialize. + // + // Note: In some cases order of initialization is important. + // + + // + // Initialize + // + + // Core + // + static void initializeEncodingValidator(); + static void initializeXMLException(); + static void initializeXMLScanner(); + static void initializeXMLValidator(); + + // Regex + // + static void initializeRangeTokenMap(); + static void initializeRegularExpression(); + + // DTD + // + static void initializeDTDGrammar(); + + // Schema + // + static void initializeXSDErrorReporter(); + static void initializeDatatypeValidatorFactory(); + static void initializeGeneralAttributeCheck(); + static void initializeXSValue(); + static void initializeComplexTypeInfo(); + + // DOM + // + static void initializeDOMImplementationRegistry(); + static void initializeDOMImplementationImpl(); + static void initializeDOMDocumentTypeImpl(); + static void initializeDOMNodeListImpl(); + static void initializeDOMNormalizer(); + + // XInclude + // + static void initializeXInclude(); + + // + // Terminate + // + + // Core + // + static void terminateEncodingValidator(); + static void terminateXMLException(); + static void terminateXMLScanner(); + static void terminateXMLValidator(); + + // Regex + // + static void terminateRangeTokenMap(); + static void terminateRegularExpression(); + + // DTD + // + static void terminateDTDGrammar(); + + // Schema + // + static void terminateXSDErrorReporter(); + static void terminateDatatypeValidatorFactory(); + static void terminateGeneralAttributeCheck(); + static void terminateXSValue(); + static void terminateComplexTypeInfo(); + + // DOM + // + static void terminateDOMImplementationRegistry(); + static void terminateDOMImplementationImpl(); + static void terminateDOMDocumentTypeImpl(); + static void terminateDOMNodeListImpl(); + static void terminateDOMNormalizer(); + + // XInclude + // + static void terminateXInclude(); + + // + // Extra initialization. + // + static void initializeDOMHeap (XMLSize_t initialHeapAllocSize, + XMLSize_t maxHeapAllocSize, + XMLSize_t maxSubAllocationSize); +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLInteger.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLInteger.hpp new file mode 100644 index 000000000000..e2480eda16b6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLInteger.hpp @@ -0,0 +1,82 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML_INTEGER_HPP) +#define XERCESC_INCLUDE_GUARD_XML_INTEGER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLInteger : public XMemory +{ +public: + + /** + * Constructs a newly allocated XMLInteger object + * + * @param intVal the integer + */ + + XMLInteger(const int intVal); + + ~XMLInteger(); + + /** + * Returns the built in integer value. + */ + int intValue() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLInteger(const XMLInteger&); + XMLInteger& operator=(const XMLInteger&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fData + // the value + // + // ----------------------------------------------------------------------- + int fData; + +}; + +inline XMLInteger::XMLInteger(const int intVal) +:fData(intVal) +{ +} + +inline XMLInteger::~XMLInteger() +{ +} + +inline int XMLInteger::intValue() const +{ + return fData; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLMsgLoader.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLMsgLoader.hpp new file mode 100644 index 000000000000..67b98528aafd --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLMsgLoader.hpp @@ -0,0 +1,182 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLMSGLOADER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLMSGLOADER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This header defines an abstract message loading API. This is the API via +// which the parser system loads translatable text, and there can be multiple +// actual implementations of this mechanism. The API is very simple because +// there can be many kinds of underlying systems on which implementations are +// based and we don't want to get into portability trouble by being overly +// smart. +// +// Each instance of the message loader loads a file of messages, which are +// accessed by key and which are associated with a particular language. The +// actual source information may be in many forms, but by the time it is +// extracted for use it will be in Unicode format. The language is always +// the default language for the local machine. +// +// Msg loader derivatives are not required to be thread safe. The parser will +// never use a single instance in more than one thread. +// +class XMLUTIL_EXPORT XMLMsgLoader : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Class specific types + // + // XMLMsgId + // A simple typedef to give us flexibility about the representation + // of a message id. + // ----------------------------------------------------------------------- + typedef unsigned int XMLMsgId; + + + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + virtual ~XMLMsgLoader(); + + + // ----------------------------------------------------------------------- + // The virtual message loader API + // ----------------------------------------------------------------------- + virtual bool loadMsg + ( + const XMLMsgId msgToLoad + , XMLCh* const toFill + , const XMLSize_t maxChars + ) = 0; + + virtual bool loadMsg + ( + const XMLMsgId msgToLoad + , XMLCh* const toFill + , const XMLSize_t maxChars + , const XMLCh* const repText1 + , const XMLCh* const repText2 = 0 + , const XMLCh* const repText3 = 0 + , const XMLCh* const repText4 = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) = 0; + + virtual bool loadMsg + ( + const XMLMsgId msgToLoad + , XMLCh* const toFill + , const XMLSize_t maxChars + , const char* const repText1 + , const char* const repText2 = 0 + , const char* const repText3 = 0 + , const char* const repText4 = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) = 0; + + /** @name Locale Handling */ + //@{ + /** + * This function enables set the locale information which + * all concrete message loaders shall refer to during instantiation. + * + * Note: for detailed discussion, refer to PlatformUtils::initialize() + */ + static void setLocale(const char* const localeToAdopt); + + /** + * For the derived to retrieve locale info during construction + */ + static const char* getLocale(); + + //@} + + /** @name NLSHome Handling */ + //@{ + /** + * This function enables set the NLSHome information which + * all concrete message loaders shall refer to during instantiation. + * + * Note: for detailed discussion, refer to PlatformUtils::initialize() + */ + static void setNLSHome(const char* const nlsHomeToAdopt); + + /** + * For the derived to retrieve NLSHome info during construction + */ + static const char* getNLSHome(); + + //@} + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + XMLMsgLoader(); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLMsgLoader(const XMLMsgLoader&); + XMLMsgLoader& operator=(const XMLMsgLoader&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fLocale + // Locale info set through PlatformUtils::init(). + // The derived class may refer to this for locale information. + // + // fPath + // NLSHome info set through PlatformUtils::init(). + // The derived class may refer to this for NLSHome information. + // + // ----------------------------------------------------------------------- + static char* fLocale; + static char* fPath; +}; + + +// --------------------------------------------------------------------------- +// XMLMsgLoader: Public Constructors and Destructor +// --------------------------------------------------------------------------- +inline XMLMsgLoader::~XMLMsgLoader() +{ +} + + +// --------------------------------------------------------------------------- +// XMLMsgLoader: Hidden Constructors +// --------------------------------------------------------------------------- +inline XMLMsgLoader::XMLMsgLoader() +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLMutexMgr.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLMutexMgr.hpp new file mode 100644 index 000000000000..aa211afbec60 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLMutexMgr.hpp @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLMUTEXMGR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLMUTEXMGR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +typedef void* XMLMutexHandle; + +// Abstract class for mutex implementation. +// This is be used to allow multiple mutex handling implementations. +class XMLMutexMgr : public XMemory +{ + public: + XMLMutexMgr() {} + virtual ~XMLMutexMgr() {} + + // Mutex operations + virtual XMLMutexHandle create(MemoryManager* const manager) = 0; + virtual void destroy(XMLMutexHandle mtx, MemoryManager* const manager) = 0; + virtual void lock(XMLMutexHandle mtx) = 0; + virtual void unlock(XMLMutexHandle mtx) = 0; +}; + +XERCES_CPP_NAMESPACE_END + + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLNetAccessor.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLNetAccessor.hpp new file mode 100644 index 000000000000..85d7d7449a5b --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLNetAccessor.hpp @@ -0,0 +1,139 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLNETACCESSOR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLNETACCESSOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class BinInputStream; + +// This class holds advanced informations about the HTTP connection +class XMLUTIL_EXPORT XMLNetHTTPInfo +{ +public: + XMLNetHTTPInfo(); + + typedef enum { + GET, + PUT, + POST + } HTTPMethod; + + // ----------------------------------------------------------------------- + // Data members + // + // fHTTPMethod + // The type of the HTTP request + // + // fHeaders + // The extra headers that will be sent as part of the request; the format is + // Header1: Value\r\nHeader2: Value\r\n + // + // fHeadersLen + // The length of the string pointed by fHeaders, in bytes + // + // fPayload + // The extra data that will be sent after the headers; in the case of a PUT + // operation, this is the content of the resource being posted. It can be binary data + // + // fPayloadLen + // The length of the binary buffer pointed by fPayload, in bytes + // + HTTPMethod fHTTPMethod; + const char* fHeaders; + XMLSize_t fHeadersLen; + const char* fPayload; + XMLSize_t fPayloadLen; +}; + +inline XMLNetHTTPInfo::XMLNetHTTPInfo() +:fHTTPMethod(XMLNetHTTPInfo::GET), + fHeaders(0), + fHeadersLen(0), + fPayload(0), + fPayloadLen(0) +{ +} + + +// +// This class is an abstract interface via which the URL class accesses +// net access services. When any source URL is not in effect a local file +// path, then the URL class is used to look at it. Then the URL class can +// be asked to make a binary input stream via which the referenced resource +// can be read in. +// +// The URL class will use an object derived from this class to create a +// binary stream for the URL to return. The object it uses is provided by +// the platform utils, and is actually provided by the per-platform init +// code so each platform can decide what actual implementation it wants to +// use. +// +class XMLUTIL_EXPORT XMLNetAccessor : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Virtual destructor + // ----------------------------------------------------------------------- + virtual ~XMLNetAccessor() + { + } + + + // ----------------------------------------------------------------------- + // The virtual net accessor interface + // ----------------------------------------------------------------------- + virtual const XMLCh* getId() const = 0; + + virtual BinInputStream* makeNew + ( + const XMLURL& urlSrc, + const XMLNetHTTPInfo* httpInfo=0 + ) = 0; + + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XMLNetAccessor() + { + } + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLNetAccessor(const XMLNetAccessor&); + XMLNetAccessor& operator=(const XMLNetAccessor&); +}; + +MakeXMLException(NetAccessorException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLNumber.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLNumber.hpp new file mode 100644 index 000000000000..9f131dbb4f52 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLNumber.hpp @@ -0,0 +1,102 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLNUMBER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLNUMBER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLNumber : public XSerializable, public XMemory +{ +public: + + enum + { + LESS_THAN = -1, + EQUAL = 0, + GREATER_THAN = 1, + INDETERMINATE = 2 + }; + + enum NumberType { + Float, + Double, + BigDecimal, + DateTime, + UnKnown + }; + + virtual ~XMLNumber(); + + /** + * Return string representation of the decimal value. + * A decimal point will be included as necessary. + * Similar to toString above, but the internal buffer is + * returned directly, user is not required to delete + * the returned buffer + */ + virtual XMLCh* getRawData() const = 0; + + /** + * Return the original and converted value of the original data. + * (applicable to double/float) + * + * The internal buffer is returned directly, user is not required + * to delete the returned buffer + */ + virtual const XMLCh* getFormattedString() const = 0; + + /** + * Returns the sign of this number + * + * -1 negative + * 0 zero + * 1 positive + * + */ + virtual int getSign() const = 0; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLNumber) + + static XMLNumber* loadNumber(XMLNumber::NumberType numType + , XSerializeEngine& serEng); + +protected: + + XMLNumber(); + XMLNumber(const XMLNumber&); + +private: + // ----------------------------------------------------------------------- + // Unimplemented operators + // ----------------------------------------------------------------------- + XMLNumber& operator=(const XMLNumber&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLResourceIdentifier.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLResourceIdentifier.hpp new file mode 100644 index 000000000000..df09961dcc06 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLResourceIdentifier.hpp @@ -0,0 +1,214 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLRESOURCEIDENTIFIER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLRESOURCEIDENTIFIER_HPP + +XERCES_CPP_NAMESPACE_BEGIN + +class Locator; + +/** + *

This class is used along with XMLEntityResolver to resolve entities. + * Instead of passing publicId and systemId on the resolveEntity call, + * as is done with the SAX entity resolver, an object of type XMLResourceIdentifier + * is passed. By calling the getResourceIdentifierType() method the user can + * determine which data members are available for inspection:

+ * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
ResourceIdentifierTypeAvailable Data Members
SchemaGrammarschemaLocation, nameSpace & baseURI (current document)
SchemaImportschemaLocation, nameSpace & baseURI (current document)
SchemaIncludeschemaLocation & baseURI (current document)
SchemaRedefineschemaLocation & baseURI (current document)
ExternalEntitysystemId, publicId & baseURI (some items may be NULL)
+ * + *

The following resolver would provide the application + * with a special character stream for the entity with the system + * identifier "http://www.myhost.com/today":

+ * + * + * \#include
+ * \#include
+ *
+ * class MyResolver : public XMLEntityResolver {
+ *  public:
+ *   InputSource* resolveEntity (XMLResourceIdentifier* xmlri);
+ *   ...
+ *  };
+ *
+ *  MyResolver::resolveEntity(XMLResourceIdentifier* xmlri) {
+ *   switch(xmlri->getResourceIdentifierType()) {
+ *    case XMLResourceIdentifier::SystemId:
+ *     if (XMLString::compareString(xmlri->getSystemId(), "http://www.myhost.com/today")) {
+ *      MyReader* reader = new MyReader();
+ *      return new InputSource(reader);
+ *     } else {
+ *      return null;
+ *     }
+ *     break;
+ *    default:
+ *     return null;
+ *   }
+ *  }
+ * + * @see SAXParser#setXMLEntityResolver + * @see InputSource#InputSource + */ +class XMLUTIL_EXPORT XMLResourceIdentifier +{ +public: + + /** @name Public Constants */ + //@{ + enum ResourceIdentifierType { + SchemaGrammar = 0, + SchemaImport, + SchemaInclude, + SchemaRedefine , + ExternalEntity, + UnKnown = 255 + }; + //@} + + /** @name Constructors and Destructor */ + //@{ + /** Constructor */ + + XMLResourceIdentifier(const ResourceIdentifierType resourceIdentitiferType + , const XMLCh* const systemId + , const XMLCh* const nameSpace = 0 + , const XMLCh* const publicId = 0 + , const XMLCh* const baseURI = 0 + , const Locator* locator = 0); + + /** Destructor */ + ~XMLResourceIdentifier() + { + } + + //@} + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Public Methods */ + //@{ + ResourceIdentifierType getResourceIdentifierType() const; + const XMLCh* getPublicId() const; + const XMLCh* getSystemId() const; + const XMLCh* getSchemaLocation() const; + const XMLCh* getBaseURI() const; + const XMLCh* getNameSpace() const; + const Locator* getLocator() const; + //@} + +private : + + const ResourceIdentifierType fResourceIdentifierType; + const XMLCh* fPublicId; + const XMLCh* fSystemId; + const XMLCh* fBaseURI; + const XMLCh* fNameSpace; + const Locator* fLocator; + + /* Unimplemented constructors and operators */ + + /* Copy constructor */ + XMLResourceIdentifier(const XMLResourceIdentifier&); + + /* Assignment operator */ + XMLResourceIdentifier& operator=(const XMLResourceIdentifier&); + +}; + +inline XMLResourceIdentifier::ResourceIdentifierType XMLResourceIdentifier::getResourceIdentifierType() const +{ + return fResourceIdentifierType; +} + +inline const XMLCh* XMLResourceIdentifier::getPublicId() const +{ + return fPublicId; +} + +inline const XMLCh* XMLResourceIdentifier::getSystemId() const +{ + return fSystemId; +} + +inline const XMLCh* XMLResourceIdentifier::getSchemaLocation() const +{ + return fSystemId; +} + +inline const XMLCh* XMLResourceIdentifier::getBaseURI() const +{ + return fBaseURI; +} + +inline const XMLCh* XMLResourceIdentifier::getNameSpace() const +{ + return fNameSpace; +} + +inline const Locator* XMLResourceIdentifier::getLocator() const +{ + return fLocator; +} + +inline XMLResourceIdentifier::XMLResourceIdentifier(const ResourceIdentifierType resourceIdentifierType + , const XMLCh* const systemId + , const XMLCh* const nameSpace + , const XMLCh* const publicId + , const XMLCh* const baseURI + , const Locator* locator ) + : fResourceIdentifierType(resourceIdentifierType) + , fPublicId(publicId) + , fSystemId(systemId) + , fBaseURI(baseURI) + , fNameSpace(nameSpace) + , fLocator(locator) +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLString.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLString.hpp new file mode 100644 index 000000000000..0bad6ac8c069 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLString.hpp @@ -0,0 +1,1631 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLSTRING_HPP) +#define XERCESC_INCLUDE_GUARD_XMLSTRING_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLLCPTranscoder; +/** + * Class for representing native character strings and handling common string + * operations + * + * This class is Unicode compliant. This class is designed primarily + * for internal use, but due to popular demand, it is being made + * publicly available. Users of this class must understand that this + * is not an officially supported class. All public methods of this + * class are static functions. + * + */ +class XMLUTIL_EXPORT XMLString +{ +public: + /* Static methods for native character mode string manipulation */ + + + /** @name String concatenation functions */ + //@{ + /** Concatenates two strings. + * + * catString appends src to target and + * terminates the resulting string with a null character. The initial character + * of src overwrites the terminating character of target + * . + * + * No overflow checking is performed when strings are copied or appended. + * The behavior of catString is undefined if source and + * destination strings overlap. + * + * @param target Null-terminated destination string + * @param src Null-terminated source string + */ + static void catString + ( + char* const target + , const char* const src + ); + + /** Concatenates two strings. + * + * catString appends src to target and + * terminates the resulting string with a null character. The initial character of + * src overwrites the terminating character of target. + * No overflow checking is performed when strings are copied or appended. + * The behavior of catString is undefined if source and destination + * strings overlap. + * + * @param target Null-terminated destination string + * @param src Null-terminated source string + */ + static void catString + ( + XMLCh* const target + , const XMLCh* const src + ); + //@} + + /** @name String comparison functions */ + //@{ + /** Lexicographically compares lowercase versions of str1 and + * str2 and returns a value indicating their relationship. + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareIString + ( + const char* const str1 + , const char* const str2 + ); + + /** Lexicographically compares lowercase versions of str1 and + * str2 and returns a value indicating their relationship. + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareIString + ( + const XMLCh* const str1 + , const XMLCh* const str2 + ); + + /** Lexicographically compares lowercase versions of str1 and + * str2 and returns a value indicating their relationship. + * The routine only lowercases A to Z. + * @param str1 Null-terminated ASCII string to compare + * @param str2 Null-terminated ASCII string to compare + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareIStringASCII + ( + const XMLCh* const str1 + , const XMLCh* const str2 + ); + + + + /** Lexicographically compares, at most, the first count characters in + * str1 and str2 and returns a value indicating the + * relationship between the substrings. + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * @param count The number of characters to compare + * + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareNString + ( + const char* const str1 + , const char* const str2 + , const XMLSize_t count + ); + + /** Lexicographically compares, at most, the first count characters in + * str1 and str2 and returns a value indicating + * the relationship between the substrings. + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * @param count The number of characters to compare + * + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareNString + ( + const XMLCh* const str1 + , const XMLCh* const str2 + , const XMLSize_t count + ); + + + /** Lexicographically compares, at most, the first count characters in + * str1 and str2 without regard to case and + * returns a value indicating the relationship between the substrings. + * + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * @param count The number of characters to compare + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareNIString + ( + const char* const str1 + , const char* const str2 + , const XMLSize_t count + ); + + /** Lexicographically compares, at most, the first count characters in + * str1 and str2 without regard to case and + * returns a value indicating the relationship between the substrings. + * + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * @param count The number of characters to compare + * + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareNIString + ( + const XMLCh* const str1 + , const XMLCh* const str2 + , const XMLSize_t count + ); + + /** Lexicographically compares str1 and str2 and + * returns a value indicating their relationship. + * + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareString + ( + const char* const str1 + , const char* const str2 + ); + + /** Lexicographically compares str1 and str2 and + * returns a value indicating their relationship. + * + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareString + ( + const XMLCh* const str1 + , const XMLCh* const str2 + ); + + /** compares str1 and str2 + * + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * @return true if two strings are equal, false if not + * If one string is null, while the other is zero-length string, + * it is considered as equal. + */ + static bool equals + ( + const XMLCh* str1 + , const XMLCh* str2 + ); + + /** compares str1 and str2 + * + * @param str1 string to compare + * @param str2 string to compare + * @param n number of characters to compare + * @return true if two strings are equal, false if not + * If one string is null, while the other is zero-length string, + * it is considered as equal. + */ + static bool equalsN + ( + const XMLCh* str1 + , const XMLCh* str2 + , XMLSize_t n + ); + + static bool equals + ( + const char* str1 + , const char* str2 + ); + + /** compares str1 and str2 + * + * @param str1 string to compare + * @param str2 string to compare + * @param n number of characters to compare + * @return true if two strings are equal, false if not + * If one string is null, while the other is zero-length string, + * it is considered as equal. + */ + static bool equalsN + ( + const char* str1 + , const char* str2 + , XMLSize_t n + ); + + /** Lexicographically compares str1 and str2 + * regions and returns true if they are equal, otherwise false. + * + * A substring of str1 is compared to a substring of + * str2. The result is true if these substrings represent + * identical character sequences. The substring of str1 + * to be compared begins at offset1 and has length charCount. The + * substring of str2 to be compared begins at offset2 and + * has length charCount. The result is false if and only if at least + * one of the following is true: + * offset1 is negative. + * offset2 is negative. + * offset1+charCount is greater than the length of str1. + * offset2+charCount is greater than the length of str2. + * There is some nonnegative integer k less than charCount such that: + * str1.charAt(offset1+k) != str2.charAt(offset2+k) + * + * @param str1 Null-terminated string to compare + * @param offset1 Starting offset of str1 + * @param str2 Null-terminated string to compare + * @param offset2 Starting offset of str2 + * @param charCount The number of characters to compare + * @return true if the specified subregion of str1 exactly + * matches the specified subregion of str2>; false + * otherwise. + */ + static bool regionMatches + ( + const XMLCh* const str1 + , const int offset1 + , const XMLCh* const str2 + , const int offset2 + , const XMLSize_t charCount + ); + + /** Lexicographically compares str1 and str2 + * regions without regard to case and returns true if they are equal, + * otherwise false. + * + * A substring of str1 is compared to a substring of + * str2. The result is true if these substrings represent + * identical character sequences. The substring of str1 + * to be compared begins at offset1 and has length charCount. The + * substring of str2 to be compared begins at offset2 and + * has length charCount. The result is false if and only if at least + * one of the following is true: + * offset1 is negative. + * offset2 is negative. + * offset1+charCount is greater than the length of str1. + * offset2+charCount is greater than the length of str2. + * There is some nonnegative integer k less than charCount such that: + * str1.charAt(offset1+k) != str2.charAt(offset2+k) + * + * @param str1 Null-terminated string to compare + * @param offset1 Starting offset of str1 + * @param str2 Null-terminated string to compare + * @param offset2 Starting offset of str2 + * @param charCount The number of characters to compare + * @return true if the specified subregion of str1 exactly + * matches the specified subregion of str2>; false + * otherwise. + */ + static bool regionIMatches + ( + const XMLCh* const str1 + , const int offset1 + , const XMLCh* const str2 + , const int offset2 + , const XMLSize_t charCount + ); + //@} + + /** @name String copy functions */ + //@{ + /** Copies src, including the terminating null character, to the + * location specified by target. + * + * No overflow checking is performed when strings are copied or appended. + * The behavior of strcpy is undefined if the source and destination strings + * overlap. + * + * @param target Destination string + * @param src Null-terminated source string + */ + static void copyString + ( + char* const target + , const char* const src + ); + + /** Copies src, including the terminating null character, to + * the location specified by target. + * + * No overflow checking is performed when strings are copied or appended. + * The behavior of copyString is undefined if the source and + * destination strings overlap. + * + * @param target Destination string + * @param src Null-terminated source string + */ + static void copyString + ( + XMLCh* const target + , const XMLCh* const src + ); + + /** Copies src, upto a fixed number of characters, to the + * location specified by target. + * + * No overflow checking is performed when strings are copied or appended. + * The behavior of copyNString is undefined if the source and + * destination strings overlap. + * + * @param target Destination string. The size of the buffer should + * atleast be 'maxChars + 1'. + * @param src Null-terminated source string + * @param maxChars The maximum number of characters to copy + */ + static bool copyNString + ( + XMLCh* const target + , const XMLCh* const src + , const XMLSize_t maxChars + ); + //@} + + /** @name Hash functions */ + //@{ + /** Hashes a string given a modulus + * + * @param toHash The string to hash + * @param hashModulus The divisor to be used for hashing + * @return Returns the hash value + */ + static XMLSize_t hash + ( + const char* const toHash + , const XMLSize_t hashModulus + ); + + /** Hashes a string given a modulus + * + * @param toHash The string to hash + * @param hashModulus The divisor to be used for hashing + * @return Returns the hash value + */ + static XMLSize_t hash + ( + const XMLCh* const toHash + , const XMLSize_t hashModulus + ); + + /** Hashes a string given a modulus taking a maximum number of characters + * as the limit + * + * @param toHash The string to hash + * @param numChars The maximum number of characters to consider for hashing + * @param hashModulus The divisor to be used for hashing + * @return Returns the hash value + */ + static XMLSize_t hashN + ( + const XMLCh* const toHash + , const XMLSize_t numChars + , const XMLSize_t hashModulus + ); + + //@} + + /** @name Search functions */ + //@{ + /** + * Provides the index of the first occurrence of a character within a string + * + * @param toSearch The string to search + * @param ch The character to search within the string + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int indexOf(const char* const toSearch, const char ch); + + /** + * Provides the index of the first occurrence of a character within a string + * + * @param toSearch The string to search + * @param ch The character to search within the string + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int indexOf(const XMLCh* const toSearch, const XMLCh ch); + + /** + * Provides the index of the first occurrence of a character within a string + * starting from a given index + * + * @param toSearch The string to search + * @param chToFind The character to search within the string + * @param fromIndex The index to start searching from + * @param manager The MemoryManager to use to allocate objects + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int indexOf + ( + const char* const toSearch + , const char chToFind + , const XMLSize_t fromIndex + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Provides the index of the first occurrence of a character within a string + * starting from a given index + * + * @param toSearch The string to search + * @param chToFind The character to search within the string + * @param fromIndex The index to start searching from + * @param manager The MemoryManager to use to allocate objects + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int indexOf + ( + const XMLCh* const toSearch + , const XMLCh chToFind + , const XMLSize_t fromIndex + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Provides the index of the last occurrence of a character within a string + * + * @param toSearch The string to search + * @param ch The character to search within the string + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int lastIndexOf(const char* const toSearch, const char ch); + + /** + * Provides the index of the last occurrence of a character within a string + * + * @param toSearch The string to search + * @param ch The character to search within the string + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int lastIndexOf(const XMLCh* const toSearch, const XMLCh ch); + + /** + * Provides the index of the last occurrence of a character within a string + * + * @param ch The character to search within the string + * @param toSearch The string to search + * @param toSearchLen The length of the string to search + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int lastIndexOf + ( + const XMLCh ch + , const XMLCh* const toSearch + , const XMLSize_t toSearchLen + ); + + /** + * Provides the index of the last occurrence of a character within a string + * starting backward from a given index + * + * @param toSearch The string to search + * @param chToFind The character to search within the string + * @param fromIndex The index to start backward search from + * @param manager The MemoryManager to use to allocate objects + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int lastIndexOf + ( + const char* const toSearch + , const char chToFind + , const XMLSize_t fromIndex + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Provides the index of the last occurrence of a character within a string + * starting backward from a given index + * + * @param toSearch The string to search + * @param ch The character to search within the string + * @param fromIndex The index to start backward search from + * @param manager The MemoryManager to use to allocate objects + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int lastIndexOf + ( + const XMLCh* const toSearch + , const XMLCh ch + , const XMLSize_t fromIndex + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Fixed size string movement */ + //@{ + /** Moves X number of chars + * @param targetStr The string to copy the chars to + * @param srcStr The string to copy the chars from + * @param count The number of chars to move + */ + static void moveChars + ( + XMLCh* const targetStr + , const XMLCh* const srcStr + , const XMLSize_t count + ); + + //@} + + /** @name Substring function */ + //@{ + /** Create a substring of a given string. The substring begins at the + * specified beginIndex and extends to the character at index + * endIndex - 1. + * @param targetStr The string to copy the chars to + * @param srcStr The string to copy the chars from + * @param startIndex beginning index, inclusive. + * @param endIndex the ending index, exclusive. + * @param manager The MemoryManager to use to allocate objects + */ + static void subString + ( + char* const targetStr + , const char* const srcStr + , const XMLSize_t startIndex + , const XMLSize_t endIndex + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Create a substring of a given string. The substring begins at the + * specified beginIndex and extends to the character at index + * endIndex - 1. + * @param targetStr The string to copy the chars to + * @param srcStr The string to copy the chars from + * @param startIndex beginning index, inclusive. + * @param endIndex the ending index, exclusive. + * @param manager The MemoryManager to use to allocate objects + */ + static void subString + ( + XMLCh* const targetStr + , const XMLCh* const srcStr + , const XMLSize_t startIndex + , const XMLSize_t endIndex + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Create a substring of a given string. The substring begins at the + * specified beginIndex and extends to the character at index + * endIndex - 1. + * @param targetStr The string to copy the chars to + * @param srcStr The string to copy the chars from + * @param startIndex beginning index, inclusive. + * @param endIndex the ending index, exclusive. + * @param srcStrLength the length of srcStr + * @param manager The MemoryManager to use to allocate objects + */ + static void subString + ( + XMLCh* const targetStr + , const XMLCh* const srcStr + , const XMLSize_t startIndex + , const XMLSize_t endIndex + , const XMLSize_t srcStrLength + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** @name Replication function */ + //@{ + /** Replicates a string + * NOTE: The returned buffer is allocated with the MemoryManager. It is the + * responsibility of the caller to delete it when not longer needed. + * You can call XMLString::release to release this returned buffer. + * + * @param toRep The string to replicate + * @param manager The MemoryManager to use to allocate the string + * @return Returns a pointer to the replicated string + * @see XMLString::release(char**, MemoryManager*) + */ + static char* replicate(const char* const toRep, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Replicates a string + * NOTE: The returned buffer is allocated with the MemoryManager. It is the + * responsibility of the caller to delete it when not longer needed. + * You can call XMLString::release to release this returned buffer. + * + * @param toRep The string to replicate + * @param manager The MemoryManager to use to allocate the string + * @return Returns a pointer to the replicated string + * @see XMLString::release(XMLCh**, MemoryManager*) + */ + static XMLCh* replicate(const XMLCh* const toRep, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + /** @name String query function */ + //@{ + /** Tells if the sub-string appears within a string at the beginning + * @param toTest The string to test + * @param prefix The sub-string that needs to be checked + * @return Returns true if the sub-string was found at the beginning of + * toTest, else false + */ + static bool startsWith + ( + const char* const toTest + , const char* const prefix + ); + + /** Tells if the sub-string appears within a string at the beginning + * @param toTest The string to test + * @param prefix The sub-string that needs to be checked + * @return Returns true if the sub-string was found at the beginning of + * toTest, else false + */ + static bool startsWith + ( + const XMLCh* const toTest + , const XMLCh* const prefix + ); + + /** Tells if the sub-string appears within a string at the beginning + * without regard to case + * + * @param toTest The string to test + * @param prefix The sub-string that needs to be checked + * @return Returns true if the sub-string was found at the beginning of + * toTest, else false + */ + static bool startsWithI + ( + const char* const toTest + , const char* const prefix + ); + + /** Tells if the sub-string appears within a string at the beginning + * without regard to case + * + * @param toTest The string to test + * @param prefix The sub-string that needs to be checked + * + * @return Returns true if the sub-string was found at the beginning + * of toTest, else false + */ + static bool startsWithI + ( + const XMLCh* const toTest + , const XMLCh* const prefix + ); + + /** Tells if the sub-string appears within a string at the end. + * @param toTest The string to test + * @param suffix The sub-string that needs to be checked + * @return Returns true if the sub-string was found at the end of + * toTest, else false + */ + static bool endsWith + ( + const XMLCh* const toTest + , const XMLCh* const suffix + ); + + + /** Tells if a string has any occurrence of any character of another + * string within itself + * @param toSearch The string to be searched + * @param searchList The string from which characters to be searched for are drawn + * @return Returns the pointer to the location where the first occurrence of any + * character from searchList is found, + * else returns 0 + */ + static const XMLCh* findAny + ( + const XMLCh* const toSearch + , const XMLCh* const searchList + ); + + /** Tells if a string has any occurrence of any character of another + * string within itself + * @param toSearch The string to be searched + * @param searchList The string from which characters to be searched for are drawn + * @return Returns the pointer to the location where the first occurrence of any + * character from searchList is found, + * else returns 0 + */ + static XMLCh* findAny + ( + XMLCh* const toSearch + , const XMLCh* const searchList + ); + + /** Tells if a string has pattern within itself + * @param toSearch The string to be searched + * @param pattern The pattern to be located within the string + * @return Returns index to the location where the pattern was + * found, else returns -1 + */ + static int patternMatch + ( + const XMLCh* const toSearch + , const XMLCh* const pattern + ); + + /** Get the length of the string + * @param src The string whose length is to be determined + * @return Returns the length of the string + */ + static XMLSize_t stringLen(const char* const src); + + /** Get the length of the string + * @param src The string whose length is to be determined + * @return Returns the length of the string + */ + static XMLSize_t stringLen(const XMLCh* const src); + + /** + * + * Checks whether an name is a valid NOTATION according to XML 1.0 + * @param name The string to check its NOTATION validity + * @param manager The memory manager + * @return Returns true if name is NOTATION valid, otherwise false + */ + static bool isValidNOTATION(const XMLCh* const name + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Checks whether an name is a valid EncName. + * @param name The string to check its EncName validity + * @return Returns true if name is EncName valid, otherwise false + */ + static bool isValidEncName(const XMLCh* const name); + + /** + * Checks whether a character is within [a-zA-Z]. + * @param theChar the character to check + * @return Returns true if within the range, otherwise false + */ + + static bool isAlpha(XMLCh const theChar); + + /** + * Checks whether a character is within [0-9]. + * @param theChar the character to check + * @return Returns true if within the range, otherwise false + */ + static bool isDigit(XMLCh const theChar); + + /** + * Checks whether a character is within [0-9a-zA-Z]. + * @param theChar the character to check + * @return Returns true if within the range, otherwise false + */ + static bool isAlphaNum(XMLCh const theChar); + + /** + * Checks whether a character is within [0-9a-fA-F]. + * @param theChar the character to check + * @return Returns true if within the range, otherwise false + */ + static bool isHex(XMLCh const theChar); + + /** Find is the string appears in the enum list + * @param toFind the string to be found + * @param enumList the list + * return true if found + */ + static bool isInList(const XMLCh* const toFind, const XMLCh* const enumList); + + //@} + + /** @name Conversion functions */ + //@{ + + /** Converts size to a text string based a given radix + * + * @param toFormat The size to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void sizeToText + ( + const XMLSize_t toFormat + , char* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts size to a text string based a given radix + * + * @param toFormat The size to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void sizeToText + ( + const XMLSize_t toFormat + , XMLCh* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const unsigned int toFormat + , char* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const unsigned int toFormat + , XMLCh* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const unsigned long toFormat + , char* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const unsigned long toFormat + , XMLCh* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const int toFormat + , char* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const int toFormat + , XMLCh* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const long toFormat + , char* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const long toFormat + , XMLCh* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Converts a string of decimal chars to a binary value + * + * Note that leading and trailing whitespace is legal and will be ignored + * but the remainder must be all decimal digits. + * + * @param toConvert The string of digits to convert + * @param toFill The unsigned int value to fill with the converted + * value. + * @param manager The MemoryManager to use to allocate objects + */ + static bool textToBin + ( + const XMLCh* const toConvert + , unsigned int& toFill + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Converts a string of decimal chars to a binary value + * + * Note that leading and trailing whitespace is legal and will be ignored, + * + * Only one and either of (+,-) after the leading whitespace, before + * any other characters are allowed. + * + * but the remainder must be all decimal digits. + * + * @param toConvert The string of digits to convert + * @param manager The MemoryManager to use to allocate objects + */ + static int parseInt + ( + const XMLCh* const toConvert + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Cut leading chars from a string + * + * @param toCutFrom The string to cut chars from + * @param count The count of leading chars to cut + */ + static void cut + ( + XMLCh* const toCutFrom + , const XMLSize_t count + ); + + /** Transcodes a string to native code-page + * + * NOTE: The returned buffer is dynamically allocated and is the + * responsibility of the caller to delete it when not longer needed. + * You can call XMLString::release to release this returned buffer. + * + * @param toTranscode The string to be transcoded + * @param manager The MemoryManager to use to allocate objects + * @return Returns the transcoded string + * @see XMLString::release(XMLCh**, MemoryManager*) + */ + static char* transcode + ( + const XMLCh* const toTranscode + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Transcodes a string to native code-page (DEPRECATED) + * + * Be aware that when transcoding to an external encoding, that each + * Unicode char can create multiple output bytes. So you cannot assume + * a one to one correspondence of input chars to output bytes. + * + * @param toTranscode The string tobe transcoded + * @param toFill The buffer that is filled with the transcoded value. + * The size of this buffer should atleast be 'maxChars + 1'. + * @param maxChars The maximum number of bytes that the output + * buffer can hold (not including the null, which is why + * toFill should be at least maxChars+1.). + * @param manager The MemoryManager to use to allocate objects + * @return Returns true if successful, false if there was an error + */ + static bool transcode + ( + const XMLCh* const toTranscode + , char* const toFill + , const XMLSize_t maxChars + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Transcodes a string to native code-page + * + * NOTE: The returned buffer is dynamically allocated and is the + * responsibility of the caller to delete it when not longer needed. + * You can call XMLString::release to release this returned buffer. + * + * @param toTranscode The string to be transcoded + * @param manager The MemoryManager to use to allocate objects + * @return Returns the transcoded string + * @see XMLString::release(char**, MemoryManager*) + */ + static XMLCh* transcode + ( + const char* const toTranscode + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Transcodes a string to native code-page (DEPRECATED) + * @param toTranscode The string tobe transcoded + * @param toFill The buffer that is filled with the transcoded value. + * The size of this buffer should atleast be 'maxChars + 1'. + * @param maxChars The maximum number of characters that the output + * buffer can hold (not including the null, which is why + * toFill should be at least maxChars+1.). + * @param manager The MemoryManager to use to allocate objects + * @return Returns true if successful, false if there was an error + */ + static bool transcode + ( + const char* const toTranscode + , XMLCh* const toFill + , const XMLSize_t maxChars + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Trims off extra space characters from the start and end of the string, + * moving the non-space string content back to the start. + * @param toTrim The string to be trimmed. On return this contains the + * trimmed string + */ + static void trim(char* const toTrim); + + /** Trims off extra space characters from the start and end of the string, + * moving the non-space string content back to the start. + * @param toTrim The string to be trimmed. On return this contains + * the trimmed string + */ + static void trim(XMLCh* const toTrim); + + /** Break a string into tokens with space as delimiter, and + * stored in a string vector. The caller owns the string vector + * that is returned, and is responsible for deleting it. + * @param tokenizeSrc String to be tokenized + * @param manager The MemoryManager to use to allocate objects + * @return a vector of all the tokenized string + */ + static BaseRefVectorOf* tokenizeString(const XMLCh* const tokenizeSrc + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Break a string into tokens with the given character as delimiter, and + * stored in a string vector. The caller owns the string vector + * that is returned, and is responsible for deleting it. + * @param tokenizeSrc String to be tokenized + * @param delimiter Delimiter character + * @param manager The MemoryManager to use to allocate objects + * @return a vector of all the tokenized string + */ + static BaseRefVectorOf* tokenizeString(const XMLCh* const tokenizeSrc + , XMLCh delimiter + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + //@} + + /** @name Formatting functions */ + //@{ + /** Creates a UName from a URI and base name. It is in the form + * {url}name, and is commonly used internally to represent fully + * qualified names when namespaces are enabled. + * + * @param pszURI The URI part of the name + * @param pszName The base part of the name + * @return Returns the complete formatted UName + */ + static XMLCh* makeUName + ( + const XMLCh* const pszURI + , const XMLCh* const pszName + ); + + /** + * Internal function to perform token replacement for strings. + * + * @param errText The text (NULL terminated) where the replacement + * is to be done. The size of this buffer should be + * 'maxChars + 1' to account for the final NULL. + * @param maxChars The size of the output buffer, i.e. the maximum + * number of characters that it will hold. If the result is + * larger, it will be truncated. + * @param text1 Replacement text-one + * @param text2 Replacement text-two + * @param text3 Replacement text-three + * @param text4 Replacement text-four + * @param manager The MemoryManager to use to allocate objects + * @return Returns the count of characters that are outputted + */ + static XMLSize_t replaceTokens + ( + XMLCh* const errText + , const XMLSize_t maxChars + , const XMLCh* const text1 + , const XMLCh* const text2 + , const XMLCh* const text3 + , const XMLCh* const text4 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts a string to uppercase + * @param toUpperCase The string which needs to be converted to uppercase. + * On return, this buffer also holds the converted uppercase string + */ + static void upperCase(XMLCh* const toUpperCase); + + /** Converts a string to uppercase + * The routine only uppercases A to Z (other characters not changed). + * @param toUpperCase The string which needs to be converted to uppercase. + * On return, this buffer also holds the converted uppercase string + */ + static void upperCaseASCII(XMLCh* const toUpperCase); + + /** Converts a string to lowercase + * @param toLowerCase The string which needs to be converted to lowercase. + * On return, this buffer also holds the converted lowercase string + */ + static void lowerCase(XMLCh* const toLowerCase); + + /** Converts a string to lowercase + * The routine only lowercases a to z (other characters not changed). + * @param toLowerCase The string which needs to be converted to lowercase. + * On return, this buffer also holds the converted lowercase string + */ + static void lowerCaseASCII(XMLCh* const toLowerCase); + + /** Check if string is WhiteSpace:replace + * @param toCheck The string which needs to be checked. + */ + static bool isWSReplaced(const XMLCh* const toCheck); + + /** Check if string is WhiteSpace:collapse + * @param toCheck The string which needs to be checked. + */ + static bool isWSCollapsed(const XMLCh* const toCheck); + + /** Replace whitespace + * @param toConvert The string which needs to be whitespace replaced. + * On return , this buffer also holds the converted string + * @param manager The MemoryManager to use to allocate objects + */ + static void replaceWS(XMLCh* toConvert + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Collapse whitespace + * @param toConvert The string which needs to be whitespace collapsed. + * On return , this buffer also holds the converted string + * @param manager The MemoryManager to use to allocate objects + */ + static void collapseWS(XMLCh* toConvert + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Remove whitespace + * @param toConvert The string which needs to be whitespace removed. + * On return , this buffer also holds the converted string + * @param manager The MemoryManager to use to allocate objects + */ + static void removeWS(XMLCh* toConvert + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + + /** Remove character + * @param srcString The string + * @param toRemove The character needs to be removed from the string + * @param dstBuffer The buffer containing the result + */ + static void removeChar(const XMLCh* const srcString + , const XMLCh& toRemove + , XMLBuffer& dstBuffer); + + /** + * Fixes a platform dependent absolute path filename to standard URI form. + * 1. Windows: fix 'x:' to 'file:///x:' and convert any backslash to forward slash + * 2. UNIX: fix '/blah/blahblah' to 'file:///blah/blahblah' + * @param str The string that has the absolute path filename + * @param target The target string pre-allocated to store the fixed uri + */ + static void fixURI(const XMLCh* const str, XMLCh* const target); + + //@} + /** @name String Memory Management functions */ + //@{ + /** + * Release the parameter string that was allocated by XMLString::transcode and XMLString::replicate. + * The implementation will call MemoryManager::deallocate and then turn the string to a null pointer. + * + * @param buf The string to be deleted and become a null pointer. + * @param manager The MemoryManager used to allocate the string + */ + static void release + ( + char** buf + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Release the parameter string that was allocated by XMLString::transcode and XMLString::replicate. + * The implementation will call MemoryManager::deallocate and then turn the string to a null pointer. + * + * @param buf The string to be deleted and become a null pointer. + * @param manager The MemoryManager used to allocate the string + */ + static void release + ( + XMLCh** buf + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + +private : + + /** @name Constructors and Destructor */ + //@{ + /** Unimplemented default constructor */ + XMLString(); + /** Unimplemented destructor */ + ~XMLString(); + //@} + + + /** @name Initialization */ + //@{ + /** Init/Term methods called from XMLPlatformUtils class */ + static void initString(XMLLCPTranscoder* const defToUse, + MemoryManager* const manager); + static void termString(); + //@} + + /** + * Called by regionMatches/regionIMatches to validate that we + * have a valid input + */ + static bool validateRegion(const XMLCh* const str1, const int offset1, + const XMLCh* const str2, const int offset2, + const XMLSize_t charCount); + + static MemoryManager* fgMemoryManager; + + friend class XMLPlatformUtils; +}; + + +// --------------------------------------------------------------------------- +// Inline some methods that are either just passthroughs to other string +// methods, or which are key for performance. +// --------------------------------------------------------------------------- +inline void XMLString::moveChars( XMLCh* const targetStr + , const XMLCh* const srcStr + , const XMLSize_t count) +{ + memmove(targetStr, srcStr, count * sizeof(XMLCh)); +} + +inline XMLSize_t XMLString::stringLen(const XMLCh* const src) +{ + if (src == 0) + return 0; + + const XMLCh* pszTmp = src; + + while (*pszTmp++) ; + + return (pszTmp - src - 1); +} + +inline XMLCh* XMLString::replicate(const XMLCh* const toRep, + MemoryManager* const manager) +{ + // If a null string, return a null string! + XMLCh* ret = 0; + if (toRep) + { + const XMLSize_t len = stringLen(toRep); + ret = (XMLCh*) manager->allocate((len+1) * sizeof(XMLCh)); //new XMLCh[len + 1]; + memcpy(ret, toRep, (len + 1) * sizeof(XMLCh)); + } + return ret; +} + +inline bool XMLString::startsWith( const XMLCh* const toTest + , const XMLCh* const prefix) +{ + return (compareNString(toTest, prefix, stringLen(prefix)) == 0); +} + +inline bool XMLString::startsWithI( const XMLCh* const toTest + , const XMLCh* const prefix) +{ + return (compareNIString(toTest, prefix, stringLen(prefix)) == 0); +} + +inline bool XMLString::endsWith(const XMLCh* const toTest, + const XMLCh* const suffix) +{ + + XMLSize_t suffixLen = XMLString::stringLen(suffix); + + return regionMatches(toTest, (int)(XMLString::stringLen(toTest) - suffixLen), + suffix, 0, suffixLen); +} + +inline bool XMLString::validateRegion(const XMLCh* const str1, + const int offset1, + const XMLCh* const str2, + const int offset2, + const XMLSize_t charCount) +{ + + if (offset1 < 0 || offset2 < 0 || + (offset1 + charCount) > XMLString::stringLen(str1) || + (offset2 + charCount) > XMLString::stringLen(str2) ) + return false; + + return true; +} + +inline bool XMLString::equals( const XMLCh* str1 + , const XMLCh* str2) +{ + if (str1 == str2) + return true; + + if (str1 == 0 || str2 == 0) + return ((!str1 || !*str1) && (!str2 || !*str2)); + + while (*str1) + if(*str1++ != *str2++) // they are different (or str2 is shorter and we hit the NULL) + return false; + + // either both ended (and *str2 is 0 too), or str2 is longer + return (*str2==0); +} + +inline bool XMLString::equalsN(const XMLCh* str1, + const XMLCh* str2, + XMLSize_t n) +{ + if (str1 == str2 || n == 0) + return true; + + if (str1 == 0 || str2 == 0) + return ((!str1 || !*str1) && (!str2 || !*str2)); + + for (; n != 0 && *str1 && *str2; --n, ++str1, ++str2) + if(*str1 != *str2) + break; + + return n == 0 || *str1 == *str2; // either equal or both ended premat. +} + +inline bool XMLString::equals( const char* str1 + , const char* str2) +{ + if (str1 == str2) + return true; + + if (str1 == 0 || str2 == 0) + return ((!str1 || !*str1) && (!str2 || !*str2)); + + while (*str1) + if(*str1++ != *str2++) // they are different (or str2 is shorter and we hit the NULL) + return false; + + // either both ended (and *str2 is 0 too), or str2 is longer + return (*str2==0); +} + +inline bool XMLString::equalsN(const char* str1, + const char* str2, + XMLSize_t n) +{ + if (str1 == str2 || n == 0) + return true; + + if (str1 == 0 || str2 == 0) + return ((!str1 || !*str1) && (!str2 || !*str2)); + + for (; n != 0 && *str1 && *str2; --n, ++str1, ++str2) + if(*str1 != *str2) + break; + + return n == 0 || *str1 == *str2; // either equal or both ended premat. +} + +inline int XMLString::lastIndexOf(const XMLCh* const toSearch, const XMLCh ch) +{ + return XMLString::lastIndexOf(ch, toSearch, stringLen(toSearch)); +} + +inline XMLSize_t XMLString::hash(const XMLCh* const tohash + , const XMLSize_t hashModulus) +{ + if (tohash == 0 || *tohash == 0) + return 0; + + const XMLCh* curCh = tohash; + XMLSize_t hashVal = (XMLSize_t)(*curCh++); + + while (*curCh) + hashVal = (hashVal * 38) + (hashVal >> 24) + (XMLSize_t)(*curCh++); + + // Divide by modulus + return hashVal % hashModulus; +} + +inline XMLSize_t XMLString::hashN(const XMLCh* const tohash + , const XMLSize_t n + , const XMLSize_t hashModulus) +{ + if (tohash == 0 || n == 0) + return 0; + + const XMLCh* curCh = tohash; + XMLSize_t hashVal = (XMLSize_t)(*curCh++); + + for(XMLSize_t i=0;i> 24) + (XMLSize_t)(*curCh++); + + // Divide by modulus + return hashVal % hashModulus; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLStringTokenizer.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLStringTokenizer.hpp new file mode 100644 index 000000000000..f948bf607706 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLStringTokenizer.hpp @@ -0,0 +1,218 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLSTRINGTOKENIZER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLSTRINGTOKENIZER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * The string tokenizer class breaks a string into tokens. + * + * The XMLStringTokenizer methods do not distinguish among identifiers, + * numbers, and quoted strings, nor do they recognize and skip comments + * + * A XMLStringTokenizer object internally maintains a current position within + * the string to be tokenized. Some operations advance this current position + * past the characters processed. + */ + + + class XMLUTIL_EXPORT XMLStringTokenizer :public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constructors + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * Constructs a string tokenizer for the specified string. The tokenizer + * uses the default delimiter set, which is "\t\n\r\f": the space + * character, the tab character, the newline character, the + * carriage-return character, and the form-feed character. Delimiter + * characters themselves will not be treated as tokens. + * + * @param srcStr The string to be parsed. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * + */ + XMLStringTokenizer(const XMLCh* const srcStr, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Constructs a string tokenizer for the specified string. The characters + * in the delim argument are the delimiters for separating tokens. + * Delimiter characters themselves will not be treated as tokens. + * + * @param srcStr The string to be parsed. + * @param delim The set of delimiters. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + XMLStringTokenizer(const XMLCh* const srcStr + , const XMLCh* const delim + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + // ----------------------------------------------------------------------- + // Public Destructor + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + + ~XMLStringTokenizer(); + + //@} + + // ----------------------------------------------------------------------- + // Management methods + // ----------------------------------------------------------------------- + /** @name Management Function */ + //@{ + + /** + * Tests if there are more tokens available from this tokenizer's string. + * + * Returns true if and only if there is at least one token in the string + * after the current position; false otherwise. + */ + bool hasMoreTokens(); + + /** + * Calculates the number of times that this tokenizer's nextToken method + * can be called to return a valid token. The current position is not + * advanced. + * + * Returns the number of tokens remaining in the string using the current + * delimiter set. + */ + unsigned int countTokens(); + + /** + * Returns the next token from this string tokenizer. + * + * Function allocated, function managed (fafm). The calling function + * does not need to worry about deleting the returned pointer. + */ + XMLCh* nextToken(); + + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLStringTokenizer(const XMLStringTokenizer&); + XMLStringTokenizer& operator=(const XMLStringTokenizer&); + + // ----------------------------------------------------------------------- + // CleanUp methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + bool isDelimeter(const XMLCh ch); + + // ----------------------------------------------------------------------- + // Private data members + // + // fOffset + // The current position in the parsed string. + // + // fStringLen + // The length of the string parsed (for convenience). + // + // fString + // The string to be parsed + // + // fDelimeters + // A set of delimiter characters + // + // fTokens + // A vector of the token strings + // ----------------------------------------------------------------------- + XMLSize_t fOffset; + XMLSize_t fStringLen; + XMLCh* fString; + const XMLCh* fDelimeters; + RefArrayVectorOf* fTokens; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// XMLStringTokenizer: Helper methods +// --------------------------------------------------------------------------- +inline bool XMLStringTokenizer::isDelimeter(const XMLCh ch) { + + return XMLString::indexOf(fDelimeters, ch) == -1 ? false : true; +} + + +// --------------------------------------------------------------------------- +// XMLStringTokenizer: Management methods +// --------------------------------------------------------------------------- +inline unsigned int XMLStringTokenizer::countTokens() { + + if (fStringLen == 0) + return 0; + + unsigned int tokCount = 0; + bool inToken = false; + + for (XMLSize_t i= fOffset; i< fStringLen; i++) { + + if (isDelimeter(fString[i])) { + + if (inToken) { + inToken = false; + } + + continue; + } + + if (!inToken) { + + tokCount++; + inToken = true; + } + + } // end for + + return tokCount; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XMLStringTokenizer.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLUCS4Transcoder.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLUCS4Transcoder.hpp new file mode 100644 index 000000000000..2450f9ba8de2 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLUCS4Transcoder.hpp @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLUCS4TRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLUCS4TRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple UCS4 transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +class XMLUTIL_EXPORT XMLUCS4Transcoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLUCS4Transcoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , const bool swapped + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLUCS4Transcoder(); + + + // ----------------------------------------------------------------------- + // Implementation of the XMLTranscoder interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLUCS4Transcoder(const XMLUCS4Transcoder&); + XMLUCS4Transcoder& operator=(const XMLUCS4Transcoder&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fSwapped + // This tells us if our input is going to be in the same endianness + // as the local host or swapped. + // ----------------------------------------------------------------------- + bool fSwapped; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLURL.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLURL.hpp new file mode 100644 index 000000000000..e60c7dc45b73 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLURL.hpp @@ -0,0 +1,292 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLURL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLURL_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class BinInputStream; + +// +// This class supports file, http, and ftp style URLs. All others are +// rejected +// +class XMLUTIL_EXPORT XMLURL : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Class types + // + // And they must remain in this order because they are indexes into an + // array internally! + // ----------------------------------------------------------------------- + enum Protocols + { + File + , HTTP + , FTP + , HTTPS + + , Protocols_Count + , Unknown + }; + + + // ----------------------------------------------------------------------- + // Public static methods + // ----------------------------------------------------------------------- + static Protocols lookupByName(const XMLCh* const protoName); + static bool parse(const XMLCh* const urlText, XMLURL& xmlURL); + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLURL(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + XMLURL + ( + const XMLCh* const baseURL + , const XMLCh* const relativeURL + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + XMLURL + ( + const XMLCh* const baseURL + , const char* const relativeURL + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + XMLURL + ( + const XMLURL& baseURL + , const XMLCh* const relativeURL + ); + XMLURL + ( + const XMLURL& baseURL + , const char* const relativeURL + ); + XMLURL + ( + const XMLCh* const urlText + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + XMLURL + ( + const char* const urlText + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + XMLURL(const XMLURL& toCopy); + virtual ~XMLURL(); + + + // ----------------------------------------------------------------------- + // Operators + // ----------------------------------------------------------------------- + XMLURL& operator=(const XMLURL& toAssign); + bool operator==(const XMLURL& toCompare) const; + bool operator!=(const XMLURL& toCompare) const; + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const XMLCh* getFragment() const; + const XMLCh* getHost() const; + const XMLCh* getPassword() const; + const XMLCh* getPath() const; + unsigned int getPortNum() const; + Protocols getProtocol() const; + const XMLCh* getProtocolName() const; + const XMLCh* getQuery() const; + const XMLCh* getURLText() const; + const XMLCh* getUser() const; + MemoryManager* getMemoryManager() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setURL(const XMLCh* const urlText); + void setURL + ( + const XMLCh* const baseURL + , const XMLCh* const relativeURL + ); + void setURL + ( + const XMLURL& baseURL + , const XMLCh* const relativeURL + ); + // a version of setURL that doesn't throw malformed url exceptions + bool setURL( + const XMLCh* const baseURL + , const XMLCh* const relativeURL + , XMLURL& xmlURL); + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + bool isRelative() const; + bool hasInvalidChar() const; + BinInputStream* makeNewStream() const; + void makeRelativeTo(const XMLCh* const baseURLText); + void makeRelativeTo(const XMLURL& baseURL); + + +private: + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void buildFullText(); + void cleanUp(); + bool conglomerateWithBase(const XMLURL& baseURL, bool useExceptions=true); + void parse + ( + const XMLCh* const urlText + ); + + + // ----------------------------------------------------------------------- + // Data members + // + // fFragment + // The fragment part of the URL, if any. If none, its a null. + // + // fHost + // The host part of the URL that was parsed out. This one will often + // be null (or "localhost", which also means the current machine.) + // + // fPassword + // The password found, if any. If none then its a null. + // + // fPath + // The path part of the URL that was parsed out, if any. If none, + // then its a null. + // + // fPortNum + // The port that was indicated in the URL. If no port was provided + // explicitly, then its left zero. + // + // fProtocol + // Indicates the type of the URL's source. The text of the prefix + // can be gotten from this. + // + // fQuery + // The query part of the URL, if any. If none, then its a null. + // + // fUser + // The username found, if any. If none, then its a null. + // + // fURLText + // This is a copy of the URL text, after it has been taken apart, + // made relative if needed, canonicalized, and then put back + // together. Its only created upon demand. + // + // fHasInvalidChar + // This indicates if the URL Text contains invalid characters as per + // RFC 2396 standard. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + XMLCh* fFragment; + XMLCh* fHost; + XMLCh* fPassword; + XMLCh* fPath; + unsigned int fPortNum; + Protocols fProtocol; + XMLCh* fQuery; + XMLCh* fUser; + XMLCh* fURLText; + bool fHasInvalidChar; +}; + + +// --------------------------------------------------------------------------- +// XMLURL: Public operators +// --------------------------------------------------------------------------- +inline bool XMLURL::operator!=(const XMLURL& toCompare) const +{ + return !operator==(toCompare); +} + + +// --------------------------------------------------------------------------- +// XMLURL: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh* XMLURL::getFragment() const +{ + return fFragment; +} + +inline const XMLCh* XMLURL::getHost() const +{ + return fHost; +} + +inline const XMLCh* XMLURL::getPassword() const +{ + return fPassword; +} + +inline const XMLCh* XMLURL::getPath() const +{ + return fPath; +} + +inline XMLURL::Protocols XMLURL::getProtocol() const +{ + return fProtocol; +} + +inline const XMLCh* XMLURL::getQuery() const +{ + return fQuery; +} + +inline const XMLCh* XMLURL::getUser() const +{ + return fUser; +} + +inline const XMLCh* XMLURL::getURLText() const +{ + // + // Fault it in if not already. Since this is a const method and we + // can't use mutable members due the compilers we have to support, + // we have to cast off the constness. + // + if (!fURLText) + ((XMLURL*)this)->buildFullText(); + + return fURLText; +} + +inline MemoryManager* XMLURL::getMemoryManager() const +{ + return fMemoryManager; +} + +MakeXMLException(MalformedURLException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLUTF16Transcoder.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLUTF16Transcoder.hpp new file mode 100644 index 000000000000..a2478288ed2d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLUTF16Transcoder.hpp @@ -0,0 +1,105 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLUTF16TRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLUTF16TRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple UTF16 transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +class XMLUTIL_EXPORT XMLUTF16Transcoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLUTF16Transcoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , const bool swapped + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLUTF16Transcoder(); + + + // ----------------------------------------------------------------------- + // Implementation of the XMLTranscoder interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLUTF16Transcoder(const XMLUTF16Transcoder&); + XMLUTF16Transcoder& operator=(const XMLUTF16Transcoder&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fSwapped + // Indicates whether the encoding is of the opposite endianness from + // the local host. + // ----------------------------------------------------------------------- + bool fSwapped; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLUTF8Transcoder.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLUTF8Transcoder.hpp new file mode 100644 index 000000000000..053b31ee5aa9 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLUTF8Transcoder.hpp @@ -0,0 +1,118 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLUTF8TRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLUTF8TRANSCODER_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple UTF8 transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +class XMLUTIL_EXPORT XMLUTF8Transcoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLUTF8Transcoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLUTF8Transcoder(); + + + // ----------------------------------------------------------------------- + // Implementation of the XMLTranscoder interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + +private : + + inline void checkTrailingBytes( + const XMLByte toCheck + , const unsigned int trailingBytes + , const unsigned int position + ) const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLUTF8Transcoder(const XMLUTF8Transcoder&); + XMLUTF8Transcoder& operator=(const XMLUTF8Transcoder&); +}; + +inline +void XMLUTF8Transcoder::checkTrailingBytes(const XMLByte toCheck + , const unsigned int trailingBytes + , const unsigned int position) const +{ + + if((toCheck & 0xC0) != 0x80) + { + char len[2] = {(char)(trailingBytes+0x31), 0}; + char pos[2] = {(char)(position+0x31), 0}; + char byte[2] = {(char)toCheck,0}; + ThrowXMLwithMemMgr3(UTFDataFormatException, XMLExcepts::UTF8_FormatError, pos, byte, len, getMemoryManager()); + } + +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLUni.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLUni.hpp new file mode 100644 index 000000000000..078efff33bec --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLUni.hpp @@ -0,0 +1,343 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// This file contains the grunt work constants for Unicode characters and +// common Unicode constant strings. These cannot be created normally because +// we have to compile on systems that cannot do the L"" style prefix. So +// they must be created as constant values for Unicode code points and the +// strings built up as arrays of those constants. +// --------------------------------------------------------------------------- + +#if !defined(XERCESC_INCLUDE_GUARD_XMLUNI_HPP) +#define XERCESC_INCLUDE_GUARD_XMLUNI_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Ignore warning about private constructor +#if defined __GNUC__ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5)) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wctor-dtor-privacy" +#endif + +class XMLUTIL_EXPORT XMLUni +{ +public : + // ----------------------------------------------------------------------- + // These are constant strings that are common in XML data. Because + // of the limitation of the compilers we have to work with, these are + // done as arrays of XMLCh characters, not as constant strings. + // ----------------------------------------------------------------------- + static const XMLCh fgAnyString[]; + static const XMLCh fgAttListString[]; + static const XMLCh fgCommentString[]; + static const XMLCh fgCDATAString[]; + static const XMLCh fgDefaultString[]; + static const XMLCh fgDocTypeString[]; + static const XMLCh fgEBCDICEncodingString[]; + static const XMLCh fgElemString[]; + static const XMLCh fgEmptyString[]; + static const XMLCh fgEncodingString[]; + static const XMLCh fgEntitString[]; + static const XMLCh fgEntityString[]; + static const XMLCh fgEntitiesString[]; + static const XMLCh fgEnumerationString[]; + static const XMLCh fgExceptDomain[]; + static const XMLCh fgFixedString[]; + static const XMLCh fgIBM037EncodingString[]; + static const XMLCh fgIBM037EncodingString2[]; + static const XMLCh fgIBM1047EncodingString[]; + static const XMLCh fgIBM1047EncodingString2[]; + static const XMLCh fgIBM1140EncodingString[]; + static const XMLCh fgIBM1140EncodingString2[]; + static const XMLCh fgIBM1140EncodingString3[]; + static const XMLCh fgIBM1140EncodingString4[]; + static const XMLCh fgIESString[]; + static const XMLCh fgIDString[]; + static const XMLCh fgIDRefString[]; + static const XMLCh fgIDRefsString[]; + static const XMLCh fgImpliedString[]; + static const XMLCh fgIgnoreString[]; + static const XMLCh fgIncludeString[]; + static const XMLCh fgISO88591EncodingString[]; + static const XMLCh fgISO88591EncodingString2[]; + static const XMLCh fgISO88591EncodingString3[]; + static const XMLCh fgISO88591EncodingString4[]; + static const XMLCh fgISO88591EncodingString5[]; + static const XMLCh fgISO88591EncodingString6[]; + static const XMLCh fgISO88591EncodingString7[]; + static const XMLCh fgISO88591EncodingString8[]; + static const XMLCh fgISO88591EncodingString9[]; + static const XMLCh fgISO88591EncodingString10[]; + static const XMLCh fgISO88591EncodingString11[]; + static const XMLCh fgISO88591EncodingString12[]; + static const XMLCh fgLocalHostString[]; + static const XMLCh fgNoString[]; + static const XMLCh fgNotationString[]; + static const XMLCh fgNDATAString[]; + static const XMLCh fgNmTokenString[]; + static const XMLCh fgNmTokensString[]; + static const XMLCh fgPCDATAString[]; + static const XMLCh fgPIString[]; + static const XMLCh fgPubIDString[]; + static const XMLCh fgRefString[]; + static const XMLCh fgRequiredString[]; + static const XMLCh fgStandaloneString[]; + static const XMLCh fgVersion1[]; + static const XMLCh fgVersion1_0[]; + static const XMLCh fgVersion1_1[]; + static const XMLCh fgSysIDString[]; + static const XMLCh fgUnknownURIName[]; + static const XMLCh fgUCS4EncodingString[]; + static const XMLCh fgUCS4EncodingString2[]; + static const XMLCh fgUCS4EncodingString3[]; + static const XMLCh fgUCS4EncodingString4[]; + static const XMLCh fgUCS4EncodingString5[]; + static const XMLCh fgUCS4BEncodingString[]; + static const XMLCh fgUCS4BEncodingString2[]; + static const XMLCh fgUCS4LEncodingString[]; + static const XMLCh fgUCS4LEncodingString2[]; + static const XMLCh fgUSASCIIEncodingString[]; + static const XMLCh fgUSASCIIEncodingString2[]; + static const XMLCh fgUSASCIIEncodingString3[]; + static const XMLCh fgUSASCIIEncodingString4[]; + static const XMLCh fgUTF8EncodingString[]; + static const XMLCh fgUTF8EncodingString2[]; + static const XMLCh fgUTF16EncodingString[]; + static const XMLCh fgUTF16EncodingString2[]; + static const XMLCh fgUTF16EncodingString3[]; + static const XMLCh fgUTF16EncodingString4[]; + static const XMLCh fgUTF16EncodingString5[]; + static const XMLCh fgUTF16EncodingString6[]; + static const XMLCh fgUTF16EncodingString7[]; + static const XMLCh fgUTF16BEncodingString[]; + static const XMLCh fgUTF16BEncodingString2[]; + static const XMLCh fgUTF16LEncodingString[]; + static const XMLCh fgUTF16LEncodingString2[]; + static const XMLCh fgVersionString[]; + static const XMLCh fgValidityDomain[]; + static const XMLCh fgWin1252EncodingString[]; + static const XMLCh fgXMLChEncodingString[]; + static const XMLCh fgXMLDOMMsgDomain[]; + static const XMLCh fgXMLString[]; + static const XMLCh fgXMLStringSpace[]; + static const XMLCh fgXMLStringHTab[]; + static const XMLCh fgXMLStringCR[]; + static const XMLCh fgXMLStringLF[]; + static const XMLCh fgXMLStringSpaceU[]; + static const XMLCh fgXMLStringHTabU[]; + static const XMLCh fgXMLStringCRU[]; + static const XMLCh fgXMLStringLFU[]; + static const XMLCh fgXMLDeclString[]; + static const XMLCh fgXMLDeclStringSpace[]; + static const XMLCh fgXMLDeclStringHTab[]; + static const XMLCh fgXMLDeclStringLF[]; + static const XMLCh fgXMLDeclStringCR[]; + static const XMLCh fgXMLDeclStringSpaceU[]; + static const XMLCh fgXMLDeclStringHTabU[]; + static const XMLCh fgXMLDeclStringLFU[]; + static const XMLCh fgXMLDeclStringCRU[]; + static const XMLCh fgXMLNSString[]; + static const XMLCh fgXMLNSColonString[]; + static const XMLCh fgXMLNSURIName[]; + static const XMLCh fgXMLErrDomain[]; + static const XMLCh fgXMLURIName[]; + static const XMLCh fgInfosetURIName[]; + static const XMLCh fgYesString[]; + static const XMLCh fgZeroLenString[]; + static const XMLCh fgDTDEntityString[]; + static const XMLCh fgAmp[]; + static const XMLCh fgLT[]; + static const XMLCh fgGT[]; + static const XMLCh fgQuot[]; + static const XMLCh fgApos[]; + static const XMLCh fgWFXMLScanner[]; + static const XMLCh fgIGXMLScanner[]; + static const XMLCh fgSGXMLScanner[]; + static const XMLCh fgDGXMLScanner[]; + static const XMLCh fgXSAXMLScanner[]; + static const XMLCh fgCDataStart[]; + static const XMLCh fgCDataEnd[]; + + // Exception Name + static const XMLCh fgArrayIndexOutOfBoundsException_Name[]; + static const XMLCh fgEmptyStackException_Name[]; + static const XMLCh fgIllegalArgumentException_Name[]; + static const XMLCh fgInvalidCastException_Name[]; + static const XMLCh fgIOException_Name[]; + static const XMLCh fgNoSuchElementException_Name[]; + static const XMLCh fgNullPointerException_Name[]; + static const XMLCh fgXMLPlatformUtilsException_Name[]; + static const XMLCh fgRuntimeException_Name[]; + static const XMLCh fgTranscodingException_Name[]; + static const XMLCh fgUnexpectedEOFException_Name[]; + static const XMLCh fgUnsupportedEncodingException_Name[]; + static const XMLCh fgUTFDataFormatException_Name[]; + static const XMLCh fgNetAccessorException_Name[]; + static const XMLCh fgMalformedURLException_Name[]; + static const XMLCh fgNumberFormatException_Name[]; + static const XMLCh fgParseException_Name[]; + static const XMLCh fgInvalidDatatypeFacetException_Name[]; + static const XMLCh fgInvalidDatatypeValueException_Name[]; + static const XMLCh fgSchemaDateTimeException_Name[]; + static const XMLCh fgXPathException_Name[]; + static const XMLCh fgXSerializationException_Name[]; + static const XMLCh fgXMLXIncludeException_Name[]; + + // Numerical String + static const XMLCh fgNegINFString[]; + static const XMLCh fgNegZeroString[]; + static const XMLCh fgPosZeroString[]; + static const XMLCh fgPosINFString[]; + static const XMLCh fgNaNString[]; + static const XMLCh fgEString[]; + static const XMLCh fgZeroString[]; + static const XMLCh fgNullString[]; + + // Xerces features/properties names + static const XMLCh fgXercesDynamic[]; + static const XMLCh fgXercesSchema[]; + static const XMLCh fgXercesSchemaFullChecking[]; + static const XMLCh fgXercesLoadSchema[]; + static const XMLCh fgXercesIdentityConstraintChecking[]; + static const XMLCh fgXercesSchemaExternalSchemaLocation[]; + static const XMLCh fgXercesSchemaExternalNoNameSpaceSchemaLocation[]; + static const XMLCh fgXercesSecurityManager[]; + static const XMLCh fgXercesLoadExternalDTD[]; + static const XMLCh fgXercesContinueAfterFatalError[]; + static const XMLCh fgXercesValidationErrorAsFatal[]; + static const XMLCh fgXercesUserAdoptsDOMDocument[]; + static const XMLCh fgXercesCacheGrammarFromParse[]; + static const XMLCh fgXercesUseCachedGrammarInParse[]; + static const XMLCh fgXercesScannerName[]; + static const XMLCh fgXercesParserUseDocumentFromImplementation[]; + static const XMLCh fgXercesCalculateSrcOfs[]; + static const XMLCh fgXercesStandardUriConformant[]; + static const XMLCh fgXercesDOMHasPSVIInfo[]; + static const XMLCh fgXercesGenerateSyntheticAnnotations[]; + static const XMLCh fgXercesValidateAnnotations[]; + static const XMLCh fgXercesIgnoreCachedDTD[]; + static const XMLCh fgXercesIgnoreAnnotations[]; + static const XMLCh fgXercesDisableDefaultEntityResolution[]; + static const XMLCh fgXercesSkipDTDValidation[]; + static const XMLCh fgXercesEntityResolver[]; + static const XMLCh fgXercesHandleMultipleImports[]; + static const XMLCh fgXercesDoXInclude[]; + static const XMLCh fgXercesLowWaterMark[]; + + // SAX2 features/properties names + static const XMLCh fgSAX2CoreValidation[]; + static const XMLCh fgSAX2CoreNameSpaces[]; + static const XMLCh fgSAX2CoreNameSpacePrefixes[]; + + // Introduced in DOM Level 3 + // DOMLSParser features + static const XMLCh fgDOMCanonicalForm[]; + static const XMLCh fgDOMCDATASections[]; + static const XMLCh fgDOMComments[]; + static const XMLCh fgDOMCharsetOverridesXMLEncoding[]; + static const XMLCh fgDOMCheckCharacterNormalization[]; + static const XMLCh fgDOMDatatypeNormalization[]; + static const XMLCh fgDOMDisallowDoctype[]; + static const XMLCh fgDOMElementContentWhitespace[]; + static const XMLCh fgDOMErrorHandler[]; + static const XMLCh fgDOMEntities[]; + static const XMLCh fgDOMIgnoreUnknownCharacterDenormalization[]; + static const XMLCh fgDOMInfoset[]; + static const XMLCh fgDOMNamespaces[]; + static const XMLCh fgDOMNamespaceDeclarations[]; + static const XMLCh fgDOMNormalizeCharacters[]; + static const XMLCh fgDOMResourceResolver[]; + static const XMLCh fgDOMSchemaLocation[]; + static const XMLCh fgDOMSchemaType[]; + static const XMLCh fgDOMSplitCDATASections[]; + static const XMLCh fgDOMSupportedMediatypesOnly[]; + static const XMLCh fgDOMValidate[]; + static const XMLCh fgDOMValidateIfSchema[]; + static const XMLCh fgDOMWellFormed[]; + + static const XMLCh fgDOMXMLSchemaType[]; + static const XMLCh fgDOMDTDType[]; + + // Introduced in DOM Level 3 + // DOMLSSerializer feature + static const XMLCh fgDOMWRTCanonicalForm[]; + static const XMLCh fgDOMWRTDiscardDefaultContent[]; + static const XMLCh fgDOMWRTEntities[]; + static const XMLCh fgDOMWRTFormatPrettyPrint[]; + static const XMLCh fgDOMWRTNormalizeCharacters[]; + static const XMLCh fgDOMWRTSplitCdataSections[]; + static const XMLCh fgDOMWRTValidation[]; + static const XMLCh fgDOMWRTWhitespaceInElementContent[]; + static const XMLCh fgDOMWRTBOM[]; + static const XMLCh fgDOMXMLDeclaration[]; + static const XMLCh fgDOMWRTXercesPrettyPrint[]; + + // Private interface names + static const XMLCh fgXercescInterfacePSVITypeInfo[]; + static const XMLCh fgXercescInterfaceDOMDocumentTypeImpl[]; + static const XMLCh fgXercescInterfaceDOMDocumentImpl[]; + static const XMLCh fgXercescInterfaceDOMMemoryManager[]; + + // Locale + static const char fgXercescDefaultLocale[]; + + // Default Exception String + static const XMLCh fgDefErrMsg[]; + + // Datatype + static const XMLCh fgValueZero[]; + static const XMLCh fgNegOne[]; + static const XMLCh fgValueOne[]; + static const XMLCh fgLongMaxInc[]; + static const XMLCh fgLongMinInc[]; + static const XMLCh fgIntMaxInc[]; + static const XMLCh fgIntMinInc[]; + static const XMLCh fgShortMaxInc[]; + static const XMLCh fgShortMinInc[]; + static const XMLCh fgByteMaxInc[]; + static const XMLCh fgByteMinInc[]; + static const XMLCh fgULongMaxInc[]; + static const XMLCh fgUIntMaxInc[]; + static const XMLCh fgUShortMaxInc[]; + static const XMLCh fgUByteMaxInc[]; + static const XMLCh fgLangPattern[]; + + static const XMLCh fgBooleanValueSpace[][8]; + static const XMLSize_t fgBooleanValueSpaceArraySize; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLUni(); +}; + +#if defined __GNUC__ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5)) +# pragma GCC diagnostic pop +#endif + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLUniDefs.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLUniDefs.hpp new file mode 100644 index 000000000000..fc2cece07eb8 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLUniDefs.hpp @@ -0,0 +1,154 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLUNIDEFS_HPP) +#define XERCESC_INCLUDE_GUARD_XMLUNIDEFS_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Constants for the Unicode characters of interest to us in an XML parser +// We don't put these inside the class because then they could not be const +// inline values, which would have significant performance ramifications. +// +// We cannot use a namespace because of the requirement to support old +// compilers. +// --------------------------------------------------------------------------- +const XMLCh chNull = 0x00; +const XMLCh chHTab = 0x09; +const XMLCh chLF = 0x0A; +const XMLCh chVTab = 0x0B; +const XMLCh chFF = 0x0C; +const XMLCh chCR = 0x0D; +const XMLCh chAmpersand = 0x26; +const XMLCh chAsterisk = 0x2A; +const XMLCh chAt = 0x40; +const XMLCh chBackSlash = 0x5C; +const XMLCh chBang = 0x21; +const XMLCh chCaret = 0x5E; +const XMLCh chCloseAngle = 0x3E; +const XMLCh chCloseCurly = 0x7D; +const XMLCh chCloseParen = 0x29; +const XMLCh chCloseSquare = 0x5D; +const XMLCh chColon = 0x3A; +const XMLCh chComma = 0x2C; +const XMLCh chDash = 0x2D; +const XMLCh chDollarSign = 0x24; +const XMLCh chDoubleQuote = 0x22; +const XMLCh chEqual = 0x3D; +const XMLCh chForwardSlash = 0x2F; +const XMLCh chGrave = 0x60; +const XMLCh chNEL = 0x85; +const XMLCh chOpenAngle = 0x3C; +const XMLCh chOpenCurly = 0x7B; +const XMLCh chOpenParen = 0x28; +const XMLCh chOpenSquare = 0x5B; +const XMLCh chPercent = 0x25; +const XMLCh chPeriod = 0x2E; +const XMLCh chPipe = 0x7C; +const XMLCh chPlus = 0x2B; +const XMLCh chPound = 0x23; +const XMLCh chQuestion = 0x3F; +const XMLCh chSingleQuote = 0x27; +const XMLCh chSpace = 0x20; +const XMLCh chSemiColon = 0x3B; +const XMLCh chTilde = 0x7E; +const XMLCh chUnderscore = 0x5F; + +const XMLCh chSwappedUnicodeMarker = XMLCh(0xFFFE); +const XMLCh chUnicodeMarker = XMLCh(0xFEFF); + +const XMLCh chDigit_0 = 0x30; +const XMLCh chDigit_1 = 0x31; +const XMLCh chDigit_2 = 0x32; +const XMLCh chDigit_3 = 0x33; +const XMLCh chDigit_4 = 0x34; +const XMLCh chDigit_5 = 0x35; +const XMLCh chDigit_6 = 0x36; +const XMLCh chDigit_7 = 0x37; +const XMLCh chDigit_8 = 0x38; +const XMLCh chDigit_9 = 0x39; + +const XMLCh chLatin_A = 0x41; +const XMLCh chLatin_B = 0x42; +const XMLCh chLatin_C = 0x43; +const XMLCh chLatin_D = 0x44; +const XMLCh chLatin_E = 0x45; +const XMLCh chLatin_F = 0x46; +const XMLCh chLatin_G = 0x47; +const XMLCh chLatin_H = 0x48; +const XMLCh chLatin_I = 0x49; +const XMLCh chLatin_J = 0x4A; +const XMLCh chLatin_K = 0x4B; +const XMLCh chLatin_L = 0x4C; +const XMLCh chLatin_M = 0x4D; +const XMLCh chLatin_N = 0x4E; +const XMLCh chLatin_O = 0x4F; +const XMLCh chLatin_P = 0x50; +const XMLCh chLatin_Q = 0x51; +const XMLCh chLatin_R = 0x52; +const XMLCh chLatin_S = 0x53; +const XMLCh chLatin_T = 0x54; +const XMLCh chLatin_U = 0x55; +const XMLCh chLatin_V = 0x56; +const XMLCh chLatin_W = 0x57; +const XMLCh chLatin_X = 0x58; +const XMLCh chLatin_Y = 0x59; +const XMLCh chLatin_Z = 0x5A; + +const XMLCh chLatin_a = 0x61; +const XMLCh chLatin_b = 0x62; +const XMLCh chLatin_c = 0x63; +const XMLCh chLatin_d = 0x64; +const XMLCh chLatin_e = 0x65; +const XMLCh chLatin_f = 0x66; +const XMLCh chLatin_g = 0x67; +const XMLCh chLatin_h = 0x68; +const XMLCh chLatin_i = 0x69; +const XMLCh chLatin_j = 0x6A; +const XMLCh chLatin_k = 0x6B; +const XMLCh chLatin_l = 0x6C; +const XMLCh chLatin_m = 0x6D; +const XMLCh chLatin_n = 0x6E; +const XMLCh chLatin_o = 0x6F; +const XMLCh chLatin_p = 0x70; +const XMLCh chLatin_q = 0x71; +const XMLCh chLatin_r = 0x72; +const XMLCh chLatin_s = 0x73; +const XMLCh chLatin_t = 0x74; +const XMLCh chLatin_u = 0x75; +const XMLCh chLatin_v = 0x76; +const XMLCh chLatin_w = 0x77; +const XMLCh chLatin_x = 0x78; +const XMLCh chLatin_y = 0x79; +const XMLCh chLatin_z = 0x7A; + +const XMLCh chYenSign = 0xA5; +const XMLCh chWonSign = 0x20A9; + +const XMLCh chLineSeparator = 0x2028; +const XMLCh chParagraphSeparator = 0x2029; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLUri.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLUri.hpp new file mode 100644 index 000000000000..94099fde69dd --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLUri.hpp @@ -0,0 +1,663 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLURI_HPP) +#define XERCESC_INCLUDE_GUARD_XMLURI_HPP + +#include +#include + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/* + * This class is a direct port of Java's URI class, to distinguish + * itself from the XMLURL, we use the name XMLUri instead of + * XMLURI. + * + * TODO: how to relate XMLUri and XMLURL since URL is part of URI. + * + */ + +class XMLUTIL_EXPORT XMLUri : public XSerializable, public XMemory +{ +public: + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** + * Construct a new URI from a URI specification string. + * + * If the specification follows the "generic URI" syntax, (two slashes + * following the first colon), the specification will be parsed + * accordingly - setting the + * scheme, + * userinfo, + * host, + * port, + * path, + * querystring and + * fragment + * fields as necessary. + * + * If the specification does not follow the "generic URI" syntax, + * the specification is parsed into a + * scheme and + * scheme-specific part (stored as the path) only. + * + * @param uriSpec the URI specification string (cannot be null or empty) + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * + * ctor# 2 + * + */ + XMLUri(const XMLCh* const uriSpec, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Construct a new URI from a base URI and a URI specification string. + * The URI specification string may be a relative URI. + * + * @param baseURI the base URI (cannot be null if uriSpec is null or + * empty) + * + * @param uriSpec the URI specification string (cannot be null or + * empty if base is null) + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * + * ctor# 7 relative ctor + * + */ + XMLUri(const XMLUri* const baseURI + , const XMLCh* const uriSpec + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Copy constructor + */ + XMLUri(const XMLUri& toCopy); + XMLUri& operator=(const XMLUri& toAssign); + + virtual ~XMLUri(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Get the URI as a string specification. See RFC 2396 Section 5.2. + * + * @return the URI string specification + */ + const XMLCh* getUriText() const; + + /** + * Get the scheme for this URI. + * + * @return the scheme for this URI + */ + const XMLCh* getScheme() const; + + /** + * Get the userinfo for this URI. + * + * @return the userinfo for this URI (null if not specified). + */ + const XMLCh* getUserInfo() const; + + + /** + * Get the host for this URI. + * + * @return the host for this URI (null if not specified). + */ + const XMLCh* getHost() const; + + /** + * Get the port for this URI. + * + * @return the port for this URI (-1 if not specified). + */ + int getPort() const; + + /** + * Get the registry based authority for this URI. + * + * @return the registry based authority (null if not specified). + */ + const XMLCh* getRegBasedAuthority() const; + + /** + * Get the path for this URI. Note that the value returned is the path + * only and does not include the query string or fragment. + * + * @return the path for this URI. + */ + const XMLCh* getPath() const; + + /** + * Get the query string for this URI. + * + * @return the query string for this URI. Null is returned if there + * was no "?" in the URI spec, empty string if there was a + * "?" but no query string following it. + */ + const XMLCh* getQueryString() const; + + /** + * Get the fragment for this URI. + * + * @return the fragment for this URI. Null is returned if there + * was no "#" in the URI spec, empty string if there was a + * "#" but no fragment following it. + */ + const XMLCh* getFragment() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** + * Set the scheme for this URI. The scheme is converted to lowercase + * before it is set. + * + * @param newScheme the scheme for this URI (cannot be null) + * + */ + void setScheme(const XMLCh* const newScheme); + + /** + * Set the userinfo for this URI. If a non-null value is passed in and + * the host value is null, then an exception is thrown. + * + * @param newUserInfo the userinfo for this URI + * + */ + void setUserInfo(const XMLCh* const newUserInfo); + + /** + * Set the host for this URI. If null is passed in, the userinfo + * field is also set to null and the port is set to -1. + * + * Note: This method overwrites registry based authority if it + * previously existed in this URI. + * + * @param newHost the host for this URI + * + */ + void setHost(const XMLCh* const newHost); + + /** + * Set the port for this URI. -1 is used to indicate that the port is + * not specified, otherwise valid port numbers are between 0 and 65535. + * If a valid port number is passed in and the host field is null, + * an exception is thrown. + * + * @param newPort the port number for this URI + * + */ + void setPort(int newPort); + + /** + * Sets the registry based authority for this URI. + * + * Note: This method overwrites server based authority + * if it previously existed in this URI. + * + * @param newRegAuth the registry based authority for this URI + */ + void setRegBasedAuthority(const XMLCh* const newRegAuth); + + /** + * Set the path for this URI. + * + * If the supplied path is null, then the + * query string and fragment are set to null as well. + * + * If the supplied path includes a query string and/or fragment, + * these fields will be parsed and set as well. + * + * Note: + * + * For URIs following the "generic URI" syntax, the path + * specified should start with a slash. + * + * For URIs that do not follow the generic URI syntax, this method + * sets the scheme-specific part. + * + * @param newPath the path for this URI (may be null) + * + */ + void setPath(const XMLCh* const newPath); + + /** + * Set the query string for this URI. A non-null value is valid only + * if this is an URI conforming to the generic URI syntax and + * the path value is not null. + * + * @param newQueryString the query string for this URI + * + */ + void setQueryString(const XMLCh* const newQueryString); + + /** + * Set the fragment for this URI. A non-null value is valid only + * if this is a URI conforming to the generic URI syntax and + * the path value is not null. + * + * @param newFragment the fragment for this URI + * + */ + void setFragment(const XMLCh* const newFragment); + + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + + /** + * Determine whether a given string contains only URI characters (also + * called "uric" in RFC 2396). uric consist of all reserved + * characters, unreserved characters and escaped characters. + * + * @return true if the string is comprised of uric, false otherwise + */ + static bool isURIString(const XMLCh* const uric); + + /** + * Determine whether a given string is a valid URI + */ + static bool isValidURI( const XMLUri* const baseURI + , const XMLCh* const uriStr + , bool bAllowSpaces=false); + /** + * Determine whether a given string is a valid URI + */ + static bool isValidURI( bool haveBaseURI + , const XMLCh* const uriStr + , bool bAllowSpaces=false); + + + static void normalizeURI(const XMLCh* const systemURI, + XMLBuffer& normalizedURI); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLUri) + + XMLUri(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + + static const XMLCh MARK_OR_RESERVED_CHARACTERS[]; + static const XMLCh RESERVED_CHARACTERS[]; + static const XMLCh MARK_CHARACTERS[]; + static const XMLCh SCHEME_CHARACTERS[]; + static const XMLCh USERINFO_CHARACTERS[]; + static const XMLCh REG_NAME_CHARACTERS[]; + static const XMLCh PATH_CHARACTERS[]; + + //helper method for getUriText + void buildFullText(); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + + /** + * Determine whether a character is a reserved character: + * + * @return true if the string contains any reserved characters + */ + static bool isReservedCharacter(const XMLCh theChar); + + /** + * Determine whether a character is a path character: + * + * @return true if the character is path character + */ + static bool isPathCharacter(const XMLCh theChar); + + /** + * Determine whether a char is an unreserved character. + * + * @return true if the char is unreserved, false otherwise + */ + static bool isUnreservedCharacter(const XMLCh theChar); + + /** + * Determine whether a char is an reserved or unreserved character. + * + * @return true if the char is reserved or unreserved, false otherwise + */ + static bool isReservedOrUnreservedCharacter(const XMLCh theChar); + + /** + * Determine whether a scheme conforms to the rules for a scheme name. + * A scheme is conformant if it starts with an alphanumeric, and + * contains only alphanumerics, '+','-' and '.'. + * + * @return true if the scheme is conformant, false otherwise + */ + static bool isConformantSchemeName(const XMLCh* const scheme); + + /** + * Determine whether a userInfo conforms to the rules for a userinfo. + * + * @return true if the scheme is conformant, false otherwise + */ + static void isConformantUserInfo(const XMLCh* const userInfo + , MemoryManager* const manager); + + /** + * Determines whether the components host, port, and user info + * are valid as a server authority. + * + * @return true if the given host, port, and userinfo compose + * a valid server authority + */ + static bool isValidServerBasedAuthority(const XMLCh* const host + , const XMLSize_t hostLen + , const int port + , const XMLCh* const userinfo + , const XMLSize_t userLen); + + /** + * Determines whether the components host, port, and user info + * are valid as a server authority. + * + * @return true if the given host, port, and userinfo compose + * a valid server authority + */ + static bool isValidServerBasedAuthority(const XMLCh* const host + , const int port + , const XMLCh* const userinfo + , MemoryManager* const manager); + + /** + * Determines whether the given string is a registry based authority. + * + * @param authority the authority component of a URI + * + * @return true if the given string is a registry based authority + */ + static bool isValidRegistryBasedAuthority(const XMLCh* const authority + , const XMLSize_t authLen); + + /** + * Determines whether the given string is a registry based authority. + * + * @param authority the authority component of a URI + * + * @return true if the given string is a registry based authority + */ + static bool isValidRegistryBasedAuthority(const XMLCh* const authority); + + /** + * Determine whether a string is syntactically capable of representing + * a valid IPv4 address, IPv6 reference or the domain name of a network host. + * + * A valid IPv4 address consists of four decimal digit groups + * separated by a '.'. + * + * See RFC 2732 Section 3, and RFC 2373 Section 2.2, for the + * definition of IPv6 references. + * + * A hostname consists of domain labels (each of which must begin and + * end with an alphanumeric but may contain '-') separated by a '.'. + * See RFC 2396 Section 3.2.2. + * + * @return true if the string is a syntactically valid IPv4 address + * or hostname + */ + static bool isWellFormedAddress(const XMLCh* const addr + , MemoryManager* const manager); + + /** + * Determines whether a string is an IPv4 address as defined by + * RFC 2373, and under the further constraint that it must be a 32-bit + * address. Though not expressed in the grammar, in order to satisfy + * the 32-bit address constraint, each segment of the address cannot + * be greater than 255 (8 bits of information). + * + * @return true if the string is a syntactically valid IPv4 address + */ + static bool isWellFormedIPv4Address(const XMLCh* const addr, const XMLSize_t length); + + /** + * Determines whether a string is an IPv6 reference as defined + * by RFC 2732, where IPv6address is defined in RFC 2373. The + * IPv6 address is parsed according to Section 2.2 of RFC 2373, + * with the additional constraint that the address be composed of + * 128 bits of information. + * + * Note: The BNF expressed in RFC 2373 Appendix B does not + * accurately describe section 2.2, and was in fact removed from + * RFC 3513, the successor of RFC 2373. + * + * @return true if the string is a syntactically valid IPv6 reference + */ + static bool isWellFormedIPv6Reference(const XMLCh* const addr, const XMLSize_t length); + + /** + * Helper function for isWellFormedIPv6Reference which scans the + * hex sequences of an IPv6 address. It returns the index of the + * next character to scan in the address, or -1 if the string + * cannot match a valid IPv6 address. + * + * @param address the string to be scanned + * @param index the beginning index (inclusive) + * @param end the ending index (exclusive) + * @param counter a counter for the number of 16-bit sections read + * in the address + * + * @return the index of the next character to scan, or -1 if the + * string cannot match a valid IPv6 address + */ + static int scanHexSequence (const XMLCh* const addr, XMLSize_t index, XMLSize_t end, int& counter); + + /** + * Get the indicator as to whether this URI uses the "generic URI" + * syntax. + * + * @return true if this URI uses the "generic URI" syntax, false + * otherwise + */ + bool isGenericURI(); + + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + + /** + * Initialize all fields of this URI from another URI. + * + * @param toCopy the URI to copy (cannot be null) + */ + void initialize(const XMLUri& toCopy); + + /** + * Initializes this URI from a base URI and a URI specification string. + * See RFC 2396 Section 4 and Appendix B for specifications on parsing + * the URI and Section 5 for specifications on resolving relative URIs + * and relative paths. + * + * @param baseURI the base URI (may be null if uriSpec is an absolute + * URI) + * + * @param uriSpec the URI spec string which may be an absolute or + * relative URI (can only be null/empty if base + * is not null) + * + */ + void initialize(const XMLUri* const baseURI + , const XMLCh* const uriSpec); + + /** + * Initialize the scheme for this URI from a URI string spec. + * + * @param uriSpec the URI specification (cannot be null) + * + */ + void initializeScheme(const XMLCh* const uriSpec); + + /** + * Initialize the authority (userinfo, host and port) for this + * URI from a URI string spec. + * + * @param uriSpec the URI specification (cannot be null) + * + */ + void initializeAuthority(const XMLCh* const uriSpec); + + /** + * Initialize the path for this URI from a URI string spec. + * + * @param uriSpec the URI specification (cannot be null) + * + */ + void initializePath(const XMLCh* const uriSpec); + + /** + * cleanup the data variables + * + */ + void cleanUp(); + + static bool isConformantSchemeName(const XMLCh* const scheme, + const XMLSize_t schemeLen); + static bool processScheme(const XMLCh* const uriStr, XMLSize_t& index); + static bool processAuthority(const XMLCh* const uriStr, const XMLSize_t authLen); + static bool isWellFormedAddress(const XMLCh* const addr, const XMLSize_t addrLen); + static bool processPath(const XMLCh* const pathStr, const XMLSize_t pathStrLen, + const bool isSchemePresent, const bool bAllowSpaces=false); + + // ----------------------------------------------------------------------- + // Data members + // + // for all the data member, we own it, + // responsible for the creation and/or deletion for + // the memory allocated. + // + // ----------------------------------------------------------------------- + int fPort; + XMLCh* fScheme; + XMLCh* fUserInfo; + XMLCh* fHost; + XMLCh* fRegAuth; + XMLCh* fPath; + XMLCh* fQueryString; + XMLCh* fFragment; + XMLCh* fURIText; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// XMLUri: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh* XMLUri::getScheme() const +{ + return fScheme; +} + +inline const XMLCh* XMLUri::getUserInfo() const +{ + return fUserInfo; +} + +inline const XMLCh* XMLUri::getHost() const +{ + return fHost; +} + +inline int XMLUri::getPort() const +{ + return fPort; +} + +inline const XMLCh* XMLUri::getRegBasedAuthority() const +{ + return fRegAuth; +} + +inline const XMLCh* XMLUri::getPath() const +{ + return fPath; +} + +inline const XMLCh* XMLUri::getQueryString() const +{ + return fQueryString; +} + +inline const XMLCh* XMLUri::getFragment() const +{ + return fFragment; +} + +inline const XMLCh* XMLUri::getUriText() const +{ + // + // Fault it in if not already. Since this is a const method and we + // can't use mutable members due the compilers we have to support, + // we have to cast off the constness. + // + if (!fURIText) + (const_cast(this))->buildFullText(); + + return fURIText; +} + +// --------------------------------------------------------------------------- +// XMLUri: Helper methods +// --------------------------------------------------------------------------- +inline bool XMLUri::isReservedOrUnreservedCharacter(const XMLCh theChar) +{ + return (XMLString::isAlphaNum(theChar) || + XMLString::indexOf(MARK_OR_RESERVED_CHARACTERS, theChar) != -1); +} + +inline bool XMLUri::isReservedCharacter(const XMLCh theChar) +{ + return (XMLString::indexOf(RESERVED_CHARACTERS, theChar) != -1); +} + +inline bool XMLUri::isPathCharacter(const XMLCh theChar) +{ + return (XMLString::indexOf(PATH_CHARACTERS, theChar) != -1); +} + +inline bool XMLUri::isUnreservedCharacter(const XMLCh theChar) +{ + return (XMLString::isAlphaNum(theChar) || + XMLString::indexOf(MARK_CHARACTERS, theChar) != -1); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMLWin1252Transcoder.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMLWin1252Transcoder.hpp new file mode 100644 index 000000000000..aa3913be2aef --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMLWin1252Transcoder.hpp @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLWIN1252TRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLWIN1252TRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +// +// This class provides an implementation of the XMLTranscoder interface +// for the Windows variant of Latin1, called Windows-1252. Its close to +// Latin1, but is somewhat different. +// +class XMLUTIL_EXPORT XMLWin1252Transcoder : public XML256TableTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLWin1252Transcoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLWin1252Transcoder(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLWin1252Transcoder(); + XMLWin1252Transcoder(const XMLWin1252Transcoder&); + XMLWin1252Transcoder& operator=(const XMLWin1252Transcoder&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XMemory.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XMemory.hpp new file mode 100644 index 000000000000..869ccce937f0 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XMemory.hpp @@ -0,0 +1,144 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMEMORY_HPP) +#define XERCESC_INCLUDE_GUARD_XMEMORY_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class MemoryManager; + +/** + * This class makes it possible to override the C++ memory management by + * adding new/delete operators to this base class. + * + * This class is used in conjunction with the pluggable memory manager. It + * allows applications to control Xerces memory management. + */ + +class XMLUTIL_EXPORT XMemory +{ +public : + // ----------------------------------------------------------------------- + // The C++ memory management + // ----------------------------------------------------------------------- + /** @name The C++ memory management */ + //@{ + + /** + * This method overrides operator new + * + * @param size The requested memory size + */ + void* operator new(size_t size); + +#if defined(XERCES_MFC_SUPPORT) + /** + * This method overrides the MFC debug version of the operator new + * + * @param size The requested memory size + * @param file The file where the allocation was requested + * @param line The line where the allocation was requested + */ + void* operator new(size_t size, const char* file, int line); + /** + * This method provides a matching delete for the MFC debug new + * + * @param p The pointer to the allocated memory + * @param file The file where the allocation was requested + * @param line The line where the allocation was requested + */ + void operator delete(void* p, const char* file, int line); +#endif + + /** + * This method defines a custom operator new, that will use the provided + * memory manager to perform the allocation + * + * @param size The requested memory size + * @param memMgr An application's memory manager + */ + void* operator new(size_t size, MemoryManager* memMgr); + + /** + * This method overrides placement operator new + * + * @param size The requested memory size + * @param ptr The memory location where the object should be allocated + */ + void* operator new(size_t size, void* ptr); + + /** + * This method overrides operator delete + * + * @param p The pointer to the allocated memory + */ + void operator delete(void* p); + + //The Borland compiler is complaining about duplicate overloading of delete +#if !defined(XERCES_NO_MATCHING_DELETE_OPERATOR) + /** + * This method provides a matching delete for the custom operator new + * + * @param p The pointer to the allocated memory + * @param memMgr An application's memory manager + */ + void operator delete(void* p, MemoryManager* memMgr); + + /** + * This method provides a matching delete for the placement new + * + * @param p The pointer to the allocated memory + * @param ptr The memory location where the object had to be allocated + */ + void operator delete(void* p, void* ptr); +#endif + + //@} + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + /** @name Constructor */ + //@{ + + /** + * Protected default constructor + */ + XMemory() + { + } + //@} + +#if defined(XERCES_NEED_XMEMORY_VIRTUAL_DESTRUCTOR) + virtual ~XMemory() + { + } +#endif +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/XercesDefs.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XercesDefs.hpp new file mode 100644 index 000000000000..80712600d8e4 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/XercesDefs.hpp @@ -0,0 +1,173 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XERCESDEFS_HPP) +#define XERCESC_INCLUDE_GUARD_XERCESDEFS_HPP + +// --------------------------------------------------------------------------- +// The file xerces_hdr_config defines critical configuration information +// used by the remainder of this file. +// +// There are two major configuration files: +// - xerces_autoconf_config.hpp-- Contains defines that are safe for +// access through public headers. +// +// - config.h -- Contains defines that may conflict +// with other packages; should only be +// included by Xerces implementation files. +// +// Both of these files are generated through the autoconf/configure process. +// --------------------------------------------------------------------------- + +// +// If this is an autoconf configured build, we include Xerces_autoconf_config.hpp +// Otherwise we include a preconfigured config appropriate for the particular +// platform that the specific makefile should copy over. +// +// If the next line generates an error then you haven't run ./configure +#include + +// --------------------------------------------------------------------------- +// Include the Xerces version information; this is kept in a separate file to +// make modification simple and obvious. Updates to the version header file +// --------------------------------------------------------------------------- +#include + + +// --------------------------------------------------------------------------- +// Some general typedefs that are defined for internal flexibility. +// +// Note that UTF16Ch is fixed at 16 bits, whereas XMLCh floats in size per +// platform, to whatever is the native wide char format there. UCS4Ch is +// fixed at 32 bits. The types we defined them in terms of are defined per +// compiler, using whatever types are the right ones for them to get these +// 16/32 bit sizes. +// +// --------------------------------------------------------------------------- +typedef unsigned char XMLByte; +typedef XMLUInt16 UTF16Ch; +typedef XMLUInt32 UCS4Ch; + + +// --------------------------------------------------------------------------- +// Handle boolean. If the platform can handle booleans itself, then we +// map our boolean type to the native type. Otherwise we create a default +// one as an int and define const values for true and false. +// +// This flag will be set in the per-development environment stuff above. +// --------------------------------------------------------------------------- +#if defined(XERCES_NO_NATIVE_BOOL) + #ifndef bool + typedef int bool; + #endif + #ifndef true + #define true 1 + #endif + #ifndef false + #define false 0 + #endif +#endif + +// --------------------------------------------------------------------------- +// According to whether the compiler supports L"" type strings, we define +// the XMLStrL() macro one way or another. +// --------------------------------------------------------------------------- +#if defined(XERCES_LSTRSUPPORT) +#define XMLStrL(str) L##str +#else +#define XMLStrL(str) str +#endif + + +// --------------------------------------------------------------------------- +// Define namespace symbols if the compiler supports it. +// --------------------------------------------------------------------------- +#if defined(XERCES_HAS_CPP_NAMESPACE) + #define XERCES_CPP_NAMESPACE_BEGIN namespace XERCES_CPP_NAMESPACE { + #define XERCES_CPP_NAMESPACE_END } + #define XERCES_CPP_NAMESPACE_USE using namespace XERCES_CPP_NAMESPACE; + #define XERCES_CPP_NAMESPACE_QUALIFIER XERCES_CPP_NAMESPACE:: + + namespace XERCES_CPP_NAMESPACE { } + namespace xercesc = XERCES_CPP_NAMESPACE; +#else + #define XERCES_CPP_NAMESPACE_BEGIN + #define XERCES_CPP_NAMESPACE_END + #define XERCES_CPP_NAMESPACE_USE + #define XERCES_CPP_NAMESPACE_QUALIFIER +#endif + +#if defined(XERCES_STD_NAMESPACE) + #define XERCES_USING_STD(NAME) using std :: NAME; + #define XERCES_STD_QUALIFIER std :: +#else + #define XERCES_USING_STD(NAME) + #define XERCES_STD_QUALIFIER +#endif + + +// --------------------------------------------------------------------------- +// Set up the import/export keyword for our core projects. The +// PLATFORM_XXXX keywords are set in the per-development environment +// include above. +// --------------------------------------------------------------------------- + +// The DLL_EXPORT flag should be defined on the command line during the build of a DLL +// configure conspires to make this happen. + +#if defined(DLL_EXPORT) + #if defined(XERCES_BUILDING_LIBRARY) + #define XMLUTIL_EXPORT XERCES_PLATFORM_EXPORT + #define XMLPARSER_EXPORT XERCES_PLATFORM_EXPORT + #define SAX_EXPORT XERCES_PLATFORM_EXPORT + #define SAX2_EXPORT XERCES_PLATFORM_EXPORT + #define CDOM_EXPORT XERCES_PLATFORM_EXPORT + #define PARSERS_EXPORT XERCES_PLATFORM_EXPORT + #define VALIDATORS_EXPORT XERCES_PLATFORM_EXPORT + #define XINCLUDE_EXPORT XERCES_PLATFORM_EXPORT + #else + #define XMLUTIL_EXPORT XERCES_PLATFORM_IMPORT + #define XMLPARSER_EXPORT XERCES_PLATFORM_IMPORT + #define SAX_EXPORT XERCES_PLATFORM_IMPORT + #define SAX2_EXPORT XERCES_PLATFORM_IMPORT + #define CDOM_EXPORT XERCES_PLATFORM_IMPORT + #define PARSERS_EXPORT XERCES_PLATFORM_IMPORT + #define VALIDATORS_EXPORT XERCES_PLATFORM_IMPORT + #define XINCLUDE_EXPORT XERCES_PLATFORM_IMPORT + #endif + #if defined(XERCES_BUILDING_DEPRECATED_LIBRARY) + #define DEPRECATED_DOM_EXPORT XERCES_PLATFORM_EXPORT + #else + #define DEPRECATED_DOM_EXPORT XERCES_PLATFORM_IMPORT + #endif +#else + #define XMLUTIL_EXPORT + #define XMLPARSER_EXPORT + #define SAX_EXPORT + #define SAX2_EXPORT + #define CDOM_EXPORT + #define DEPRECATED_DOM_EXPORT + #define PARSERS_EXPORT + #define VALIDATORS_EXPORT + #define XINCLUDE_EXPORT +#endif + +#endif diff --git a/extern/xerces-c/include/xercesc/util/XercesVersion.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/XercesVersion.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/XercesVersion.hpp rename to src/libs/xerces-c/mingw/include/xercesc/util/XercesVersion.hpp diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/Xerces_autoconf_config.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/Xerces_autoconf_config.hpp new file mode 100644 index 000000000000..8c006ab7ca31 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/Xerces_autoconf_config.hpp @@ -0,0 +1,156 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id: Xerces_autoconf_config.hpp.in 834826 2009-11-11 10:03:53Z borisk $ + */ + +// +// There are two primary xerces configuration header files: +// +// Xerces_autoconf_config.hpp +// +// For configuration of items that must be accessable +// through public headers. This file has limited information +// and carefully works to avoid collision of macro names, etc. +// +// This file is included by XercesDefs.h. In the event +// of a non-configured platform, a similar header specific +// to the platform will be included instead. +// +// config.h +// +// Generalized cmake-generated header file, with much more +// information, used to supply configuration information +// for use in implementation files. +// +// For CMake-based builds, this header is configured by cmake from the +// .cmake.in template file of the same name. + + +#ifndef XERCES_AUTOCONFIG_CONFIG_HPP +#define XERCES_AUTOCONFIG_CONFIG_HPP + +// --------------------------------------------------------------------------- +// These defines are set by cmake as appropriate for the platform. +// --------------------------------------------------------------------------- +#define XERCES_AUTOCONF 1 +#define XERCES_HAVE_SYS_TYPES_H 1 +#define XERCES_HAVE_CSTDINT 1 +#define XERCES_HAVE_STDINT_H 1 +#define XERCES_HAVE_INTTYPES_H 1 +#define XERCES_HAVE_INTRIN_H 1 +#define XERCES_HAVE_EMMINTRIN_H 1 +/* #undef XERCES_INCLUDE_WCHAR_H */ + +#define XERCES_S16BIT_INT int16_t +#define XERCES_S32BIT_INT int32_t +#define XERCES_S64BIT_INT int64_t +#define XERCES_U16BIT_INT uint16_t +#define XERCES_U32BIT_INT uint32_t +#define XERCES_U64BIT_INT uint64_t +#define XERCES_XMLCH_T char16_t +#define XERCES_SIZE_T size_t +#define XERCES_SSIZE_T ssize_t + +#define XERCES_HAS_CPP_NAMESPACE 1 +#define XERCES_STD_NAMESPACE 1 +#define XERCES_NEW_IOSTREAMS 1 +/* #undef XERCES_NO_NATIVE_BOOL */ +#define XERCES_LSTRSUPPORT 1 +/* #undef XERCES_MFC_SUPPORT */ + +#define XERCES_HAVE_CPUID_INTRINSIC 1 +#define XERCES_HAVE_SSE2_INTRINSIC 1 +#define XERCES_HAVE_GETCPUID 1 + +/* #undef XERCES_NO_MATCHING_DELETE_OPERATOR */ + +#define XERCES_DLL_EXPORT 1 +/* #undef XERCES_STATIC_LIBRARY */ +#define XERCES_PLATFORM_EXPORT __declspec(dllexport) +#define XERCES_PLATFORM_IMPORT __declspec(dllimport) +#define XERCES_TEMPLATE_EXTERN extern +#ifdef XERCES_DLL_EXPORT +# define DLL_EXPORT +#endif + +// --------------------------------------------------------------------------- +// Include standard headers, if available, that we may rely on below. +// --------------------------------------------------------------------------- +#if defined(__cplusplus) && defined(XERCES_HAVE_CSTDINT) +# include +#endif +#if XERCES_HAVE_STDINT_H +# include +#endif +#if XERCES_HAVE_INTTYPES_H +# include +#endif +#if XERCES_HAVE_SYS_TYPES_H +# include +#endif +#if XERCES_INCLUDE_WCHAR_H +# include +#endif + +// --------------------------------------------------------------------------- +// XMLSize_t is the unsigned integral type. +// --------------------------------------------------------------------------- +typedef XERCES_SIZE_T XMLSize_t; +typedef XERCES_SSIZE_T XMLSSize_t; + +#define XERCES_SIZE_MAX SIZE_MAX +#define XERCES_SSIZE_MAX SSIZE_MAX + +// --------------------------------------------------------------------------- +// Define our version of the XML character +// --------------------------------------------------------------------------- +typedef XERCES_XMLCH_T XMLCh; + +// --------------------------------------------------------------------------- +// Define unsigned 16, 32, and 64 bit integers +// --------------------------------------------------------------------------- +typedef XERCES_U16BIT_INT XMLUInt16; +typedef XERCES_U32BIT_INT XMLUInt32; +typedef XERCES_U64BIT_INT XMLUInt64; + +// --------------------------------------------------------------------------- +// Define signed 16, 32, and 64 bit integers +// --------------------------------------------------------------------------- +typedef XERCES_S16BIT_INT XMLInt16; +typedef XERCES_S32BIT_INT XMLInt32; +typedef XERCES_S64BIT_INT XMLInt64; + +// --------------------------------------------------------------------------- +// XMLFilePos is the type used to represent a file position. +// --------------------------------------------------------------------------- +typedef XMLUInt64 XMLFilePos; + +// --------------------------------------------------------------------------- +// XMLFileLoc is the type used to represent a file location (line/column). +// --------------------------------------------------------------------------- +typedef XMLUInt64 XMLFileLoc; + +// --------------------------------------------------------------------------- +// Force on the Xerces debug token if it is on in the build environment +// --------------------------------------------------------------------------- +#if defined(_DEBUG) +#define XERCES_DEBUG +#endif + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/ASCIIRangeFactory.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/ASCIIRangeFactory.hpp new file mode 100644 index 000000000000..1515ffabd7f2 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/ASCIIRangeFactory.hpp @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ASCIIRANGEFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_ASCIIRANGEFACTORY_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT ASCIIRangeFactory: public RangeFactory { + +public: + // ----------------------------------------------------------------------- + // Constructors and operators + // ----------------------------------------------------------------------- + ASCIIRangeFactory(); + ~ASCIIRangeFactory(); + + // ----------------------------------------------------------------------- + // Initialization methods + // ----------------------------------------------------------------------- + void initializeKeywordMap(RangeTokenMap *rangeTokMap = 0); + +protected: + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + void buildRanges(RangeTokenMap *rangeTokMap = 0); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ASCIIRangeFactory(const ASCIIRangeFactory&); + ASCIIRangeFactory& operator=(const ASCIIRangeFactory&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file ASCIIRangeFactory.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/BMPattern.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/BMPattern.hpp new file mode 100644 index 000000000000..ea1b64a2f5da --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/BMPattern.hpp @@ -0,0 +1,157 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BMPATTERN_HPP) +#define XERCESC_INCLUDE_GUARD_BMPATTERN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BMPattern : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * This is the constructor which takes the pattern information. A default + * shift table size is used. + * + * @param pattern The pattern to match against. + * + * @param ignoreCase A flag to indicate whether to ignore case + * matching or not. + * + * @param manager The configurable memory manager + */ + BMPattern + ( + const XMLCh* const pattern + , bool ignoreCase + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * This is the constructor which takes all of the information + * required to construct a BM pattern object. + * + * @param pattern The pattern to match against. + * + * @param tableSize Indicates the size of the shift table. + * + * @param ignoreCase A flag to indicate whether to ignore case + * matching or not. + * + * @param manager The configurable memory manager + */ + BMPattern + ( + const XMLCh* const pattern + , int tableSize + , bool ignoreCase + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** @name Destructor. */ + //@{ + + /** + * Destructor of BMPattern + */ + ~BMPattern(); + + //@} + + // ----------------------------------------------------------------------- + // Matching functions + // ----------------------------------------------------------------------- + /** @name Matching Functions */ + //@{ + + /** + * This method will perform a match of the given content against a + * predefined pattern. + */ + int matches(const XMLCh* const content, XMLSize_t start, XMLSize_t limit) const; + + //@} + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + BMPattern(); + BMPattern(const BMPattern&); + BMPattern& operator=(const BMPattern&); + + // ----------------------------------------------------------------------- + // This method will perform a case insensitive match + // ----------------------------------------------------------------------- + bool matchesIgnoreCase(const XMLCh ch1, const XMLCh ch2); + + // ----------------------------------------------------------------------- + // Initialize/Clean up methods + // ----------------------------------------------------------------------- + void initialize(); + void cleanUp(); + + // ----------------------------------------------------------------------- + // Private data members + // + // fPattern + // fUppercasePattern + // This is the pattern to match against, and its upper case form. + // + // fIgnoreCase + // This is an indicator whether cases should be ignored during + // matching. + // + // fShiftTable + // fShiftTableLen + // This is a table of offsets for shifting purposes used by the BM + // search algorithm, and its length. + // ----------------------------------------------------------------------- + bool fIgnoreCase; + unsigned int fShiftTableLen; + XMLSize_t* fShiftTable; + XMLCh* fPattern; + XMLCh* fUppercasePattern; + MemoryManager* fMemoryManager; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/* + * End of file BMPattern.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/BlockRangeFactory.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/BlockRangeFactory.hpp new file mode 100644 index 000000000000..d1e0b3cf9dbc --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/BlockRangeFactory.hpp @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BLOCKRANGEFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_BLOCKRANGEFACTORY_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BlockRangeFactory: public RangeFactory { + +public: + // ----------------------------------------------------------------------- + // Constructors and operators + // ----------------------------------------------------------------------- + BlockRangeFactory(); + ~BlockRangeFactory(); + + // ----------------------------------------------------------------------- + // Initialization methods + // ----------------------------------------------------------------------- + void initializeKeywordMap(RangeTokenMap *rangeTokMap = 0); + +protected: + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + void buildRanges(RangeTokenMap *rangeTokMap = 0); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + BlockRangeFactory(const BlockRangeFactory&); + BlockRangeFactory& operator=(const BlockRangeFactory&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file BlockRangeFactory.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/CharToken.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/CharToken.hpp new file mode 100644 index 000000000000..c53471ac721c --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/CharToken.hpp @@ -0,0 +1,88 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CHARTOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_CHARTOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT CharToken : public Token { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + CharToken(const tokType tkType, const XMLInt32 ch + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~CharToken(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLInt32 getChar() const; + + // ----------------------------------------------------------------------- + // Match methods + // ----------------------------------------------------------------------- + bool match(const XMLInt32 ch); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CharToken(const CharToken&); + CharToken& operator=(const CharToken&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + XMLInt32 fCharData; +}; + + +// --------------------------------------------------------------------------- +// CharToken: getter methods +// --------------------------------------------------------------------------- +inline XMLInt32 CharToken::getChar() const { + + return fCharData; +} + + +// --------------------------------------------------------------------------- +// CharToken: getter methods +// --------------------------------------------------------------------------- +inline bool CharToken::match(const XMLInt32 ch){ + + return ch == fCharData; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file CharToken.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/ClosureToken.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/ClosureToken.hpp new file mode 100644 index 000000000000..7321e3d80742 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/ClosureToken.hpp @@ -0,0 +1,114 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CLOSURETOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_CLOSURETOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT ClosureToken : public Token { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + ClosureToken(const tokType tkType, Token* const tok + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ClosureToken(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t size() const; + int getMin() const; + int getMax() const; + Token* getChild(const XMLSize_t index) const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setMin(const int minVal); + void setMax(const int maxVal); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ClosureToken(const ClosureToken&); + ClosureToken& operator=(const ClosureToken&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + int fMin; + int fMax; + Token* fChild; +}; + + +// --------------------------------------------------------------------------- +// ClosureToken: getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t ClosureToken::size() const { + + return 1; +} + + +inline int ClosureToken::getMax() const { + + return fMax; +} + +inline int ClosureToken::getMin() const { + + return fMin; +} + +inline Token* ClosureToken::getChild(const XMLSize_t) const { + + return fChild; +} + +// --------------------------------------------------------------------------- +// ClosureToken: setter methods +// --------------------------------------------------------------------------- +inline void ClosureToken::setMax(const int maxVal) { + + fMax = maxVal; +} + +inline void ClosureToken::setMin(const int minVal) { + + fMin = minVal; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ClosureToken.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/ConcatToken.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/ConcatToken.hpp new file mode 100644 index 000000000000..84d120351712 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/ConcatToken.hpp @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CONCATTOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_CONCATTOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT ConcatToken : public Token { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + ConcatToken(Token* const tok1, Token* const tok2 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ConcatToken(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + Token* getChild(const XMLSize_t index) const; + XMLSize_t size() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ConcatToken(const ConcatToken&); + ConcatToken& operator=(const ConcatToken&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + Token* fChild1; + Token* fChild2; +}; + + +// --------------------------------------------------------------------------- +// StringToken: getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t ConcatToken::size() const { + + return 2; +} + +inline Token* ConcatToken::getChild(const XMLSize_t index) const { + + return index == 0 ? fChild1 : fChild2; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ConcatToken.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/Match.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/Match.hpp new file mode 100644 index 000000000000..82cbf7dd7922 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/Match.hpp @@ -0,0 +1,163 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_MATCH_HPP) +#define XERCESC_INCLUDE_GUARD_MATCH_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * An instance of this class has ranges captured in matching + */ + class XMLUTIL_EXPORT Match : public XMemory +{ +public: + + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + Match(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Copy constructor + */ + Match(const Match& toCopy); + Match& operator=(const Match& toAssign); + + virtual ~Match(); + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + int getNoGroups() const; + int getStartPos(int index) const; + int getEndPos(int index) const; + + // ----------------------------------------------------------------------- + // Setter functions + // ----------------------------------------------------------------------- + void setNoGroups(const int n); + void setStartPos(const int index, const int value); + void setEndPos(const int index, const int value); + +private: + // ----------------------------------------------------------------------- + // Initialize/Clean up methods + // ----------------------------------------------------------------------- + void initialize(const Match& toCopy); + void cleanUp(); + + // ----------------------------------------------------------------------- + // Private data members + // + // fNoGroups + // Represents no of regular expression groups + // + // fStartPositions + // Array of start positions in the target text matched to specific + // regular expression group + // + // fEndPositions + // Array of end positions in the target text matched to specific + // regular expression group + // + // fPositionsSize + // Actual size of Start/EndPositions array. + // ----------------------------------------------------------------------- + int fNoGroups; + int fPositionsSize; + int* fStartPositions; + int* fEndPositions; + MemoryManager* fMemoryManager; +}; + +/** + * Inline Methods + */ + +// --------------------------------------------------------------------------- +// Match: getter methods +// --------------------------------------------------------------------------- +inline int Match::getNoGroups() const { + + if (fNoGroups < 0) + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_Result_Not_Set, fMemoryManager); + + return fNoGroups; +} + +inline int Match::getStartPos(int index) const { + + if (!fStartPositions) + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_Result_Not_Set, fMemoryManager); + + if (index < 0 || fNoGroups <= index) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + + return fStartPositions[index]; +} + +inline int Match::getEndPos(int index) const { + + if (!fEndPositions) + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_Result_Not_Set, fMemoryManager); + + if (index < 0 || fNoGroups <= index) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + + return fEndPositions[index]; +} + +// --------------------------------------------------------------------------- +// Match: setter methods +// --------------------------------------------------------------------------- +inline void Match::setStartPos(const int index, const int value) { + + if (!fStartPositions) + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_Result_Not_Set, fMemoryManager); + + if (index < 0 || fNoGroups <= index) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + + fStartPositions[index] = value; +} + +inline void Match::setEndPos(const int index, const int value) { + + if (!fEndPositions) + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_Result_Not_Set, fMemoryManager); + + if (index < 0 || fNoGroups <= index) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + + fEndPositions[index] = value; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/Op.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/Op.hpp new file mode 100644 index 000000000000..426c535ac4ef --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/Op.hpp @@ -0,0 +1,306 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_OP_HPP) +#define XERCESC_INCLUDE_GUARD_OP_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class Token; + + +class XMLUTIL_EXPORT Op : public XMemory +{ +public: + + typedef enum { + O_DOT = 0, + O_CHAR = 1, + O_RANGE = 3, + O_NRANGE = 4, + O_ANCHOR = 5, + O_STRING = 6, + O_CLOSURE = 7, + O_NONGREEDYCLOSURE = 8, + O_FINITE_CLOSURE = 9, + O_FINITE_NONGREEDYCLOSURE = 10, + O_QUESTION = 11, + O_NONGREEDYQUESTION = 12, + O_UNION = 13, + O_CAPTURE = 15, + O_BACKREFERENCE = 16 + } opType; + + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + virtual ~Op() { } + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + opType getOpType() const; + const Op* getNextOp() const; + virtual XMLInt32 getData() const; + virtual XMLInt32 getData2() const; + virtual XMLSize_t getSize() const; + virtual const Op* elementAt(XMLSize_t index) const; + virtual const Op* getChild() const; + virtual const Token* getToken() const; + virtual const XMLCh* getLiteral() const; + + // ----------------------------------------------------------------------- + // Setter functions + // ----------------------------------------------------------------------- + void setOpType(const opType type); + void setNextOp(const Op* const next); + +protected: + // ----------------------------------------------------------------------- + // Protected Constructors + // ----------------------------------------------------------------------- + Op(const opType type, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + friend class OpFactory; + + MemoryManager* const fMemoryManager; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Op(const Op&); + Op& operator=(const Op&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fOpType + // Indicates the type of operation + // + // fNextOp + // Points to the next operation in the chain + // ----------------------------------------------------------------------- + opType fOpType; + const Op* fNextOp; +}; + + +class XMLUTIL_EXPORT CharOp: public Op { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + CharOp(const opType type, const XMLInt32 charData, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~CharOp() {} + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + XMLInt32 getData() const; + +private: + // Private data members + XMLInt32 fCharData; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CharOp(const CharOp&); + CharOp& operator=(const CharOp&); +}; + +class XMLUTIL_EXPORT UnionOp : public Op { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + UnionOp(const opType type, const XMLSize_t size, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~UnionOp() { delete fBranches; } + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + XMLSize_t getSize() const; + const Op* elementAt(XMLSize_t index) const; + + // ----------------------------------------------------------------------- + // Setter functions + // ----------------------------------------------------------------------- + void addElement(Op* const op); + +private: + // Private Data members + RefVectorOf* fBranches; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + UnionOp(const UnionOp&); + UnionOp& operator=(const UnionOp&); +}; + + +class XMLUTIL_EXPORT ChildOp: public Op { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + ChildOp(const opType type, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ChildOp() {} + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + const Op* getChild() const; + + // ----------------------------------------------------------------------- + // Setter functions + // ----------------------------------------------------------------------- + void setChild(const Op* const child); + +private: + // Private data members + const Op* fChild; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ChildOp(const ChildOp&); + ChildOp& operator=(const ChildOp&); +}; + +class XMLUTIL_EXPORT ModifierOp: public ChildOp { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + ModifierOp(const opType type, const XMLInt32 v1, const XMLInt32 v2, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ModifierOp() {} + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + XMLInt32 getData() const; + XMLInt32 getData2() const; + +private: + // Private data members + XMLInt32 fVal1; + XMLInt32 fVal2; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ModifierOp(const ModifierOp&); + ModifierOp& operator=(const ModifierOp&); +}; + +class XMLUTIL_EXPORT RangeOp: public Op { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + RangeOp(const opType type, const Token* const token, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~RangeOp() {} + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + const Token* getToken() const; + +private: + // Private data members + const Token* fToken; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RangeOp(const RangeOp&); + RangeOp& operator=(const RangeOp&); +}; + +class XMLUTIL_EXPORT StringOp: public Op { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + StringOp(const opType type, const XMLCh* const literal, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~StringOp() { fMemoryManager->deallocate(fLiteral);} + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + const XMLCh* getLiteral() const; + +private: + // Private data members + XMLCh* fLiteral; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + StringOp(const StringOp&); + StringOp& operator=(const StringOp&); +}; + +// --------------------------------------------------------------------------- +// Op: getter methods +// --------------------------------------------------------------------------- +inline Op::opType Op::getOpType() const { + + return fOpType; +} + +inline const Op* Op::getNextOp() const { + + return fNextOp; +} + +// --------------------------------------------------------------------------- +// Op: setter methods +// --------------------------------------------------------------------------- +inline void Op::setOpType(const Op::opType type) { + + fOpType = type; +} + +inline void Op::setNextOp(const Op* const nextOp) { + + fNextOp = nextOp; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file Op.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/OpFactory.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/OpFactory.hpp new file mode 100644 index 000000000000..9b178e0dae1f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/OpFactory.hpp @@ -0,0 +1,116 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_OPFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_OPFACTORY_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class Op; +class CharOp; +class UnionOp; +class ChildOp; +class RangeOp; +class StringOp; +class ModifierOp; +class Token; + +/* + * A Factory class used by 'RegularExpression' to create different types of + * operations (Op) objects. The class will keep track of all objects created + * for cleanup purposes. Each 'RegularExpression' object will have its own + * instance of OpFactory and when a 'RegularExpression' object is deleted + * all associated Op objects will be deleted. + */ + +class XMLUTIL_EXPORT OpFactory : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and destructors + // ----------------------------------------------------------------------- + OpFactory(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~OpFactory(); + + // ----------------------------------------------------------------------- + // Factory methods + // ----------------------------------------------------------------------- + Op* createDotOp(); + CharOp* createCharOp(XMLInt32 data); + CharOp* createAnchorOp(XMLInt32 data); + CharOp* createCaptureOp(int number, const Op* const next); + UnionOp* createUnionOp(XMLSize_t size); + ChildOp* createClosureOp(int id); + ChildOp* createNonGreedyClosureOp(); + ChildOp* createQuestionOp(bool nonGreedy); + RangeOp* createRangeOp(const Token* const token); + CharOp* createBackReferenceOp(int refNo); + StringOp* createStringOp(const XMLCh* const literal); + + // ----------------------------------------------------------------------- + // Reset methods + // ----------------------------------------------------------------------- + /* + * Remove all created Op objects from Vector + */ + void reset(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + OpFactory(const OpFactory&); + OpFactory& operator=(const OpFactory&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fOpVector + // Contains Op objects. Used for memory cleanup. + // ----------------------------------------------------------------------- + RefVectorOf* fOpVector; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// OpFactory - Factory methods +// --------------------------------------------------------------------------- +inline void OpFactory::reset() { + + fOpVector->removeAllElements(); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file OpFactory + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/ParenToken.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/ParenToken.hpp new file mode 100644 index 000000000000..79b8dc40434d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/ParenToken.hpp @@ -0,0 +1,87 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PARENTOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_PARENTOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT ParenToken : public Token { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + ParenToken(const tokType tkType, Token* const tok, + const int noParen, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ParenToken(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t size() const; + int getNoParen() const; + Token* getChild(const XMLSize_t index) const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ParenToken(const ParenToken&); + ParenToken& operator=(const ParenToken&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + int fNoParen; + Token* fChild; +}; + + +// --------------------------------------------------------------------------- +// ParenToken: getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t ParenToken::size() const { + + return 1; +} + +inline int ParenToken::getNoParen() const { + + return fNoParen; +} + +inline Token* ParenToken::getChild(const XMLSize_t) const { + + return fChild; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ParenToken.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/ParserForXMLSchema.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/ParserForXMLSchema.hpp new file mode 100644 index 000000000000..4a277f072f68 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/ParserForXMLSchema.hpp @@ -0,0 +1,86 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PARSERFORXMLSCHEMA_HPP) +#define XERCESC_INCLUDE_GUARD_PARSERFORXMLSCHEMA_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class Token; +class RangeToken; + +class XMLUTIL_EXPORT ParserForXMLSchema : public RegxParser { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + ParserForXMLSchema(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ParserForXMLSchema(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + +protected: + // ----------------------------------------------------------------------- + // Parsing/Processing methods + // ----------------------------------------------------------------------- + Token* processCaret(); + Token* processDollar(); + Token* processStar(Token* const tok); + Token* processPlus(Token* const tok); + Token* processQuestion(Token* const tok); + Token* processParen(); + Token* processBackReference(); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + bool checkQuestion(const XMLSize_t off); + XMLInt32 decodeEscaped(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ParserForXMLSchema(const ParserForXMLSchema&); + ParserForXMLSchema& operator=(const ParserForXMLSchema&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ParserForXMLSchema.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/RangeFactory.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/RangeFactory.hpp new file mode 100644 index 000000000000..754017b3ac05 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/RangeFactory.hpp @@ -0,0 +1,89 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_RANGEFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_RANGEFACTORY_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class RangeTokenMap; + +class XMLUTIL_EXPORT RangeFactory : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and destructors + // ----------------------------------------------------------------------- + virtual ~RangeFactory(); + + //----------------------------------------------------------------------- + // Initialization methods + // ----------------------------------------------------------------------- + /** + * To maintain src code compatibility, we added a default parameter. + * The caller is expected to pass in a valid RangeTokenMap instance. + */ + virtual void initializeKeywordMap(RangeTokenMap *rangeTokMap = 0) = 0; + + /* + * Used by children to build commonly used ranges + * To maintain src code compatibility, we added a default parameter. + * The caller is expected to pass in a valid RangeTokenMap instance. + */ + virtual void buildRanges(RangeTokenMap *rangeTokMap = 0) = 0; + +protected: + // ----------------------------------------------------------------------- + // Constructor and destructors + // ----------------------------------------------------------------------- + RangeFactory(); + + //friend class RangeTokenMap; + + // ----------------------------------------------------------------------- + // Data + // ----------------------------------------------------------------------- + bool fRangesCreated; + bool fKeywordsInitialized; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RangeFactory(const RangeFactory&); + RangeFactory& operator=(const RangeFactory&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file RangeFactory.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/RangeToken.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/RangeToken.hpp new file mode 100644 index 000000000000..6a0c0d269ba1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/RangeToken.hpp @@ -0,0 +1,146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_RANGETOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_RANGETOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class TokenFactory; + + +class XMLUTIL_EXPORT RangeToken : public Token { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + RangeToken(const tokType tkType, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~RangeToken(); + + // ----------------------------------------------------------------------- + // Public Constants + // ----------------------------------------------------------------------- + static const int MAPSIZE; + static const unsigned int INITIALSIZE; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + RangeToken* getCaseInsensitiveToken(TokenFactory* const tokFactory); + + void setCaseInsensitiveToken(RangeToken* tok); + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setRangeValues(XMLInt32* const rangeValues, const unsigned int count); + + // ----------------------------------------------------------------------- + // Range manipulation methods + // ----------------------------------------------------------------------- + void addRange(const XMLInt32 start, const XMLInt32 end); + void mergeRanges(const Token *const tok); + void sortRanges(); + void compactRanges(); + void subtractRanges(RangeToken* const tok); + void intersectRanges(RangeToken* const tok); + static RangeToken* complementRanges(RangeToken* const tok, + TokenFactory* const tokFactory, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + bool empty() const; + + // ----------------------------------------------------------------------- + // Match methods + // ----------------------------------------------------------------------- + bool match(const XMLInt32 ch); + + // ----------------------------------------------------------------------- + // Creates the map. This will happen automatically, + // necessary. + // ----------------------------------------------------------------------- + void createMap(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RangeToken(const RangeToken&); + RangeToken& operator=(const RangeToken&); + + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + void expand(const unsigned int length); + + void doCreateMap(); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fSorted; + bool fCompacted; + int fNonMapIndex; + unsigned int fElemCount; + unsigned int fMaxCount; + int* fMap; + XMLInt32* fRanges; + RangeToken* fCaseIToken; + MemoryManager* fMemoryManager; +}; + + +inline void RangeToken::setCaseInsensitiveToken(RangeToken* tok) +{ + fCaseIToken = tok; +} + +inline void RangeToken::createMap() +{ + if (!fMap) + { + doCreateMap(); + } +} + +inline bool RangeToken::empty() const +{ + return fElemCount==0; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file RangeToken.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/RangeTokenMap.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/RangeTokenMap.hpp new file mode 100644 index 000000000000..25376ca530b5 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/RangeTokenMap.hpp @@ -0,0 +1,232 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_RANGETOKENMAP_HPP) +#define XERCESC_INCLUDE_GUARD_RANGETOKENMAP_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class RangeToken; +class RangeFactory; +class TokenFactory; +class XMLStringPool; + +class XMLUTIL_EXPORT RangeTokenElemMap : public XMemory +{ + +public: + RangeTokenElemMap(unsigned int categoryId); + ~RangeTokenElemMap(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + unsigned int getCategoryId() const; + RangeToken* getRangeToken(const bool complement = false) const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setRangeToken(RangeToken* const tok, const bool complement = false); + void setCategoryId(const unsigned int categId); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RangeTokenElemMap(const RangeTokenElemMap&); + RangeTokenElemMap& operator=(const RangeTokenElemMap&); + + // Data members + unsigned int fCategoryId; + RangeToken* fRange; + RangeToken* fNRange; +}; + + +class XMLUTIL_EXPORT RangeTokenMap : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Putter methods + // ----------------------------------------------------------------------- + void addCategory(const XMLCh* const categoryName); + void addRangeMap(const XMLCh* const categoryName, + RangeFactory* const rangeFactory); + void addKeywordMap(const XMLCh* const keyword, + const XMLCh* const categoryName); + + // ----------------------------------------------------------------------- + // Instance methods + // ----------------------------------------------------------------------- + static RangeTokenMap* instance(); + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setRangeToken(const XMLCh* const keyword, RangeToken* const tok, + const bool complement = false); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + TokenFactory* getTokenFactory() const; + +protected: + // ----------------------------------------------------------------------- + // Constructor and destructors + // ----------------------------------------------------------------------- + RangeTokenMap(MemoryManager* manager); + ~RangeTokenMap(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /* + * Gets a commonly used RangeToken from the token registry based on the + * range name - Called by TokenFactory. + */ + RangeToken* getRange(const XMLCh* const name, + const bool complement = false); + + RefHashTableOf* getTokenRegistry() const; + RefHashTableOf* getRangeMap() const; + XMLStringPool* getCategories() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RangeTokenMap(const RangeTokenMap&); + RangeTokenMap& operator=(const RangeTokenMap&); + + // ----------------------------------------------------------------------- + // Private Helpers methods + // ----------------------------------------------------------------------- + /* + * Initializes the registry with a set of commonly used RangeToken + * objects. + */ + void initializeRegistry(); + void buildTokenRanges(); + void cleanUp(); + friend class TokenFactory; + + // ----------------------------------------------------------------------- + // Private data members + // + // fTokenRegistry + // Contains a set of commonly used tokens + // + // fRangeMap + // Contains a map between a category name and a RangeFactory object. + // + // fCategories + // Contains range categories names + // + // fTokenFactory + // Token factory object + // + // fInstance + // A RangeTokenMap instance + // + // fMutex + // A mutex object for synchronization + // ----------------------------------------------------------------------- + RefHashTableOf* fTokenRegistry; + RefHashTableOf* fRangeMap; + XMLStringPool* fCategories; + TokenFactory* fTokenFactory; + XMLMutex fMutex; + static RangeTokenMap* fInstance; + + friend class XMLInitializer; +}; + +// --------------------------------------------------------------------------- +// RangeTokenElemMap: Getter methods +// --------------------------------------------------------------------------- +inline unsigned int RangeTokenElemMap::getCategoryId() const { + + return fCategoryId; +} + +inline RangeToken* RangeTokenElemMap::getRangeToken(const bool complement) const { + + return complement ? fNRange : fRange; +} + +// --------------------------------------------------------------------------- +// RangeTokenElemMap: Setter methods +// --------------------------------------------------------------------------- +inline void RangeTokenElemMap::setCategoryId(const unsigned int categId) { + + fCategoryId = categId; +} + +inline void RangeTokenElemMap::setRangeToken(RangeToken* const tok, + const bool complement) { + + if (complement) + fNRange = tok; + else + fRange = tok; +} + +// --------------------------------------------------------------------------- +// RangeTokenMap: Getter methods +// --------------------------------------------------------------------------- +inline RefHashTableOf* RangeTokenMap::getTokenRegistry() const { + + return fTokenRegistry; +} + +inline RefHashTableOf* RangeTokenMap::getRangeMap() const { + + return fRangeMap; +} + +inline XMLStringPool* RangeTokenMap::getCategories() const { + + return fCategories; +} + +inline TokenFactory* RangeTokenMap::getTokenFactory() const { + + return fTokenFactory; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file RangeToken.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/RegularExpression.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/RegularExpression.hpp new file mode 100644 index 000000000000..6133ebd81038 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/RegularExpression.hpp @@ -0,0 +1,772 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REGULAREXPRESSION_HPP) +#define XERCESC_INCLUDE_GUARD_REGULAREXPRESSION_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class RangeToken; +class Match; +class RegxParser; + +/** + * The RegularExpression class represents a parsed executable regular expression. + * This class is thread safe. Two similar regular expression syntaxes are + * supported: + * + *
    + *
  1. The XPath 2.0 / XQuery regular expression syntax. + *
  2. The XML Schema regular expression syntax.
  3. + *
+ * + * XPath 2.0 regular expression syntax is used unless the "X" option is specified during construction. + * + * Options can be specified during construction to change the way that the regular expression is handled. + * Options are specified by a string consisting of any number of the following characters: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
CharacterMeaning
i + * Ignore case when matching the regular expression.
m + * Multi-line mode. The meta characters "^" and "$" will match the beginning and end of lines.
s + * Single-line mode. The meta character "." will match a newline character.
xAllow extended comments.
FProhibit the fixed string optimization.
HProhibit the head character optimization.
XParse the regular expression according to the + * XML Schema regular expression syntax.
+ */ +class XMLUTIL_EXPORT RegularExpression : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors and destructor */ + //@{ + + /** Parses the given regular expression. + * + * @param pattern the regular expression in the local code page + * @param manager the memory manager to use + */ + RegularExpression + ( + const char* const pattern + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Parses the given regular expression using the options specified. + * + * @param pattern the regular expression in the local code page + * @param options the options string in the local code page + * @param manager the memory manager to use + */ + RegularExpression + ( + const char* const pattern + , const char* const options + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Parses the given regular expression. + * + * @param pattern the regular expression + * @param manager the memory manager to use + */ + RegularExpression + ( + const XMLCh* const pattern + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Parses the given regular expression using the options specified. + * + * @param pattern the regular expression + * @param options the options string + * @param manager the memory manager to use + */ + RegularExpression + ( + const XMLCh* const pattern + , const XMLCh* const options + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~RegularExpression(); + + //@} + + // ----------------------------------------------------------------------- + // Public Constants + // ----------------------------------------------------------------------- + static const unsigned int IGNORE_CASE; + static const unsigned int SINGLE_LINE; + static const unsigned int MULTIPLE_LINE; + static const unsigned int EXTENDED_COMMENT; + static const unsigned int PROHIBIT_HEAD_CHARACTER_OPTIMIZATION; + static const unsigned int PROHIBIT_FIXED_STRING_OPTIMIZATION; + static const unsigned int XMLSCHEMA_MODE; + typedef enum + { + wordTypeIgnore = 0, + wordTypeLetter = 1, + wordTypeOther = 2 + } wordType; + + // ----------------------------------------------------------------------- + // Public Helper methods + // ----------------------------------------------------------------------- + + /** @name Public helper methods */ + //@{ + + static int getOptionValue(const XMLCh ch); + static bool isSet(const int options, const int flag); + + //@} + + // ----------------------------------------------------------------------- + // Matching methods + // ----------------------------------------------------------------------- + + /** @name Matching methods */ + //@{ + + /** Tries to match the given null terminated string against the regular expression, returning + * true if successful. + * + * @param matchString the string to match in the local code page + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const char* const matchString, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given string between the specified start and end offsets + * against the regular expression, returning true if successful. + * + * @param matchString the string to match in the local code page + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const char* const matchString, const XMLSize_t start, const XMLSize_t end, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given null terminated string against the regular expression, returning + * true if successful. + * + * @param matchString the string to match in the local code page + * @param pMatch a Match object, which will be populated with the offsets for the + * regular expression match and sub-matches. + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const char* const matchString, Match* const pMatch, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given string between the specified start and end offsets + * against the regular expression, returning true if successful. + * + * @param matchString the string to match in the local code page + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param pMatch a Match object, which will be populated with the offsets for the + * regular expression match and sub-matches. + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const char* const matchString, const XMLSize_t start, const XMLSize_t end, + Match* const pMatch, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given null terminated string against the regular expression, returning + * true if successful. + * + * @param matchString the string to match + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const XMLCh* const matchString, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given string between the specified start and end offsets + * against the regular expression, returning true if successful. + * + * @param matchString the string to match + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const XMLCh* const matchString, const XMLSize_t start, const XMLSize_t end, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given null terminated string against the regular expression, returning + * true if successful. + * + * @param matchString the string to match + * @param pMatch a Match object, which will be populated with the offsets for the + * regular expression match and sub-matches. + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const XMLCh* const matchString, Match* const pMatch, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given string between the specified start and end offsets + * against the regular expression, returning true if successful. + * + * @param matchString the string to match + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param pMatch a Match object, which will be populated with the offsets for the + * regular expression match and sub-matches. + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const XMLCh* const matchString, const XMLSize_t start, const XMLSize_t end, + Match* const pMatch, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given string between the specified start and end offsets + * against the regular expression. The subEx vector is populated with the details + * for every non-overlapping occurrence of a match in the string. + * + * @param matchString the string to match + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param subEx a RefVectorOf Match objects, populated with the offsets for the + * regular expression match and sub-matches. + * @param manager the memory manager to use + */ + void allMatches(const XMLCh* const matchString, const XMLSize_t start, const XMLSize_t end, + RefVectorOf *subEx, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + //@} + + // ----------------------------------------------------------------------- + // Tokenize methods + // ----------------------------------------------------------------------- + // Note: The caller owns the string vector that is returned, and is responsible + // for deleting it. + + /** @name Tokenize methods */ + //@{ + + /** Tokenizes the null terminated string according to the regular expression, returning + * the parts of the string that do not match the regular expression. + * + * @param matchString the string to match in the local code page + * @param manager the memory manager to use + * + * @return A RefArrayVectorOf sub-strings that do not match the regular expression allocated using the + * given MemoryManager. The caller owns the string vector that is returned, and is responsible for + * deleting it. + */ + RefArrayVectorOf *tokenize(const char* const matchString, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tokenizes the string between the specified start and end offsets according to the regular + * expression, returning the parts of the string that do not match the regular expression. + * + * @param matchString the string to match in the local code page + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param manager the memory manager to use + * + * @return A RefArrayVectorOf sub-strings that do not match the regular expression allocated using the + * given MemoryManager. The caller owns the string vector that is returned, and is responsible for + * deleting it. + */ + RefArrayVectorOf *tokenize(const char* const matchString, const XMLSize_t start, const XMLSize_t end, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tokenizes the null terminated string according to the regular expression, returning + * the parts of the string that do not match the regular expression. + * + * @param matchString the string to match + * @param manager the memory manager to use + * + * @return A RefArrayVectorOf sub-strings that do not match the regular expression allocated using the + * given MemoryManager. The caller owns the string vector that is returned, and is responsible for + * deleting it. + */ + RefArrayVectorOf *tokenize(const XMLCh* const matchString, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tokenizes the string between the specified start and end offsets according to the regular + * expression, returning the parts of the string that do not match the regular expression. + * + * @param matchString the string to match + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param manager the memory manager to use + * + * @return A RefArrayVectorOf sub-strings that do not match the regular expression allocated using the + * given MemoryManager. The caller owns the string vector that is returned, and is responsible for + * deleting it. + */ + RefArrayVectorOf *tokenize(const XMLCh* const matchString, const XMLSize_t start, const XMLSize_t end, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + //@} + + // ----------------------------------------------------------------------- + // Replace methods + // ----------------------------------------------------------------------- + // Note: The caller owns the XMLCh* that is returned, and is responsible for + // deleting it. + + /** @name Replace methods */ + //@{ + + /** Performs a search and replace on the given null terminated string, replacing + * any substring that matches the regular expression with a string derived from + * the replacement string. + * + * @param matchString the string to match in the local code page + * @param replaceString the string to replace in the local code page + * @param manager the memory manager to use + * + * @return The resulting string allocated using the given MemoryManager. The caller owns the string + * that is returned, and is responsible for deleting it. + */ + XMLCh *replace(const char* const matchString, const char* const replaceString, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Performs a search and replace on the given string between the specified start and end offsets, replacing + * any substring that matches the regular expression with a string derived from + * the replacement string. + * + * @param matchString the string to match in the local code page + * @param replaceString the string to replace in the local code page + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param manager the memory manager to use + * + * @return The resulting string allocated using the given MemoryManager. The caller owns the string + * that is returned, and is responsible for deleting it. + */ + XMLCh *replace(const char* const matchString, const char* const replaceString, + const XMLSize_t start, const XMLSize_t end, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Performs a search and replace on the given null terminated string, replacing + * any substring that matches the regular expression with a string derived from + * the replacement string. + * + * @param matchString the string to match + * @param replaceString the string to replace + * @param manager the memory manager to use + * + * @return The resulting string allocated using the given MemoryManager. The caller owns the string + * that is returned, and is responsible for deleting it. + */ + XMLCh *replace(const XMLCh* const matchString, const XMLCh* const replaceString, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Performs a search and replace on the given string between the specified start and end offsets, replacing + * any substring that matches the regular expression with a string derived from + * the replacement string. + * + * @param matchString the string to match + * @param replaceString the string to replace + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param manager the memory manager to use + * + * @return The resulting string allocated using the given MemoryManager. The caller owns the string + * that is returned, and is responsible for deleting it. + */ + XMLCh *replace(const XMLCh* const matchString, const XMLCh* const replaceString, + const XMLSize_t start, const XMLSize_t end, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + //@} + + // ----------------------------------------------------------------------- + // Static initialize and cleanup methods + // ----------------------------------------------------------------------- + + /** @name Static initilize and cleanup methods */ + //@{ + + static void + staticInitialize(MemoryManager* memoryManager); + + static void + staticCleanup(); + + //@} + +protected: + virtual RegxParser* getRegexParser(const int options, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ----------------------------------------------------------------------- + // Cleanup methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setPattern(const XMLCh* const pattern, const XMLCh* const options=0); + + // ----------------------------------------------------------------------- + // Protected data types + // ----------------------------------------------------------------------- + class XMLUTIL_EXPORT Context : public XMemory + { + public : + Context(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + Context(Context* src); + ~Context(); + + Context& operator= (const Context& other); + inline const XMLCh* getString() const { return fString; } + void reset(const XMLCh* const string, const XMLSize_t stringLen, + const XMLSize_t start, const XMLSize_t limit, const int noClosures, + const unsigned int options); + bool nextCh(XMLInt32& ch, XMLSize_t& offset); + + bool fAdoptMatch; + XMLSize_t fStart; + XMLSize_t fLimit; + XMLSize_t fLength; // fLimit - fStart + int fSize; + XMLSize_t fStringMaxLen; + int* fOffsets; + Match* fMatch; + const XMLCh* fString; + unsigned int fOptions; + MemoryManager* fMemoryManager; + }; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RegularExpression(const RegularExpression&); + RegularExpression& operator=(const RegularExpression&); + + // ----------------------------------------------------------------------- + // Protected Helper methods + // ----------------------------------------------------------------------- + void prepare(); + int parseOptions(const XMLCh* const options); + + /** + * Matching helpers + */ + int match(Context* const context, const Op* const operations, XMLSize_t offset) const; + bool matchIgnoreCase(const XMLInt32 ch1, const XMLInt32 ch2) const; + + /** + * Helper methods used by match(Context* ...) + */ + bool matchChar(Context* const context, const XMLInt32 ch, XMLSize_t& offset, + const bool ignoreCase) const; + bool matchDot(Context* const context, XMLSize_t& offset) const; + bool matchRange(Context* const context, const Op* const op, + XMLSize_t& offset, const bool ignoreCase) const; + bool matchAnchor(Context* const context, const XMLInt32 ch, + const XMLSize_t offset) const; + bool matchBackReference(Context* const context, const XMLInt32 ch, + XMLSize_t& offset, const bool ignoreCase) const; + bool matchString(Context* const context, const XMLCh* const literal, + XMLSize_t& offset, const bool ignoreCase) const; + int matchUnion(Context* const context, const Op* const op, XMLSize_t offset) const; + int matchCapture(Context* const context, const Op* const op, XMLSize_t offset) const; + + /** + * Replace helpers + */ + void subInExp(const XMLCh* const repString, + const XMLCh* const origString, + const Match* subEx, + XMLBuffer &result, + MemoryManager* const manager) const; + /** + * Converts a token tree into an operation tree + */ + void compile(const Token* const token); + Op* compile(const Token* const token, Op* const next, + const bool reverse); + /** + * Helper methods used by compile + */ + Op* compileUnion(const Token* const token, Op* const next, + const bool reverse); + Op* compileParenthesis(const Token* const token, Op* const next, + const bool reverse); + Op* compileConcat(const Token* const token, Op* const next, + const bool reverse); + Op* compileClosure(const Token* const token, Op* const next, + const bool reverse, const Token::tokType tkType); + + bool doTokenOverlap(const Op* op, Token* token); + + // ----------------------------------------------------------------------- + // Protected data members + // ----------------------------------------------------------------------- + bool fHasBackReferences; + bool fFixedStringOnly; + int fNoGroups; + XMLSize_t fMinLength; + unsigned int fNoClosures; + unsigned int fOptions; + const BMPattern* fBMPattern; + XMLCh* fPattern; + XMLCh* fFixedString; + const Op* fOperations; + Token* fTokenTree; + RangeToken* fFirstChar; + static RangeToken* fWordRange; + OpFactory fOpFactory; + TokenFactory* fTokenFactory; + MemoryManager* fMemoryManager; +}; + + + + // ----------------------------------------------------------------------- + // RegularExpression: Static initialize and cleanup methods + // ----------------------------------------------------------------------- + inline void RegularExpression::staticCleanup() + { + fWordRange = 0; + } + + // --------------------------------------------------------------------------- + // RegularExpression: Cleanup methods + // --------------------------------------------------------------------------- + inline void RegularExpression::cleanUp() { + + fMemoryManager->deallocate(fPattern);//delete [] fPattern; + fMemoryManager->deallocate(fFixedString);//delete [] fFixedString; + delete fBMPattern; + delete fTokenFactory; + } + + // --------------------------------------------------------------------------- + // RegularExpression: Helper methods + // --------------------------------------------------------------------------- + inline bool RegularExpression::isSet(const int options, const int flag) { + + return (options & flag) == flag; + } + + + inline Op* RegularExpression::compileUnion(const Token* const token, + Op* const next, + const bool reverse) { + + XMLSize_t tokSize = token->size(); + UnionOp* uniOp = fOpFactory.createUnionOp(tokSize); + + for (XMLSize_t i=0; iaddElement(compile(token->getChild(i), next, reverse)); + } + + return uniOp; + } + + + inline Op* RegularExpression::compileParenthesis(const Token* const token, + Op* const next, + const bool reverse) { + + if (token->getNoParen() == 0) + return compile(token->getChild(0), next, reverse); + + Op* captureOp = 0; + + if (reverse) { + + captureOp = fOpFactory.createCaptureOp(token->getNoParen(), next); + captureOp = compile(token->getChild(0), captureOp, reverse); + + return fOpFactory.createCaptureOp(-token->getNoParen(), captureOp); + } + + captureOp = fOpFactory.createCaptureOp(-token->getNoParen(), next); + captureOp = compile(token->getChild(0), captureOp, reverse); + + return fOpFactory.createCaptureOp(token->getNoParen(), captureOp); + } + + inline Op* RegularExpression::compileConcat(const Token* const token, + Op* const next, + const bool reverse) { + + Op* ret = next; + XMLSize_t tokSize = token->size(); + + if (!reverse) { + + for (XMLSize_t i= tokSize; i>0; i--) { + ret = compile(token->getChild(i-1), ret, false); + } + } + else { + + for (XMLSize_t i= 0; i< tokSize; i++) { + ret = compile(token->getChild(i), ret, true); + } + } + + return ret; + } + + inline Op* RegularExpression::compileClosure(const Token* const token, + Op* const next, + const bool reverse, + const Token::tokType tkType) { + + Op* ret = 0; + Token* childTok = token->getChild(0); + int min = token->getMin(); + int max = token->getMax(); + + if (min >= 0 && min == max) { + + ret = next; + for (int i=0; i< min; i++) { + ret = compile(childTok, ret, reverse); + } + + return ret; + } + + if (min > 0 && max > 0) + max -= min; + + if (max > 0) { + + ret = next; + for (int i=0; isetNextOp(next); + childOp->setChild(compile(childTok, ret, reverse)); + ret = childOp; + } + } + else { + + ChildOp* childOp = 0; + + if (tkType == Token::T_NONGREEDYCLOSURE) { + childOp = fOpFactory.createNonGreedyClosureOp(); + } + else { + + if (childTok->getMinLength() == 0) + childOp = fOpFactory.createClosureOp(fNoClosures++); + else + childOp = fOpFactory.createClosureOp(-1); + } + + childOp->setNextOp(next); + if(next==NULL || !doTokenOverlap(next, childTok)) + { + childOp->setOpType(tkType == Token::T_NONGREEDYCLOSURE?Op::O_FINITE_NONGREEDYCLOSURE:Op::O_FINITE_CLOSURE); + childOp->setChild(compile(childTok, NULL, reverse)); + } + else + { + childOp->setChild(compile(childTok, childOp, reverse)); + } + ret = childOp; + } + + if (min > 0) { + + for (int i=0; i< min; i++) { + ret = compile(childTok, ret, reverse); + } + } + + return ret; + } + +XERCES_CPP_NAMESPACE_END + +#endif +/** + * End of file RegularExpression.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/RegxDefs.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/RegxDefs.hpp new file mode 100644 index 000000000000..2b9ba1302a51 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/RegxDefs.hpp @@ -0,0 +1,239 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REGXDEFS_HPP) +#define XERCESC_INCLUDE_GUARD_REGXDEFS_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +static const XMLCh fgXMLCategory[] = +{ + chLatin_X, chLatin_M, chLatin_L, chNull +}; + +static const XMLCh fgASCIICategory[] = +{ + chLatin_A, chLatin_S, chLatin_C, chLatin_I, chLatin_I, chNull +}; + +static const XMLCh fgUnicodeCategory[] = +{ + chLatin_U, chLatin_N, chLatin_I, chLatin_C, chLatin_O, chLatin_D, + chLatin_E, chNull +}; + +static const XMLCh fgBlockCategory[] = +{ + chLatin_B, chLatin_L, chLatin_O, chLatin_C, chLatin_K, chNull +}; + +static const XMLCh fgXMLSpace[] = +{ + chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_S, + chLatin_p, chLatin_a, chLatin_c, chLatin_e, chNull +}; + +static const XMLCh fgXMLDigit[] = +{ + chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_D, + chLatin_i, chLatin_g, chLatin_i, chLatin_t, chNull +}; + +static const XMLCh fgXMLWord[] = +{ + chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_W, + chLatin_o, chLatin_r, chLatin_d, chNull +}; + +static const XMLCh fgXMLNameChar[] = +{ + chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_N, + chLatin_a, chLatin_m, chLatin_e, chLatin_C, chLatin_h, chLatin_a, + chLatin_r, chNull +}; + +static const XMLCh fgXMLInitialNameChar[] = +{ + chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_I, + chLatin_n, chLatin_i, chLatin_t, chLatin_i, chLatin_a, chLatin_l, + chLatin_N, chLatin_a, chLatin_m, chLatin_e, chLatin_C, chLatin_h, + chLatin_a, chLatin_r, chNull +}; + +static const XMLCh fgASCII[] = +{ + chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i, + chLatin_s, chLatin_A, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chNull +}; + +static const XMLCh fgASCIIDigit[] = +{ + chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i, + chLatin_s, chLatin_D, chLatin_i, chLatin_g, chLatin_i, chLatin_t, chNull +}; + +static const XMLCh fgASCIIWord[] = +{ + chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i, + chLatin_s, chLatin_W, chLatin_o, chLatin_r, chLatin_d, chNull +}; + +static const XMLCh fgASCIISpace[] = +{ + chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i, + chLatin_s, chLatin_S, chLatin_p, chLatin_a, chLatin_c, chLatin_e, chNull +}; + +static const XMLCh fgASCIIXDigit[] = +{ + chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i, + chLatin_s, chLatin_X, chLatin_D, chLatin_i, chLatin_g, chLatin_i, + chLatin_t, chNull +}; + + +static const XMLCh fgUniAll[] = +{ + chLatin_A, chLatin_L, chLatin_L, chNull +}; + +static const XMLCh fgUniIsAlpha[] = +{ + chLatin_I, chLatin_s, chLatin_A, chLatin_l, chLatin_p, chLatin_h, + chLatin_a, chNull +}; + +static const XMLCh fgUniIsAlnum[] = +{ + chLatin_I, chLatin_s, chLatin_A, chLatin_l, chLatin_n, chLatin_u, + chLatin_m, chNull +}; + +static const XMLCh fgUniIsWord[] = +{ + chLatin_I, chLatin_s, chLatin_W, chLatin_o, chLatin_r, chLatin_d, + chNull +}; + + +static const XMLCh fgUniIsDigit[] = +{ + chLatin_I, chLatin_s, chLatin_D, chLatin_i, chLatin_g, chLatin_i, + chLatin_t, chNull +}; + +static const XMLCh fgUniIsUpper[] = +{ + chLatin_I, chLatin_s, chLatin_U, chLatin_p, chLatin_p, chLatin_e, + chLatin_r, chNull +}; + +static const XMLCh fgUniIsLower[] = +{ + chLatin_I, chLatin_s, chLatin_L, chLatin_o, chLatin_w, chLatin_e, + chLatin_r, chNull +}; + +static const XMLCh fgUniIsPunct[] = +{ + chLatin_I, chLatin_s, chLatin_P, chLatin_u, chLatin_n, chLatin_c, + chLatin_t, chNull +}; + +static const XMLCh fgUniIsSpace[] = +{ + chLatin_I, chLatin_s, chLatin_S, chLatin_p, chLatin_a, chLatin_c, + chLatin_e, chNull +}; + +static const XMLCh fgUniAssigned[] = +{ + chLatin_A, chLatin_S, chLatin_S, chLatin_I, chLatin_G, chLatin_N, + chLatin_E, chLatin_D, chNull +}; + + +static const XMLCh fgUniDecimalDigit[] = +{ + chLatin_N, chLatin_d, chNull +}; + +static const XMLCh fgBlockIsSpecials[] = +{ + chLatin_I, chLatin_s, chLatin_S, chLatin_p, chLatin_e, chLatin_c, chLatin_i, chLatin_a, + chLatin_l, chLatin_s, chNull +}; + +static const XMLCh fgBlockIsPrivateUse[] = +{ + chLatin_I, chLatin_s, chLatin_P, chLatin_r, chLatin_i, chLatin_v, chLatin_a, chLatin_t, chLatin_e, + chLatin_U, chLatin_s, chLatin_e, chNull +}; + +static const XMLCh fgUniLetter[] = +{ + chLatin_L, chNull +}; + +static const XMLCh fgUniNumber[] = +{ + chLatin_N, chNull +}; + +static const XMLCh fgUniMark[] = +{ + chLatin_M, chNull +}; + +static const XMLCh fgUniSeparator[] = +{ + chLatin_Z, chNull +}; + +static const XMLCh fgUniPunctuation[] = +{ + chLatin_P, chNull +}; + +static const XMLCh fgUniControl[] = +{ + chLatin_C, chNull +}; + +static const XMLCh fgUniSymbol[] = +{ + chLatin_S, chNull +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file RegxDefs.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/RegxParser.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/RegxParser.hpp new file mode 100644 index 000000000000..43c5efda6575 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/RegxParser.hpp @@ -0,0 +1,284 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REGXPARSER_HPP) +#define XERCESC_INCLUDE_GUARD_REGXPARSER_HPP + +/* + * A regular expression parser + */ +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class Token; +class RangeToken; +class TokenFactory; + +class XMLUTIL_EXPORT RegxParser : public XMemory +{ +public: + + // ----------------------------------------------------------------------- + // Public constant data + // ----------------------------------------------------------------------- + // Parse tokens + typedef enum { + REGX_T_CHAR = 0, + REGX_T_EOF = 1, + REGX_T_OR = 2, + REGX_T_STAR = 3, + REGX_T_PLUS = 4, + REGX_T_QUESTION = 5, + REGX_T_LPAREN = 6, + REGX_T_RPAREN = 7, + REGX_T_DOT = 8, + REGX_T_LBRACKET = 9, + REGX_T_BACKSOLIDUS = 10, + REGX_T_CARET = 11, + REGX_T_DOLLAR = 12, + REGX_T_XMLSCHEMA_CC_SUBTRACTION = 13 + } parserState; + + typedef enum { + regexParserStateNormal = 0, + regexParserStateInBrackets = 1 + } parserStateContext; + + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + RegxParser(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~RegxParser(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + parserStateContext getParseContext() const; + parserState getState() const; + XMLInt32 getCharData() const; + int getNoParen() const; + XMLSize_t getOffset() const; + bool hasBackReferences() const; + TokenFactory* getTokenFactory() const; + int getOptions() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setParseContext(const parserStateContext value); + void setTokenFactory(TokenFactory* const tokFactory); + void setOptions(const int options); + + // ----------------------------------------------------------------------- + // Public Parsing methods + // ----------------------------------------------------------------------- + Token* parse(const XMLCh* const regxStr, const int options); + +protected: + // ----------------------------------------------------------------------- + // Protected Helper methods + // ----------------------------------------------------------------------- + virtual bool checkQuestion(const XMLSize_t off); + virtual XMLInt32 decodeEscaped(); + MemoryManager* getMemoryManager() const; + // ----------------------------------------------------------------------- + // Protected Parsing/Processing methods + // ----------------------------------------------------------------------- + void processNext(); + + Token* parseRegx(const bool matchingRParen = false); + virtual Token* processCaret(); + virtual Token* processDollar(); + virtual Token* processBackReference(); + virtual Token* processStar(Token* const tok); + virtual Token* processPlus(Token* const tok); + virtual Token* processQuestion(Token* const tok); + virtual Token* processParen(); + + RangeToken* parseCharacterClass(const bool useNRange); + RangeToken* processBacksolidus_pP(const XMLInt32 ch); + + // ----------------------------------------------------------------------- + // Protected PreCreated RangeToken access methods + // ----------------------------------------------------------------------- + RangeToken* getTokenForShorthand(const XMLInt32 ch); + + bool isSet(const int flag); +private: + // ----------------------------------------------------------------------- + // Private parsing/processing methods + // ----------------------------------------------------------------------- + Token* parseTerm(const bool matchingRParen = false); + Token* parseFactor(); + Token* parseAtom(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RegxParser(const RegxParser&); + RegxParser& operator=(const RegxParser&); + + // ----------------------------------------------------------------------- + // Private data types + // ----------------------------------------------------------------------- + class ReferencePosition : public XMemory + { + public : + ReferencePosition(const int refNo, const XMLSize_t position); + + int fReferenceNo; + XMLSize_t fPosition; + }; + + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + int hexChar(const XMLInt32 ch); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + bool fHasBackReferences; + int fOptions; + XMLSize_t fOffset; + int fNoGroups; + parserStateContext fParseContext; + XMLSize_t fStringLen; + parserState fState; + XMLInt32 fCharData; + XMLCh* fString; + RefVectorOf* fReferences; + TokenFactory* fTokenFactory; +}; + + +// --------------------------------------------------------------------------- +// RegxParser: Getter Methods +// --------------------------------------------------------------------------- +inline RegxParser::parserStateContext RegxParser::getParseContext() const { + + return fParseContext; +} + +inline RegxParser::parserState RegxParser::getState() const { + + return fState; +} + +inline XMLInt32 RegxParser::getCharData() const { + + return fCharData; +} + +inline int RegxParser::getNoParen() const { + + return fNoGroups; +} + +inline XMLSize_t RegxParser::getOffset() const { + + return fOffset; +} + +inline bool RegxParser::hasBackReferences() const { + + return fHasBackReferences; +} + +inline TokenFactory* RegxParser::getTokenFactory() const { + + return fTokenFactory; +} + +inline MemoryManager* RegxParser::getMemoryManager() const { + return fMemoryManager; +} + +inline int RegxParser::getOptions() const { + + return fOptions; +} + +// --------------------------------------------------------------------------- +// RegxParser: Setter Methods +// --------------------------------------------------------------------------- +inline void RegxParser::setParseContext(const RegxParser::parserStateContext value) { + + fParseContext = value; +} + +inline void RegxParser::setTokenFactory(TokenFactory* const tokFactory) { + + fTokenFactory = tokFactory; +} + +inline void RegxParser::setOptions(const int options) { + + fOptions = options; +} + +// --------------------------------------------------------------------------- +// RegxParser: Helper Methods +// --------------------------------------------------------------------------- +inline bool RegxParser::isSet(const int flag) { + + return (fOptions & flag) == flag; +} + + +inline int RegxParser::hexChar(const XMLInt32 ch) { + + if (ch < chDigit_0 || ch > chLatin_f) + return -1; + + if (ch <= chDigit_9) + return ch - chDigit_0; + + if (ch < chLatin_A) + return -1; + + if (ch <= chLatin_F) + return ch - chLatin_A + 10; + + if (ch < chLatin_a) + return -1; + + return ch - chLatin_a + 10; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file RegxParser.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/RegxUtil.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/RegxUtil.hpp new file mode 100644 index 000000000000..1417badf3fc3 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/RegxUtil.hpp @@ -0,0 +1,109 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REGXUTIL_HPP) +#define XERCESC_INCLUDE_GUARD_REGXUTIL_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +class MemoryManager; + +class XMLUTIL_EXPORT RegxUtil { +public: + + // ----------------------------------------------------------------------- + // Constructors and destructors + // ----------------------------------------------------------------------- + ~RegxUtil() {} + + static XMLInt32 composeFromSurrogate(const XMLCh high, const XMLCh low); + static bool isEOLChar(const XMLCh); + static bool isWordChar(const XMLCh); + static bool isLowSurrogate(const XMLCh ch); + static bool isHighSurrogate(const XMLCh ch); + static void decomposeToSurrogates(XMLInt32 ch, XMLCh& high, XMLCh& low); + + static XMLCh* decomposeToSurrogates(XMLInt32 ch, + MemoryManager* const manager); + static XMLCh* stripExtendedComment(const XMLCh* const expression, + MemoryManager* const manager = 0); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RegxUtil(); +}; + + +inline bool RegxUtil::isEOLChar(const XMLCh ch) { + + return (ch == chLF || ch == chCR || ch == chLineSeparator + || ch == chParagraphSeparator); +} + +inline XMLInt32 RegxUtil::composeFromSurrogate(const XMLCh high, const XMLCh low) { + // see http://unicode.org/unicode/faq/utf_bom.html#35 + const XMLInt32 SURROGATE_OFFSET = 0x10000 - (0xD800 << 10) - 0xDC00; + return (high << 10) + low + SURROGATE_OFFSET; +} + +inline bool RegxUtil::isLowSurrogate(const XMLCh ch) { + + return (ch & 0xFC00) == 0xDC00; +} + +inline bool RegxUtil::isHighSurrogate(const XMLCh ch) { + + return (ch & 0xFC00) == 0xD800; +} + +inline void RegxUtil::decomposeToSurrogates(XMLInt32 ch, XMLCh& high, XMLCh& low) { + // see http://unicode.org/unicode/faq/utf_bom.html#35 + const XMLInt32 LEAD_OFFSET = 0xD800 - (0x10000 >> 10); + high = XMLCh(LEAD_OFFSET + (ch >> 10)); + low = XMLCh(0xDC00 + (ch & 0x3FF)); +} + +inline bool RegxUtil::isWordChar(const XMLCh ch) { + + if ((ch == chUnderscore) + || (ch >= chDigit_0 && ch <= chDigit_9) + || (ch >= chLatin_A && ch <= chLatin_Z) + || (ch >= chLatin_a && ch <= chLatin_z)) + return true; + + return false; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file RegxUtil.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/StringToken.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/StringToken.hpp new file mode 100644 index 000000000000..6f937ec88d91 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/StringToken.hpp @@ -0,0 +1,100 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_STRINGTOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_STRINGTOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT StringToken : public Token { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + StringToken(const tokType tkType, + const XMLCh* const literal, + const int refNo, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~StringToken(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + int getReferenceNo() const; + const XMLCh* getString() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setString(const XMLCh* const literal); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + StringToken(const StringToken&); + StringToken& operator=(const StringToken&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + int fRefNo; + XMLCh* fString; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// StringToken: getter methods +// --------------------------------------------------------------------------- +inline int StringToken::getReferenceNo() const { + + return fRefNo; +} + +inline const XMLCh* StringToken::getString() const { + + return fString; +} + +// --------------------------------------------------------------------------- +// StringToken: Setter methods +// --------------------------------------------------------------------------- +inline void StringToken::setString(const XMLCh* const literal) { + + fMemoryManager->deallocate(fString);//delete [] fString; + fString = 0; + fString = XMLString::replicate(literal, fMemoryManager); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file StringToken.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/Token.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/Token.hpp new file mode 100644 index 000000000000..80507266a1c1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/Token.hpp @@ -0,0 +1,262 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_TOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class RangeToken; +class TokenFactory; + + +class XMLUTIL_EXPORT Token : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constants + // ----------------------------------------------------------------------- + // Token types + typedef enum { + T_CHAR = 0, + T_CONCAT = 1, + T_UNION = 2, + T_CLOSURE = 3, + T_RANGE = 4, + T_NRANGE = 5, + T_PAREN = 6, + T_EMPTY = 7, + T_ANCHOR = 8, + T_NONGREEDYCLOSURE = 9, + T_STRING = 10, + T_DOT = 11, + T_BACKREFERENCE = 12 + } tokType; + + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + Token(const tokType tkType + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~Token(); + + static const XMLInt32 UTF16_MAX; + + typedef enum { + FC_CONTINUE = 0, + FC_TERMINAL = 1, + FC_ANY = 2 + } firstCharacterOptions; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + tokType getTokenType() const; + XMLSize_t getMinLength() const; + int getMaxLength() const; + virtual Token* getChild(const XMLSize_t index) const; + virtual XMLSize_t size() const; + virtual int getMin() const; + virtual int getMax() const; + virtual int getNoParen() const; + virtual int getReferenceNo() const; + virtual const XMLCh* getString() const; + virtual XMLInt32 getChar() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setTokenType(const tokType tokType); + virtual void setMin(const int minVal); + virtual void setMax(const int maxVal); + + // ----------------------------------------------------------------------- + // Range manipulation methods + // ----------------------------------------------------------------------- + virtual void addRange(const XMLInt32 start, const XMLInt32 end); + virtual void mergeRanges(const Token *const tok); + virtual void sortRanges(); + virtual void compactRanges(); + virtual void subtractRanges(RangeToken* const tok); + virtual void intersectRanges(RangeToken* const tok); + + // ----------------------------------------------------------------------- + // Putter methods + // ----------------------------------------------------------------------- + virtual void addChild(Token* const child, TokenFactory* const tokFactory); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + firstCharacterOptions analyzeFirstCharacter(RangeToken* const rangeTok, const int options, + TokenFactory* const tokFactory); + Token* findFixedString(int options, int& outOptions); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Token(const Token&); + Token& operator=(const Token&); + + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + bool isSet(const int options, const unsigned int flag); + bool isShorterThan(Token* const tok); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + tokType fTokenType; +protected: + MemoryManager* const fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// Token: getter methods +// --------------------------------------------------------------------------- +inline Token::tokType Token::getTokenType() const { + + return fTokenType; +} + +inline XMLSize_t Token::size() const { + + return 0; +} + +inline Token* Token::getChild(const XMLSize_t) const { + + return 0; +} + +inline int Token::getMin() const { + + return -1; +} + +inline int Token::getMax() const { + + return -1; +} + +inline int Token::getReferenceNo() const { + + return 0; +} + +inline int Token::getNoParen() const { + + return 0; +} + +inline const XMLCh* Token::getString() const { + + return 0; +} + +inline XMLInt32 Token::getChar() const { + + return -1; +} + +// --------------------------------------------------------------------------- +// Token: setter methods +// --------------------------------------------------------------------------- +inline void Token::setTokenType(const Token::tokType tokType) { + + fTokenType = tokType; +} + +inline void Token::setMax(const int) { + // ClosureToken +} + +inline void Token::setMin(const int) { + // ClosureToken +} + +inline bool Token::isSet(const int options, const unsigned int flag) { + + return (options & flag) == flag; +} + +// --------------------------------------------------------------------------- +// Token: setter methods +// --------------------------------------------------------------------------- +inline void Token::addChild(Token* const, TokenFactory* const) { + + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager); +} + +// --------------------------------------------------------------------------- +// Token: Range manipulation methods +// --------------------------------------------------------------------------- +inline void Token::addRange(const XMLInt32, const XMLInt32) { + + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager); +} + +inline void Token::mergeRanges(const Token *const) { + + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager); +} + +inline void Token::sortRanges() { + + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager); +} + +inline void Token::compactRanges() { + + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager); +} + +inline void Token::subtractRanges(RangeToken* const) { + + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager); +} + +inline void Token::intersectRanges(RangeToken* const) { + + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file Token.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/TokenFactory.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/TokenFactory.hpp new file mode 100644 index 000000000000..a605e7f87c97 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/TokenFactory.hpp @@ -0,0 +1,134 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TOKENFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_TOKENFACTORY_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class RangeToken; +class CharToken; +class ClosureToken; +class ConcatToken; +class ParenToken; +class StringToken; +class UnionToken; + +class XMLUTIL_EXPORT TokenFactory : public XMemory +{ + +public: + // ----------------------------------------------------------------------- + // Constructors and destructors + // ----------------------------------------------------------------------- + TokenFactory(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~TokenFactory(); + + // ----------------------------------------------------------------------- + // Factory methods + // ----------------------------------------------------------------------- + Token* createToken(const Token::tokType tkType); + + ParenToken* createParenthesis(Token* const token, const int noGroups); + ClosureToken* createClosure(Token* const token, bool isNonGreedy = false); + ConcatToken* createConcat(Token* const token1, Token* const token2); + UnionToken* createUnion(const bool isConcat = false); + RangeToken* createRange(const bool isNegRange = false); + CharToken* createChar(const XMLUInt32 ch, const bool isAnchor = false); + StringToken* createBackReference(const int refNo); + StringToken* createString(const XMLCh* const literal); + + + //static void printUnicode(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /* + * Gets a commonly used RangeToken from the token registry based on the + * range name. + */ + RangeToken* getRange(const XMLCh* const name,const bool complement=false); + Token* getLineBegin(); + Token* getLineEnd(); + Token* getDot(); + MemoryManager* getMemoryManager() const; + + static RangeToken* staticGetRange(const XMLCh* const name,const bool complement=false); + + // ----------------------------------------------------------------------- + // Notification that lazy data has been deleted + // ----------------------------------------------------------------------- + static void reinitTokenFactoryMutex(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + TokenFactory(const TokenFactory&); + TokenFactory& operator=(const TokenFactory&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fRangeInitialized + // Indicates whether we have initialized the RangeFactory instance or + // not + // + // fToken + // Contains user created Token objects. Used for memory cleanup. + // ----------------------------------------------------------------------- + RefVectorOf* fTokens; + Token* fEmpty; + Token* fLineBegin; + Token* fLineEnd; + Token* fDot; + MemoryManager* fMemoryManager; +}; + +inline RangeToken* TokenFactory::getRange(const XMLCh* const name,const bool complement) +{ + return staticGetRange(name, complement); +} + +inline MemoryManager* TokenFactory::getMemoryManager() const +{ + return fMemoryManager; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file TokenFactory + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/TokenInc.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/TokenInc.hpp new file mode 100644 index 000000000000..fa08b4364b7e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/TokenInc.hpp @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TOKENINC_HPP) +#define XERCESC_INCLUDE_GUARD_TOKENINC_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file TokenInc.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/UniCharTable.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/UniCharTable.hpp new file mode 100644 index 000000000000..a2c9a758f60a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/UniCharTable.hpp @@ -0,0 +1,4131 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// These are Unicode character type lookup table. The table is used by the +// XMLUniCharacter class to return the type of a given XMLCh char +// (i.e LowercaseLetter, TitlecaseLetter, DigitOther, etc...) in case +// ICU is not used. +// +// The table is generated by invoking the TokenFactory::printUnicode() +// method (which is commented out). +// --------------------------------------------------------------------------- +const XMLByte fgUniCharsTable[0x10000] = +{ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + , 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + , 0x0C, 0x17, 0x17, 0x17, 0x19, 0x17, 0x17, 0x17, 0x14, 0x15, 0x17, 0x18, 0x17, 0x13, 0x17, 0x17 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x17, 0x17, 0x18, 0x18, 0x18, 0x17 + , 0x17, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x14, 0x17, 0x15, 0x1A, 0x16 + , 0x1A, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x14, 0x18, 0x15, 0x18, 0x0F + , 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + , 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + , 0x0C, 0x17, 0x19, 0x19, 0x19, 0x19, 0x1B, 0x1B, 0x1A, 0x1B, 0x02, 0x1C, 0x18, 0x10, 0x1B, 0x1A + , 0x1B, 0x18, 0x0B, 0x0B, 0x1A, 0x02, 0x1B, 0x17, 0x1A, 0x0B, 0x02, 0x1D, 0x0B, 0x0B, 0x0B, 0x17 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x18, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01 + , 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x02 + , 0x02, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01 + , 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x02, 0x01 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x02, 0x02, 0x01, 0x02, 0x01, 0x01 + , 0x02, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0x02, 0x02, 0x05, 0x01, 0x02, 0x02, 0x02 + , 0x05, 0x05, 0x05, 0x05, 0x01, 0x03, 0x02, 0x01, 0x03, 0x02, 0x01, 0x03, 0x02, 0x01, 0x02, 0x01 + , 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x02, 0x01, 0x03, 0x02, 0x01, 0x02, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 + , 0x04, 0x04, 0x1A, 0x1A, 0x1A, 0x1A, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 + , 0x04, 0x04, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A + , 0x04, 0x04, 0x04, 0x04, 0x04, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x04, 0x1A + , 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x00, 0x00, 0x00, 0x00, 0x1A, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x1A, 0x1A, 0x01, 0x17, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01 + , 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00 + , 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x18, 0x01, 0x02, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x1B, 0x06, 0x06, 0x06, 0x06, 0x00, 0x07, 0x07, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x04, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17 + , 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x17, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x17, 0x06 + , 0x17, 0x06, 0x06, 0x17, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x1B, 0x1B + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17 + , 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x17, 0x17, 0x17, 0x17, 0x05, 0x05 + , 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x17, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x10, 0x07, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x04, 0x06, 0x06, 0x1B, 0x06, 0x06, 0x06, 0x06, 0x05, 0x05 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x05, 0x05, 0x05, 0x1B, 0x1B, 0x05 + , 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x00, 0x10 + , 0x05, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x05, 0x05, 0x05 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x06, 0x06, 0x08, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x06, 0x05, 0x08, 0x08 + , 0x08, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08, 0x08, 0x08, 0x06, 0x00, 0x00 + , 0x05, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x06, 0x06, 0x17, 0x17, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x06, 0x08, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x05 + , 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x06, 0x05, 0x08, 0x08 + , 0x08, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x06, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x05 + , 0x05, 0x05, 0x06, 0x06, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x05, 0x05, 0x19, 0x19, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x06, 0x06, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x05 + , 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x05, 0x00, 0x05, 0x05, 0x00, 0x05, 0x05, 0x00, 0x00, 0x06, 0x00, 0x08, 0x08 + , 0x08, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x06, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x06, 0x06, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x06, 0x06, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05 + , 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x06, 0x05, 0x08, 0x08 + , 0x08, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x08, 0x00, 0x08, 0x08, 0x06, 0x00, 0x00 + , 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x06, 0x06, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x06, 0x08, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x05 + , 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x06, 0x05, 0x08, 0x06 + , 0x08, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x06, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x05 + , 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x1B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x06, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05 + , 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 + , 0x06, 0x08, 0x08, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x08, 0x08, 0x08, 0x06, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x0B, 0x0B, 0x0B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x19, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x08, 0x08, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06 + , 0x06, 0x08, 0x08, 0x08, 0x08, 0x00, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x08, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x06, 0x05, 0x08, 0x06 + , 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x06, 0x08, 0x08, 0x00, 0x08, 0x08, 0x06, 0x06, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00 + , 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x08, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 + , 0x08, 0x06, 0x06, 0x06, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x08, 0x08, 0x08, 0x06, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x08, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x08 + , 0x08, 0x08, 0x06, 0x06, 0x06, 0x00, 0x06, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x08, 0x08, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x06, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x19 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x17 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x05, 0x05, 0x00, 0x05, 0x00, 0x00, 0x05, 0x05, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x00, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x00, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05 + , 0x05, 0x06, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x05, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x04, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x1B, 0x1B, 0x1B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17 + , 0x17, 0x17, 0x17, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x06, 0x06, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x1B, 0x06, 0x1B, 0x06, 0x1B, 0x06, 0x14, 0x15, 0x14, 0x15, 0x08, 0x08 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x08 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x17, 0x06, 0x06, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x06, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x1B + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x00, 0x08, 0x06, 0x06, 0x06 + , 0x06, 0x08, 0x06, 0x00, 0x00, 0x00, 0x06, 0x06, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x08, 0x08, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x09, 0x09, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x17, 0x17, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x0C, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x14, 0x15, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x17, 0x17, 0x17, 0x0A, 0x0A + , 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05 + , 0x05, 0x05, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x06, 0x06, 0x06, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05 + , 0x05, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x10, 0x10, 0x08, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08 + , 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, 0x08, 0x08, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x17, 0x17, 0x17, 0x04, 0x17, 0x17, 0x17, 0x19, 0x05, 0x06, 0x00, 0x00 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x13, 0x17, 0x17, 0x17, 0x17, 0x06, 0x06, 0x06, 0x0C, 0x00 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00 + , 0x06, 0x06, 0x06, 0x08, 0x08, 0x08, 0x08, 0x06, 0x06, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00 + , 0x08, 0x08, 0x06, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x00, 0x00, 0x00, 0x17, 0x17, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04 + , 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 + , 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 + , 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 + , 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x03, 0x1A, 0x02, 0x1A + , 0x1A, 0x1A, 0x02, 0x02, 0x02, 0x00, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x03, 0x1A, 0x1A, 0x1A + , 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x1A, 0x1A, 0x1A + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x1A, 0x1A, 0x1A + , 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x03, 0x1A, 0x1A, 0x00 + , 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x10 + , 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x17, 0x17, 0x1C, 0x1D, 0x14, 0x1C, 0x1C, 0x1D, 0x14, 0x1C + , 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x0D, 0x0E, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0C + , 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x1C, 0x1D, 0x17, 0x17, 0x17, 0x17, 0x16 + , 0x16, 0x17, 0x17, 0x17, 0x18, 0x14, 0x15, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17 + , 0x17, 0x17, 0x18, 0x17, 0x16, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C + , 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10 + , 0x0B, 0x02, 0x00, 0x00, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x18, 0x18, 0x18, 0x14, 0x15, 0x02 + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x18, 0x18, 0x18, 0x14, 0x15, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19 + , 0x19, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07 + , 0x07, 0x06, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x01, 0x1B, 0x1B, 0x1B, 0x1B, 0x01, 0x1B, 0x1B, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02 + , 0x01, 0x01, 0x01, 0x02, 0x1B, 0x01, 0x1B, 0x1B, 0x1B, 0x01, 0x01, 0x01, 0x01, 0x01, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x01, 0x1B, 0x01, 0x1B, 0x01, 0x1B, 0x01, 0x01, 0x01, 0x01, 0x1B, 0x02 + , 0x01, 0x01, 0x1B, 0x01, 0x02, 0x05, 0x05, 0x05, 0x05, 0x02, 0x1B, 0x1B, 0x00, 0x02, 0x01, 0x01 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x01, 0x02, 0x02, 0x02, 0x02, 0x1B, 0x18, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A + , 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A + , 0x0A, 0x0A, 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x18, 0x1B, 0x1B, 0x1B, 0x1B + , 0x18, 0x1B, 0x1B, 0x18, 0x1B, 0x1B, 0x18, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x18 + , 0x1B, 0x1B, 0x18, 0x1B, 0x18, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x18, 0x18, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x14, 0x15, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x14, 0x15, 0x17, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x18, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x1B, 0x00, 0x1B + , 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00 + , 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15 + , 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x1B, 0x00, 0x00, 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x00, 0x00, 0x00, 0x00 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14 + , 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x14, 0x15, 0x14, 0x15, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x14, 0x15, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00 + , 0x0C, 0x17, 0x17, 0x17, 0x1B, 0x04, 0x05, 0x0A, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15 + , 0x14, 0x15, 0x1B, 0x1B, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x13, 0x14, 0x15, 0x15 + , 0x1B, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x13, 0x04, 0x04, 0x04, 0x04, 0x04, 0x1B, 0x1B, 0x0A, 0x0A, 0x0A, 0x04, 0x05, 0x17, 0x1B, 0x1B + , 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x06, 0x06, 0x1A, 0x1A, 0x04, 0x04, 0x05 + , 0x13, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x16, 0x04, 0x04, 0x04, 0x05 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00 + , 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x1B, 0x1B, 0x0B, 0x0B, 0x0B, 0x0B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00 + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x1B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x18, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00 + , 0x05, 0x05, 0x00, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x14, 0x15 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x19, 0x1B, 0x00, 0x00 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x17, 0x13, 0x13, 0x16, 0x16, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14 + , 0x15, 0x14, 0x15, 0x14, 0x15, 0x17, 0x17, 0x14, 0x15, 0x17, 0x17, 0x17, 0x17, 0x16, 0x16, 0x16 + , 0x17, 0x17, 0x17, 0x00, 0x17, 0x17, 0x17, 0x17, 0x13, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x17 + , 0x17, 0x17, 0x18, 0x13, 0x18, 0x18, 0x18, 0x00, 0x17, 0x19, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x10 + , 0x00, 0x17, 0x17, 0x17, 0x19, 0x17, 0x17, 0x17, 0x14, 0x15, 0x17, 0x18, 0x17, 0x13, 0x17, 0x17 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x17, 0x17, 0x18, 0x18, 0x18, 0x17 + , 0x17, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x14, 0x17, 0x15, 0x1A, 0x16 + , 0x1A, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x14, 0x18, 0x15, 0x18, 0x14 + , 0x15, 0x17, 0x14, 0x15, 0x17, 0x16, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00 + , 0x19, 0x19, 0x18, 0x1A, 0x1B, 0x19, 0x19, 0x00, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x1B, 0x1B, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x1B, 0x1B, 0x00, 0x00 +}; + + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/UnicodeRangeFactory.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/UnicodeRangeFactory.hpp new file mode 100644 index 000000000000..92cc37a57860 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/UnicodeRangeFactory.hpp @@ -0,0 +1,88 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_UNICODERANGEFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_UNICODERANGEFACTORY_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT UnicodeRangeFactory: public RangeFactory { + +public: + // ----------------------------------------------------------------------- + // Public Constants + // ----------------------------------------------------------------------- + // Unicode categories + enum { + CHAR_LETTER = XMLUniCharacter::FINAL_PUNCTUATION+1, + CHAR_MARK, + CHAR_NUMBER, + CHAR_SEPARATOR, + CHAR_OTHER, + CHAR_PUNCTUATION, + CHAR_SYMBOL, + UNICATEGSIZE + }; + + // ----------------------------------------------------------------------- + // Constructors and operators + // ----------------------------------------------------------------------- + UnicodeRangeFactory(); + ~UnicodeRangeFactory(); + + // ----------------------------------------------------------------------- + // Initialization methods + // ----------------------------------------------------------------------- + void initializeKeywordMap(RangeTokenMap *rangeTokMap = 0); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + static unsigned short getUniCategory(const unsigned short type); + +protected: + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + void buildRanges(RangeTokenMap *rangeTokMap = 0); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + UnicodeRangeFactory(const UnicodeRangeFactory&); + UnicodeRangeFactory& operator=(const UnicodeRangeFactory&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file UnicodeRangeFactory.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/UnionToken.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/UnionToken.hpp new file mode 100644 index 000000000000..6a8e73a690a5 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/UnionToken.hpp @@ -0,0 +1,91 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_UNIONTOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_UNIONTOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT UnionToken : public Token { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + UnionToken(const tokType tkType + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~UnionToken(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t size() const; + Token* getChild(const XMLSize_t index) const; + + // ----------------------------------------------------------------------- + // Children manipulation methods + // ----------------------------------------------------------------------- + void addChild(Token* const child, TokenFactory* const tokFactory); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + UnionToken(const UnionToken&); + UnionToken& operator=(const UnionToken&); + + // ----------------------------------------------------------------------- + // Private Constants + // ----------------------------------------------------------------------- + static const unsigned short INITIALSIZE; + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + RefVectorOf* fChildren; +}; + + +// --------------------------------------------------------------------------- +// UnionToken: getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t UnionToken::size() const { + + return fChildren == 0 ? 0 : fChildren->size(); +} + +inline Token* UnionToken::getChild(const XMLSize_t index) const { + + return fChildren->elementAt(index); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file UnionToken.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/XMLRangeFactory.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/XMLRangeFactory.hpp new file mode 100644 index 000000000000..849f1631be0a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/XMLRangeFactory.hpp @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLRANGEFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_XMLRANGEFACTORY_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLRangeFactory: public RangeFactory { + +public: + // ----------------------------------------------------------------------- + // Constructors and operators + // ----------------------------------------------------------------------- + XMLRangeFactory(); + ~XMLRangeFactory(); + + // ----------------------------------------------------------------------- + // Initialization methods + // ----------------------------------------------------------------------- + void initializeKeywordMap(RangeTokenMap *rangeTokMap = 0); + +protected: + // ----------------------------------------------------------------------- + // Protected Helper methods + // ----------------------------------------------------------------------- + void buildRanges(RangeTokenMap *rangeTokMap = 0); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLRangeFactory(const XMLRangeFactory&); + XMLRangeFactory& operator=(const XMLRangeFactory&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file XMLRangeFactory.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/util/regx/XMLUniCharacter.hpp b/src/libs/xerces-c/mingw/include/xercesc/util/regx/XMLUniCharacter.hpp new file mode 100644 index 000000000000..a2d97132855f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/util/regx/XMLUniCharacter.hpp @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLUNICHARACTER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLUNICHARACTER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Class for representing unicode characters + */ +class XMLUTIL_EXPORT XMLUniCharacter +{ +public: + // ----------------------------------------------------------------------- + // Public Constants + // ----------------------------------------------------------------------- + // Unicode char types + enum { + UNASSIGNED = 0, + UPPERCASE_LETTER = 1, + LOWERCASE_LETTER = 2, + TITLECASE_LETTER = 3, + MODIFIER_LETTER = 4, + OTHER_LETTER = 5, + NON_SPACING_MARK = 6, + ENCLOSING_MARK = 7, + COMBINING_SPACING_MARK = 8, + DECIMAL_DIGIT_NUMBER = 9, + LETTER_NUMBER = 10, + OTHER_NUMBER = 11, + SPACE_SEPARATOR = 12, + LINE_SEPARATOR = 13, + PARAGRAPH_SEPARATOR = 14, + CONTROL = 15, + FORMAT = 16, + PRIVATE_USE = 17, + SURROGATE = 18, + DASH_PUNCTUATION = 19, + START_PUNCTUATION = 20, + END_PUNCTUATION = 21, + CONNECTOR_PUNCTUATION = 22, + OTHER_PUNCTUATION = 23, + MATH_SYMBOL = 24, + CURRENCY_SYMBOL = 25, + MODIFIER_SYMBOL = 26, + OTHER_SYMBOL = 27, + INITIAL_PUNCTUATION = 28, + FINAL_PUNCTUATION = 29 + }; + + /** destructor */ + ~XMLUniCharacter() {} + + /* Static methods for getting unicode character type */ + /** @name Getter functions */ + //@{ + + /** Gets the unicode type of a given character + * + * @param ch The character we want to get its unicode type + */ + static unsigned short getType(const XMLCh ch); + //@} + +private : + + /** @name Constructors and Destructor */ + //@{ + /** Unimplemented default constructor */ + XMLUniCharacter(); + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XMLUniCharacter.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDAttDef.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDAttDef.hpp new file mode 100644 index 000000000000..1d6da485911e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDAttDef.hpp @@ -0,0 +1,141 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDATTDEF_HPP) +#define XERCESC_INCLUDE_GUARD_DTDATTDEF_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class is a derivative of the core XMLAttDef class. This class adds +// any DTD specific data members and provides DTD specific implementations +// of any underlying attribute def virtual methods. +// +// In the DTD we don't do namespaces, so the attribute names are just the +// QName literally from the DTD. This is what we return as the full name, +// which is what is used to key these in any name keyed collections. +// +class VALIDATORS_EXPORT DTDAttDef : public XMLAttDef +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructors + // ----------------------------------------------------------------------- + DTDAttDef(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + DTDAttDef + ( + const XMLCh* const attName + , const XMLAttDef::AttTypes type = CData + , const XMLAttDef::DefAttTypes defType = Implied + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DTDAttDef + ( + const XMLCh* const attName + , const XMLCh* const attValue + , const XMLAttDef::AttTypes type + , const XMLAttDef::DefAttTypes defType + , const XMLCh* const enumValues = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~DTDAttDef(); + + + // ----------------------------------------------------------------------- + // Implementation of the XMLAttDef interface + // ----------------------------------------------------------------------- + virtual const XMLCh* getFullName() const; + + //does nothing currently + virtual void reset() {}; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t getElemId() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setElemId(const XMLSize_t newId); + void setName(const XMLCh* const newName); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DTDAttDef) + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DTDAttDef(const DTDAttDef &); + DTDAttDef& operator = (const DTDAttDef&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fElemId + // This is the id of the element (the id is into the element decl + // pool) of the element this attribute def said it belonged to. + // This is used later to link back to the element, mostly for + // validation purposes. + // + // fName + // This is the name of the attribute. Since we don't do namespaces + // in the DTD, its just the fully qualified name. + // ----------------------------------------------------------------------- + XMLSize_t fElemId; + XMLCh* fName; +}; + + +// --------------------------------------------------------------------------- +// DTDAttDef: Implementation of the XMLAttDef interface +// --------------------------------------------------------------------------- +inline const XMLCh* DTDAttDef::getFullName() const +{ + return fName; +} + + +// --------------------------------------------------------------------------- +// DTDAttDef: Getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t DTDAttDef::getElemId() const +{ + return fElemId; +} + +// --------------------------------------------------------------------------- +// DTDAttDef: Setter methods +// --------------------------------------------------------------------------- +inline void DTDAttDef::setElemId(const XMLSize_t newId) +{ + fElemId = newId; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDAttDefList.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDAttDefList.hpp new file mode 100644 index 000000000000..e034e215e21b --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDAttDefList.hpp @@ -0,0 +1,161 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDATTDEFLIST_HPP) +#define XERCESC_INCLUDE_GUARD_DTDATTDEFLIST_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This is a derivative of the framework abstract class which defines the +// interface to a list of attribute defs that belong to a particular +// element. The scanner needs to be able to get a list of the attributes +// that an element supports, for use during the validation process and for +// fixed/default attribute processing. +// +// Since each validator can store attributes differently, this abstract +// interface allows each validator to provide an implementation of this +// data structure that works best for it. +// +// For us, we just wrap the RefHashTableOf collection that the DTDElementDecl +// class uses to store the attributes that belong to it. +// +// This clss does not adopt the hash table, it just references it. The +// hash table is owned by the element decl it is a member of. +// +class VALIDATORS_EXPORT DTDAttDefList : public XMLAttDefList +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DTDAttDefList + ( + RefHashTableOf* const listToUse, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~DTDAttDefList(); + + + // ----------------------------------------------------------------------- + // Implementation of the virtual interface + // ----------------------------------------------------------------------- + + virtual bool isEmpty() const; + virtual XMLAttDef* findAttDef + ( + const unsigned int uriID + , const XMLCh* const attName + ); + virtual const XMLAttDef* findAttDef + ( + const unsigned int uriID + , const XMLCh* const attName + ) const; + virtual XMLAttDef* findAttDef + ( + const XMLCh* const attURI + , const XMLCh* const attName + ); + virtual const XMLAttDef* findAttDef + ( + const XMLCh* const attURI + , const XMLCh* const attName + ) const; + + /** + * return total number of attributes in this list + */ + virtual XMLSize_t getAttDefCount() const ; + + /** + * return attribute at the index-th position in the list. + */ + virtual XMLAttDef &getAttDef(XMLSize_t index) ; + + /** + * return attribute at the index-th position in the list. + */ + virtual const XMLAttDef &getAttDef(XMLSize_t index) const ; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DTDAttDefList) + + DTDAttDefList(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private : + + void addAttDef(DTDAttDef *toAdd); + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DTDAttDefList(const DTDAttDefList &); + DTDAttDefList& operator = (const DTDAttDefList&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fEnum + // This is an enerator for the list that we use to do the enumerator + // type methods of this class. + // + // fList + // The list of DTDAttDef objects that represent the attributes that + // a particular element supports. + // fArray + // vector of pointers to the DTDAttDef objects contained in this list + // fSize + // size of fArray + // fCount + // number of DTDAttDef objects currently stored in this list + // ----------------------------------------------------------------------- + RefHashTableOfEnumerator* fEnum; + RefHashTableOf* fList; + DTDAttDef** fArray; + XMLSize_t fSize; + XMLSize_t fCount; + + friend class DTDElementDecl; +}; + +inline void DTDAttDefList::addAttDef(DTDAttDef *toAdd) +{ + if(fCount == fSize) + { + // need to grow fArray + fSize <<= 1; + DTDAttDef** newArray = (DTDAttDef **)((getMemoryManager())->allocate( sizeof(DTDAttDef*) * fSize )); + memcpy(newArray, fArray, fCount * sizeof(DTDAttDef *)); + (getMemoryManager())->deallocate(fArray); + fArray = newArray; + } + fArray[fCount++] = toAdd; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDElementDecl.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDElementDecl.hpp new file mode 100644 index 000000000000..777950aef3f7 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDElementDecl.hpp @@ -0,0 +1,247 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDELEMENTDECL_HPP) +#define XERCESC_INCLUDE_GUARD_DTDELEMENTDECL_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentSpecNode; +class DTDAttDefList; + + +// +// This class is a derivative of the basic element decl. This one implements +// the virtuals so that they work for a DTD. The big difference is that +// they don't live in any URL in the DTD. The names are just stored as full +// QNames, so they are not split out and element decls don't live within +// URL namespaces or anything like that. +// + +class VALIDATORS_EXPORT DTDElementDecl : public XMLElementDecl +{ +public : + // ----------------------------------------------------------------------- + // Class specific types + // + // ModelTypes + // Indicates the type of content model that an element has. This + // indicates how the content model is represented and validated. + // ----------------------------------------------------------------------- + enum ModelTypes + { + Empty + , Any + , Mixed_Simple + , Children + + , ModelTypes_Count + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DTDElementDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + DTDElementDecl + ( + const XMLCh* const elemRawName + , const unsigned int uriId + , const ModelTypes modelType + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DTDElementDecl + ( + QName* const elementName + , const ModelTypes modelType = Any + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~DTDElementDecl(); + + + // ----------------------------------------------------------------------- + // The virtual element decl interface + // ----------------------------------------------------------------------- + virtual XMLAttDefList& getAttDefList() const; + virtual CharDataOpts getCharDataOpts() const; + virtual bool hasAttDefs() const; + virtual const ContentSpecNode* getContentSpec() const; + virtual ContentSpecNode* getContentSpec(); + virtual void setContentSpec(ContentSpecNode* toAdopt); + virtual XMLContentModel* getContentModel(); + virtual void setContentModel(XMLContentModel* const newModelToAdopt); + virtual const XMLCh* getFormattedContentModel () const; + + // ----------------------------------------------------------------------- + // Support keyed collections + // + // This method allows objects of this type be placed into one of the + // standard keyed collections. This method will return the full name of + // the element, which will vary depending upon the type of the grammar. + // ----------------------------------------------------------------------- + const XMLCh* getKey() const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const DTDAttDef* getAttDef(const XMLCh* const attName) const; + DTDAttDef* getAttDef(const XMLCh* const attName); + ModelTypes getModelType() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void addAttDef(DTDAttDef* const toAdd); + void setModelType(const DTDElementDecl::ModelTypes toSet); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DTDElementDecl) + + virtual XMLElementDecl::objectType getObjectType() const; + +private : + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void faultInAttDefList() const; + XMLContentModel* createChildModel() ; + XMLContentModel* makeContentModel() ; + XMLCh* formatContentModel () const ; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DTDElementDecl(const DTDElementDecl &); + DTDElementDecl& operator = (const DTDElementDecl&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fAttDefs + // The list of attributes that are defined for this element. Each + // element is its own little 'namespace' for attributes, so each + // element maintains its own list of owned attribute defs. It is + // faulted in when an attribute is actually added. + // + // fAttList + // We have to return a view of our att defs via the abstract view + // that the scanner understands. It may or may not ever be asked + // for so we fault it in as needed. + // + // fContentSpec + // This is the content spec for the node. It contains the original + // content spec that was read from the DTD, as a tree of nodes. This + // one is always set up, and is used to build the fContentModel + // version if we are validating. + // + // fModelType + // The content model type of this element. This tells us what kind + // of content model to create. + // + // fContentModel + // The content model object for this element. It is stored here via + // its abstract interface. + // + // fFormattedModel + // This is a faulted in member. When the outside world asks for + // our content model as a string, we format it and fault it into + // this field (to avoid doing the formatted over and over.) + // ----------------------------------------------------------------------- + ModelTypes fModelType; + + RefHashTableOf* fAttDefs; + DTDAttDefList* fAttList; + ContentSpecNode* fContentSpec; + XMLContentModel* fContentModel; + XMLCh* fFormattedModel; +}; + +// --------------------------------------------------------------------------- +// DTDElementDecl: XMLElementDecl virtual interface implementation +// --------------------------------------------------------------------------- +inline ContentSpecNode* DTDElementDecl::getContentSpec() +{ + return fContentSpec; +} + +inline const ContentSpecNode* DTDElementDecl::getContentSpec() const +{ + return fContentSpec; +} + +inline XMLContentModel* DTDElementDecl::getContentModel() +{ + if (!fContentModel) + fContentModel = makeContentModel(); + return fContentModel; +} + +inline void +DTDElementDecl::setContentModel(XMLContentModel* const newModelToAdopt) +{ + delete fContentModel; + fContentModel = newModelToAdopt; + + // reset formattedModel + if (fFormattedModel) + { + getMemoryManager()->deallocate(fFormattedModel); + fFormattedModel = 0; + } +} + +// --------------------------------------------------------------------------- +// DTDElementDecl: Miscellaneous methods +// --------------------------------------------------------------------------- +inline const XMLCh* DTDElementDecl::getKey() const +{ + return getFullName(); +} + +// --------------------------------------------------------------------------- +// DTDElementDecl: Getter methods +// --------------------------------------------------------------------------- +inline DTDElementDecl::ModelTypes DTDElementDecl::getModelType() const +{ + return fModelType; +} + +// --------------------------------------------------------------------------- +// DTDElementDecl: Setter methods +// --------------------------------------------------------------------------- +inline void +DTDElementDecl::setModelType(const DTDElementDecl::ModelTypes toSet) +{ + fModelType = toSet; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDEntityDecl.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDEntityDecl.hpp new file mode 100644 index 000000000000..26e4df788e69 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDEntityDecl.hpp @@ -0,0 +1,204 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDENTITYDECL_HPP) +#define XERCESC_INCLUDE_GUARD_DTDENTITYDECL_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This is a derivative of the abstract version of an entity decl in the +// framework directory. We just need to provide implementation of a couple +// of methods. +// +class VALIDATORS_EXPORT DTDEntityDecl : public XMLEntityDecl +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DTDEntityDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + DTDEntityDecl + ( + const XMLCh* const entName + , const bool fromIntSubset = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DTDEntityDecl + ( + const XMLCh* const entName + , const XMLCh* const value + , const bool fromIntSubset = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DTDEntityDecl + ( + const XMLCh* const entName + , const XMLCh value + , const bool fromIntSubset = false + , const bool specialChar = false + ); + ~DTDEntityDecl(); + + + // ----------------------------------------------------------------------- + // Implementation of the virtual XMLEntityDecl interface + // ----------------------------------------------------------------------- + virtual bool getDeclaredInIntSubset() const; + virtual bool getIsParameter() const; + virtual bool getIsSpecialChar() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setDeclaredInIntSubset(const bool newValue); + void setIsParameter(const bool newValue); + void setIsSpecialChar(const bool newValue); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DTDEntityDecl) + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DTDEntityDecl(const DTDEntityDecl&); + DTDEntityDecl& operator=(DTDEntityDecl&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fDeclaredInIntSubset + // Indicates whether the entity was declared in the internal subset + // or not. If not, it cannot be referred to from a standalone + // document. + // + // fIsParameter + // Indicates whether this is a parameter entity or a general entity. + // + // fIsSpecialChar + // This indicates that its one of the special character entities, + // e.g. lt or gt or amp. We need to know this because there are + // places where only a numeric char ref or special char ref is valid + // and all others are ignored or illegal. + // ----------------------------------------------------------------------- + bool fDeclaredInIntSubset; + bool fIsParameter; + bool fIsSpecialChar; +}; + + +// --------------------------------------------------------------------------- +// DTDEntityDecl: Constructors and Destructor +// --------------------------------------------------------------------------- +inline DTDEntityDecl::DTDEntityDecl(MemoryManager* const manager) : + + XMLEntityDecl(manager) + , fDeclaredInIntSubset(false) + , fIsParameter(false) + , fIsSpecialChar(false) +{ +} + +inline DTDEntityDecl::DTDEntityDecl( const XMLCh* const entName + , const bool fromIntSubset + , MemoryManager* const manager) : + + XMLEntityDecl(entName, manager) + , fDeclaredInIntSubset(fromIntSubset) + , fIsParameter(false) + , fIsSpecialChar(false) +{ +} + +inline DTDEntityDecl::DTDEntityDecl( const XMLCh* const entName + , const XMLCh* const value + , const bool fromIntSubset + , MemoryManager* const manager) : + XMLEntityDecl(entName, value, manager) + , fDeclaredInIntSubset(fromIntSubset) + , fIsParameter(false) + , fIsSpecialChar(false) +{ +} + +inline DTDEntityDecl::DTDEntityDecl(const XMLCh* const entName + , const XMLCh value + , const bool fromIntSubset + , const bool specialChar) : + XMLEntityDecl(entName, value, XMLPlatformUtils::fgMemoryManager) + , fDeclaredInIntSubset(fromIntSubset) + , fIsParameter(false) + , fIsSpecialChar(specialChar) +{ +} + +inline DTDEntityDecl::~DTDEntityDecl() +{ +} + + +// --------------------------------------------------------------------------- +// DTDEntityDecl: Getter methods +// --------------------------------------------------------------------------- +inline bool DTDEntityDecl::getDeclaredInIntSubset() const +{ + return fDeclaredInIntSubset; +} + +inline bool DTDEntityDecl::getIsParameter() const +{ + return fIsParameter; +} + +inline bool DTDEntityDecl::getIsSpecialChar() const +{ + return fIsSpecialChar; +} + + +// --------------------------------------------------------------------------- +// DTDEntityDecl: Setter methods +// --------------------------------------------------------------------------- +inline void DTDEntityDecl::setDeclaredInIntSubset(const bool newValue) +{ + fDeclaredInIntSubset = newValue; +} + +inline void DTDEntityDecl::setIsParameter(const bool newValue) +{ + fIsParameter = newValue; +} + +inline void DTDEntityDecl::setIsSpecialChar(const bool newValue) +{ + fIsSpecialChar = newValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDGrammar.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDGrammar.hpp new file mode 100644 index 000000000000..391613e019b4 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDGrammar.hpp @@ -0,0 +1,391 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDGRAMMAR_HPP) +#define XERCESC_INCLUDE_GUARD_DTDGRAMMAR_HPP + +#include +#include +#include +#include +#include +#include +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class stores the DTD information +// NOTE: DTDs are not namespace aware, so we just use regular NameIdPool +// data structures to store element and attribute decls. They are all set +// to be in the global namespace and the full QName is used as the base name +// of the decl. This means that all the URI parameters below are expected +// to be null pointers (and anything else will cause an exception.) +// + +class VALIDATORS_EXPORT DTDGrammar : public Grammar +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DTDGrammar(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~DTDGrammar(); + + // ----------------------------------------------------------------------- + // Implementation of Virtual Interface + // ----------------------------------------------------------------------- + virtual Grammar::GrammarType getGrammarType() const; + virtual const XMLCh* getTargetNamespace() const; + + // this method should only be used while the grammar is being + // constructed, not while it is being used + // in a validation episode! + virtual XMLElementDecl* findOrAddElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const prefixName + , const XMLCh* const qName + , unsigned int scope + , bool& wasAdded + ) ; + + virtual XMLSize_t getElemId + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ) const ; + + virtual const XMLElementDecl* getElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ) const ; + + virtual XMLElementDecl* getElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ); + + virtual const XMLElementDecl* getElemDecl + ( + const unsigned int elemId + ) const; + + virtual XMLElementDecl* getElemDecl + ( + const unsigned int elemId + ); + + virtual const XMLNotationDecl* getNotationDecl + ( + const XMLCh* const notName + ) const; + + virtual XMLNotationDecl* getNotationDecl + ( + const XMLCh* const notName + ); + + virtual bool getValidated() const; + + virtual XMLElementDecl* putElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const prefixName + , const XMLCh* const qName + , unsigned int scope + , const bool notDeclared = false + ); + + virtual XMLSize_t putElemDecl + ( + XMLElementDecl* const elemDecl + , const bool notDeclared = false + ) ; + + virtual XMLSize_t putNotationDecl + ( + XMLNotationDecl* const notationDecl + ) const; + + virtual void setValidated(const bool newState); + + virtual void reset(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + const DTDEntityDecl* getEntityDecl(const XMLCh* const entName) const; + DTDEntityDecl* getEntityDecl(const XMLCh* const entName); + NameIdPool* getEntityDeclPool(); + const NameIdPool* getEntityDeclPool() const; + NameIdPoolEnumerator getElemEnumerator() const; + NameIdPoolEnumerator getEntityEnumerator() const; + NameIdPoolEnumerator getNotationEnumerator() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + virtual void setGrammarDescription( XMLGrammarDescription*); + virtual XMLGrammarDescription* getGrammarDescription() const; + + // ----------------------------------------------------------------------- + // Content management methods + // ----------------------------------------------------------------------- + XMLSize_t putEntityDecl(DTDEntityDecl* const entityDecl) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DTDGrammar) + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DTDGrammar(const DTDGrammar &); + DTDGrammar& operator = (const DTDGrammar&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fElemDeclPool + // This is the element decl pool. It contains all of the elements + // declared in the DTD (and their associated attributes.) + // + // fElemNonDeclPool + // This is the element decl pool that is is populated as new elements + // are seen in the XML document (not declared in the DTD), and they + // are given default characteristics. + // + // fEntityDeclPool + // This is a pool of EntityDecl objects, which contains all of the + // general entities that are declared in the DTD subsets, plus the + // default entities (such as > < ...) defined by the XML Standard. + // + // fNotationDeclPool + // This is a pool of NotationDecl objects, which contains all of the + // notations declared in the DTD subsets. + // + // fValidated + // Indicates if the content of the Grammar has been pre-validated + // or not. When using a cached grammar, no need for pre content + // validation. + // + // fGramDesc: adopted + // + // ----------------------------------------------------------------------- + static NameIdPool* fDefaultEntities; + MemoryManager* fMemoryManager; + NameIdPool* fElemDeclPool; + NameIdPool* fElemNonDeclPool; + NameIdPool* fEntityDeclPool; + NameIdPool* fNotationDeclPool; + XMLDTDDescription* fGramDesc; + + bool fValidated; + + friend class XMLInitializer; +}; + +// --------------------------------------------------------------------------- +// DTDGrammar: Getter methods +// --------------------------------------------------------------------------- +inline NameIdPoolEnumerator +DTDGrammar::getElemEnumerator() const +{ + return NameIdPoolEnumerator(fElemDeclPool, fMemoryManager); +} + +inline NameIdPoolEnumerator +DTDGrammar::getEntityEnumerator() const +{ + return NameIdPoolEnumerator(fEntityDeclPool, fMemoryManager); +} + +inline NameIdPoolEnumerator +DTDGrammar::getNotationEnumerator() const +{ + return NameIdPoolEnumerator(fNotationDeclPool, fMemoryManager); +} + +inline const DTDEntityDecl* +DTDGrammar::getEntityDecl(const XMLCh* const entName) const +{ + DTDEntityDecl* decl = fDefaultEntities->getByKey(entName); + + if (!decl) + return fEntityDeclPool->getByKey(entName); + + return decl; +} + +inline DTDEntityDecl* DTDGrammar::getEntityDecl(const XMLCh* const entName) +{ + DTDEntityDecl* decl = fDefaultEntities->getByKey(entName); + + if (!decl) + return fEntityDeclPool->getByKey(entName); + + return decl; +} + + +inline NameIdPool* DTDGrammar::getEntityDeclPool() +{ + return fEntityDeclPool; +} + +inline const NameIdPool* DTDGrammar::getEntityDeclPool() const +{ + return fEntityDeclPool; +} + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- +inline XMLSize_t DTDGrammar::putEntityDecl(DTDEntityDecl* const entityDecl) const +{ + return fEntityDeclPool->put(entityDecl); +} + + +// --------------------------------------------------------------------------- +// DTDGrammar: Virtual methods +// --------------------------------------------------------------------------- +inline Grammar::GrammarType DTDGrammar::getGrammarType() const { + return Grammar::DTDGrammarType; +} + +inline const XMLCh* DTDGrammar::getTargetNamespace() const { + return XMLUni::fgZeroLenString; +} + +// Element Decl +inline XMLSize_t DTDGrammar::getElemId (const unsigned int + , const XMLCh* const + , const XMLCh* const qName + , unsigned int) const +{ + // + // In this case, we don't return zero to mean 'not found', so we have to + // map it to the official not found value if we don't find it. + // + const DTDElementDecl* decl = fElemDeclPool->getByKey(qName); + if (!decl) + return XMLElementDecl::fgInvalidElemId; + return decl->getId(); +} + +inline const XMLElementDecl* DTDGrammar::getElemDecl( const unsigned int + , const XMLCh* const + , const XMLCh* const qName + , unsigned int) const +{ + const XMLElementDecl* elemDecl = fElemDeclPool->getByKey(qName); + + if (!elemDecl && fElemNonDeclPool) + elemDecl = fElemNonDeclPool->getByKey(qName); + + return elemDecl; +} + +inline XMLElementDecl* DTDGrammar::getElemDecl (const unsigned int + , const XMLCh* const + , const XMLCh* const qName + , unsigned int) +{ + XMLElementDecl* elemDecl = fElemDeclPool->getByKey(qName); + + if (!elemDecl && fElemNonDeclPool) + elemDecl = fElemNonDeclPool->getByKey(qName); + + return elemDecl; +} + +inline const XMLElementDecl* DTDGrammar::getElemDecl(const unsigned int elemId) const +{ + // Look up this element decl by id + return fElemDeclPool->getById(elemId); +} + +inline XMLElementDecl* DTDGrammar::getElemDecl(const unsigned int elemId) +{ + // Look up this element decl by id + return fElemDeclPool->getById(elemId); +} + +inline XMLSize_t +DTDGrammar::putElemDecl(XMLElementDecl* const elemDecl, + const bool notDeclared) +{ + if (notDeclared) + { + if(!fElemNonDeclPool) + fElemNonDeclPool = new (fMemoryManager) NameIdPool(29, 128, fMemoryManager); + return fElemNonDeclPool->put((DTDElementDecl*) elemDecl); + } + + return fElemDeclPool->put((DTDElementDecl*) elemDecl); +} + +// Notation Decl +inline const XMLNotationDecl* DTDGrammar::getNotationDecl(const XMLCh* const notName) const +{ + return fNotationDeclPool->getByKey(notName); +} + +inline XMLNotationDecl* DTDGrammar::getNotationDecl(const XMLCh* const notName) +{ + return fNotationDeclPool->getByKey(notName); +} + +inline XMLSize_t DTDGrammar::putNotationDecl(XMLNotationDecl* const notationDecl) const +{ + return fNotationDeclPool->put(notationDecl); +} + +inline bool DTDGrammar::getValidated() const +{ + return fValidated; +} + +inline void DTDGrammar::setValidated(const bool newState) +{ + fValidated = newState; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDScanner.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDScanner.hpp new file mode 100644 index 000000000000..3c7ae13dd99c --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDScanner.hpp @@ -0,0 +1,278 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDSCANNER_HPP) +#define XERCESC_INCLUDE_GUARD_DTDSCANNER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLScanner; + +/* + * Default implementation of an XML DTD scanner. + */ +class DocTypeHandler; + +class VALIDATORS_EXPORT DTDScanner : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Class specific types + // + // EntityExpRes + // Returned from scanEntityRef() to indicate how the expanded text + // was treated. + // + // IDTypes + // Type of the ID + // ----------------------------------------------------------------------- + enum EntityExpRes + { + EntityExp_Failed + , EntityExp_Pushed + , EntityExp_Returned + }; + + enum IDTypes + { + IDType_Public + , IDType_External + , IDType_Either + }; + + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DTDScanner + ( + DTDGrammar* dtdGrammar + , DocTypeHandler* const docTypeHandler + , MemoryManager* const grammarPoolMemoryManager + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~DTDScanner(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + DocTypeHandler* getDocTypeHandler(); + const DocTypeHandler* getDocTypeHandler() const; + + // ----------------------------------------------------------------------- + // Setter methods + // + // setScannerInfo() is called by the scanner to tell the DTDScanner + // about the stuff it needs to have access to. + // ----------------------------------------------------------------------- + void setScannerInfo + ( + XMLScanner* const owningScanner + , ReaderMgr* const readerMgr + , XMLBufferMgr* const bufMgr + ); + + void setDocTypeHandler + ( + DocTypeHandler* const handlerToSet + ); + + void scanExtSubsetDecl(const bool inIncludeSect, const bool isDTD); + bool scanInternalSubset(); + bool scanId + ( + XMLBuffer& pubIdToFill + , XMLBuffer& sysIdToFill + , const IDTypes whatKind + ); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DTDScanner(const DTDScanner &); + DTDScanner& operator = (const DTDScanner&); + + // ----------------------------------------------------------------------- + // Private DTD scanning methods. These are all in XMLValidator2.cpp + // ----------------------------------------------------------------------- + bool checkForPERef + ( + const bool inLiteral + , const bool inMarkup + ); + bool expandPERef + ( + const bool scanExternal + , const bool inLiteral + , const bool inMarkup + , const bool throwEndOfExt = false + ); + bool getQuotedString(XMLBuffer& toFill); + XMLAttDef* scanAttDef(DTDElementDecl& elemDecl, XMLBuffer& bufToUse); + bool scanAttValue + ( + const XMLCh* const attrName + , XMLBuffer& toFill + , const XMLAttDef::AttTypes type + ); + void scanAttListDecl(); + ContentSpecNode* scanChildren + ( + const DTDElementDecl& elemDecl + , XMLBuffer& bufToUse + , unsigned int& depth + ); + bool scanCharRef(XMLCh& toFill, XMLCh& second); + void scanComment(); + bool scanContentSpec(DTDElementDecl& toFill); + void scanDefaultDecl(DTDAttDef& toFill); + void scanElementDecl(); + void scanEntityDecl(); + bool scanEntityDef(); + bool scanEntityLiteral(XMLBuffer& toFill); + bool scanEntityDef(DTDEntityDecl& decl, const bool isPEDecl); + EntityExpRes scanEntityRef(XMLCh& firstCh, XMLCh& secondCh, bool& escaped); + bool scanEnumeration + ( + const DTDAttDef& attDef + , XMLBuffer& toFill + , const bool notation + ); + bool scanEq(); + void scanIgnoredSection(); + void scanMarkupDecl(const bool parseTextDecl); + bool scanMixed(DTDElementDecl& toFill); + void scanNotationDecl(); + void scanPI(); + bool scanPublicLiteral(XMLBuffer& toFill); + bool scanSystemLiteral(XMLBuffer& toFill); + void scanTextDecl(); + bool isReadingExternalEntity(); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fDocTypeHandler + // This holds the optional doc type handler that can be installed + // and used to call back for all markup events. It is DTD specific. + // + // fDumAttDef + // fDumElemDecl + // fDumEntityDecl + // These are dummy objects into which mark decls are parsed when + // they are just overrides of previously declared markup decls. In + // such situations, the first one wins but we need to have somewhere + // to parse them into. So these are lazily created and used as needed + // when such markup decls are seen. + // + // fInternalSubset + // This is used to track whether we are in the internal subset or not, + // in which case we are in the external subset. + // + // fNextAttrId + // Since att defs are per-element, we don't have a validator wide + // attribute def pool. So we use a simpler data structure in each + // element decl to store its att defs, and we use this simple counter + // to apply a unique id to each new attribute. + // + // fDTDGrammar + // The DTD information we scanned like element decl, attribute decl + // are stored in this Grammar. + // + // fBufMgr + // This is the buffer manager of the scanner. This is provided as a + // convenience so that the DTDScanner doesn't have to create its own + // buffer manager during the parse process. + // + // fReaderMgr + // This is a pointer to the reader manager that is being used by the scanner. + // + // fScanner + // The pointer to the scanner to which this DTDScanner belongs + // + // fPEntityDeclPool + // This is a pool of EntityDecl objects, which contains all of the + // parameter entities that are declared in the DTD subsets. + // + // fEmptyNamespaceId + // The uri for all DTD decls + // + // fDocTypeReaderId + // The original reader in the fReaderMgr - to be compared against the + // current reader to decide whether we are processing an external/internal + // declaration + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + MemoryManager* fGrammarPoolMemoryManager; + DocTypeHandler* fDocTypeHandler; + DTDAttDef* fDumAttDef; + DTDElementDecl* fDumElemDecl; + DTDEntityDecl* fDumEntityDecl; + bool fInternalSubset; + unsigned int fNextAttrId; + DTDGrammar* fDTDGrammar; + XMLBufferMgr* fBufMgr; + ReaderMgr* fReaderMgr; + XMLScanner* fScanner; + NameIdPool* fPEntityDeclPool; + unsigned int fEmptyNamespaceId; + XMLSize_t fDocTypeReaderId; +}; + + +// --------------------------------------------------------------------------- +// DTDScanner: Getter methods +// --------------------------------------------------------------------------- +inline DocTypeHandler* DTDScanner::getDocTypeHandler() +{ + return fDocTypeHandler; +} + +inline const DocTypeHandler* DTDScanner::getDocTypeHandler() const +{ + return fDocTypeHandler; +} + + +// --------------------------------------------------------------------------- +// DTDScanner: Setter methods +// --------------------------------------------------------------------------- +inline void DTDScanner::setDocTypeHandler(DocTypeHandler* const handlerToSet) +{ + fDocTypeHandler = handlerToSet; +} + +// ----------------------------------------------------------------------- +// Helper methods +// ----------------------------------------------------------------------- +inline bool DTDScanner::isReadingExternalEntity() { + return (fDocTypeReaderId != fReaderMgr->getCurrentReaderNum()); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDValidator.hpp new file mode 100644 index 000000000000..1701a7dc110f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DTDValidator.hpp @@ -0,0 +1,158 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DTDVALIDATOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLMsgLoader; + + +// +// This is a derivative of the abstract validator interface. This class +// implements a validator that supports standard XML 1.0 DTD semantics. +// This class handles scanning the internal and external subsets of the +// DTD, and provides the standard validation services against the DTD info +// it found. +// +class VALIDATORS_EXPORT DTDValidator : public XMLValidator +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DTDValidator(XMLErrorReporter* const errReporter = 0); + virtual ~DTDValidator(); + + // ----------------------------------------------------------------------- + // Implementation of the XMLValidator interface + // ----------------------------------------------------------------------- + virtual bool checkContent + ( + XMLElementDecl* const elemDecl + , QName** const children + , XMLSize_t childCount + , XMLSize_t* indexFailingChild + ); + + virtual void faultInAttr + ( + XMLAttr& toFill + , const XMLAttDef& attDef + ) const; + + virtual void preContentValidation(bool reuseGrammar, + bool validateDefAttr = false); + + virtual void postParseValidation(); + + virtual void reset(); + + virtual bool requiresNamespaces() const; + + virtual void validateAttrValue + ( + const XMLAttDef* attDef + , const XMLCh* const attrValue + , bool preValidation = false + , const XMLElementDecl* elemDecl = 0 + ); + virtual void validateElement + ( + const XMLElementDecl* elemDef + ); + virtual Grammar* getGrammar() const; + virtual void setGrammar(Grammar* aGrammar); + + // ----------------------------------------------------------------------- + // Virtual DTD handler interface. + // ----------------------------------------------------------------------- + virtual bool handlesDTD() const; + + // ----------------------------------------------------------------------- + // Virtual Schema handler interface. handlesSchema() always return false. + // ----------------------------------------------------------------------- + virtual bool handlesSchema() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DTDValidator(const DTDValidator &); + DTDValidator& operator = (const DTDValidator&); + + // ----------------------------------------------------------------------- + // Helper + // ----------------------------------------------------------------------- + void checkTokenList(const XMLAttDef& attDef + , bool toValidateNotation); + + // ----------------------------------------------------------------------- + // Private data members + // + // fDTDGrammar + // The DTD information stored. + // + // ----------------------------------------------------------------------- + DTDGrammar* fDTDGrammar; +}; + +// --------------------------------------------------------------------------- +// Virtual interface +// --------------------------------------------------------------------------- +inline Grammar* DTDValidator::getGrammar() const { + return fDTDGrammar; +} + +inline void DTDValidator::setGrammar(Grammar* aGrammar) { + fDTDGrammar = (DTDGrammar*) aGrammar; +} + +inline void DTDValidator::validateElement (const XMLElementDecl*) { + // no special DTD Element validation +} + +// --------------------------------------------------------------------------- +// DTDValidator: DTD handler interface +// --------------------------------------------------------------------------- +inline bool DTDValidator::handlesDTD() const +{ + // We definitely want to handle DTD scanning + return true; +} + +// --------------------------------------------------------------------------- +// DTDValidator: Schema handler interface +// --------------------------------------------------------------------------- +inline bool DTDValidator::handlesSchema() const +{ + // No Schema scanning + return false; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DocTypeHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DocTypeHandler.hpp new file mode 100644 index 000000000000..d1fae822dc29 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/DocTypeHandler.hpp @@ -0,0 +1,145 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOCTYPEHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DOCTYPEHANDLER_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This abstract class defines the document type handler API's which can be +// used to process the DTD events generated by the DTDScanner as it scans the +// internal and external subset. + +class VALIDATORS_EXPORT DocTypeHandler +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DocTypeHandler() + { + } + + virtual ~DocTypeHandler() + { + } + + + // ----------------------------------------------------------------------- + // The document type handler virtual handler interface + // ----------------------------------------------------------------------- + virtual void attDef + ( + const DTDElementDecl& elemDecl + , const DTDAttDef& attDef + , const bool ignoring + ) = 0; + + virtual void doctypeComment + ( + const XMLCh* const comment + ) = 0; + + virtual void doctypeDecl + ( + const DTDElementDecl& elemDecl + , const XMLCh* const publicId + , const XMLCh* const systemId + , const bool hasIntSubset + , const bool hasExtSubset = false + ) = 0; + + virtual void doctypePI + ( + const XMLCh* const target + , const XMLCh* const data + ) = 0; + + virtual void doctypeWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ) = 0; + + virtual void elementDecl + ( + const DTDElementDecl& decl + , const bool isIgnored + ) = 0; + + virtual void endAttList + ( + const DTDElementDecl& elemDecl + ) = 0; + + virtual void endIntSubset() = 0; + + virtual void endExtSubset() = 0; + + virtual void entityDecl + ( + const DTDEntityDecl& entityDecl + , const bool isPEDecl + , const bool isIgnored + ) = 0; + + virtual void resetDocType() = 0; + + virtual void notationDecl + ( + const XMLNotationDecl& notDecl + , const bool isIgnored + ) = 0; + + virtual void startAttList + ( + const DTDElementDecl& elemDecl + ) = 0; + + virtual void startIntSubset() = 0; + + virtual void startExtSubset() = 0; + + virtual void TextDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + ) = 0; + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DocTypeHandler(const DocTypeHandler&); + DocTypeHandler& operator=(const DocTypeHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp new file mode 100644 index 000000000000..0b3e42f01fd1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp @@ -0,0 +1,108 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLDTDDESCRIPTIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLDTDDESCRIPTIONIMPL_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT XMLDTDDescriptionImpl : public XMLDTDDescription +{ +public : + // ----------------------------------------------------------------------- + /** @name constructor and destructor */ + // ----------------------------------------------------------------------- + //@{ + XMLDTDDescriptionImpl( + const XMLCh* const systemId + , MemoryManager* const memMgr + ); + + ~XMLDTDDescriptionImpl(); + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of GrammarDescription Interface */ + // ----------------------------------------------------------------------- + //@{ + /** + * getGrammarKey + * + */ + virtual const XMLCh* getGrammarKey() const ; + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of DTDDescription Interface */ + // ----------------------------------------------------------------------- + //@{ + /** + * Getter + * + */ + virtual const XMLCh* getRootName() const; + virtual const XMLCh* getSystemId() const; + + /** + * Setter + * + */ + virtual void setRootName(const XMLCh* const); + virtual void setSystemId(const XMLCh* const); + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLDTDDescriptionImpl) + + XMLDTDDescriptionImpl(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); + +private : + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + XMLDTDDescriptionImpl(const XMLDTDDescriptionImpl& ); + XMLDTDDescriptionImpl& operator=(const XMLDTDDescriptionImpl& ); + //@} + + // ----------------------------------------------------------------------- + // + // fSystemId: + // SYSTEM ID of the grammar + // + // fRootName: + // root name of the grammar + // + // ----------------------------------------------------------------------- + + const XMLCh* fSystemId; + const XMLCh* fRootName; + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/common/AllContentModel.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/common/AllContentModel.hpp new file mode 100644 index 000000000000..5c9ef894280e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/common/AllContentModel.hpp @@ -0,0 +1,177 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ALLCONTENTMODEL_HPP) +#define XERCESC_INCLUDE_GUARD_ALLCONTENTMODEL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentSpecNode; + +// +// AllContentModel is a derivative of the abstract content model base +// class that handles the special case of feature in schema. If a model +// is , all non-optional children must appear +// +// So, all we have to do is to keep an array of the possible children and +// validate by just looking up each child being validated by looking it up +// in the list, and make sure all non-optional children appear. +// +class AllContentModel : public XMLContentModel +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + AllContentModel + ( + ContentSpecNode* const parentContentSpec + , const bool isMixed + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~AllContentModel(); + + // ----------------------------------------------------------------------- + // Implementation of the ContentModel virtual interface + // ----------------------------------------------------------------------- + virtual bool validateContent + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual bool validateContentSpecial + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual ContentLeafNameTypeVector* getContentLeafNameTypeVector() const ; + + virtual unsigned int getNextState(unsigned int currentState, + XMLSize_t elementIndex) const; + + virtual bool handleRepetitions( const QName* const curElem, + unsigned int curState, + unsigned int currentLoop, + unsigned int& nextState, + unsigned int& nextLoop, + XMLSize_t elementIndex, + SubstitutionGroupComparator * comparator) const; + + virtual void checkUniqueParticleAttribution + ( + SchemaGrammar* const pGrammar + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLValidator* const pValidator + , unsigned int* const pContentSpecOrgURI + , const XMLCh* pComplexTypeName = 0 + ) ; + +private : + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void buildChildList + ( + ContentSpecNode* const curNode + , ValueVectorOf& toFill + , ValueVectorOf& toType + ); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + AllContentModel(); + AllContentModel(const AllContentModel&); + AllContentModel& operator=(const AllContentModel&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fCount + // The count of possible children in the fChildren member. + // + // fChildren + // The list of possible children that we have to accept. This array + // is allocated as large as needed in the constructor. + // + // fChildOptional + // The corresponding list of optional state of each child in fChildren + // True if the child is optional (i.e. minOccurs = 0). + // + // fNumRequired + // The number of required children in (i.e. minOccurs = 1) + // + // fIsMixed + // AllContentModel with mixed PCDATA. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + XMLSize_t fCount; + QName** fChildren; + bool* fChildOptional; + unsigned int fNumRequired; + bool fIsMixed; + bool fHasOptionalContent; +}; + +inline ContentLeafNameTypeVector* AllContentModel::getContentLeafNameTypeVector() const +{ + return 0; +} + +inline unsigned int +AllContentModel::getNextState(unsigned int, + XMLSize_t) const { + + return XMLContentModel::gInvalidTrans; +} + +inline bool +AllContentModel::handleRepetitions( const QName* const /*curElem*/, + unsigned int /*curState*/, + unsigned int /*currentLoop*/, + unsigned int& /*nextState*/, + unsigned int& /*nextLoop*/, + XMLSize_t /*elementIndex*/, + SubstitutionGroupComparator * /*comparator*/) const +{ + return true; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMAny.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMAny.hpp new file mode 100644 index 000000000000..6792de9e2024 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMAny.hpp @@ -0,0 +1,99 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CMANY_HPP) +#define XERCESC_INCLUDE_GUARD_CMANY_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class CMStateSet; + +class CMAny : public CMNode +{ +public : + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + CMAny + ( + ContentSpecNode::NodeTypes type + , unsigned int URI + , unsigned int position + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~CMAny(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + unsigned int getURI() const; + + unsigned int getPosition() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setPosition(const unsigned int newPosition); + + // ----------------------------------------------------------------------- + // Implementation of the public CMNode virtual interface + // ----------------------------------------------------------------------- + virtual void orphanChild(); + + +protected : + // ----------------------------------------------------------------------- + // Implementation of the protected CMNode virtual interface + // ----------------------------------------------------------------------- + void calcFirstPos(CMStateSet& toSet) const; + void calcLastPos(CMStateSet& toSet) const; + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fURI; + // URI of the any content model. This value is set if the type is + // of the following: + // XMLContentSpec.CONTENTSPECNODE_ANY, + // XMLContentSpec.CONTENTSPECNODE_ANY_OTHER. + // + // fPosition + // Part of the algorithm to convert a regex directly to a DFA + // numbers each leaf sequentially. If its -1, that means its an + // epsilon node. Zero and greater are non-epsilon positions. + // ----------------------------------------------------------------------- + unsigned int fURI; + unsigned int fPosition; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CMAny(const CMAny&); + CMAny& operator=(const CMAny&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMBinaryOp.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMBinaryOp.hpp new file mode 100644 index 000000000000..60a8cb983f45 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMBinaryOp.hpp @@ -0,0 +1,92 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CMBINARYOP_HPP) +#define XERCESC_INCLUDE_GUARD_CMBINARYOP_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class CMStateSet; + +class CMBinaryOp : public CMNode +{ +public : + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + CMBinaryOp + ( + ContentSpecNode::NodeTypes type + , CMNode* const leftToAdopt + , CMNode* const rightToAdopt + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~CMBinaryOp(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const CMNode* getLeft() const; + CMNode* getLeft(); + const CMNode* getRight() const; + CMNode* getRight(); + + + // ----------------------------------------------------------------------- + // Implementation of the public CMNode virtual interface + // ----------------------------------------------------------------------- + virtual void orphanChild(); + + +protected : + // ----------------------------------------------------------------------- + // Implementation of the protected CMNode virtual interface + // ----------------------------------------------------------------------- + void calcFirstPos(CMStateSet& toSet) const; + void calcLastPos(CMStateSet& toSet) const; + + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fLeftChild + // fRightChild + // These are the references to the two nodes that are on either side + // of this binary operation. We own them both. + // ----------------------------------------------------------------------- + CMNode* fLeftChild; + CMNode* fRightChild; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CMBinaryOp(const CMBinaryOp&); + CMBinaryOp& operator=(const CMBinaryOp&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMLeaf.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMLeaf.hpp new file mode 100644 index 000000000000..0863f5e2f4d7 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMLeaf.hpp @@ -0,0 +1,253 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CMLEAF_HPP) +#define XERCESC_INCLUDE_GUARD_CMLEAF_HPP + +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class represents a leaf in the content spec node tree of an +// element's content model. It just has an element qname and a position value, +// the latter of which is used during the building of a DFA. +// +class CMLeaf : public CMNode +{ +public : + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + CMLeaf + ( + QName* const element + , unsigned int position + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + CMLeaf + ( + QName* const element + , unsigned int position + , bool adopt + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~CMLeaf(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + QName* getElement(); + const QName* getElement() const; + unsigned int getPosition() const; + + virtual bool isRepeatableLeaf() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setPosition(const unsigned int newPosition); + + + // ----------------------------------------------------------------------- + // Implementation of public CMNode virtual interface + // ----------------------------------------------------------------------- + virtual void orphanChild(); + +protected : + // ----------------------------------------------------------------------- + // Implementation of protected CMNode virtual interface + // ----------------------------------------------------------------------- + void calcFirstPos(CMStateSet& toSet) const; + void calcLastPos(CMStateSet& toSet) const; + + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fElement + // This is the element that this leaf represents. + // + // fPosition + // Part of the algorithm to convert a regex directly to a DFA + // numbers each leaf sequentially. If its -1, that means its an + // epsilon node. All others are non-epsilon positions. + // + // fAdopt + // This node is responsible for the storage of the fElement QName. + // ----------------------------------------------------------------------- + QName* fElement; + unsigned int fPosition; + bool fAdopt; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CMLeaf(const CMLeaf&); + CMLeaf& operator=(const CMLeaf&); +}; + + +// ----------------------------------------------------------------------- +// Constructors +// ----------------------------------------------------------------------- +inline CMLeaf::CMLeaf( QName* const element + , unsigned int position + , unsigned int maxStates + , MemoryManager* const manager) : + CMNode(ContentSpecNode::Leaf, maxStates, manager) + , fElement(0) + , fPosition(position) + , fAdopt(false) +{ + if (!element) + { + fElement = new (fMemoryManager) QName + ( + XMLUni::fgZeroLenString + , XMLUni::fgZeroLenString + , XMLElementDecl::fgInvalidElemId + , fMemoryManager + ); + // We have to be responsible for this QName - override default fAdopt + fAdopt = true; + } + else + { + fElement = element; + } + // Leaf nodes are never nullable unless its an epsilon node + fIsNullable=(fPosition == epsilonNode); +} + +inline CMLeaf::CMLeaf( QName* const element + , unsigned int position + , bool adopt + , unsigned int maxStates + , MemoryManager* const manager) : + CMNode(ContentSpecNode::Leaf, maxStates, manager) + , fElement(0) + , fPosition(position) + , fAdopt(adopt) +{ + if (!element) + { + fElement = new (fMemoryManager) QName + ( + XMLUni::fgZeroLenString + , XMLUni::fgZeroLenString + , XMLElementDecl::fgInvalidElemId + , fMemoryManager + ); + // We have to be responsible for this QName - override adopt parameter + fAdopt = true; + } + else + { + fElement = element; + } + // Leaf nodes are never nullable unless its an epsilon node + fIsNullable=(fPosition == epsilonNode); +} + +inline CMLeaf::~CMLeaf() +{ + if (fAdopt) + delete fElement; +} + + +// --------------------------------------------------------------------------- +// Getter methods +// --------------------------------------------------------------------------- +inline QName* CMLeaf::getElement() +{ + return fElement; +} + +inline const QName* CMLeaf::getElement() const +{ + return fElement; +} + +inline unsigned int CMLeaf::getPosition() const +{ + return fPosition; +} + +inline bool CMLeaf::isRepeatableLeaf() const +{ + return false; +} + +// --------------------------------------------------------------------------- +// Setter methods +// --------------------------------------------------------------------------- +inline void CMLeaf::setPosition(const unsigned int newPosition) +{ + fPosition = newPosition; +} + + +// --------------------------------------------------------------------------- +// Implementation of public CMNode virtual interface +// --------------------------------------------------------------------------- +inline void CMLeaf::orphanChild() +{ +} + +// --------------------------------------------------------------------------- +// Implementation of protected CMNode virtual interface +// --------------------------------------------------------------------------- +inline void CMLeaf::calcFirstPos(CMStateSet& toSet) const +{ + // If we are an epsilon node, then the first pos is an empty set + if (isNullable()) + { + toSet.zeroBits(); + return; + } + + // Otherwise, its just the one bit of our position + toSet.setBit(fPosition); +} + +inline void CMLeaf::calcLastPos(CMStateSet& toSet) const +{ + // If we are an epsilon node, then the last pos is an empty set + if (isNullable()) + { + toSet.zeroBits(); + return; + } + + // Otherwise, its just the one bit of our position + toSet.setBit(fPosition); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMNode.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMNode.hpp new file mode 100644 index 000000000000..86416710916e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMNode.hpp @@ -0,0 +1,193 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CMNODE_HPP) +#define XERCESC_INCLUDE_GUARD_CMNODE_HPP + +#include + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class CMNode : public XMemory +{ +public : + enum { + // Special value to indicate a nullable node + epsilonNode = UINT_MAX - 1 + }; + + // ----------------------------------------------------------------------- + // Constructors and Destructors + // ----------------------------------------------------------------------- + CMNode + ( + const ContentSpecNode::NodeTypes type + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~CMNode(); + + + // ----------------------------------------------------------------------- + // Virtual methods to be provided derived node classes + // ----------------------------------------------------------------------- + virtual void orphanChild() = 0; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + ContentSpecNode::NodeTypes getType() const; + const CMStateSet& getFirstPos(); + const CMStateSet& getLastPos(); + bool isNullable() const; + +protected : + // ----------------------------------------------------------------------- + // Protected, abstract methods + // ----------------------------------------------------------------------- + virtual void calcFirstPos(CMStateSet& toUpdate) const = 0; + virtual void calcLastPos(CMStateSet& toUpdate) const = 0; + + // ----------------------------------------------------------------------- + // Protected data members + // + // fMemoryManager + // Pluggable memory manager for dynamic allocation/deallocation. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CMNode(); + CMNode(const CMNode&); + CMNode& operator=(const CMNode&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fType + // The type of node. This indicates whether its a leaf or an + // operation. + // + // fFirstPos + // The set of NFA states that represent the entry states of this + // node in the DFA. + // + // fLastPos + // The set of NFA states that represent the final states of this + // node in the DFA. + // + // fMaxStates + // The maximum number of states that the NFA has, which means the + // max number of NFA states that have to be traced in the state + // sets during the building of the DFA. Its unfortunate that it + // has to be stored redundantly, but we need to fault in the + // state set members and they have to be sized to this size. + // + // fIsNullable + // Whether the node can be empty + // ----------------------------------------------------------------------- + ContentSpecNode::NodeTypes fType; + CMStateSet* fFirstPos; + CMStateSet* fLastPos; + unsigned int fMaxStates; + +protected: + bool fIsNullable; +}; + + + +// --------------------------------------------------------------------------- +// CMNode: Constructors and Destructors +// --------------------------------------------------------------------------- +inline CMNode::CMNode(const ContentSpecNode::NodeTypes type + , unsigned int maxStates + , MemoryManager* const manager) : + + fMemoryManager(manager) + , fType(type) + , fFirstPos(0) + , fLastPos(0) + , fMaxStates(maxStates) + , fIsNullable(false) +{ +} + +inline CMNode::~CMNode() +{ + // Clean up any position sets that got created + delete fFirstPos; + delete fLastPos; +} + + +// --------------------------------------------------------------------------- +// CMNode: Getter methods +// --------------------------------------------------------------------------- +inline ContentSpecNode::NodeTypes CMNode::getType() const +{ + return fType; +} + +inline const CMStateSet& CMNode::getFirstPos() +{ + // + // Fault in the state set if needed. Since we can't use mutable members + // cast off the const'ness. + // + if (!fFirstPos) + { + fFirstPos = new (fMemoryManager) CMStateSet(fMaxStates, fMemoryManager); + calcFirstPos(*fFirstPos); + } + return *fFirstPos; +} + +inline const CMStateSet& CMNode::getLastPos() +{ + // + // Fault in the state set if needed. Since we can't use mutable members + // cast off the const'ness. + // + if (!fLastPos) + { + fLastPos = new (fMemoryManager) CMStateSet(fMaxStates, fMemoryManager); + calcLastPos(*fLastPos); + } + return *fLastPos; +} + +inline bool CMNode::isNullable() const +{ + return fIsNullable; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMRepeatingLeaf.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMRepeatingLeaf.hpp new file mode 100644 index 000000000000..3f6d0c1794f7 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMRepeatingLeaf.hpp @@ -0,0 +1,136 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CMREPEATINGLEAF_HPP) +#define XERCESC_INCLUDE_GUARD_CMREPEATINGLEAF_HPP + +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +// +// A compound content model leaf node which carries occurence information. +// +class CMRepeatingLeaf : public CMLeaf +{ +public : + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + CMRepeatingLeaf + ( + QName* const element + , int minOccurs + , int maxOccurs + , unsigned int position + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + CMRepeatingLeaf + ( + QName* const element + , int minOccurs + , int maxOccurs + , unsigned int position + , bool adopt + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + int getMinOccurs() const; + int getMaxOccurs() const; + + virtual bool isRepeatableLeaf() const; + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fMinOccurs + // fMaxOccurs + // The cardinality of the repeating leaf + // + // ----------------------------------------------------------------------- + int fMinOccurs; + int fMaxOccurs; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CMRepeatingLeaf(const CMRepeatingLeaf&); + CMRepeatingLeaf& operator=(const CMRepeatingLeaf&); +}; + + +// ----------------------------------------------------------------------- +// Constructors +// ----------------------------------------------------------------------- +inline CMRepeatingLeaf::CMRepeatingLeaf( QName* const element + , int minOccurs + , int maxOccurs + , unsigned int position + , unsigned int maxStates + , MemoryManager* const manager) : + CMLeaf(element, position, maxStates, manager) + , fMinOccurs(minOccurs) + , fMaxOccurs(maxOccurs) +{ +} + +inline CMRepeatingLeaf::CMRepeatingLeaf( QName* const element + , int minOccurs + , int maxOccurs + , unsigned int position + , bool adopt + , unsigned int maxStates + , MemoryManager* const manager) : + CMLeaf(element, position, adopt, maxStates, manager) + , fMinOccurs(minOccurs) + , fMaxOccurs(maxOccurs) +{ +} + +// --------------------------------------------------------------------------- +// Getter methods +// --------------------------------------------------------------------------- +inline int CMRepeatingLeaf::getMinOccurs() const +{ + return fMinOccurs; +} + +inline int CMRepeatingLeaf::getMaxOccurs() const +{ + return fMaxOccurs; +} + +inline bool CMRepeatingLeaf::isRepeatableLeaf() const +{ + return true; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMStateSet.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMStateSet.hpp new file mode 100644 index 000000000000..e018dc80a7fa --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMStateSet.hpp @@ -0,0 +1,636 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CMSTATESET_HPP) +#define XERCESC_INCLUDE_GUARD_CMSTATESET_HPP + +// DESCRIPTION: +// +// This class is a specialized bitset class for the content model code of +// the validator. It assumes that its never called with two objects of +// different bit counts, and that bit sets smaller than a threshold are far +// and away the most common. So it can be a lot more optimized than a general +// purpose utility bitset class +// + +#include +#include +#include +#include +#include +#include + +#if XERCES_HAVE_EMMINTRIN_H +# include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +class CMStateSetEnumerator; + +// This value must be 4 in order to use the SSE2 instruction set +#define CMSTATE_CACHED_INT32_SIZE 4 + +// This value must be a multiple of 128 in order to use the SSE2 instruction set +#define CMSTATE_BITFIELD_CHUNK 1024 +#define CMSTATE_BITFIELD_INT32_SIZE (1024 / 32) + +struct CMDynamicBuffer +{ + // fArraySize + // This indicates the number of elements of the fBitArray vector + // + // fBitArray + // A vector of arrays of XMLInt32; each array is allocated on demand + // if a bit needs to be set in that range + // + // fMemoryManager + // The memory manager used to allocate and deallocate memory + // + XMLSize_t fArraySize; + XMLInt32** fBitArray; + MemoryManager* fMemoryManager; +}; + +class CMStateSet : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + CMStateSet( const XMLSize_t bitCount + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) : + + fBitCount(bitCount) + , fDynamicBuffer(0) + { + // + // See if we need to allocate the byte array or whether we can live + // within the cached bit high performance scheme. + // + if (fBitCount > (CMSTATE_CACHED_INT32_SIZE * 32)) + { + fDynamicBuffer = (CMDynamicBuffer*)manager->allocate(sizeof(CMDynamicBuffer)); + fDynamicBuffer->fMemoryManager = manager; + // allocate an array of vectors, each one containing CMSTATE_BITFIELD_CHUNK bits + fDynamicBuffer->fArraySize = fBitCount / CMSTATE_BITFIELD_CHUNK; + if (fBitCount % CMSTATE_BITFIELD_CHUNK) + fDynamicBuffer->fArraySize++; + try + { + fDynamicBuffer->fBitArray = (XMLInt32**) fDynamicBuffer->fMemoryManager->allocate(fDynamicBuffer->fArraySize*sizeof(XMLInt32*)); + } + catch( const OutOfMemoryException& ) + { + fDynamicBuffer->fMemoryManager->deallocate(fDynamicBuffer); + throw; + } + for(XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + fDynamicBuffer->fBitArray[index]=NULL; + } + else + { + for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) + fBits[index] = 0; + } + } + + CMStateSet(const CMStateSet& toCopy) : + XMemory(toCopy) + , fBitCount(toCopy.fBitCount) + , fDynamicBuffer(0) + { + // + // See if we need to allocate the byte array or whether we can live + // within the cahced bit high performance scheme. + // + if (fBitCount > (CMSTATE_CACHED_INT32_SIZE * 32)) + { + fDynamicBuffer = (CMDynamicBuffer*) toCopy.fDynamicBuffer->fMemoryManager->allocate(sizeof(CMDynamicBuffer)); + fDynamicBuffer->fMemoryManager = toCopy.fDynamicBuffer->fMemoryManager; + fDynamicBuffer->fArraySize = fBitCount / CMSTATE_BITFIELD_CHUNK; + if (fBitCount % CMSTATE_BITFIELD_CHUNK) + fDynamicBuffer->fArraySize++; + fDynamicBuffer->fBitArray = (XMLInt32**) fDynamicBuffer->fMemoryManager->allocate(fDynamicBuffer->fArraySize*sizeof(XMLInt32*)); + for(XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + { + if(toCopy.fDynamicBuffer->fBitArray[index]!=NULL) + { + allocateChunk(index); + memcpy((void *) fDynamicBuffer->fBitArray[index], + (const void *) toCopy.fDynamicBuffer->fBitArray[index], + CMSTATE_BITFIELD_INT32_SIZE * sizeof(XMLInt32)); + } + else + fDynamicBuffer->fBitArray[index]=NULL; + } + } + else + { + memcpy((void *) fBits, + (const void *) toCopy.fBits, + CMSTATE_CACHED_INT32_SIZE * sizeof(XMLInt32)); + } + } + + ~CMStateSet() + { + if(fDynamicBuffer) + { + for(XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + if(fDynamicBuffer->fBitArray[index]!=NULL) + deallocateChunk(index); + fDynamicBuffer->fMemoryManager->deallocate(fDynamicBuffer->fBitArray); + fDynamicBuffer->fMemoryManager->deallocate(fDynamicBuffer); + } + } + + + // ----------------------------------------------------------------------- + // Set manipulation methods + // ----------------------------------------------------------------------- + void operator|=(const CMStateSet& setToOr) + { + if(fDynamicBuffer==0) + { +#ifdef XERCES_HAVE_SSE2_INTRINSIC + if(XMLPlatformUtils::fgSSE2ok) + { + __m128i xmm1 = _mm_loadu_si128(reinterpret_cast(fBits)); + __m128i xmm2 = _mm_loadu_si128(reinterpret_cast(setToOr.fBits)); + __m128i xmm3 = _mm_or_si128(xmm1, xmm2); // OR 4 32-bit words + _mm_storeu_si128(reinterpret_cast<__m128i*>(fBits), xmm3); + } + else +#endif + { + for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) + if(setToOr.fBits[index]) + { + if(fBits[index]) + fBits[index] |= setToOr.fBits[index]; + else + fBits[index] = setToOr.fBits[index]; + } + } + } + else + { + for (XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + { + XMLInt32 *& other = setToOr.fDynamicBuffer->fBitArray[index]; + if(other!=NULL) + { + // if we haven't allocated the subvector yet, allocate it and copy + if(fDynamicBuffer->fBitArray[index]==NULL) + { + allocateChunk(index); + memcpy((void *) fDynamicBuffer->fBitArray[index], + (const void *) other, + CMSTATE_BITFIELD_INT32_SIZE * sizeof(XMLInt32)); + } + else + { + // otherwise, merge them + XMLInt32*& mine = fDynamicBuffer->fBitArray[index]; +#ifdef XERCES_HAVE_SSE2_INTRINSIC + if(XMLPlatformUtils::fgSSE2ok) + { + for(XMLSize_t subIndex = 0; subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex+=4) + { + __m128i xmm1 = _mm_load_si128(reinterpret_cast(&other[subIndex])); + __m128i xmm2 = _mm_load_si128(reinterpret_cast(&mine[subIndex])); + __m128i xmm3 = _mm_or_si128(xmm1, xmm2); // OR 4 32-bit words + _mm_store_si128(reinterpret_cast<__m128i*>(&mine[subIndex]), xmm3); + } + } + else +#endif + { + for(XMLSize_t subIndex = 0; subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) + if(setToOr.fDynamicBuffer->fBitArray[index][subIndex]) + { + if(fDynamicBuffer->fBitArray[index][subIndex]) + fDynamicBuffer->fBitArray[index][subIndex] |= setToOr.fDynamicBuffer->fBitArray[index][subIndex]; + else + fDynamicBuffer->fBitArray[index][subIndex] = setToOr.fDynamicBuffer->fBitArray[index][subIndex]; + } + } + } + } + } + } + } + + bool operator==(const CMStateSet& setToCompare) const + { + if (fBitCount != setToCompare.fBitCount) + return false; + + if(fDynamicBuffer==0) + { + for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) + { + if (fBits[index] != setToCompare.fBits[index]) + return false; + } + } + else + { + for (XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + { + XMLInt32 *& other = setToCompare.fDynamicBuffer->fBitArray[index], + *& mine = fDynamicBuffer->fBitArray[index]; + if(mine==NULL && other==NULL) + continue; + else if(mine==NULL || other==NULL) // the other should have been empty too + return false; + else + { + for(XMLSize_t subIndex = 0; subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) + if(mine[subIndex]!=other[subIndex]) + return false; + } + } + } + return true; + } + + CMStateSet& operator=(const CMStateSet& srcSet) + { + if (this == &srcSet) + return *this; + + // They have to be the same size + if (fBitCount != srcSet.fBitCount) + { + if(fDynamicBuffer) + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Bitset_NotEqualSize, fDynamicBuffer->fMemoryManager); + else + ThrowXML(RuntimeException, XMLExcepts::Bitset_NotEqualSize); + } + + if(fDynamicBuffer==0) + { + for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) + fBits[index] = srcSet.fBits[index]; + } + else + { + for (XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + if(srcSet.fDynamicBuffer->fBitArray[index]==NULL) + { + // delete this subentry + if(fDynamicBuffer->fBitArray[index]!=NULL) + deallocateChunk(index); + } + else + { + // if we haven't allocated the subvector yet, allocate it and copy + if(fDynamicBuffer->fBitArray[index]==NULL) + allocateChunk(index); + memcpy((void *) fDynamicBuffer->fBitArray[index], + (const void *) srcSet.fDynamicBuffer->fBitArray[index], + CMSTATE_BITFIELD_INT32_SIZE * sizeof(XMLInt32)); + } + } + return *this; + } + + XMLSize_t getBitCountInRange(XMLSize_t start, XMLSize_t end) const + { + XMLSize_t count = 0; + end /= 32; + if(fDynamicBuffer==0) + { + if(end > CMSTATE_CACHED_INT32_SIZE) + end = CMSTATE_CACHED_INT32_SIZE; + for (XMLSize_t index = start / 32; index < end; index++) + { + if (fBits[index] != 0) + for(int i=0;i<32;i++) + { + const XMLInt32 mask = 1UL << i; + if(fBits[index] & mask) + count++; + } + } + } + else + { + if(end > fDynamicBuffer->fArraySize) + end = fDynamicBuffer->fArraySize; + for (XMLSize_t index = start / 32; index < end; index++) + { + if(fDynamicBuffer->fBitArray[index]==NULL) + continue; + for(XMLSize_t subIndex=0;subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) + { + if (fDynamicBuffer->fBitArray[index][subIndex] != 0) + for(int i=0;i<32;i++) + { + const XMLInt32 mask = 1UL << i; + if(fDynamicBuffer->fBitArray[index][subIndex] & mask) + count++; + } + } + } + } + return count; + } + + bool getBit(const XMLSize_t bitToGet) const + { + if (bitToGet >= fBitCount) + { + if(fDynamicBuffer) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Bitset_BadIndex, fDynamicBuffer->fMemoryManager); + else + ThrowXML(ArrayIndexOutOfBoundsException, XMLExcepts::Bitset_BadIndex); + } + + // And access the right bit and byte + if(fDynamicBuffer==0) + { + const XMLInt32 mask = 1UL << (bitToGet % 32); + const XMLSize_t byteOfs = bitToGet / 32; + return (fBits[byteOfs]!=0 && (fBits[byteOfs] & mask) != 0); + } + else + { + const XMLSize_t vectorOfs = bitToGet / CMSTATE_BITFIELD_CHUNK; + if(fDynamicBuffer->fBitArray[vectorOfs]==NULL) + return false; + const XMLInt32 mask = 1UL << (bitToGet % 32); + const XMLSize_t byteOfs = (bitToGet % CMSTATE_BITFIELD_CHUNK) / 32; + return (fDynamicBuffer->fBitArray[vectorOfs][byteOfs]!=0 && (fDynamicBuffer->fBitArray[vectorOfs][byteOfs] & mask) != 0); + } + } + + bool isEmpty() const + { + if(fDynamicBuffer==0) + { + for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) + { + if (fBits[index] != 0) + return false; + } + } + else + { + for (XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + { + if(fDynamicBuffer->fBitArray[index]==NULL) + continue; + for(XMLSize_t subIndex=0;subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) + { + if (fDynamicBuffer->fBitArray[index][subIndex] != 0) + return false; + } + } + } + return true; + } + + void setBit(const XMLSize_t bitToSet) + { + if (bitToSet >= fBitCount) + { + if(fDynamicBuffer) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Bitset_BadIndex, fDynamicBuffer->fMemoryManager); + else + ThrowXML(ArrayIndexOutOfBoundsException, XMLExcepts::Bitset_BadIndex); + } + + const XMLInt32 mask = 1UL << (bitToSet % 32); + + // And access the right bit and byte + if(fDynamicBuffer==0) + { + const XMLSize_t byteOfs = bitToSet / 32; + fBits[byteOfs] &= ~mask; + fBits[byteOfs] |= mask; + } + else + { + const XMLSize_t vectorOfs = bitToSet / CMSTATE_BITFIELD_CHUNK; + if(fDynamicBuffer->fBitArray[vectorOfs]==NULL) + { + allocateChunk(vectorOfs); + for(XMLSize_t index=0;index < CMSTATE_BITFIELD_INT32_SIZE; index++) + fDynamicBuffer->fBitArray[vectorOfs][index]=0; + } + const XMLSize_t byteOfs = (bitToSet % CMSTATE_BITFIELD_CHUNK) / 32; + fDynamicBuffer->fBitArray[vectorOfs][byteOfs] &= ~mask; + fDynamicBuffer->fBitArray[vectorOfs][byteOfs] |= mask; + } + } + + void zeroBits() + { + if(fDynamicBuffer==0) + { + for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) + fBits[index] = 0; + } + else + { + for (XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + // delete this subentry + if(fDynamicBuffer->fBitArray[index]!=NULL) + deallocateChunk(index); + } + } + + XMLSize_t hashCode() const + { + XMLSize_t hash = 0; + if(fDynamicBuffer==0) + { + for (XMLSize_t index = 0; indexfArraySize; index++) + { + if(fDynamicBuffer->fBitArray[index]==NULL) + // simulates the iteration on the missing bits + for(XMLSize_t subIndex=0;subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) + hash *= 31; + else + for(XMLSize_t subIndex=0;subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) + hash = fDynamicBuffer->fBitArray[index][subIndex] + hash * 31; + } + } + return hash; + } + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CMStateSet(); + + // ----------------------------------------------------------------------- + // Helpers + // ----------------------------------------------------------------------- + void allocateChunk(const XMLSize_t index) + { +#ifdef XERCES_HAVE_SSE2_INTRINSIC + if(XMLPlatformUtils::fgSSE2ok) + fDynamicBuffer->fBitArray[index]=(XMLInt32*)_mm_malloc(CMSTATE_BITFIELD_INT32_SIZE * sizeof(XMLInt32), 16); + else +#endif + fDynamicBuffer->fBitArray[index]=(XMLInt32*)fDynamicBuffer->fMemoryManager->allocate(CMSTATE_BITFIELD_INT32_SIZE * sizeof(XMLInt32)); + } + + void deallocateChunk(const XMLSize_t index) + { +#ifdef XERCES_HAVE_SSE2_INTRINSIC + if(XMLPlatformUtils::fgSSE2ok) + _mm_free(fDynamicBuffer->fBitArray[index]); + else +#endif + fDynamicBuffer->fMemoryManager->deallocate(fDynamicBuffer->fBitArray[index]); + fDynamicBuffer->fBitArray[index]=NULL; + } + + // ----------------------------------------------------------------------- + // Private data members + // + // fBitCount + // The count of bits that the outside world wants to support, + // so its the max bit index plus one. + // + // fBits + // When the bit count is less than a threshold (very common), these hold the bits. + // Otherwise, the fDynamicBuffer member holds htem. + // + // fDynamicBuffer + // If the bit count is greater than the threshold, then we allocate this structure to + // store the bits, the length, and the memory manager to allocate/deallocate + // the memory + // + // ----------------------------------------------------------------------- + XMLSize_t fBitCount; + XMLInt32 fBits[CMSTATE_CACHED_INT32_SIZE]; + CMDynamicBuffer* fDynamicBuffer; + + friend class CMStateSetEnumerator; +}; + +class CMStateSetEnumerator : public XMemory +{ +public: + CMStateSetEnumerator(const CMStateSet* toEnum, XMLSize_t start = 0) : + fToEnum(toEnum), + fIndexCount((XMLSize_t)-1), + fLastValue(0) + { + // if a starting bit is specified, place fIndexCount at the beginning of the previous 32 bit area + // so the findNext moves to the one where 'start' is located + if(start > 32) + fIndexCount = (start/32 - 1) * 32; + findNext(); + // if we found data, and fIndexCount is still pointing to the area where 'start' is located, erase the bits before 'start' + if(hasMoreElements() && fIndexCount < start) + { + for(XMLSize_t i=0;i< (start - fIndexCount);i++) + { + XMLInt32 mask=1UL << i; + if(fLastValue & mask) + fLastValue &= ~mask; + } + // in case the 32 bit area contained only bits before 'start', advance + if(fLastValue==0) + findNext(); + } + } + + bool hasMoreElements() + { + return fLastValue!=0; + } + + unsigned int nextElement() + { + for(int i=0;i<32;i++) + { + XMLInt32 mask=1UL << i; + if(fLastValue & mask) + { + fLastValue &= ~mask; + unsigned int retVal=(unsigned int)fIndexCount+i; + if(fLastValue==0) + findNext(); + return retVal; + } + } + return 0; + } + +private: + void findNext() + { + if(fToEnum->fDynamicBuffer==0) + { + XMLSize_t nOffset=((fIndexCount==(XMLSize_t)-1)?0:(fIndexCount/32)+1); + for(XMLSize_t index=nOffset;indexfBits[index]!=0) + { + fIndexCount=index*32; + fLastValue=fToEnum->fBits[index]; + return; + } + } + } + else + { + XMLSize_t nOffset=((fIndexCount==(XMLSize_t)-1)?0:(fIndexCount/CMSTATE_BITFIELD_CHUNK)); + XMLSize_t nSubOffset=((fIndexCount==(XMLSize_t)-1)?0:((fIndexCount % CMSTATE_BITFIELD_CHUNK) /32)+1); + for (XMLSize_t index = nOffset; indexfDynamicBuffer->fArraySize; index++) + { + if(fToEnum->fDynamicBuffer->fBitArray[index]!=NULL) + { + for(XMLSize_t subIndex=nSubOffset;subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) + if(fToEnum->fDynamicBuffer->fBitArray[index][subIndex]!=0) + { + fIndexCount=index*CMSTATE_BITFIELD_CHUNK + subIndex*32; + fLastValue=fToEnum->fDynamicBuffer->fBitArray[index][subIndex]; + return; + } + } + nSubOffset = 0; // next chunks will be processed from the beginning + } + } + } + + const CMStateSet* fToEnum; + XMLSize_t fIndexCount; + XMLInt32 fLastValue; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMUnaryOp.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMUnaryOp.hpp new file mode 100644 index 000000000000..bf39eb8bcf24 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/common/CMUnaryOp.hpp @@ -0,0 +1,88 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CMUNARYOP_HPP) +#define XERCESC_INCLUDE_GUARD_CMUNARYOP_HPP + +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +class CMStateSet; + +class CMUnaryOp : public CMNode +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + CMUnaryOp + ( + ContentSpecNode::NodeTypes type + , CMNode* const nodeToAdopt + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~CMUnaryOp(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const CMNode* getChild() const; + CMNode* getChild(); + + + // ----------------------------------------------------------------------- + // Implementation of the public CMNode virtual interface + // ----------------------------------------------------------------------- + virtual void orphanChild(); + + +protected : + // ----------------------------------------------------------------------- + // Implementation of the protected CMNode virtual interface + // ----------------------------------------------------------------------- + void calcFirstPos(CMStateSet& toSet) const; + void calcLastPos(CMStateSet& toSet) const; + + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fChild + // This is the reference to the one child that we have for this + // unary operation. We own it. + // ----------------------------------------------------------------------- + CMNode* fChild; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CMUnaryOp(const CMUnaryOp&); + CMUnaryOp& operator=(const CMUnaryOp&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/common/ContentLeafNameTypeVector.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/common/ContentLeafNameTypeVector.hpp new file mode 100644 index 000000000000..4534e0ac6337 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/common/ContentLeafNameTypeVector.hpp @@ -0,0 +1,119 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CONTENTLEAFNAMETYPEVECTOR_HPP) +#define XERCESC_INCLUDE_GUARD_CONTENTLEAFNAMETYPEVECTOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT ContentLeafNameTypeVector : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Class specific types + // ----------------------------------------------------------------------- + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ContentLeafNameTypeVector + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ContentLeafNameTypeVector + ( + QName** const qName + , ContentSpecNode::NodeTypes* const types + , const XMLSize_t count + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~ContentLeafNameTypeVector(); + + ContentLeafNameTypeVector(const ContentLeafNameTypeVector&); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + QName* getLeafNameAt(const XMLSize_t pos) const; + + ContentSpecNode::NodeTypes getLeafTypeAt(const XMLSize_t pos) const; + XMLSize_t getLeafCount() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setValues + ( + QName** const qName + , ContentSpecNode::NodeTypes* const types + , const XMLSize_t count + ); + + // ----------------------------------------------------------------------- + // Miscellaneous + // ----------------------------------------------------------------------- + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ContentLeafNameTypeVector& operator=(const ContentLeafNameTypeVector&); + + // ----------------------------------------------------------------------- + // helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + void init(const XMLSize_t size); + + // ----------------------------------------------------------------------- + // Private Data Members + // + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + QName** fLeafNames; + ContentSpecNode::NodeTypes *fLeafTypes; + XMLSize_t fLeafCount; +}; + +inline void ContentLeafNameTypeVector::cleanUp() +{ + fMemoryManager->deallocate(fLeafNames); //delete [] fLeafNames; + fMemoryManager->deallocate(fLeafTypes); //delete [] fLeafTypes; +} + +inline void ContentLeafNameTypeVector::init(const XMLSize_t size) +{ + fLeafNames = (QName**) fMemoryManager->allocate(size * sizeof(QName*));//new QName*[size]; + fLeafTypes = (ContentSpecNode::NodeTypes *) fMemoryManager->allocate + ( + size * sizeof(ContentSpecNode::NodeTypes) + ); //new ContentSpecNode::NodeTypes [size]; + fLeafCount = size; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/common/ContentSpecNode.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/common/ContentSpecNode.hpp new file mode 100644 index 000000000000..32f6264b9f4b --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/common/ContentSpecNode.hpp @@ -0,0 +1,459 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CONTENTSPECNODE_HPP) +#define XERCESC_INCLUDE_GUARD_CONTENTSPECNODE_HPP + +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLBuffer; +class Grammar; + + +class XMLUTIL_EXPORT ContentSpecNode : public XSerializable, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Class specific types + // ----------------------------------------------------------------------- + enum NodeTypes + { + Leaf = 0 + , ZeroOrOne + , ZeroOrMore + , OneOrMore + , Choice + , Sequence + , Any + , Any_Other + , Any_NS = 8 + , All = 9 + , Loop = 10 + , Any_NS_Choice = 20 // 16 + 4 (Choice) + , ModelGroupSequence = 21 // 16 + 5 (Sequence) + , Any_Lax = 22 // 16 + 6 (Any) + , Any_Other_Lax = 23 // 16 + 7 (Any_Other) + , Any_NS_Lax = 24 // 16 + 8 (Any_NS) + , ModelGroupChoice = 36 // 32 + 4 (Choice) + , Any_Skip = 38 // 32 + 6 (Any) + , Any_Other_Skip = 39 // 32 + 7 (Any_Other) + , Any_NS_Skip = 40 // 32 + 8 (Any_NS) + + , UnknownType = -1 + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ContentSpecNode(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ContentSpecNode + ( + QName* const toAdopt + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ContentSpecNode + ( + XMLElementDecl* const elemDecl + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ContentSpecNode + ( + QName* const toAdopt + , const bool copyQName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ContentSpecNode + ( + const NodeTypes type + , ContentSpecNode* const firstToAdopt + , ContentSpecNode* const secondToAdopt + , const bool adoptFirst = true + , const bool adoptSecond = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ContentSpecNode(const ContentSpecNode&); + ~ContentSpecNode(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + QName* getElement(); + const QName* getElement() const; + XMLElementDecl* getElementDecl(); + const XMLElementDecl* getElementDecl() const; + ContentSpecNode* getFirst(); + const ContentSpecNode* getFirst() const; + ContentSpecNode* getSecond(); + const ContentSpecNode* getSecond() const; + NodeTypes getType() const; + ContentSpecNode* orphanFirst(); + ContentSpecNode* orphanSecond(); + int getMinOccurs() const; + int getMaxOccurs() const; + bool isFirstAdopted() const; + bool isSecondAdopted() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setElement(QName* const toAdopt); + void setFirst(ContentSpecNode* const toAdopt); + void setSecond(ContentSpecNode* const toAdopt); + void setType(const NodeTypes type); + void setMinOccurs(int min); + void setMaxOccurs(int max); + void setAdoptFirst(bool adoptFirst); + void setAdoptSecond(bool adoptSecond); + + + // ----------------------------------------------------------------------- + // Miscellaneous + // ----------------------------------------------------------------------- + void formatSpec (XMLBuffer& bufToFill) const; + bool hasAllContent(); + int getMinTotalRange() const; + int getMaxTotalRange() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(ContentSpecNode) + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ContentSpecNode& operator=(const ContentSpecNode&); + + void cleanup(); + + // ----------------------------------------------------------------------- + // Helper functions + // ----------------------------------------------------------------------- + void deleteChildNode(ContentSpecNode* node); + + // ----------------------------------------------------------------------- + // Private Data Members + // + // fElement + // If the type is Leaf/Any*, then this is the qName of the element. If the URI + // is fgPCDataElemId, then its a PCData node. Else, it is zero. + // + // fFirst + // fSecond + // The optional first and second nodes. The fType field indicates + // which of these are valid. The validity constraints are: + // + // Leaf = Neither valid + // ZeroOrOne, ZeroOrMore = First + // Choice, Sequence, All = First and Second + // Any* = Neither valid + // + // fType + // The type of node. This controls how many of the child node fields + // are used. + // + // fAdoptFirst + // Indicate if this ContentSpecNode adopts the fFirst, and is responsible + // for deleting it. + // + // fAdoptSecond + // Indicate if this ContentSpecNode adopts the fSecond, and is responsible + // for deleting it. + // + // fMinOccurs + // Indicate the minimum times that this node can occur + // + // fMaxOccurs + // Indicate the maximum times that this node can occur + // -1 (Unbounded), default (1) + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + QName* fElement; + XMLElementDecl* fElementDecl; + ContentSpecNode* fFirst; + ContentSpecNode* fSecond; + NodeTypes fType; + bool fAdoptFirst; + bool fAdoptSecond; + int fMinOccurs; + int fMaxOccurs; +}; + +// --------------------------------------------------------------------------- +// ContentSpecNode: Constructors and Destructor +// --------------------------------------------------------------------------- +inline ContentSpecNode::ContentSpecNode(MemoryManager* const manager) : + + fMemoryManager(manager) + , fElement(0) + , fElementDecl(0) + , fFirst(0) + , fSecond(0) + , fType(ContentSpecNode::Leaf) + , fAdoptFirst(true) + , fAdoptSecond(true) + , fMinOccurs(1) + , fMaxOccurs(1) +{ +} + +inline +ContentSpecNode::ContentSpecNode(QName* const element, + MemoryManager* const manager) : + + fMemoryManager(manager) + , fElement(0) + , fElementDecl(0) + , fFirst(0) + , fSecond(0) + , fType(ContentSpecNode::Leaf) + , fAdoptFirst(true) + , fAdoptSecond(true) + , fMinOccurs(1) + , fMaxOccurs(1) +{ + if (element) + fElement = new (fMemoryManager) QName(*element); +} + +inline +ContentSpecNode::ContentSpecNode(XMLElementDecl* const elemDecl, + MemoryManager* const manager) : + + fMemoryManager(manager) + , fElement(0) + , fElementDecl(elemDecl) + , fFirst(0) + , fSecond(0) + , fType(ContentSpecNode::Leaf) + , fAdoptFirst(true) + , fAdoptSecond(true) + , fMinOccurs(1) + , fMaxOccurs(1) +{ + if (elemDecl) + fElement = new (manager) QName(*(elemDecl->getElementName())); +} + +inline +ContentSpecNode::ContentSpecNode( QName* const element + , const bool copyQName + , MemoryManager* const manager) : + + fMemoryManager(manager) + , fElement(0) + , fElementDecl(0) + , fFirst(0) + , fSecond(0) + , fType(ContentSpecNode::Leaf) + , fAdoptFirst(true) + , fAdoptSecond(true) + , fMinOccurs(1) + , fMaxOccurs(1) +{ + if (copyQName) + { + if (element) + fElement = new (fMemoryManager) QName(*element); + } + else + { + fElement = element; + } +} + +inline +ContentSpecNode::ContentSpecNode(const NodeTypes type + , ContentSpecNode* const firstAdopt + , ContentSpecNode* const secondAdopt + , const bool adoptFirst + , const bool adoptSecond + , MemoryManager* const manager) : + + fMemoryManager(manager) + , fElement(0) + , fElementDecl(0) + , fFirst(firstAdopt) + , fSecond(secondAdopt) + , fType(type) + , fAdoptFirst(adoptFirst) + , fAdoptSecond(adoptSecond) + , fMinOccurs(1) + , fMaxOccurs(1) +{ +} + +// --------------------------------------------------------------------------- +// ContentSpecNode: Getter methods +// --------------------------------------------------------------------------- +inline QName* ContentSpecNode::getElement() +{ + return fElement; +} + +inline const QName* ContentSpecNode::getElement() const +{ + return fElement; +} + +inline XMLElementDecl* ContentSpecNode::getElementDecl() +{ + return fElementDecl; +} + +inline const XMLElementDecl* ContentSpecNode::getElementDecl() const +{ + return fElementDecl; +} + +inline ContentSpecNode* ContentSpecNode::getFirst() +{ + return fFirst; +} + +inline const ContentSpecNode* ContentSpecNode::getFirst() const +{ + return fFirst; +} + +inline ContentSpecNode* ContentSpecNode::getSecond() +{ + return fSecond; +} + +inline const ContentSpecNode* ContentSpecNode::getSecond() const +{ + return fSecond; +} + +inline ContentSpecNode::NodeTypes ContentSpecNode::getType() const +{ + return fType; +} + +inline ContentSpecNode* ContentSpecNode::orphanFirst() +{ + ContentSpecNode* retNode = fFirst; + fFirst = 0; + return retNode; +} + +inline ContentSpecNode* ContentSpecNode::orphanSecond() +{ + ContentSpecNode* retNode = fSecond; + fSecond = 0; + return retNode; +} + +inline int ContentSpecNode::getMinOccurs() const +{ + return fMinOccurs; +} + +inline int ContentSpecNode::getMaxOccurs() const +{ + return fMaxOccurs; +} + +inline bool ContentSpecNode::isFirstAdopted() const +{ + return fAdoptFirst; +} + +inline bool ContentSpecNode::isSecondAdopted() const +{ + return fAdoptSecond; +} + + +// --------------------------------------------------------------------------- +// ContentSpecType: Setter methods +// --------------------------------------------------------------------------- +inline void ContentSpecNode::setElement(QName* const element) +{ + delete fElement; + fElement = 0; + if (element) + fElement = new (fMemoryManager) QName(*element); +} + +inline void ContentSpecNode::setFirst(ContentSpecNode* const toAdopt) +{ + if (fAdoptFirst) + delete fFirst; + fFirst = toAdopt; +} + +inline void ContentSpecNode::setSecond(ContentSpecNode* const toAdopt) +{ + if (fAdoptSecond) + delete fSecond; + fSecond = toAdopt; +} + +inline void ContentSpecNode::setType(const NodeTypes type) +{ + fType = type; +} + +inline void ContentSpecNode::setMinOccurs(int min) +{ + fMinOccurs = min; +} + +inline void ContentSpecNode::setMaxOccurs(int max) +{ + fMaxOccurs = max; +} + +inline void ContentSpecNode::setAdoptFirst(bool newState) +{ + fAdoptFirst = newState; +} + +inline void ContentSpecNode::setAdoptSecond(bool newState) +{ + fAdoptSecond = newState; +} + +// --------------------------------------------------------------------------- +// ContentSpecNode: Miscellaneous +// --------------------------------------------------------------------------- +inline bool ContentSpecNode::hasAllContent() { + + if (fType == ContentSpecNode::ZeroOrOne) { + return (fFirst->getType() == ContentSpecNode::All); + } + + return (fType == ContentSpecNode::All); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/common/DFAContentModel.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/common/DFAContentModel.hpp new file mode 100644 index 000000000000..1ef847baffa6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/common/DFAContentModel.hpp @@ -0,0 +1,275 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DFACONTENTMODEL_HPP) +#define XERCESC_INCLUDE_GUARD_DFACONTENTMODEL_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentSpecNode; +class CMLeaf; +class CMRepeatingLeaf; +class CMNode; +class CMStateSet; + +// +// DFAContentModel is the heavy weight derivative of ContentModel that does +// all of the non-trivial element content validation. This guy does the full +// bore regular expression to DFA conversion to create a DFA that it then +// uses in its validation algorithm. +// +// NOTE: Upstream work insures that this guy will never see a content model +// with PCDATA in it. Any model with PCDATA is 'mixed' and is handled +// via the MixedContentModel class, since mixed models are very +// constrained in form and easily handled via a special case. This +// also makes our life much easier here. +// +class DFAContentModel : public XMLContentModel +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DFAContentModel + ( + const bool dtd + , ContentSpecNode* const elemContentSpec + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DFAContentModel + ( + const bool dtd + , ContentSpecNode* const elemContentSpec + , const bool isMixed + , MemoryManager* const manager + ); + + virtual ~DFAContentModel(); + + + // ----------------------------------------------------------------------- + // Implementation of the virtual content model interface + // ----------------------------------------------------------------------- + virtual bool validateContent + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual bool validateContentSpecial + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual void checkUniqueParticleAttribution + ( + SchemaGrammar* const pGrammar + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLValidator* const pValidator + , unsigned int* const pContentSpecOrgURI + , const XMLCh* pComplexTypeName = 0 + ) ; + + virtual ContentLeafNameTypeVector* getContentLeafNameTypeVector() const ; + + virtual unsigned int getNextState(unsigned int currentState, + XMLSize_t elementIndex) const; + + virtual bool handleRepetitions( const QName* const curElem, + unsigned int curState, + unsigned int currentLoop, + unsigned int& nextState, + unsigned int& nextLoop, + XMLSize_t elementIndex, + SubstitutionGroupComparator * comparator) const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DFAContentModel(); + DFAContentModel(const DFAContentModel&); + DFAContentModel& operator=(const DFAContentModel&); + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void cleanup(); + void buildDFA(ContentSpecNode* const curNode); + CMNode* buildSyntaxTree(ContentSpecNode* const curNode, unsigned int& curIndex); + unsigned int* makeDefStateList() const; + unsigned int countLeafNodes(ContentSpecNode* const curNode); + + class Occurence : public XMemory + { + public: + Occurence(int minOcc, int maxOcc, int eltIndex); + + int minOccurs; + int maxOccurs; + int elemIndex; + }; + + // ----------------------------------------------------------------------- + // Private data members + // + // fElemMap + // fElemMapSize + // This is the map of unique input symbol elements to indices into + // each state's per-input symbol transition table entry. This is part + // of the built DFA information that must be kept around to do the + // actual validation. + // + // fElemMapType + // This is a map of whether the element map contains information + // related to ANY models. + // + // fEmptyOk + // This is an optimization. While building the transition table we + // can see whether this content model would approve of an empty + // content (which could happen if everything was optional.) So we + // set this flag and short circuit that check, which would otherwise + // be ugly and time consuming if we tried to determine it at each + // validation call. + // + // fEOCPos + // The NFA position of the special EOC (end of content) node. This + // is saved away since its used during the DFA build. + // + // fFinalStateFlags + // This is an array of booleans, one per state (there are + // fTransTableSize states in the DFA) that indicates whether that + // state is a final state. + // + // fFollowList + // The list of follow positions for each NFA position (i.e. for each + // non-epsilon leaf node.) This is only used during the building of + // the DFA, and is let go afterwards. + // + // fHeadNode + // This is the head node of our intermediate representation. It is + // only non-null during the building of the DFA (just so that it + // does not have to be passed all around.) Once the DFA is built, + // this is no longer required so its deleted. + // + // fLeafCount + // The count of leaf nodes. This is an important number that set some + // limits on the sizes of data structures in the DFA process. + // + // fLeafList + // An array of non-epsilon leaf nodes, which is used during the DFA + // build operation, then dropped. These are just references to nodes + // pointed to by fHeadNode, so we don't have to clean them up, just + // the actually leaf list array itself needs cleanup. + // + // fLeafListType + // Array mapping ANY types to the leaf list. + // + // fTransTable + // fTransTableSize + // This is the transition table that is the main by product of all + // of the effort here. It is an array of arrays of ints. The first + // dimension is the number of states we end up with in the DFA. The + // second dimensions is the number of unique elements in the content + // model (fElemMapSize). Each entry in the second dimension indicates + // the new state given that input for the first dimension's start + // state. + // + // The fElemMap array handles mapping from element indexes to + // positions in the second dimension of the transition table. + // + // fTransTableSize is the number of valid entries in the transition + // table, and in the other related tables such as fFinalStateFlags. + // + // fCountingStates + // This is the table holding the minOccurs/maxOccurs for elements + // that can be repeated a finite number of times. + // + // fDTD + // Boolean to allow DTDs to validate even with namespace support. + // + // fIsMixed + // DFA ContentModel with mixed PCDATA. + // ----------------------------------------------------------------------- + QName** fElemMap; + ContentSpecNode::NodeTypes* fElemMapType; + unsigned int fElemMapSize; + bool fEmptyOk; + unsigned int fEOCPos; + bool* fFinalStateFlags; + CMStateSet** fFollowList; + CMNode* fHeadNode; + unsigned int fLeafCount; + CMLeaf** fLeafList; + ContentSpecNode::NodeTypes* fLeafListType; + unsigned int** fTransTable; + unsigned int fTransTableSize; + Occurence** fCountingStates; + bool fDTD; + bool fIsMixed; + ContentLeafNameTypeVector * fLeafNameTypeVector; + MemoryManager* fMemoryManager; +}; + + +inline unsigned int +DFAContentModel::getNextState(unsigned int currentState, + XMLSize_t elementIndex) const { + + if (currentState == XMLContentModel::gInvalidTrans) { + return XMLContentModel::gInvalidTrans; + } + + if (currentState >= fTransTableSize || elementIndex >= fElemMapSize) { + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + } + + return fTransTable[currentState][elementIndex]; +} + +inline +DFAContentModel::Occurence::Occurence(int minOcc, int maxOcc, int eltIndex) +{ + minOccurs = minOcc; + maxOccurs = maxOcc; + elemIndex = eltIndex; +} + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/common/Grammar.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/common/Grammar.hpp new file mode 100644 index 000000000000..159c7f4df43a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/common/Grammar.hpp @@ -0,0 +1,204 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_GRAMMAR_HPP) +#define XERCESC_INCLUDE_GUARD_GRAMMAR_HPP + +#include + +#include +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLGrammarDescription; + +// +// This abstract class specifies the interface for a Grammar +// + +class VALIDATORS_EXPORT Grammar : public XSerializable, public XMemory +{ +public: + + // ----------------------------------------------------------------------- + // Class Specific Types + // + // DTDGrammarType - Indicate this Grammar is built from a DTD. + // SchemaGrammarType - Indicate this Grammar is built from a Schema. + // + // TOP_LEVEL_SCOPE - outermost scope level (i.e. global) of a declaration. + // For DTD, all element decls and attribute decls always + // have TOP_LEVEL_SCOPE. For schema, it may vary if + // it is inside a complex type. + // + // UNKNOWN_SCOPE - unknown scope level. None of the decls should have this. + // + // ----------------------------------------------------------------------- + enum GrammarType { + DTDGrammarType + , SchemaGrammarType + , UnKnown + }; + + enum { + // These are well-known values that must simply be larger + // than any reasonable scope + UNKNOWN_SCOPE = UINT_MAX - 0 + , TOP_LEVEL_SCOPE = UINT_MAX - 1 + }; + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + virtual ~Grammar(){}; + + // ----------------------------------------------------------------------- + // Virtual Getter methods + // ----------------------------------------------------------------------- + virtual GrammarType getGrammarType() const =0; + virtual const XMLCh* getTargetNamespace() const =0; + virtual bool getValidated() const = 0; + + // Element Decl + + // this method should only be used while the grammar is being + // constructed, not while it is being used + // in a validation episode! + virtual XMLElementDecl* findOrAddElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const prefixName + , const XMLCh* const qName + , unsigned int scope + , bool& wasAdded + ) = 0; + + virtual XMLSize_t getElemId + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ) const = 0; + + virtual const XMLElementDecl* getElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ) const = 0; + + virtual XMLElementDecl* getElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ) = 0; + + virtual const XMLElementDecl* getElemDecl + ( + const unsigned int elemId + ) const = 0; + + virtual XMLElementDecl* getElemDecl + ( + const unsigned int elemId + ) = 0; + + // Notation + virtual const XMLNotationDecl* getNotationDecl + ( + const XMLCh* const notName + ) const=0; + + virtual XMLNotationDecl* getNotationDecl + ( + const XMLCh* const notName + )=0; + + // ----------------------------------------------------------------------- + // Virtual Setter methods + // ----------------------------------------------------------------------- + virtual XMLElementDecl* putElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const prefixName + , const XMLCh* const qName + , unsigned int scope + , const bool notDeclared = false + ) = 0; + + virtual XMLSize_t putElemDecl + ( + XMLElementDecl* const elemDecl + , const bool notDeclared = false + ) = 0; + + virtual XMLSize_t putNotationDecl + ( + XMLNotationDecl* const notationDecl + ) const=0; + + virtual void setValidated(const bool newState) = 0; + + // ----------------------------------------------------------------------- + // Virtual methods + // ----------------------------------------------------------------------- + virtual void reset()=0; + + virtual void setGrammarDescription( XMLGrammarDescription*) = 0; + virtual XMLGrammarDescription* getGrammarDescription() const = 0; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(Grammar) + + static void storeGrammar(XSerializeEngine& serEng + , Grammar* const grammar); + + static Grammar* loadGrammar(XSerializeEngine& serEng); + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + Grammar(){}; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Grammar(const Grammar&); + Grammar& operator=(const Grammar&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/common/GrammarResolver.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/common/GrammarResolver.hpp new file mode 100644 index 000000000000..eb4b3587b897 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/common/GrammarResolver.hpp @@ -0,0 +1,271 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_GRAMMARRESOLVER_HPP) +#define XERCESC_INCLUDE_GUARD_GRAMMARRESOLVER_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DatatypeValidator; +class DatatypeValidatorFactory; +class XMLGrammarDescription; + +/** + * This class embodies the representation of a Grammar pool Resolver. + * This class is called from the validator. + * + */ + +class VALIDATORS_EXPORT GrammarResolver : public XMemory +{ +public: + + /** @name Constructor and Destructor */ + //@{ + /** + * + * Default Constructor + */ + GrammarResolver( + XMLGrammarPool* const gramPool + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + /** + * Destructor + */ + ~GrammarResolver(); + + //@} + + /** @name Getter methods */ + //@{ + /** + * Retrieve the DatatypeValidator + * + * @param uriStr the namespace URI + * @param typeName the type name + * @return the DatatypeValidator associated with namespace & type name + */ + DatatypeValidator* getDatatypeValidator(const XMLCh* const uriStr, + const XMLCh* const typeName); + + /** + * Retrieve the DatatypeValidatorFactory used for built-in schema types + * + * @return the DatatypeValidator associated with namespace for XMLSchema + */ + DatatypeValidatorFactory* getBuiltinDatatypeValidatorFactory(); + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param gramDesc grammar description for the grammar + * @return Grammar abstraction associated with the grammar description + */ + Grammar* getGrammar( XMLGrammarDescription* const gramDesc ) ; + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param namespaceKey Namespace key into Grammar pool + * @return Grammar abstraction associated with the NameSpace key. + */ + Grammar* getGrammar( const XMLCh* const namespaceKey ) ; + + /** + * Get an enumeration of Grammar in the Grammar pool + * + * @return enumeration of Grammar in Grammar pool + */ + RefHashTableOfEnumerator getGrammarEnumerator() const; + + /** + * Get an enumeration of the referenced Grammars + * + * @return enumeration of referenced Grammars + */ + RefHashTableOfEnumerator getReferencedGrammarEnumerator() const; + + /** + * Get an enumeration of the cached Grammars in the Grammar pool + * + * @return enumeration of the cached Grammars in Grammar pool + */ + RefHashTableOfEnumerator getCachedGrammarEnumerator() const; + + /** + * Get a string pool of schema grammar element/attribute names/prefixes + * (used by TraverseSchema) + * + * @return a string pool of schema grammar element/attribute names/prefixes + */ + XMLStringPool* getStringPool(); + + /** + * Is the specified Namespace key in Grammar pool? + * + * @param nameSpaceKey Namespace key + * @return True if Namespace key association is in the Grammar pool. + */ + bool containsNameSpace( const XMLCh* const nameSpaceKey ); + + inline XMLGrammarPool* getGrammarPool() const; + + inline MemoryManager* getGrammarPoolMemoryManager() const; + + //@} + + /** @name Setter methods */ + //@{ + + /** + * Set the 'Grammar caching' flag + */ + void cacheGrammarFromParse(const bool newState); + + /** + * Set the 'Use cached grammar' flag + */ + void useCachedGrammarInParse(const bool newState); + + //@} + + + /** @name GrammarResolver methods */ + //@{ + /** + * Add the Grammar with Namespace Key associated to the Grammar Pool. + * The Grammar will be owned by the Grammar Pool. + * + * @param grammarToAdopt Grammar abstraction used by validator. + */ + void putGrammar(Grammar* const grammarToAdopt ); + + /** + * Returns the Grammar with Namespace Key associated from the Grammar Pool + * The Key entry is removed from the table (grammar is not deleted if + * adopted - now owned by caller). + * + * @param nameSpaceKey Key to associate with Grammar abstraction + */ + Grammar* orphanGrammar(const XMLCh* const nameSpaceKey); + + /** + * Cache the grammars in fGrammarBucket to fCachedGrammarRegistry. + * If a grammar with the same key is already cached, an exception is + * thrown and none of the grammars will be cached. + */ + void cacheGrammars(); + + /** + * Reset internal Namespace/Grammar registry. + */ + void reset(); + void resetCachedGrammar(); + + /** + * Returns an XSModel, either from the GrammarPool or by creating one + */ + XSModel* getXSModel(); + + + ValueVectorOf* getGrammarsToAddToXSModel(); + + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + GrammarResolver(const GrammarResolver&); + GrammarResolver& operator=(const GrammarResolver&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fStringPool The string pool used by TraverseSchema to store + // element/attribute names and prefixes. + // Always owned by Grammar pool implementation + // + // fGrammarBucket The parsed Grammar Pool, if no caching option. + // + // fGrammarFromPool Referenced Grammar Set, not owned + // + // fGrammarPool The Grammar Set either plugged or created. + // + // fDataTypeReg DatatypeValidatorFactory registry + // + // fMemoryManager Pluggable memory manager for dynamic memory + // allocation/deallocation + // ----------------------------------------------------------------------- + bool fCacheGrammar; + bool fUseCachedGrammar; + bool fGrammarPoolFromExternalApplication; + XMLStringPool* fStringPool; + RefHashTableOf* fGrammarBucket; + RefHashTableOf* fGrammarFromPool; + DatatypeValidatorFactory* fDataTypeReg; + MemoryManager* fMemoryManager; + XMLGrammarPool* fGrammarPool; + XSModel* fXSModel; + XSModel* fGrammarPoolXSModel; + ValueVectorOf* fGrammarsToAddToXSModel; +}; + +inline XMLStringPool* GrammarResolver::getStringPool() { + + return fStringPool; +} + + +inline void GrammarResolver::useCachedGrammarInParse(const bool aValue) +{ + fUseCachedGrammar = aValue; +} + +inline XMLGrammarPool* GrammarResolver::getGrammarPool() const +{ + return fGrammarPool; +} + +inline MemoryManager* GrammarResolver::getGrammarPoolMemoryManager() const +{ + return fGrammarPool->getMemoryManager(); +} + +inline ValueVectorOf* GrammarResolver::getGrammarsToAddToXSModel() +{ + return fGrammarsToAddToXSModel; +} + +inline DatatypeValidatorFactory* GrammarResolver::getBuiltinDatatypeValidatorFactory() +{ + return fDataTypeReg; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/common/MixedContentModel.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/common/MixedContentModel.hpp new file mode 100644 index 000000000000..5b4d1f227e78 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/common/MixedContentModel.hpp @@ -0,0 +1,212 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_MIXEDCONTENTMODEL_HPP) +#define XERCESC_INCLUDE_GUARD_MIXEDCONTENTMODEL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentSpecNode; + +// +// MixedContentModel is a derivative of the abstract content model base +// class that handles the special case of mixed model elements. If an element +// is mixed model, it has PCDATA as its first possible content, followed +// by an alternation of the possible children. The children cannot have any +// numeration or order, so it must look like this: +// +// +// +// So, all we have to do is to keep an array of the possible children and +// validate by just looking up each child being validated by looking it up +// in the list. +// +class MixedContentModel : public XMLContentModel +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + MixedContentModel + ( + const bool dtd + , ContentSpecNode* const parentContentSpec + , const bool ordered = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~MixedContentModel(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool hasDups() const; + + // ----------------------------------------------------------------------- + // Implementation of the ContentModel virtual interface + // ----------------------------------------------------------------------- + virtual bool validateContent + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual bool validateContentSpecial + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual ContentLeafNameTypeVector* getContentLeafNameTypeVector() const ; + + virtual unsigned int getNextState(unsigned int currentState, + XMLSize_t elementIndex) const; + + virtual bool handleRepetitions( const QName* const curElem, + unsigned int curState, + unsigned int currentLoop, + unsigned int& nextState, + unsigned int& nextLoop, + XMLSize_t elementIndex, + SubstitutionGroupComparator * comparator) const; + + virtual void checkUniqueParticleAttribution + ( + SchemaGrammar* const pGrammar + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLValidator* const pValidator + , unsigned int* const pContentSpecOrgURI + , const XMLCh* pComplexTypeName = 0 + ) ; + +private : + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void buildChildList + ( + ContentSpecNode* const curNode + , ValueVectorOf& toFill + , ValueVectorOf& toType + ); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + MixedContentModel(); + MixedContentModel(const MixedContentModel&); + MixedContentModel& operator=(const MixedContentModel&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fCount + // The count of possible children in the fChildren member. + // + // fChildren + // The list of possible children that we have to accept. This array + // is allocated as large as needed in the constructor. + // + // fChildTypes + // The type of the children to support ANY. + // + // fOrdered + // True if mixed content model is ordered. DTD mixed content models + // are always unordered. + // + // fDTD + // Boolean to allow DTDs to validate even with namespace support. + // + // ----------------------------------------------------------------------- + XMLSize_t fCount; + QName** fChildren; + ContentSpecNode::NodeTypes* fChildTypes; + bool fOrdered; + bool fDTD; + MemoryManager* fMemoryManager; +}; + +inline ContentLeafNameTypeVector* MixedContentModel::getContentLeafNameTypeVector() const +{ + return 0; +} + +inline unsigned int +MixedContentModel::getNextState(unsigned int, + XMLSize_t) const { + + return XMLContentModel::gInvalidTrans; +} + +inline bool +MixedContentModel::handleRepetitions( const QName* const /*curElem*/, + unsigned int /*curState*/, + unsigned int /*currentLoop*/, + unsigned int& /*nextState*/, + unsigned int& /*nextLoop*/, + XMLSize_t /*elementIndex*/, + SubstitutionGroupComparator * /*comparator*/) const +{ + return true; +} + +inline void MixedContentModel::checkUniqueParticleAttribution + ( + SchemaGrammar* const + , GrammarResolver* const + , XMLStringPool* const + , XMLValidator* const + , unsigned int* const pContentSpecOrgURI + , const XMLCh* /*pComplexTypeName*/ /*= 0*/ + ) +{ + // rename back + unsigned int i = 0; + for (i = 0; i < fCount; i++) { + unsigned int orgURIIndex = fChildren[i]->getURI(); + if ((orgURIIndex != XMLContentModel::gEOCFakeId) && + (orgURIIndex != XMLElementDecl::fgInvalidElemId) && + (orgURIIndex != XMLElementDecl::fgPCDataElemId)) + fChildren[i]->setURI(pContentSpecOrgURI[orgURIIndex]); + } + + // for mixed content model, it's only a sequence + // UPA checking is not necessary +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/common/SimpleContentModel.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/common/SimpleContentModel.hpp new file mode 100644 index 000000000000..4555a7313d24 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/common/SimpleContentModel.hpp @@ -0,0 +1,212 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SIMPLECONTENTMODEL_HPP) +#define XERCESC_INCLUDE_GUARD_SIMPLECONTENTMODEL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// SimpleContentModel is a derivative of the abstract content model base +// class that handles a small set of simple content models that are just +// way overkill to give the DFA treatment. +// +// DESCRIPTION: +// +// This guy handles the following scenarios: +// +// a +// a? +// a* +// a+ +// a,b +// a|b +// +// These all involve a unary operation with one element type, or a binary +// operation with two elements. These are very simple and can be checked +// in a simple way without a DFA and without the overhead of setting up a +// DFA for such a simple check. +// +// NOTE: Pass the XMLElementDecl::fgPCDataElemId value to represent a +// PCData node. Pass XMLElementDecl::fgInvalidElemId for unused element +// +class SimpleContentModel : public XMLContentModel +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + SimpleContentModel + ( + const bool dtd + , QName* const firstChild + , QName* const secondChild + , const ContentSpecNode::NodeTypes cmOp + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~SimpleContentModel(); + + + // ----------------------------------------------------------------------- + // Implementation of the ContentModel virtual interface + // ----------------------------------------------------------------------- + virtual bool validateContent + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual bool validateContentSpecial + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual ContentLeafNameTypeVector *getContentLeafNameTypeVector() const; + + virtual unsigned int getNextState(unsigned int currentState, + XMLSize_t elementIndex) const; + + virtual bool handleRepetitions( const QName* const curElem, + unsigned int curState, + unsigned int currentLoop, + unsigned int& nextState, + unsigned int& nextLoop, + XMLSize_t elementIndex, + SubstitutionGroupComparator * comparator) const; + + virtual void checkUniqueParticleAttribution + ( + SchemaGrammar* const pGrammar + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLValidator* const pValidator + , unsigned int* const pContentSpecOrgURI + , const XMLCh* pComplexTypeName = 0 + ) ; + + private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SimpleContentModel(); + SimpleContentModel(const SimpleContentModel&); + SimpleContentModel& operator=(const SimpleContentModel&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fFirstChild + // fSecondChild + // The first (and optional second) child node. The + // operation code tells us whether the second child is used or not. + // + // fOp + // The operation that this object represents. Since this class only + // does simple contents, there is only ever a single operation + // involved (i.e. the children of the operation are always one or + // two leafs.) + // + // fDTD + // Boolean to allow DTDs to validate even with namespace support. */ + // + // ----------------------------------------------------------------------- + QName* fFirstChild; + QName* fSecondChild; + ContentSpecNode::NodeTypes fOp; + bool fDTD; + MemoryManager* const fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// SimpleContentModel: Constructors and Destructor +// --------------------------------------------------------------------------- +inline SimpleContentModel::SimpleContentModel +( + const bool dtd + , QName* const firstChild + , QName* const secondChild + , const ContentSpecNode::NodeTypes cmOp + , MemoryManager* const manager +) + : fFirstChild(0) + , fSecondChild(0) + , fOp(cmOp) + , fDTD(dtd) + , fMemoryManager(manager) +{ + if (firstChild) + fFirstChild = new (manager) QName(*firstChild); + else + fFirstChild = new (manager) QName(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, XMLElementDecl::fgInvalidElemId, manager); + + if (secondChild) + fSecondChild = new (manager) QName(*secondChild); + else + fSecondChild = new (manager) QName(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, XMLElementDecl::fgInvalidElemId, manager); +} + +inline SimpleContentModel::~SimpleContentModel() +{ + delete fFirstChild; + delete fSecondChild; +} + + +// --------------------------------------------------------------------------- +// SimpleContentModel: Virtual methods +// --------------------------------------------------------------------------- +inline unsigned int +SimpleContentModel::getNextState(unsigned int, + XMLSize_t) const { + + return XMLContentModel::gInvalidTrans; +} + +inline bool +SimpleContentModel::handleRepetitions( const QName* const /*curElem*/, + unsigned int /*curState*/, + unsigned int /*currentLoop*/, + unsigned int& /*nextState*/, + unsigned int& /*nextLoop*/, + XMLSize_t /*elementIndex*/, + SubstitutionGroupComparator * /*comparator*/) const +{ + return true; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp new file mode 100644 index 000000000000..8f1b32eb31a6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp @@ -0,0 +1,201 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ABSTRACT_NUMERIC_FACET_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ABSTRACT_NUMERIC_FACET_VALIDATOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT AbstractNumericFacetValidator : public DatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructor. */ + //@{ + + virtual ~AbstractNumericFacetValidator(); + + //@} + + virtual const RefArrayVectorOf* getEnumString() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(AbstractNumericFacetValidator) + +protected: + + AbstractNumericFacetValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + void init(RefArrayVectorOf* const enums + , MemoryManager* const manager); + + // + // Abstract interface + // + virtual void assignAdditionalFacet(const XMLCh* const key + , const XMLCh* const value + , MemoryManager* const manager); + + virtual void inheritAdditionalFacet(); + + virtual void checkAdditionalFacetConstraints(MemoryManager* const manager) const; + + virtual void checkAdditionalFacetConstraintsBase(MemoryManager* const manager) const; + + virtual int compareValues(const XMLNumber* const lValue + , const XMLNumber* const rValue) = 0; + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager) = 0; + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- + + virtual void setMaxInclusive(const XMLCh* const) = 0; + + virtual void setMaxExclusive(const XMLCh* const) = 0; + + virtual void setMinInclusive(const XMLCh* const) = 0; + + virtual void setMinExclusive(const XMLCh* const) = 0; + + virtual void setEnumeration(MemoryManager* const manager) = 0; + + static const int INDETERMINATE; + +public: +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + + inline XMLNumber* getMaxInclusive() const; + + inline XMLNumber* getMaxExclusive() const; + + inline XMLNumber* getMinInclusive() const; + + inline XMLNumber* getMinExclusive() const; + + inline RefVectorOf* getEnumeration() const; + +protected: + // ----------------------------------------------------------------------- + // Protected data members + // + // Allow access to derived class + // + // ----------------------------------------------------------------------- + bool fMaxInclusiveInherited; + bool fMaxExclusiveInherited; + bool fMinInclusiveInherited; + bool fMinExclusiveInherited; + bool fEnumerationInherited; + + XMLNumber* fMaxInclusive; + XMLNumber* fMaxExclusive; + XMLNumber* fMinInclusive; + XMLNumber* fMinExclusive; + + RefVectorOf* fEnumeration; // save the actual value + RefArrayVectorOf* fStrEnumeration; + +private: + + void assignFacet(MemoryManager* const manager); + + void inspectFacet(MemoryManager* const manager); + + void inspectFacetBase(MemoryManager* const manager); + + void inheritFacet(); + + void storeClusive(XSerializeEngine& + , bool + , XMLNumber*); + + void loadClusive(XSerializeEngine& + , bool& + , XMLNumber*& + , XMLNumber::NumberType + , int ); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + AbstractNumericFacetValidator(const AbstractNumericFacetValidator&); + AbstractNumericFacetValidator& operator=(const AbstractNumericFacetValidator&); +}; + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + +inline XMLNumber* AbstractNumericFacetValidator::getMaxInclusive() const +{ + return fMaxInclusive; +} + +inline XMLNumber* AbstractNumericFacetValidator::getMaxExclusive() const +{ + return fMaxExclusive; +} + +inline XMLNumber* AbstractNumericFacetValidator::getMinInclusive() const +{ + return fMinInclusive; +} + +inline XMLNumber* AbstractNumericFacetValidator::getMinExclusive() const +{ + return fMinExclusive; +} + +inline RefVectorOf* AbstractNumericFacetValidator::getEnumeration() const +{ + return fEnumeration; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file AbstractNumericFacetValidator.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/AbstractNumericValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/AbstractNumericValidator.hpp new file mode 100644 index 000000000000..568aa61afb48 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/AbstractNumericValidator.hpp @@ -0,0 +1,109 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ABSTRACT_NUMERIC_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ABSTRACT_NUMERIC_VALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT AbstractNumericValidator : public AbstractNumericFacetValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructor. */ + //@{ + + virtual ~AbstractNumericValidator(); + + //@} + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(AbstractNumericValidator) + +protected: + + AbstractNumericValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + inline void init(RefArrayVectorOf* const enums + , MemoryManager* const manager); + + // + // Abstract interface + // + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager) = 0; + + void boundsCheck(const XMLNumber* const + , MemoryManager* const manager); + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + AbstractNumericValidator(const AbstractNumericValidator&); + AbstractNumericValidator& operator=(const AbstractNumericValidator&); +}; + +inline void AbstractNumericValidator::init(RefArrayVectorOf* const enums + , MemoryManager* const manager) +{ + AbstractNumericFacetValidator::init(enums, manager); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file AbstractNumericValidator.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/AbstractStringValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/AbstractStringValidator.hpp new file mode 100644 index 000000000000..ff2b9d447437 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/AbstractStringValidator.hpp @@ -0,0 +1,250 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ABSTRACT_STRING_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ABSTRACT_STRING_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT AbstractStringValidator : public DatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructor. */ + //@{ + + virtual ~AbstractStringValidator(); + + //@} + + virtual const RefArrayVectorOf* getEnumString() const; + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + virtual int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(AbstractStringValidator) + +protected: + + AbstractStringValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + void init(RefArrayVectorOf* const enums + , MemoryManager* const manager); + + // + // Abstract interface + // + virtual void assignAdditionalFacet(const XMLCh* const key + , const XMLCh* const value + , MemoryManager* const manager); + + virtual void inheritAdditionalFacet(); + + virtual void checkAdditionalFacetConstraints(MemoryManager* const manager) const; + + virtual void checkAdditionalFacet(const XMLCh* const content + , MemoryManager* const manager) const; + + virtual XMLSize_t getLength(const XMLCh* const content + , MemoryManager* const manager) const; + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager) = 0; + + // + // to Allow ListDTV to overwrite + // + virtual void inspectFacetBase(MemoryManager* const manager); + + virtual void inheritFacet(); + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); + + /* + ** Base64BinaryDatatypeValidator to overwrite + */ + virtual void normalizeEnumeration(MemoryManager* const manager); + + virtual void normalizeContent(XMLCh* const, MemoryManager* const manager) const; + +public: +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + + inline XMLSize_t getLength() const; + + inline XMLSize_t getMaxLength() const; + + inline XMLSize_t getMinLength() const; + + inline RefArrayVectorOf* getEnumeration() const; + +protected: +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- + + inline void setLength(XMLSize_t); + + inline void setMaxLength(XMLSize_t); + + inline void setMinLength(XMLSize_t); + + inline void setEnumeration(RefArrayVectorOf*, bool); + +private: + + void assignFacet(MemoryManager* const manager); + + void inspectFacet(MemoryManager* const manager); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + AbstractStringValidator(const AbstractStringValidator&); + AbstractStringValidator& operator=(const AbstractStringValidator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // ----------------------------------------------------------------------- + XMLSize_t fLength; + XMLSize_t fMaxLength; + XMLSize_t fMinLength; + bool fEnumerationInherited; + RefArrayVectorOf* fEnumeration; +}; + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + +inline XMLSize_t AbstractStringValidator::getLength() const +{ + return fLength; +} + +inline XMLSize_t AbstractStringValidator::getMaxLength() const +{ + return fMaxLength; +} + +inline XMLSize_t AbstractStringValidator::getMinLength() const +{ + return fMinLength; +} + +inline RefArrayVectorOf* AbstractStringValidator:: getEnumeration() const +{ + return fEnumeration; +} + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- + +inline void AbstractStringValidator::setLength(XMLSize_t newLength) +{ + fLength = newLength; +} + +inline void AbstractStringValidator::setMaxLength(XMLSize_t newMaxLength) +{ + fMaxLength = newMaxLength; +} + +inline void AbstractStringValidator::setMinLength(XMLSize_t newMinLength) +{ + fMinLength = newMinLength; +} + +inline void AbstractStringValidator::setEnumeration(RefArrayVectorOf* enums + , bool inherited) +{ + if (enums) + { + if ( !fEnumerationInherited && fEnumeration) + delete fEnumeration; + + fEnumeration = enums; + fEnumerationInherited = inherited; + setFacetsDefined(DatatypeValidator::FACET_ENUMERATION); + } +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file AbstractStringValidator.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp new file mode 100644 index 000000000000..b30b4c6e8df3 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp @@ -0,0 +1,180 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ANYSIMPLETYPEDATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ANYSIMPLETYPEDATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT AnySimpleTypeDatatypeValidator : public DatatypeValidator +{ +public: + // ----------------------------------------------------------------------- + // Public Constructor + // ----------------------------------------------------------------------- + /** @name Constructor */ + //@{ + + AnySimpleTypeDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + // ----------------------------------------------------------------------- + // Public Destructor + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + + virtual ~AnySimpleTypeDatatypeValidator(); + + //@} + + virtual const RefArrayVectorOf* getEnumString() const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Getter Functions */ + //@{ + + /** + * Returns whether the type is atomic or not + */ + virtual bool isAtomic() const; + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * Checks that the "content" string is valid datatype. + * If invalid, a Datatype validation exception is thrown. + * + * @param content A string containing the content to be validated + * + */ + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Checks whether a given type can be used as a substitute + * + * @param toCheck A datatype validator of the type to be used as a + * substitute + * + */ + + virtual bool isSubstitutableBy(const DatatypeValidator* const toCheck); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compares content in the Domain value vs. lexical value. + * + * @param value1 string to compare + * + * @param value2 string to compare + * + */ + virtual int compare(const XMLCh* const value1, const XMLCh* const value2 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(AnySimpleTypeDatatypeValidator) + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + AnySimpleTypeDatatypeValidator(const AnySimpleTypeDatatypeValidator&); + AnySimpleTypeDatatypeValidator& operator=(const AnySimpleTypeDatatypeValidator&); +}; + + +// --------------------------------------------------------------------------- +// DatatypeValidator: Getters +// --------------------------------------------------------------------------- +inline bool AnySimpleTypeDatatypeValidator::isAtomic() const { + + return false; +} + +// --------------------------------------------------------------------------- +// DatatypeValidators: Validation methods +// --------------------------------------------------------------------------- +inline bool +AnySimpleTypeDatatypeValidator::isSubstitutableBy(const DatatypeValidator* const) +{ + return true; +} + +inline void +AnySimpleTypeDatatypeValidator::validate(const XMLCh* const + , ValidationContext* const + , MemoryManager* const) +{ + return; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file AnySimpleTypeDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp new file mode 100644 index 000000000000..2b0b4b847929 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ANYURI_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ANYURI_DATATYPEVALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLBuffer; + +class VALIDATORS_EXPORT AnyURIDatatypeValidator : public AbstractStringValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + AnyURIDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + AnyURIDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~AnyURIDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(AnyURIDatatypeValidator) + +protected: + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + AnyURIDatatypeValidator(const AnyURIDatatypeValidator&); + AnyURIDatatypeValidator& operator=(const AnyURIDatatypeValidator&); + void encode(const XMLCh* const content, const XMLSize_t len, XMLBuffer& encoded, MemoryManager* const manager); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file AnyURIDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp new file mode 100644 index 000000000000..595084b75b17 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp @@ -0,0 +1,100 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BASE64BINARY_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_BASE64BINARY_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT Base64BinaryDatatypeValidator : public AbstractStringValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + Base64BinaryDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + Base64BinaryDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~Base64BinaryDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(Base64BinaryDatatypeValidator) + +protected: + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + + virtual XMLSize_t getLength(const XMLCh* const content + , MemoryManager* const manager) const; + + virtual void normalizeEnumeration(MemoryManager* const manager); + + virtual void normalizeContent(XMLCh* const, MemoryManager* const manager) const; + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Base64BinaryDatatypeValidator(const Base64BinaryDatatypeValidator&); + Base64BinaryDatatypeValidator& operator=(const Base64BinaryDatatypeValidator&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file Base64BinaryDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/BooleanDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/BooleanDatatypeValidator.hpp new file mode 100644 index 000000000000..a20263b31a66 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/BooleanDatatypeValidator.hpp @@ -0,0 +1,193 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BOOLEAN_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_BOOLEAN_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT BooleanDatatypeValidator : public DatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructor. */ + //@{ + + BooleanDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + BooleanDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~BooleanDatatypeValidator(); + + //@} + + virtual const RefArrayVectorOf* getEnumString() const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Getter Functions */ + //@{ + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(BooleanDatatypeValidator) + +private: + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); + + // ----------------------------------------------------------------------- + // Unimplemented methods. + // ----------------------------------------------------------------------- + BooleanDatatypeValidator(const BooleanDatatypeValidator&); + BooleanDatatypeValidator& operator=(const BooleanDatatypeValidator&); + +}; + +// --------------------------------------------------------------------------- +// Constructors and Destructor +// --------------------------------------------------------------------------- +inline BooleanDatatypeValidator::BooleanDatatypeValidator(MemoryManager* const manager) +:DatatypeValidator(0, 0, 0, DatatypeValidator::Boolean, manager) +{ + setFinite(true); +} + +inline BooleanDatatypeValidator::~BooleanDatatypeValidator() +{ +} + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + + +// ----------------------------------------------------------------------- +// Compare methods +// ----------------------------------------------------------------------- + +inline DatatypeValidator* BooleanDatatypeValidator::newInstance +( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager +) +{ + return (DatatypeValidator*) new (manager) BooleanDatatypeValidator(this, facets, enums, finalSet, manager); +} + +inline void BooleanDatatypeValidator::validate( const XMLCh* const content + , ValidationContext* const context + , MemoryManager* const manager) +{ + checkContent(content, context, false, manager); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file BooleanDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DatatypeValidator.hpp new file mode 100644 index 000000000000..185392299779 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DatatypeValidator.hpp @@ -0,0 +1,750 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DATATYPEVALIDATOR_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class MemoryManager; + +/** + * DataTypeValidator defines the interface that data type validators must + * obey. These validators can be supplied by the application writer and may + * be useful as standalone code as well as plugins to the validator + * architecture. + * + * Notice: + * The datatype validator will own the facets hashtable passed to it during + * construction, which means that the datatype validator will be responsible + * for the deletion. The facets hashtable will be created during parsing and + * passed to the appropriate datatype validator which in turn will delete it + * upon its destruction. + * + */ + + +class VALIDATORS_EXPORT DatatypeValidator : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constant data + // ----------------------------------------------------------------------- + //facets + enum { + FACET_LENGTH = 1, + FACET_MINLENGTH = 1<<1, + FACET_MAXLENGTH = 1<<2, + FACET_PATTERN = 1<<3, + FACET_ENUMERATION = 1<<4, + FACET_MAXINCLUSIVE = 1<<5, + FACET_MAXEXCLUSIVE = 1<<6, + FACET_MININCLUSIVE = 1<<7, + FACET_MINEXCLUSIVE = 1<<8, + FACET_TOTALDIGITS = 1<<9, + FACET_FRACTIONDIGITS = 1<<10, + FACET_ENCODING = 1<<11, + FACET_DURATION = 1<<12, + FACET_PERIOD = 1<<13, + FACET_WHITESPACE = 1<<14 + }; + + //2.4.2.6 whiteSpace - Datatypes + enum { + PRESERVE = 0, + REPLACE = 1, + COLLAPSE = 2 + }; + + enum ValidatorType { + String, + AnyURI, + QName, + Name, + NCName, + Boolean, + Float, + Double, + Decimal, + HexBinary, + Base64Binary, + Duration, + DateTime, + Date, + Time, + MonthDay, + YearMonth, + Year, + Month, + Day, + ID, + IDREF, + ENTITY, + NOTATION, + List, + Union, + AnySimpleType, + UnKnown + }; + + // ----------------------------------------------------------------------- + // Public Destructor + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + + virtual ~DatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Getter Functions */ + //@{ + + /** + * Returns the final values of the simpleType + */ + int getFinalSet() const; + + /** + * Returns the datatype facet if any is set. + */ + RefHashTableOf* getFacets() const; + + /** + * Returns default value (collapse) for whiteSpace facet. + * This function is overwritten in StringDatatypeValidator. + */ + short getWSFacet () const; + + /** + * Returns the base datatype validator if set. + */ + DatatypeValidator* getBaseValidator() const; + + /** + * Returns the 'class' type of datatype validator + */ + ValidatorType getType() const; + + /** + * Returns whether the type is atomic or not + * + * To be redefined in List/Union validators + */ + virtual bool isAtomic() const; + + /** + * Returns the datatype enumeration if any is set. + * Derived class shall provide their own copy. + */ + virtual const RefArrayVectorOf* getEnumString() const = 0; + + /** + * returns true if this type is anonymous + **/ + bool getAnonymous() const; + + /** + * sets this type to be anonymous + **/ + void setAnonymous(); + + /** + * Fundamental Facet: ordered + */ + XSSimpleTypeDefinition::ORDERING getOrdered() const; + + /** + * Fundamental Facet: cardinality. + */ + bool getFinite() const; + + /** + * Fundamental Facet: bounded. + */ + bool getBounded() const; + + /** + * Fundamental Facet: numeric. + */ + bool getNumeric() const; + + /** + * Canonical Representation + * + * Derivative datatype may overwrite this method once + * it has its own canonical representation other than + * the default one. + * + * @param rawData: data in raw string + * @param memMgr: memory manager + * @param toValiate: to validate the raw string or not + * + * @return: canonical representation of the data + * + * Note: + * + * 1. the return value is kept in memory allocated + * by the memory manager passed in or by dv's + * if no memory manager is provided. + * + * 2. client application is responsible for the + * proper deallocation of the memory allocated + * for the returned value. + * + * 3. In the case where the rawData is not valid + * with regards to the fundamental datatype, + * a null string is returned. + * + */ + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * Checks that the "content" string is valid datatype. + * If invalid, a Datatype validation exception is thrown. + * + * @param content A string containing the content to be validated + * + */ + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) = 0; + + /** + * Checks whether a given type can be used as a substitute + * + * @param toCheck A datatype validator of the type to be used as a + * substitute + * + * To be redefined in UnionDatatypeValidator + */ + + virtual bool isSubstitutableBy(const DatatypeValidator* const toCheck); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compares content in the Domain value vs. lexical value. + * + * e.g. If type is a float then 1.0 may be equivalent to 1 even though + * both are lexically different. + * + * @param value1 string to compare + * + * @param value2 string to compare + * + * We will provide a default behavior that should be redefined at the + * children level, if necessary (i.e. boolean case). + */ + virtual int compare(const XMLCh* const value1, const XMLCh* const value2 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) = 0; + + /** + * Returns the uri,name of the type this validator is for + */ + const XMLCh* getTypeName() const; + + /** + * sets the uri,name that this validator is for - typeName is uri,name string. + * due to the internals of xerces this will set the uri to be the schema uri if + * there is no comma in typeName + */ + void setTypeName(const XMLCh* const typeName); + + /** + * sets the uri,name that this validator is for + */ + void setTypeName(const XMLCh* const name, const XMLCh* const uri); + + /** + * Returns the uri of the type this validator is for + */ + const XMLCh* getTypeUri() const; + + /** + * Returns the name of the type this validator is for + */ + const XMLCh* getTypeLocalName() const; + + /** + * Returns the plugged-in memory manager + */ + MemoryManager* getMemoryManager() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DatatypeValidator) + + /*** + * + * Serialize DatatypeValidator derivative + * + * Param + * serEng: serialize engine + * dv: DatatypeValidator derivative + * + * Return: + * + ***/ + static void storeDV(XSerializeEngine& serEng + , DatatypeValidator* const dv); + + /*** + * + * Create a DatatypeValidator derivative from the binary + * stream. + * + * Param + * serEng: serialize engine + * + * Return: + * DatatypeValidator derivative + * + ***/ + static DatatypeValidator* loadDV(XSerializeEngine& serEng); + +protected: + // ----------------------------------------------------------------------- + // Protected Constructors + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * + * @param baseValidator The base datatype validator for derived + * validators. Null if native validator. + * + * @param facets A hashtable of datatype facets (except enum). + * + * @param finalSet 'final' value of the simpleType + */ + + DatatypeValidator(DatatypeValidator* const baseValidator, + RefHashTableOf* const facets, + const int finalSet, + const ValidatorType type, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + + friend class DatatypeValidatorFactory; + friend class XSObjectFactory; + + /** + * facetDefined + */ + int getFacetsDefined() const; + void setFacetsDefined(int); + + /** + * fixed + */ + int getFixed() const; + void setFixed(int); + + + /** + * fPattern + */ + const XMLCh* getPattern() const; + void setPattern(const XMLCh* ); + + /** + * fRegex + */ + RegularExpression* getRegex() const; + void setRegex(RegularExpression* const); + + /** + * set fType + */ + void setType(ValidatorType); + + /** + * set fWhiteSpace + */ + void setWhiteSpace(short); + + /** + * get WSString + */ + const XMLCh* getWSstring(const short WSType) const; + + /** + * Fundamental Facet: ordered + */ + void setOrdered(XSSimpleTypeDefinition::ORDERING ordered); + + /** + * Fundamental Facet: cardinality. + */ + void setFinite(bool finite); + + /** + * Fundamental Facet: bounded. + */ + void setBounded(bool bounded); + + /** + * Fundamental Facet: numeric. + */ + void setNumeric(bool numeric); + +private: + // ----------------------------------------------------------------------- + // CleanUp methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DatatypeValidator(const DatatypeValidator&); + DatatypeValidator& operator=(const DatatypeValidator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fFinalSet + // stores "final" values of simpleTypes + // + // fBaseValidator + // This is a pointer to a base datatype validator. If value is null, + // it means we have a native datatype validator not a derived one. + // + // fFacets + // This is a hashtable of dataype facets. + // + // fType + // Stores the class type of datatype validator + // + // fFacetsDefined + // Stores the constaiting facets flag + // + // fPattern + // the pointer to the String of the pattern. The actual data is + // in the Facets. + // + // fRegex + // pointer to the RegularExpress object + // + // + // fFixed + // if {fixed} is true, then types for which this type is the + // {base type definition} cannot specify a value for a specific + // facet. + // + // fTypeName + // the uri,name of the type this validator will validate + // + // fTypeLocalName + // the name of the type this validator will validate + // + // fTypeUri + // the uri of the type this validator will validate + // fAnonymous + // true if this type is anonynous + // + // ----------------------------------------------------------------------- + bool fAnonymous; + bool fFinite; + bool fBounded; + bool fNumeric; + + short fWhiteSpace; + int fFinalSet; + int fFacetsDefined; + int fFixed; + + ValidatorType fType; + XSSimpleTypeDefinition::ORDERING fOrdered; + + DatatypeValidator* fBaseValidator; + RefHashTableOf* fFacets; + XMLCh* fPattern; + RegularExpression* fRegex; + XMLCh* fTypeName; + const XMLCh* fTypeLocalName; + const XMLCh* fTypeUri; + +protected: + // ----------------------------------------------------------------------- + // Protected data members + // + // fMemoryManager + // Pluggable memory manager for dynamic allocation/deallocation. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + +}; + + +// --------------------------------------------------------------------------- +// DatatypeValidator: Getters +// --------------------------------------------------------------------------- +inline int DatatypeValidator::getFinalSet() const { + + return fFinalSet; +} + +inline RefHashTableOf* DatatypeValidator::getFacets() const { + + return fFacets; +} + +inline DatatypeValidator* DatatypeValidator::getBaseValidator() const { + + return fBaseValidator; +} + +inline short DatatypeValidator::getWSFacet() const { + + return fWhiteSpace; +} + +inline DatatypeValidator::ValidatorType DatatypeValidator::getType() const +{ + return fType; +} + +inline int DatatypeValidator::getFacetsDefined() const +{ + return fFacetsDefined; +} + +inline int DatatypeValidator::getFixed() const +{ + return fFixed; +} + +inline const XMLCh* DatatypeValidator::getPattern() const +{ + return fPattern; +} + +inline RegularExpression* DatatypeValidator::getRegex() const +{ + return fRegex; +} + +inline const XMLCh* DatatypeValidator::getTypeName() const +{ + return fTypeName; +} + +inline bool DatatypeValidator::getAnonymous() const +{ + return fAnonymous; +} + +inline const XMLCh* DatatypeValidator::getTypeLocalName() const +{ + return fTypeLocalName; +} + +inline const XMLCh* DatatypeValidator::getTypeUri() const +{ + return fTypeUri; +} + +inline MemoryManager* DatatypeValidator::getMemoryManager() const +{ + return fMemoryManager; +} + +inline XSSimpleTypeDefinition::ORDERING DatatypeValidator::getOrdered() const +{ + return fOrdered; +} + +inline bool DatatypeValidator::getFinite() const +{ + return fFinite; +} + +inline bool DatatypeValidator::getBounded() const +{ + return fBounded; +} + +inline bool DatatypeValidator::getNumeric() const +{ + return fNumeric; +} + +// --------------------------------------------------------------------------- +// DatatypeValidator: Setters +// --------------------------------------------------------------------------- +inline void DatatypeValidator::setType(ValidatorType theType) +{ + fType = theType; +} + +inline void DatatypeValidator::setWhiteSpace(short newValue) +{ + fWhiteSpace = newValue; +} + +inline void DatatypeValidator::setFacetsDefined(int facets) +{ + fFacetsDefined |= facets; +} + +inline void DatatypeValidator::setFixed(int fixed) +{ + fFixed |= fixed; +} + +inline void DatatypeValidator::setPattern(const XMLCh* pattern) +{ + if (fPattern) { + fMemoryManager->deallocate(fPattern);//delete [] fPattern; + delete fRegex; + } + fPattern = XMLString::replicate(pattern, fMemoryManager); + fRegex = new (fMemoryManager) RegularExpression(fPattern, SchemaSymbols::fgRegEx_XOption, fMemoryManager); +} + +inline void DatatypeValidator::setRegex(RegularExpression* const regex) +{ + fRegex = regex; +} + +inline bool DatatypeValidator::isAtomic() const { + + return true; +} + +inline void DatatypeValidator::setAnonymous() { + fAnonymous = true; +} + +inline void DatatypeValidator::setOrdered(XSSimpleTypeDefinition::ORDERING ordered) +{ + fOrdered = ordered; +} + +inline void DatatypeValidator::setFinite(bool finite) +{ + fFinite = finite; +} + +inline void DatatypeValidator::setBounded(bool bounded) +{ + fBounded = bounded; +} + +inline void DatatypeValidator::setNumeric(bool numeric) +{ + fNumeric = numeric; +} + +// --------------------------------------------------------------------------- +// DatatypeValidators: Compare methods +// --------------------------------------------------------------------------- +inline int DatatypeValidator::compare(const XMLCh* const lValue, + const XMLCh* const rValue + , MemoryManager* const) +{ + return XMLString::compareString(lValue, rValue); +} + +// --------------------------------------------------------------------------- +// DatatypeValidators: Validation methods +// --------------------------------------------------------------------------- +inline bool +DatatypeValidator::isSubstitutableBy(const DatatypeValidator* const toCheck) +{ + const DatatypeValidator* dv = toCheck; + + while (dv != 0) { + + if (dv == this) { + return true; + } + + dv = dv->getBaseValidator(); + } + + return false; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DatatypeValidatorFactory.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DatatypeValidatorFactory.hpp new file mode 100644 index 000000000000..172a2f194c2b --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DatatypeValidatorFactory.hpp @@ -0,0 +1,285 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DATATYPEVALIDATORFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_DATATYPEVALIDATORFACTORY_HPP + +/** + * This class implements a factory of Datatype Validators. Internally the + * DatatypeValidators are kept in a registry. + * There is one instance of DatatypeValidatorFactory per Parser. + * There is one datatype Registry per instance of DatatypeValidatorFactory, + * such registry is first allocated with the number DatatypeValidators needed. + * e.g. + * If Parser finds an XML document with a DTD, a registry of DTD validators (only + * 9 validators) get initialized in the registry. + * The initialization process consist of instantiating the Datatype and + * facets and registering the Datatype into registry table. + * This implementation uses a Hashtable as a registry. The datatype validators created + * by the factory will be deleted by the registry. + * + * As the Parser parses an instance document it knows if validation needs + * to be checked. If no validation is necessary we should not instantiate a + * DatatypeValidatorFactory. + * If validation is needed, we need to instantiate a DatatypeValidatorFactory. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// DatatypeValidatorFactory: Local declaration +// --------------------------------------------------------------------------- +typedef RefHashTableOf KVStringPairHashTable; +typedef RefHashTableOf DVHashTable; +typedef RefArrayVectorOf XMLChRefVector; + + +class VALIDATORS_EXPORT DatatypeValidatorFactory : public XSerializable, public XMemory +{ +public: + + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + DatatypeValidatorFactory + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** @name Destructor. */ + //@{ + + ~DatatypeValidatorFactory(); + + //@} + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Getter Functions */ + //@{ + + /** + * Returns the datatype validator + * + * @param dvType Datatype validator name/type + */ + DatatypeValidator* getDatatypeValidator(const XMLCh* const dvType) const; + + /** + * Returns the user defined registry of types + **/ + DVHashTable* getUserDefinedRegistry() const; + + + /** + * Returns the built in registry of types + **/ + static DVHashTable* getBuiltInRegistry(); + + //@} + + private: + /** + * Initializes registry with primitive and derived Simple types. + * + * This method does not clear the registry to clear the registry you + * have to call resetRegistry. + * + * The net effect of this method is to start with the smallest set of + * datatypes needed by the validator. + * + * If we start with Schema's then we initialize to full set of + * validators. + */ + void expandRegistryToFullSchemaSet(); + + public: + // ----------------------------------------------------------------------- + // Canonical Representation Group + // ----------------------------------------------------------------------- + void initCanRepRegistory(); + + static XMLCanRepGroup::CanRepGroup getCanRepGroup(const DatatypeValidator* const); + + static DatatypeValidator* getBuiltInBaseValidator(const DatatypeValidator* const); + + // ----------------------------------------------------------------------- + // Validator Factory methods + // ----------------------------------------------------------------------- + /** @name Validator Factory Functions */ + //@{ + + /** + * Creates a new datatype validator of type baseValidator's class and + * adds it to the registry + * + * @param typeName Datatype validator name + * + * @param baseValidator Base datatype validator + * + * @param facets datatype facets if any + * + * @param enums vector of values for enum facet + * + * @param isDerivedByList Indicates whether the datatype is derived by + * list or not + * + * @param finalSet 'final' values of the simpleType + * + * @param isUserDefined Indicates whether the datatype is built-in or + * user defined + */ + DatatypeValidator* createDatatypeValidator + ( + const XMLCh* const typeName + , DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const bool isDerivedByList + , const int finalSet = 0 + , const bool isUserDefined = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Creates a new datatype validator of type UnionDatatypeValidator and + * adds it to the registry + * + * @param typeName Datatype validator name + * + * @param validators Vector of datatype validators + * + * @param finalSet 'final' values of the simpleType + * + * @param isUserDefined Indicates whether the datatype is built-in or + * user defined + */ + DatatypeValidator* createDatatypeValidator + ( + const XMLCh* const typeName + , RefVectorOf* const validators + , const int finalSet + , const bool isUserDefined = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Reset datatype validator registry + */ + void resetRegistry(); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DatatypeValidatorFactory) + +private: + + // ----------------------------------------------------------------------- + // CleanUp methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DatatypeValidatorFactory(const DatatypeValidatorFactory&); + DatatypeValidatorFactory& operator=(const DatatypeValidatorFactory&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fUserDefinedRegistry + // This is a hashtable of user defined dataype validators. + // + // fBuiltInRegistry + // This is a hashtable of built-in primitive datatype validators. + // ----------------------------------------------------------------------- + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf* fUserDefinedRegistry; + static XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf* fBuiltInRegistry; + static XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf* fCanRepRegistry; + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const fMemoryManager; + + friend class XPath2ContextImpl; + friend class XMLInitializer; +}; + +inline DatatypeValidator* +DatatypeValidatorFactory::getDatatypeValidator(const XMLCh* const dvType) const +{ + if (dvType) { + if (fBuiltInRegistry && fBuiltInRegistry->containsKey(dvType)) { + return fBuiltInRegistry->get(dvType); + } + + if (fUserDefinedRegistry && fUserDefinedRegistry->containsKey(dvType)) { + return fUserDefinedRegistry->get(dvType); + + } + } + return 0; +} + +inline DVHashTable* +DatatypeValidatorFactory::getUserDefinedRegistry() const { + return fUserDefinedRegistry; +} + +inline DVHashTable* +DatatypeValidatorFactory::getBuiltInRegistry() { + return fBuiltInRegistry; +} +// --------------------------------------------------------------------------- +// DatatypeValidator: CleanUp methods +// --------------------------------------------------------------------------- +inline void DatatypeValidatorFactory::cleanUp() { + + if (fUserDefinedRegistry) + { + delete fUserDefinedRegistry; + fUserDefinedRegistry = 0; + } +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DatatypeValidatorFactory.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DateDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DateDatatypeValidator.hpp new file mode 100644 index 000000000000..4c873a144bff --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DateDatatypeValidator.hpp @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DATE_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DATE_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT DateDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + DateDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DateDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~DateDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DateDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DateDatatypeValidator(const DateDatatypeValidator&); + DateDatatypeValidator& operator=(const DateDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DateDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp new file mode 100644 index 000000000000..e5a65468c22e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp @@ -0,0 +1,102 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DATETIME_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DATETIME_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT DateTimeDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + DateTimeDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DateTimeDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~DateTimeDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DateTimeDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DateTimeDatatypeValidator(const DateTimeDatatypeValidator&); + DateTimeDatatypeValidator& operator=(const DateTimeDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DateTimeDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DateTimeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DateTimeValidator.hpp new file mode 100644 index 000000000000..efc936f76235 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DateTimeValidator.hpp @@ -0,0 +1,126 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DATETIME_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DATETIME_VALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT DateTimeValidator : public AbstractNumericFacetValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public dtor + // ----------------------------------------------------------------------- + /** @name Constructor. */ + //@{ + + virtual ~DateTimeValidator(); + + //@} + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual int compare(const XMLCh* const value1 + , const XMLCh* const value2 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DateTimeValidator) + +protected: + + // ----------------------------------------------------------------------- + // ctor used by derived class + // ----------------------------------------------------------------------- + DateTimeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // + // Abstract interface + // + + virtual int compareValues(const XMLNumber* const lValue + , const XMLNumber* const rValue); + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); + + virtual void setMaxInclusive(const XMLCh* const); + + virtual void setMaxExclusive(const XMLCh* const); + + virtual void setMinInclusive(const XMLCh* const); + + virtual void setMinExclusive(const XMLCh* const); + + virtual void setEnumeration(MemoryManager* const manager); + +protected: + + // ----------------------------------------------------------------------- + // helper interface: to be implemented/overwritten by derived class + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager) = 0; + virtual void parse(XMLDateTime* const) = 0; + + // to be overwritten by duration + virtual int compareDates(const XMLDateTime* const lValue + , const XMLDateTime* const rValue + , bool strict); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DateTimeValidator(const DateTimeValidator&); + DateTimeValidator& operator=(const DateTimeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DateTimeValidator.hpp + */ + + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DayDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DayDatatypeValidator.hpp new file mode 100644 index 000000000000..f1cba5f8d836 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DayDatatypeValidator.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DAY_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DAY_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT DayDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor*/ + //@{ + + DayDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DayDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~DayDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DayDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DayDatatypeValidator(const DayDatatypeValidator&); + DayDatatypeValidator& operator=(const DayDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DayDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DecimalDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DecimalDatatypeValidator.hpp new file mode 100644 index 000000000000..cc8e89334a3c --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DecimalDatatypeValidator.hpp @@ -0,0 +1,218 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DECIMAL_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DECIMAL_DATATYPEVALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLBigDecimal; + +class VALIDATORS_EXPORT DecimalDatatypeValidator : public AbstractNumericValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + DecimalDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DecimalDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~DecimalDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + virtual int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DecimalDatatypeValidator) + +protected: + +// ----------------------------------------------------------------------- +// ctor provided to be used by derived classes +// ----------------------------------------------------------------------- + DecimalDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + +// ----------------------------------------------------------------------- +// Abstract interface from AbstractNumericFacetValidator +// ----------------------------------------------------------------------- + + virtual void assignAdditionalFacet(const XMLCh* const key + , const XMLCh* const value + , MemoryManager* const manager); + + virtual void inheritAdditionalFacet(); + + virtual void checkAdditionalFacetConstraints(MemoryManager* const manager) const; + + virtual void checkAdditionalFacetConstraintsBase(MemoryManager* const manager) const; + + virtual int compareValues(const XMLNumber* const lValue + , const XMLNumber* const rValue); + + virtual void setMaxInclusive(const XMLCh* const); + + virtual void setMaxExclusive(const XMLCh* const); + + virtual void setMinInclusive(const XMLCh* const); + + virtual void setMinExclusive(const XMLCh* const); + + virtual void setEnumeration(MemoryManager* const manager); + +// ----------------------------------------------------------------------- +// Abstract interface from AbstractNumericValidator +// ----------------------------------------------------------------------- + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); +public: + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + + inline unsigned int getTotalDigits() const; + + inline unsigned int getFractionDigits() const; + +private: +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- + + inline void setTotalDigits(unsigned int); + + inline void setFractionDigits(unsigned int); + + // ----------------------------------------------------------------------- + // Private data members + // + // ----------------------------------------------------------------------- + unsigned int fTotalDigits; + unsigned int fFractionDigits; + + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DecimalDatatypeValidator(const DecimalDatatypeValidator&); + DecimalDatatypeValidator& operator=(const DecimalDatatypeValidator&); +}; + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + +inline unsigned int DecimalDatatypeValidator::getTotalDigits() const +{ + return fTotalDigits; +} + +inline unsigned int DecimalDatatypeValidator::getFractionDigits() const +{ + return fFractionDigits; +} + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- + +inline void DecimalDatatypeValidator::setTotalDigits(unsigned int newTotalDigits) +{ + fTotalDigits = newTotalDigits; +} + +inline void DecimalDatatypeValidator::setFractionDigits(unsigned int newFractionDigits) +{ + fFractionDigits = newFractionDigits; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DecimalDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DoubleDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DoubleDatatypeValidator.hpp new file mode 100644 index 000000000000..ef7e0002cd13 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DoubleDatatypeValidator.hpp @@ -0,0 +1,146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOUBLE_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DOUBLE_DATATYPEVALIDATOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT DoubleDatatypeValidator : public AbstractNumericValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + DoubleDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DoubleDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~DoubleDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + virtual int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DoubleDatatypeValidator) + +protected: + +// ----------------------------------------------------------------------- +// ctor provided to be used by derived classes +// ----------------------------------------------------------------------- + DoubleDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + +// ----------------------------------------------------------------------- +// Abstract interface from AbstractNumericFacetValidator +// ----------------------------------------------------------------------- + + virtual int compareValues(const XMLNumber* const lValue + , const XMLNumber* const rValue); + + virtual void setMaxInclusive(const XMLCh* const); + + virtual void setMaxExclusive(const XMLCh* const); + + virtual void setMinInclusive(const XMLCh* const); + + virtual void setMinExclusive(const XMLCh* const); + + virtual void setEnumeration(MemoryManager* const manager); + +// ----------------------------------------------------------------------- +// Abstract interface from AbstractNumericValidator +// ----------------------------------------------------------------------- + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DoubleDatatypeValidator(const DoubleDatatypeValidator &); + DoubleDatatypeValidator& operator = (const DoubleDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DoubleDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DurationDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DurationDatatypeValidator.hpp new file mode 100644 index 000000000000..4e2b1ca7148f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/DurationDatatypeValidator.hpp @@ -0,0 +1,98 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DURATION_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DURATION_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT DurationDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor. */ + //@{ + + DurationDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DurationDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~DurationDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DurationDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + virtual int compareDates(const XMLDateTime* const + , const XMLDateTime* const + , bool ); +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DurationDatatypeValidator(const DurationDatatypeValidator &); + DurationDatatypeValidator& operator = (const DurationDatatypeValidator&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DurationDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp new file mode 100644 index 000000000000..1ee29a85e36d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp @@ -0,0 +1,144 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ENTITY_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ENTITY_DATATYPEVALIDATOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT ENTITYDatatypeValidator : public StringDatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor. */ + //@{ + + ENTITYDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ENTITYDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~ENTITYDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + virtual int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(ENTITYDatatypeValidator) + +protected: + + // + // ctor provided to be used by derived classes + // + ENTITYDatatypeValidator(DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type); + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ENTITYDatatypeValidator(const ENTITYDatatypeValidator&); + ENTITYDatatypeValidator& operator = (const ENTITYDatatypeValidator&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ENTITYDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/FloatDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/FloatDatatypeValidator.hpp new file mode 100644 index 000000000000..c10a50f9e7b4 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/FloatDatatypeValidator.hpp @@ -0,0 +1,145 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_FLOAT_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_FLOAT_DATATYPEVALIDATOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT FloatDatatypeValidator : public AbstractNumericValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + FloatDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + FloatDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~FloatDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + virtual int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(FloatDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // ctor provided to be used by derived classes + // ----------------------------------------------------------------------- + FloatDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // ----------------------------------------------------------------------- + // Abstract interface from AbstractNumericFacetValidator + // ----------------------------------------------------------------------- + + virtual int compareValues(const XMLNumber* const lValue + , const XMLNumber* const rValue); + + virtual void setMaxInclusive(const XMLCh* const); + + virtual void setMaxExclusive(const XMLCh* const); + + virtual void setMinInclusive(const XMLCh* const); + + virtual void setMinExclusive(const XMLCh* const); + + virtual void setEnumeration(MemoryManager* const manager); + +// ----------------------------------------------------------------------- +// Abstract interface from AbstractNumericValidator +// ----------------------------------------------------------------------- + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + FloatDatatypeValidator(const FloatDatatypeValidator&); + FloatDatatypeValidator& operator = (const FloatDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file FloatDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp new file mode 100644 index 000000000000..b2815026d7ea --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_HEXBINARY_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_HEXBINARY_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT HexBinaryDatatypeValidator : public AbstractStringValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + HexBinaryDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + HexBinaryDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~HexBinaryDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(HexBinaryDatatypeValidator) + +protected: + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + + virtual XMLSize_t getLength(const XMLCh* const content + , MemoryManager* const manager) const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + HexBinaryDatatypeValidator(const HexBinaryDatatypeValidator&); + HexBinaryDatatypeValidator& operator=(const HexBinaryDatatypeValidator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // Nil. + // ----------------------------------------------------------------------- +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file HexBinaryDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/IDDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/IDDatatypeValidator.hpp new file mode 100644 index 000000000000..9011e6411c0a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/IDDatatypeValidator.hpp @@ -0,0 +1,132 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ID_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ID_DATATYPEVALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT IDDatatypeValidator : public StringDatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + IDDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + IDDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~IDDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IDDatatypeValidator) + +protected: + + // + // ctor provided to be used by derived classes + // + IDDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IDDatatypeValidator(const IDDatatypeValidator&); + IDDatatypeValidator& operator=(const IDDatatypeValidator&); + // ----------------------------------------------------------------------- + // Private data members + // + // + // ----------------------------------------------------------------------- +}; + +XERCES_CPP_NAMESPACE_END + +#endif +/** + * End of file IDDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/IDREFDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/IDREFDatatypeValidator.hpp new file mode 100644 index 000000000000..cb7c1aa9c443 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/IDREFDatatypeValidator.hpp @@ -0,0 +1,135 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IDREF_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_IDREF_DATATYPEVALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT IDREFDatatypeValidator : public StringDatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + IDREFDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + IDREFDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~IDREFDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IDREFDatatypeValidator) + +protected: + + // + // ctor provided to be used by derived classes + // + IDREFDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IDREFDatatypeValidator(const IDREFDatatypeValidator&); + IDREFDatatypeValidator& operator=(const IDREFDatatypeValidator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // + // ----------------------------------------------------------------------- + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IDREFDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/InvalidDatatypeFacetException.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/InvalidDatatypeFacetException.hpp new file mode 100644 index 000000000000..4670d807ac7c --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/InvalidDatatypeFacetException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_INVALIDDATATYPEFACETEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_INVALIDDATATYPEFACETEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(InvalidDatatypeFacetException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/InvalidDatatypeValueException.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/InvalidDatatypeValueException.hpp new file mode 100644 index 000000000000..368da890f303 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/InvalidDatatypeValueException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_INVALIDDATATYPEVALUEEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_INVALIDDATATYPEVALUEEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(InvalidDatatypeValueException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/ListDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/ListDatatypeValidator.hpp new file mode 100644 index 000000000000..9d696cc00140 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/ListDatatypeValidator.hpp @@ -0,0 +1,226 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_LIST_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_LIST_DATATYPEVALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT ListDatatypeValidator : public AbstractStringValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + ListDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ListDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~ListDatatypeValidator(); + + //@} + + /** @name Getter Functions */ + //@{ + /** + * Returns whether the type is atomic or not + */ + virtual bool isAtomic() const; + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + DatatypeValidator* getItemTypeDTV() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(ListDatatypeValidator) + +protected: + + // + // ctor provided to be used by derived classes: No + // + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + + virtual XMLSize_t getLength(const XMLCh* const content + , MemoryManager* const manager) const; + + // + // Overwrite AbstractStringValidator's + // + virtual void inspectFacetBase(MemoryManager* const manager); + + virtual void inheritFacet(); + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); + +private: + + void checkContent( BaseRefVectorOf* tokenVector + , const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager + ); + + bool valueSpaceCheck(BaseRefVectorOf* tokenVector + , const XMLCh* const enumStr + , MemoryManager* const manager) const; + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + + inline const XMLCh* getContent() const; + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- + + inline void setContent(const XMLCh* const content); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ListDatatypeValidator(const ListDatatypeValidator&); + ListDatatypeValidator& operator=(const ListDatatypeValidator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fContent + // temporary var referencing the content to be validated, + // for error reporting purpose. + // + // ----------------------------------------------------------------------- + const XMLCh* fContent; +}; + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- +inline const XMLCh* ListDatatypeValidator::getContent() const +{ + return fContent; +} + +inline bool ListDatatypeValidator::isAtomic() const +{ + return false; +} + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- +inline void ListDatatypeValidator::setContent(const XMLCh* const content) +{ + fContent = content; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ListDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/MonthDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/MonthDatatypeValidator.hpp new file mode 100644 index 000000000000..32d0ff530a01 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/MonthDatatypeValidator.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_MONTH_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_MONTH_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT MonthDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + MonthDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + MonthDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~MonthDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(MonthDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + MonthDatatypeValidator(const MonthDatatypeValidator&); + MonthDatatypeValidator& operator=(const MonthDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file MonthDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp new file mode 100644 index 000000000000..76a30a4b53f7 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_MONTHDAY_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_MONTHDAY_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT MonthDayDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + MonthDayDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + MonthDayDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~MonthDayDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(MonthDayDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + MonthDayDatatypeValidator(const MonthDayDatatypeValidator&); + MonthDayDatatypeValidator& operator=(const MonthDayDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file MonthDayDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/NCNameDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/NCNameDatatypeValidator.hpp new file mode 100644 index 000000000000..3b89cfc962d8 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/NCNameDatatypeValidator.hpp @@ -0,0 +1,152 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NCNAME_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_NCNAME_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT NCNameDatatypeValidator : public StringDatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + NCNameDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + NCNameDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~NCNameDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + virtual int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(NCNameDatatypeValidator) + +protected: + + // + // ctor provided to be used by derived classes + // + NCNameDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + NCNameDatatypeValidator(const NCNameDatatypeValidator&); + NCNameDatatypeValidator& operator=(const NCNameDatatypeValidator&); + // ----------------------------------------------------------------------- + // Private data members + // + // + // ----------------------------------------------------------------------- + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file NCNameDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp new file mode 100644 index 000000000000..9d0e7096b601 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NOTATION_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_NOTATION_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT NOTATIONDatatypeValidator : public AbstractStringValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + NOTATIONDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + NOTATIONDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~NOTATIONDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(NOTATIONDatatypeValidator) + +protected: + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + NOTATIONDatatypeValidator(const NOTATIONDatatypeValidator&); + NOTATIONDatatypeValidator& operator=(const NOTATIONDatatypeValidator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // Nil + // ----------------------------------------------------------------------- +}; + +XERCES_CPP_NAMESPACE_END + +#endif +/** + * End of file NOTATIONDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/NameDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/NameDatatypeValidator.hpp new file mode 100644 index 000000000000..b9d91c1cef91 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/NameDatatypeValidator.hpp @@ -0,0 +1,151 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NAME_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_NAME_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT NameDatatypeValidator : public StringDatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + NameDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + NameDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~NameDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + virtual int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(NameDatatypeValidator) + +protected: + + // + // ctor provided to be used by derived classes + // + NameDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + NameDatatypeValidator(const NameDatatypeValidator&); + NameDatatypeValidator& operator=(const NameDatatypeValidator&); + // ----------------------------------------------------------------------- + // Private data members + // + // + // ----------------------------------------------------------------------- + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file NameDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/QNameDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/QNameDatatypeValidator.hpp new file mode 100644 index 000000000000..830e2d9e97ce --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/QNameDatatypeValidator.hpp @@ -0,0 +1,106 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_QNAME_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_QNAME_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT QNameDatatypeValidator : public AbstractStringValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + QNameDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + QNameDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~QNameDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(QNameDatatypeValidator) + +protected: + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); + + virtual void inspectFacetBase(MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + QNameDatatypeValidator(const QNameDatatypeValidator&); + QNameDatatypeValidator& operator=(const QNameDatatypeValidator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // Nil + // ----------------------------------------------------------------------- + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file QNameDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/StringDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/StringDatatypeValidator.hpp new file mode 100644 index 000000000000..26feecce9e03 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/StringDatatypeValidator.hpp @@ -0,0 +1,114 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_STRING_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_STRING_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT StringDatatypeValidator : public AbstractStringValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + StringDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + StringDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~StringDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(StringDatatypeValidator) + +protected: + + // + // ctor provided to be used by derived classes + // + StringDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual void assignAdditionalFacet(const XMLCh* const key + , const XMLCh* const value + , MemoryManager* const manager); + + virtual void inheritAdditionalFacet(); + + virtual void checkAdditionalFacetConstraints(MemoryManager* const manager) const; + + virtual void checkAdditionalFacet(const XMLCh* const content + , MemoryManager* const manager) const; + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + StringDatatypeValidator(const StringDatatypeValidator&); + StringDatatypeValidator& operator=(const StringDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file StringDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/TimeDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/TimeDatatypeValidator.hpp new file mode 100644 index 000000000000..ab3df71ca0a8 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/TimeDatatypeValidator.hpp @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TIME_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_TIME_DATATYPE_VALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT TimeDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + TimeDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + TimeDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~TimeDatatypeValidator(); + + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(TimeDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + TimeDatatypeValidator(const TimeDatatypeValidator&); + TimeDatatypeValidator& operator=(const TimeDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file TimeDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/UnionDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/UnionDatatypeValidator.hpp new file mode 100644 index 000000000000..d7b847128a3d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/UnionDatatypeValidator.hpp @@ -0,0 +1,320 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_UNION_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_UNION_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT UnionDatatypeValidator : public DatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor. */ + //@{ + + UnionDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // + // constructor for native Union datatype validator + // + // + // + // + UnionDatatypeValidator + ( + RefVectorOf* const memberTypeValidators + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // + // constructor for derived Union datatype validator + // + // + // + // + // + // + // + UnionDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , RefVectorOf* const memberTypeValidators = 0 + , const bool memberTypesInherited = true + ); + + virtual ~UnionDatatypeValidator(); + + //@} + + virtual const RefArrayVectorOf* getEnumString() const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Getter Functions */ + //@{ + /** + * Returns whether the type is atomic or not + */ + virtual bool isAtomic() const; + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Checks whether a given type can be used as a substitute + * + * @param toCheck A datatype validator of the type to be used as a + * substitute + * + * To be redefined in UnionDatatypeValidator + */ + + virtual bool isSubstitutableBy(const DatatypeValidator* const toCheck); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(UnionDatatypeValidator) + + + RefVectorOf* getMemberTypeValidators() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + UnionDatatypeValidator(const UnionDatatypeValidator&); + UnionDatatypeValidator& operator=(const UnionDatatypeValidator&); + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); + + void init(DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , MemoryManager* const manager); + + void cleanUp(); + + RefArrayVectorOf* getEnumeration() const; + + void setEnumeration(RefArrayVectorOf*, bool); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fEnumeration + // we own it (or not, depending on state of fEnumerationInherited). + // + // fMemberTypeValidators + // we own it (or not, depending on the state of fMemberTypesInherited). + // + // ----------------------------------------------------------------------- + + bool fEnumerationInherited; + bool fMemberTypesInherited; + RefArrayVectorOf* fEnumeration; + RefVectorOf* fMemberTypeValidators; +}; + +inline DatatypeValidator* UnionDatatypeValidator::newInstance +( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager +) +{ + return (DatatypeValidator*) new (manager) UnionDatatypeValidator(this, facets, enums, finalSet, manager, fMemberTypeValidators, true); +} + +inline void UnionDatatypeValidator::validate( const XMLCh* const content + , ValidationContext* const context + , MemoryManager* const manager) +{ + checkContent(content, context, false, manager); +} + +inline void UnionDatatypeValidator::cleanUp() +{ + //~RefVectorOf will delete all adopted elements + if ( !fEnumerationInherited && fEnumeration) + delete fEnumeration; + + if (!fMemberTypesInherited && fMemberTypeValidators) + delete fMemberTypeValidators; + +} + +inline RefArrayVectorOf* UnionDatatypeValidator:: getEnumeration() const +{ + return fEnumeration; +} + +inline void UnionDatatypeValidator::setEnumeration(RefArrayVectorOf* enums + , bool inherited) +{ + if (enums) + { + if ( !fEnumerationInherited && fEnumeration) + delete fEnumeration; + + fEnumeration = enums; + fEnumerationInherited = inherited; + setFacetsDefined(DatatypeValidator::FACET_ENUMERATION); + } +} + +// +// get the native UnionDTV's fMemberTypeValidators +// +inline +RefVectorOf* UnionDatatypeValidator::getMemberTypeValidators() const +{ + return this->fMemberTypeValidators; +} + +inline bool UnionDatatypeValidator::isAtomic() const { + + + + if (!fMemberTypeValidators) { + return false; + } + + XMLSize_t memberSize = fMemberTypeValidators->size(); + + for (XMLSize_t i=0; i < memberSize; i++) { + if (!fMemberTypeValidators->elementAt(i)->isAtomic()) { + return false; + } + } + + return true; +} + +inline bool UnionDatatypeValidator::isSubstitutableBy(const DatatypeValidator* const toCheck) { + + if (toCheck == this) { + return true; + } + + if (fMemberTypeValidators) { + XMLSize_t memberSize = fMemberTypeValidators->size(); + + for (XMLSize_t i=0; i < memberSize; i++) { + if ((fMemberTypeValidators->elementAt(i)->getType() == DatatypeValidator::Union) && + (fMemberTypeValidators->elementAt(i) == toCheck)) + return false; + if (fMemberTypeValidators->elementAt(i)->isSubstitutableBy(toCheck)) { + return true; + } + } + } + return false; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file UnionDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/XMLCanRepGroup.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/XMLCanRepGroup.hpp new file mode 100644 index 000000000000..66c56bd9ed23 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/XMLCanRepGroup.hpp @@ -0,0 +1,75 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLCANREPGROUP_HPP) +#define XERCESC_INCLUDE_GUARD_XMLCANREPGROUP_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT XMLCanRepGroup : public XMemory +{ +public: + + enum CanRepGroup { + Boolean, + DoubleFloat, + DateTime, + Time, + Decimal, + Decimal_Derived_signed, + Decimal_Derived_unsigned, + Decimal_Derived_npi, + String + }; + + ~XMLCanRepGroup(); + + XMLCanRepGroup(CanRepGroup val); + + inline CanRepGroup getGroup() const; + +private: + + CanRepGroup fData; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLCanRepGroup(const XMLCanRepGroup&); + XMLCanRepGroup& operator=(const XMLCanRepGroup&); + +}; + +inline XMLCanRepGroup::CanRepGroup XMLCanRepGroup::getGroup() const +{ + return fData; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XMLCanRepGroup.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/YearDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/YearDatatypeValidator.hpp new file mode 100644 index 000000000000..fd5edce9df84 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/YearDatatypeValidator.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_YEAR_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_YEAR_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT YearDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + YearDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + YearDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~YearDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(YearDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + YearDatatypeValidator(const YearDatatypeValidator&); + YearDatatypeValidator& operator=(const YearDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file YearDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp new file mode 100644 index 000000000000..7479fdc36336 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_YEARMONTH_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_YEARMONTH_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT YearMonthDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + YearMonthDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + YearMonthDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~YearMonthDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(YearMonthDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + YearMonthDatatypeValidator(const YearMonthDatatypeValidator&); + YearMonthDatatypeValidator& operator=(const YearMonthDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file YearMonthDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/ComplexTypeInfo.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/ComplexTypeInfo.hpp new file mode 100644 index 000000000000..5cd78ed5abfe --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/ComplexTypeInfo.hpp @@ -0,0 +1,531 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_COMPLEXTYPEINFO_HPP) +#define XERCESC_INCLUDE_GUARD_COMPLEXTYPEINFO_HPP + + +/** + * The class act as a place holder to store complex type information. + * + * The class is intended for internal use. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- +class DatatypeValidator; +class ContentSpecNode; +class SchemaAttDefList; +class SchemaElementDecl; +class XSDLocator; + + +class VALIDATORS_EXPORT ComplexTypeInfo : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constructors/Destructor + // ----------------------------------------------------------------------- + ComplexTypeInfo(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ComplexTypeInfo(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getAbstract() const; + bool getAdoptContentSpec() const; + bool containsAttWithTypeId() const; + bool getPreprocessed() const; + int getDerivedBy() const; + int getBlockSet() const; + int getFinalSet() const; + unsigned int getScopeDefined() const; + unsigned int getElementId() const; + int getContentType() const; + XMLSize_t elementCount() const; + XMLCh* getTypeName() const; + DatatypeValidator* getBaseDatatypeValidator() const; + DatatypeValidator* getDatatypeValidator() const; + ComplexTypeInfo* getBaseComplexTypeInfo() const; + ContentSpecNode* getContentSpec() const; + const SchemaAttDef* getAttWildCard() const; + SchemaAttDef* getAttWildCard(); + const SchemaAttDef* getAttDef(const XMLCh* const baseName, + const int uriId) const; + SchemaAttDef* getAttDef(const XMLCh* const baseName, + const int uriId); + XMLAttDefList& getAttDefList() const; + const SchemaElementDecl* elementAt(const XMLSize_t index) const; + SchemaElementDecl* elementAt(const XMLSize_t index); + XMLContentModel* getContentModel(const bool checkUPA = false); + const XMLCh* getFormattedContentModel () const; + XSDLocator* getLocator() const; + const XMLCh* getTypeLocalName() const; + const XMLCh* getTypeUri() const; + + /** + * returns true if this type is anonymous + **/ + bool getAnonymous() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setAbstract(const bool isAbstract); + void setAdoptContentSpec(const bool toAdopt); + void setAttWithTypeId(const bool value); + void setPreprocessed(const bool aValue = true); + void setDerivedBy(const int derivedBy); + void setBlockSet(const int blockSet); + void setFinalSet(const int finalSet); + void setScopeDefined(const unsigned int scopeDefined); + void setElementId(const unsigned int elemId); + void setTypeName(const XMLCh* const typeName); + void setContentType(const int contentType); + void setBaseDatatypeValidator(DatatypeValidator* const baseValidator); + void setDatatypeValidator(DatatypeValidator* const validator); + void setBaseComplexTypeInfo(ComplexTypeInfo* const typeInfo); + void setContentSpec(ContentSpecNode* const toAdopt); + void setAttWildCard(SchemaAttDef* const toAdopt); + void addAttDef(SchemaAttDef* const toAdd); + void addElement(SchemaElementDecl* const toAdd); + void setLocator(XSDLocator* const aLocator); + + /** + * sets this type to be anonymous + **/ + void setAnonymous(); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + bool hasAttDefs() const; + bool contains(const XMLCh* const attName); + void checkUniqueParticleAttribution + ( + SchemaGrammar* const pGrammar + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLValidator* const pValidator + ) ; + + /** + * Return a singleton that represents 'anyType' + * + * @param emptyNSId the uri id of the empty namespace + */ + static ComplexTypeInfo* getAnyType(unsigned int emptyNSId); + + /** + * Notification that lazy data has been deleted + */ + static void reinitAnyType(); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(ComplexTypeInfo) + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ComplexTypeInfo(const ComplexTypeInfo& elemInfo); + ComplexTypeInfo& operator= (const ComplexTypeInfo& other); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void faultInAttDefList() const; + bool useRepeatingLeafNodes(ContentSpecNode* particle); + XMLContentModel* makeContentModel(bool checkUPA = false); + XMLCh* formatContentModel () const ; + ContentSpecNode* expandContentModel(ContentSpecNode* const curNode, int minOccurs, int maxOccurs, bool bAllowCompactSyntax); + ContentSpecNode* convertContentSpecTree(ContentSpecNode* const curNode, bool checkUPA, bool bAllowCompactSyntax); + void resizeContentSpecOrgURI(); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fAnonymous; + bool fAbstract; + bool fAdoptContentSpec; + bool fAttWithTypeId; + bool fPreprocessed; + int fDerivedBy; + int fBlockSet; + int fFinalSet; + unsigned int fScopeDefined; + int fContentType; + + unsigned int fElementId; + unsigned int fUniqueURI; + unsigned int fContentSpecOrgURISize; + + XMLCh* fTypeName; + XMLCh* fTypeLocalName; + XMLCh* fTypeUri; + DatatypeValidator* fBaseDatatypeValidator; + DatatypeValidator* fDatatypeValidator; + ComplexTypeInfo* fBaseComplexTypeInfo; + ContentSpecNode* fContentSpec; + SchemaAttDef* fAttWildCard; + SchemaAttDefList* fAttList; + RefVectorOf* fElements; + RefHash2KeysTableOf* fAttDefs; + XMLContentModel* fContentModel; + XMLCh* fFormattedModel; + unsigned int* fContentSpecOrgURI; + XSDLocator* fLocator; + MemoryManager* fMemoryManager; + + static ComplexTypeInfo* fAnyType; + + friend class XMLInitializer; +}; + +// --------------------------------------------------------------------------- +// ComplexTypeInfo: Getter methods +// --------------------------------------------------------------------------- +inline bool ComplexTypeInfo::getAbstract() const { + + return fAbstract; +} + +inline bool ComplexTypeInfo::getAdoptContentSpec() const { + + return fAdoptContentSpec; +} + +inline bool ComplexTypeInfo::containsAttWithTypeId() const { + + return fAttWithTypeId; +} + +inline bool ComplexTypeInfo::getPreprocessed() const { + + return fPreprocessed; +} + +inline int ComplexTypeInfo::getDerivedBy() const { + + return fDerivedBy; +} + +inline int ComplexTypeInfo::getBlockSet() const { + + return fBlockSet; +} + +inline int ComplexTypeInfo::getFinalSet() const { + + return fFinalSet; +} + +inline unsigned int ComplexTypeInfo::getScopeDefined() const { + + return fScopeDefined; +} + +inline unsigned int ComplexTypeInfo::getElementId() const { + + return fElementId; +} + +inline int ComplexTypeInfo::getContentType() const { + + return fContentType; +} + +inline XMLSize_t ComplexTypeInfo::elementCount() const { + + if (fElements) { + return fElements->size(); + } + + return 0; +} + +inline XMLCh* ComplexTypeInfo::getTypeName() const { + return fTypeName; +} + +inline DatatypeValidator* ComplexTypeInfo::getBaseDatatypeValidator() const { + + return fBaseDatatypeValidator; +} + +inline DatatypeValidator* ComplexTypeInfo::getDatatypeValidator() const { + + return fDatatypeValidator; +} + +inline ComplexTypeInfo* ComplexTypeInfo::getBaseComplexTypeInfo() const { + + return fBaseComplexTypeInfo; +} + +inline ContentSpecNode* ComplexTypeInfo::getContentSpec() const { + + return fContentSpec; +} + +inline const SchemaAttDef* ComplexTypeInfo::getAttWildCard() const { + + return fAttWildCard; +} + +inline SchemaAttDef* ComplexTypeInfo::getAttWildCard() { + + return fAttWildCard; +} + +inline const SchemaAttDef* ComplexTypeInfo::getAttDef(const XMLCh* const baseName, + const int uriId) const { + + return fAttDefs->get(baseName, uriId); +} + +inline SchemaAttDef* ComplexTypeInfo::getAttDef(const XMLCh* const baseName, + const int uriId) +{ + return fAttDefs->get(baseName, uriId); +} + +inline SchemaElementDecl* +ComplexTypeInfo::elementAt(const XMLSize_t index) { + + if (!fElements) { + return 0; // REVISIT - need to throw an exception + } + + return fElements->elementAt(index); +} + +inline const SchemaElementDecl* +ComplexTypeInfo::elementAt(const XMLSize_t index) const { + + if (!fElements) { + return 0; // REVISIT - need to throw an exception + } + + return fElements->elementAt(index); +} + +inline XMLContentModel* ComplexTypeInfo::getContentModel(const bool checkUPA) +{ + if (!fContentModel && fContentSpec) + fContentModel = makeContentModel(checkUPA); + + return fContentModel; +} + +inline XSDLocator* ComplexTypeInfo::getLocator() const +{ + return fLocator; +} + +inline bool ComplexTypeInfo::getAnonymous() const { + return fAnonymous; +} + +inline const XMLCh* ComplexTypeInfo::getTypeLocalName() const +{ + return fTypeLocalName; +} + +inline const XMLCh* ComplexTypeInfo::getTypeUri() const +{ + return fTypeUri; +} + +// --------------------------------------------------------------------------- +// ComplexTypeInfo: Setter methods +// --------------------------------------------------------------------------- +inline void ComplexTypeInfo::setAbstract(const bool isAbstract) { + + fAbstract = isAbstract; +} + +inline void ComplexTypeInfo::setAdoptContentSpec(const bool toAdopt) { + + fAdoptContentSpec = toAdopt; +} + +inline void ComplexTypeInfo::setAttWithTypeId(const bool value) { + + fAttWithTypeId = value; +} + +inline void ComplexTypeInfo::setPreprocessed(const bool aValue) { + + fPreprocessed = aValue; +} + +inline void ComplexTypeInfo::setDerivedBy(const int derivedBy) { + + fDerivedBy = derivedBy; +} + +inline void ComplexTypeInfo::setBlockSet(const int blockSet) { + + fBlockSet = blockSet; +} + +inline void ComplexTypeInfo::setFinalSet(const int finalSet) { + + fFinalSet = finalSet; +} + +inline void ComplexTypeInfo::setScopeDefined(const unsigned int scopeDefined) { + + fScopeDefined = scopeDefined; +} + +inline void ComplexTypeInfo::setElementId(const unsigned int elemId) { + + fElementId = elemId; +} + +inline void +ComplexTypeInfo::setContentType(const int contentType) { + + fContentType = contentType; +} + +inline void ComplexTypeInfo::setTypeName(const XMLCh* const typeName) { + + fMemoryManager->deallocate(fTypeName);//delete [] fTypeName; + fMemoryManager->deallocate(fTypeLocalName);//delete [] fTypeLocalName; + fMemoryManager->deallocate(fTypeUri);//delete [] fTypeUri; + + if (typeName) + { + fTypeName = XMLString::replicate(typeName, fMemoryManager); + + int index = XMLString::indexOf(fTypeName, chComma); + XMLSize_t length = XMLString::stringLen(fTypeName); + fTypeLocalName = (XMLCh*) fMemoryManager->allocate + ( + (length - index + 1) * sizeof(XMLCh) + ); //new XMLCh[length - index + 1]; + XMLString::subString(fTypeLocalName, fTypeName, index + 1, length, fMemoryManager); + + fTypeUri = (XMLCh*) fMemoryManager->allocate + ( + (index + 1) * sizeof(XMLCh) + ); //new XMLCh[index + 1]; + XMLString::subString(fTypeUri, fTypeName, 0, index, fMemoryManager); + } + else + { + fTypeName = fTypeLocalName = fTypeUri = 0; + } +} + +inline void +ComplexTypeInfo::setBaseDatatypeValidator(DatatypeValidator* const validator) { + + fBaseDatatypeValidator = validator; +} + +inline void +ComplexTypeInfo::setDatatypeValidator(DatatypeValidator* const validator) { + + fDatatypeValidator = validator; +} + +inline void +ComplexTypeInfo::setBaseComplexTypeInfo(ComplexTypeInfo* const typeInfo) { + + fBaseComplexTypeInfo = typeInfo; +} + +inline void ComplexTypeInfo::addElement(SchemaElementDecl* const elem) { + + if (!fElements) { + fElements = new (fMemoryManager) RefVectorOf(8, false, fMemoryManager); + } + else if (fElements->containsElement(elem)) { + return; + } + + fElements->addElement(elem); +} + +inline void ComplexTypeInfo::setAttWildCard(SchemaAttDef* const toAdopt) { + + if (fAttWildCard) { + delete fAttWildCard; + } + + fAttWildCard = toAdopt; +} + +inline void ComplexTypeInfo::setAnonymous() { + fAnonymous = true; +} + +// --------------------------------------------------------------------------- +// ComplexTypeInfo: Helper methods +// --------------------------------------------------------------------------- +inline bool ComplexTypeInfo::hasAttDefs() const +{ + return !fAttDefs->isEmpty(); +} + +inline bool ComplexTypeInfo::contains(const XMLCh* const attName) { + + RefHash2KeysTableOfEnumerator enumDefs(fAttDefs, false, fMemoryManager); + + while (enumDefs.hasMoreElements()) { + + if (XMLString::equals(attName, enumDefs.nextElement().getAttName()->getLocalPart())) { + return true; + } + } + + return false; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ComplexTypeInfo.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/GeneralAttributeCheck.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/GeneralAttributeCheck.hpp new file mode 100644 index 000000000000..b98b64a101b1 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/GeneralAttributeCheck.hpp @@ -0,0 +1,258 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_GENERALATTRIBUTECHECK_HPP) +#define XERCESC_INCLUDE_GUARD_GENERALATTRIBUTECHECK_HPP + +/** + * A general purpose class to check for valid values of attributes, as well + * as check for proper association with corresponding schema elements. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward declaration +// --------------------------------------------------------------------------- +class TraverseSchema; +class DOMElement; +class DOMNode; + +class VALIDATORS_EXPORT GeneralAttributeCheck : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constants + // ----------------------------------------------------------------------- + //Elements + enum + { + E_All, + E_Annotation, + E_Any, + E_AnyAttribute, + E_Appinfo, + E_AttributeGlobal, + E_AttributeLocal, + E_AttributeRef, + E_AttributeGroupGlobal, + E_AttributeGroupRef, + E_Choice, + E_ComplexContent, + E_ComplexTypeGlobal, + E_ComplexTypeLocal, + E_Documentation, + E_ElementGlobal, + E_ElementLocal, + E_ElementRef, + E_Enumeration, + E_Extension, + E_Field, + E_FractionDigits, + E_GroupGlobal, + E_GroupRef, + E_Import, + E_Include, + E_Key, + E_KeyRef, + E_Length, + E_List, + E_MaxExclusive, + E_MaxInclusive, + E_MaxLength, + E_MinExclusive, + E_MinInclusive, + E_MinLength, + E_Notation, + E_Pattern, + E_Redefine, + E_Restriction, + E_Schema, + E_Selector, + E_Sequence, + E_SimpleContent, + E_SimpleTypeGlobal, + E_SimpleTypeLocal, + E_TotalDigits, + E_Union, + E_Unique, + E_WhiteSpace, + + E_Count, + E_Invalid = -1 + }; + + //Attributes + enum + { + A_Abstract, + A_AttributeFormDefault, + A_Base, + A_Block, + A_BlockDefault, + A_Default, + A_ElementFormDefault, + A_Final, + A_FinalDefault, + A_Fixed, + A_Form, + A_ID, + A_ItemType, + A_MaxOccurs, + A_MemberTypes, + A_MinOccurs, + A_Mixed, + A_Name, + A_Namespace, + A_Nillable, + A_ProcessContents, + A_Public, + A_Ref, + A_Refer, + A_SchemaLocation, + A_Source, + A_SubstitutionGroup, + A_System, + A_TargetNamespace, + A_Type, + A_Use, + A_Value, + A_Version, + A_XPath, + + A_Count, + A_Invalid = -1 + }; + + //Validators + enum { + + DV_String = 0, + DV_AnyURI = 4, + DV_NonNegInt = 8, + DV_Boolean = 16, + DV_ID = 32, + DV_Form = 64, + DV_MaxOccurs = 128, + DV_MaxOccurs1 = 256, + DV_MinOccurs1 = 512, + DV_ProcessContents = 1024, + DV_Use = 2048, + DV_WhiteSpace = 4096, + + DV_Mask = (DV_AnyURI | DV_NonNegInt | DV_Boolean | DV_ID | DV_Form | + DV_MaxOccurs | DV_MaxOccurs1 | DV_MinOccurs1 | + DV_ProcessContents | DV_Use | DV_WhiteSpace) + }; + + // generate element-attributes map table +#if defined(NEED_TO_GEN_ELEM_ATT_MAP_TABLE) + static void initCharFlagTable(); +#endif + + // ----------------------------------------------------------------------- + // Constructor/Destructor + // ----------------------------------------------------------------------- + GeneralAttributeCheck(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~GeneralAttributeCheck(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + unsigned short getFacetId(const XMLCh* const facetName, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + void checkAttributes(const DOMElement* const elem, + const unsigned short elemContext, + TraverseSchema* const schema, + const bool isTopLevel = false, + ValueVectorOf* const nonXSAttList = 0); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + GeneralAttributeCheck(const GeneralAttributeCheck&); + GeneralAttributeCheck& operator=(const GeneralAttributeCheck&); + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + void validate(const DOMElement* const elem, const XMLCh* const attName, const XMLCh* const attValue, + const short dvIndex, TraverseSchema* const schema); + + // ----------------------------------------------------------------------- + // Private Constants + // ----------------------------------------------------------------------- + // optional vs. required attribute + enum { + Att_Required = 1, + Att_Optional = 2, + Att_Mask = 3 + }; + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + static ValueHashTableOf* fAttMap; + static ValueHashTableOf* fFacetsMap; + static DatatypeValidator* fNonNegIntDV; + static DatatypeValidator* fBooleanDV; + static DatatypeValidator* fAnyURIDV; + static unsigned short fgElemAttTable[E_Count][A_Count]; + static const XMLCh* fAttNames[A_Count]; + MemoryManager* fMemoryManager; + IDDatatypeValidator fIDValidator; + +private: + static void initialize(); + + friend class XMLInitializer; +}; + + +// --------------------------------------------------------------------------- +// GeneralAttributeCheck: Getter methods +// --------------------------------------------------------------------------- +inline unsigned short +GeneralAttributeCheck::getFacetId(const XMLCh* const facetName, MemoryManager* const manager) { + + return fFacetsMap->get(facetName, manager); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file GeneralAttributeCheck.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/NamespaceScope.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/NamespaceScope.hpp new file mode 100644 index 000000000000..beb6d7a01870 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/NamespaceScope.hpp @@ -0,0 +1,169 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NAMESPACESCOPE_HPP) +#define XERCESC_INCLUDE_GUARD_NAMESPACESCOPE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Define a pure interface to allow XercesXPath to work on both NamespaceScope and DOMXPathNSResolver +class VALIDATORS_EXPORT XercesNamespaceResolver +{ +public: + virtual unsigned int getNamespaceForPrefix(const XMLCh* const prefix) const = 0; +}; + +// +// NamespaceScope provides a data structure for mapping namespace prefixes +// to their URI's. The mapping accurately reflects the scoping of namespaces +// at a particular instant in time. +// + +class VALIDATORS_EXPORT NamespaceScope : public XMemory, + public XercesNamespaceResolver +{ +public : + // ----------------------------------------------------------------------- + // Class specific data types + // + // These really should be private, but some of the compilers we have to + // support are too dumb to deal with that. + // + // PrefMapElem + // fURIId is the id of the URI from the validator's URI map. The + // fPrefId is the id of the prefix from our own prefix pool. The + // namespace stack consists of these elements. + // + // StackElem + // The fMapCapacity is how large fMap has grown so far. fMapCount + // is how many of them are valid right now. + // ----------------------------------------------------------------------- + struct PrefMapElem : public XMemory + { + unsigned int fPrefId; + unsigned int fURIId; + }; + + struct StackElem : public XMemory + { + PrefMapElem* fMap; + unsigned int fMapCapacity; + unsigned int fMapCount; + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + NamespaceScope(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + NamespaceScope(const NamespaceScope* const initialize, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~NamespaceScope(); + + + // ----------------------------------------------------------------------- + // Stack access + // ----------------------------------------------------------------------- + unsigned int increaseDepth(); + unsigned int decreaseDepth(); + + // ----------------------------------------------------------------------- + // Prefix map methods + // ----------------------------------------------------------------------- + void addPrefix(const XMLCh* const prefixToAdd, + const unsigned int uriId); + + virtual unsigned int getNamespaceForPrefix(const XMLCh* const prefixToMap) const; + + + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + bool isEmpty() const; + void reset(const unsigned int emptyId); + unsigned int getEmptyNamespaceId() const; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + NamespaceScope(const NamespaceScope&); + NamespaceScope& operator=(const NamespaceScope&); + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void expandMap(StackElem* const toExpand); + void expandStack(); + + + // ----------------------------------------------------------------------- + // Data members + // + // fEmptyNamespaceId + // This is the special URI id for the "" namespace, which is magic + // because of the xmlns="" operation. + // + // fPrefixPool + // This is the prefix pool where prefixes are hashed and given unique + // ids. These ids are used to track prefixes in the element stack. + // + // fStack + // fStackCapacity + // fStackTop + // This the stack array. Its an array of pointers to StackElem + // structures. The capacity is the current high water mark of the + // stack. The top is the current top of stack (i.e. the part of it + // being used.) + // ----------------------------------------------------------------------- + unsigned int fEmptyNamespaceId; + unsigned int fStackCapacity; + unsigned int fStackTop; + XMLStringPool fPrefixPool; + StackElem** fStack; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// NamespaceScope: Miscellaneous methods +// --------------------------------------------------------------------------- +inline bool NamespaceScope::isEmpty() const +{ + return (fStackTop == 0); +} + +inline unsigned int NamespaceScope::getEmptyNamespaceId() const +{ + return fEmptyNamespaceId; +} + + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file NameSpaceScope.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/PSVIDefs.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/PSVIDefs.hpp new file mode 100644 index 000000000000..4a66f8c1dc0f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/PSVIDefs.hpp @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PSVIDEFS_HPP) +#define XERCESC_INCLUDE_GUARD_PSVIDEFS_HPP + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT PSVIDefs +{ +public: + enum PSVIScope + { + SCP_ABSENT // declared in group/attribute group + , SCP_GLOBAL // global declaration or ref + , SCP_LOCAL // local declaration + }; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaAttDef.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaAttDef.hpp new file mode 100644 index 000000000000..af2071b50c99 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaAttDef.hpp @@ -0,0 +1,252 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SCHEMAATTDEF_HPP) +#define XERCESC_INCLUDE_GUARD_SCHEMAATTDEF_HPP + +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DatatypeValidator; +class QName; +class ComplexTypeInfo; +// +// This class is a derivative of the core XMLAttDef class. This class adds +// any Schema specific data members and provides Schema specific implementations +// of any underlying attribute def virtual methods. +// +class VALIDATORS_EXPORT SchemaAttDef : public XMLAttDef +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructors + // ----------------------------------------------------------------------- + SchemaAttDef(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + SchemaAttDef + ( + const XMLCh* const prefix + , const XMLCh* const localPart + , const int uriId + , const XMLAttDef::AttTypes type = CData + , const XMLAttDef::DefAttTypes defType = Implied + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + SchemaAttDef + ( + const XMLCh* const prefix + , const XMLCh* const localPart + , const int uriId + , const XMLCh* const attValue + , const XMLAttDef::AttTypes type + , const XMLAttDef::DefAttTypes defType + , const XMLCh* const enumValues = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + SchemaAttDef + ( + const SchemaAttDef* other + ); + virtual ~SchemaAttDef(); + + // ----------------------------------------------------------------------- + // Implementation of the XMLAttDef interface + // ----------------------------------------------------------------------- + virtual const XMLCh* getFullName() const; + virtual void reset(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t getElemId() const; + QName* getAttName() const; + DatatypeValidator* getDatatypeValidator() const; + ValueVectorOf* getNamespaceList() const; + const SchemaAttDef* getBaseAttDecl() const; + SchemaAttDef* getBaseAttDecl(); + PSVIDefs::PSVIScope getPSVIScope() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setElemId(const XMLSize_t newId); + void setAttName + ( + const XMLCh* const prefix + ,const XMLCh* const localPart + ,const int uriId = -1 + ); + void setDatatypeValidator(DatatypeValidator* newDatatypeValidator); + void setBaseAttDecl(SchemaAttDef* const attDef); + void setPSVIScope(const PSVIDefs::PSVIScope toSet); + + void setNamespaceList(const ValueVectorOf* const toSet); + void resetNamespaceList(); + void setEnclosingCT(ComplexTypeInfo* complexTypeInfo); + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(SchemaAttDef) + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SchemaAttDef(const SchemaAttDef&); + SchemaAttDef& operator=(const SchemaAttDef&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fElemId + // This is the id of the element (the id is into the element decl + // pool) of the element this attribute def said it belonged to. + // This is used later to link back to the element, mostly for + // validation purposes. + // + // fAttName + // This is the name of the attribute. + // + // fDatatypeValidator + // The DatatypeValidator used to validate this attribute type. + // + // fNamespaceList + // The list of namespace values for a wildcard attribute + // + // fBaseAttDecl + // The base attribute declaration that this attribute is based on + // NOTE: we do not have a notion of attribute use, so in the case + // of ref'd attributes and inherited attributes, we make a copy + // of the actual attribute declaration. The fBaseAttDecl stores that + // declaration, and will be helpful when we build the XSModel (i.e + // easy access the XSAnnotation object). + // ----------------------------------------------------------------------- + XMLSize_t fElemId; + + PSVIDefs::PSVIScope fPSVIScope; + + QName* fAttName; + DatatypeValidator* fDatatypeValidator; + ValueVectorOf* fNamespaceList; + SchemaAttDef* fBaseAttDecl; +}; + + +// --------------------------------------------------------------------------- +// SchemaAttDef: Getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t SchemaAttDef::getElemId() const +{ + return fElemId; +} + + +inline QName* SchemaAttDef::getAttName() const +{ + return fAttName; +} + +inline DatatypeValidator* SchemaAttDef::getDatatypeValidator() const +{ + return fDatatypeValidator; +} + +inline ValueVectorOf* +SchemaAttDef::getNamespaceList() const { + return fNamespaceList; +} + +inline SchemaAttDef* SchemaAttDef::getBaseAttDecl() +{ + return fBaseAttDecl; +} + +inline const SchemaAttDef* SchemaAttDef::getBaseAttDecl() const +{ + return fBaseAttDecl; +} + +inline PSVIDefs::PSVIScope SchemaAttDef::getPSVIScope() const +{ + return fPSVIScope; +} + +// --------------------------------------------------------------------------- +// SchemaAttDef: Setter methods +// --------------------------------------------------------------------------- +inline void SchemaAttDef::setElemId(const XMLSize_t newId) +{ + fElemId = newId; +} + +inline void SchemaAttDef::setDatatypeValidator(DatatypeValidator* newDatatypeValidator) +{ + fDatatypeValidator = newDatatypeValidator; +} + +inline void SchemaAttDef::resetNamespaceList() { + + if (fNamespaceList && fNamespaceList->size()) { + fNamespaceList->removeAllElements(); + } +} + +inline void SchemaAttDef::setNamespaceList(const ValueVectorOf* const toSet) { + + if (toSet && toSet->size()) { + + if (fNamespaceList) { + *fNamespaceList = *toSet; + } + else { + fNamespaceList = new (getMemoryManager()) ValueVectorOf(*toSet); + } + } + else { + resetNamespaceList(); + } +} + +inline void SchemaAttDef::reset() { +} + +inline void SchemaAttDef::setEnclosingCT(ComplexTypeInfo*) +{ +} + +inline void SchemaAttDef::setBaseAttDecl(SchemaAttDef* const attDef) +{ + fBaseAttDecl = attDef; +} + +inline void SchemaAttDef::setPSVIScope(const PSVIDefs::PSVIScope toSet) +{ + fPSVIScope = toSet; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaAttDefList.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaAttDefList.hpp new file mode 100644 index 000000000000..9159a25b7c83 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaAttDefList.hpp @@ -0,0 +1,181 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SCHEMAATTDEFLIST_HPP) +#define XERCESC_INCLUDE_GUARD_SCHEMAATTDEFLIST_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This is a derivative of the framework abstract class which defines the +// interface to a list of attribute defs that belong to a particular +// element. The scanner needs to be able to get a list of the attributes +// that an element supports, for use during the validation process and for +// fixed/default attribute processing. +// +// For us, we just wrap the RefHash2KeysTableOf collection that the SchemaElementDecl +// class uses to store the attributes that belong to it. +// +// This class does not adopt the hash table, it just references it. The +// hash table is owned by the element decl it is a member of. +// +class VALIDATORS_EXPORT SchemaAttDefList : public XMLAttDefList +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + SchemaAttDefList + ( + RefHash2KeysTableOf* const listToUse, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~SchemaAttDefList(); + + + // ----------------------------------------------------------------------- + // Implementation of the virtual interface + // ----------------------------------------------------------------------- + + virtual bool isEmpty() const; + virtual XMLAttDef* findAttDef + ( + const unsigned int uriID + , const XMLCh* const attName + ); + virtual const XMLAttDef* findAttDef + ( + const unsigned int uriID + , const XMLCh* const attName + ) const; + virtual XMLAttDef* findAttDef + ( + const XMLCh* const attURI + , const XMLCh* const attName + ); + virtual const XMLAttDef* findAttDef + ( + const XMLCh* const attURI + , const XMLCh* const attName + ) const; + + XMLAttDef* findAttDefLocalPart + ( + const unsigned int uriID + , const XMLCh* const attLocalPart + ); + + const XMLAttDef* findAttDefLocalPart + ( + const unsigned int uriID + , const XMLCh* const attLocalPart + ) const; + + /** + * return total number of attributes in this list + */ + virtual XMLSize_t getAttDefCount() const ; + + /** + * return attribute at the index-th position in the list. + */ + virtual XMLAttDef &getAttDef(XMLSize_t index) ; + + /** + * return attribute at the index-th position in the list. + */ + virtual const XMLAttDef &getAttDef(XMLSize_t index) const ; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(SchemaAttDefList) + + SchemaAttDefList(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SchemaAttDefList(const SchemaAttDefList&); + SchemaAttDefList& operator=(const SchemaAttDefList&); + + void addAttDef(SchemaAttDef *toAdd); + + // ----------------------------------------------------------------------- + // Private data members + // + // fEnum + // This is an enumerator for the list that we use to do the enumerator + // type methods of this class. + // + // fList + // The list of SchemaAttDef objects that represent the attributes that + // a particular element supports. + // fArray + // vector of pointers to the DTDAttDef objects contained in this list + // fSize + // size of fArray + // fCount + // number of DTDAttDef objects currently stored in this list + // ----------------------------------------------------------------------- + RefHash2KeysTableOfEnumerator* fEnum; + RefHash2KeysTableOf* fList; + SchemaAttDef** fArray; + XMLSize_t fSize; + XMLSize_t fCount; + + friend class ComplexTypeInfo; +}; + +inline void SchemaAttDefList::addAttDef(SchemaAttDef *toAdd) +{ + if(fCount == fSize) + { + // need to grow fArray + fSize <<= 1; + SchemaAttDef** newArray = (SchemaAttDef **)((getMemoryManager())->allocate( sizeof(SchemaAttDef*) * fSize )); + memcpy(newArray, fArray, fCount * sizeof(SchemaAttDef *)); + (getMemoryManager())->deallocate(fArray); + fArray = newArray; + } + fArray[fCount++] = toAdd; +} + +inline XMLAttDef* SchemaAttDefList::findAttDefLocalPart(const unsigned int uriID + , const XMLCh* const attLocalPart) +{ + return fList->get((void*)attLocalPart, uriID); +} + +inline const XMLAttDef* SchemaAttDefList::findAttDefLocalPart(const unsigned int uriID + , const XMLCh* const attLocalPart) const +{ + return fList->get((void*)attLocalPart, uriID); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaElementDecl.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaElementDecl.hpp new file mode 100644 index 000000000000..f746cf65f253 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaElementDecl.hpp @@ -0,0 +1,438 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SCHEMAELEMENTDECL_HPP) +#define XERCESC_INCLUDE_GUARD_SCHEMAELEMENTDECL_HPP + +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentSpecNode; +class SchemaAttDefList; + +// +// This class is a derivative of the basic element decl. This one implements +// the virtuals so that they work for a Schema. +// +class VALIDATORS_EXPORT SchemaElementDecl : public XMLElementDecl +{ +public : + + // ----------------------------------------------------------------------- + // Class specific types + // + // ModelTypes + // Indicates the type of content model that an element has. This + // indicates how the content model is represented and validated. + // ----------------------------------------------------------------------- + enum ModelTypes + { + Empty + , Any + , Mixed_Simple + , Mixed_Complex + , Children + , Simple + , ElementOnlyEmpty + , ModelTypes_Count + }; + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + SchemaElementDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + SchemaElementDecl + ( + const XMLCh* const prefix + , const XMLCh* const localPart + , const int uriId + , const ModelTypes modelType = Any + , const unsigned int enclosingScope = Grammar::TOP_LEVEL_SCOPE + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + SchemaElementDecl + ( + const QName* const elementName + , const ModelTypes modelType = Any + , const unsigned int enclosingScope = Grammar::TOP_LEVEL_SCOPE + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~SchemaElementDecl(); + + + // ----------------------------------------------------------------------- + // The virtual element decl interface + // ----------------------------------------------------------------------- + virtual XMLAttDefList& getAttDefList() const; + virtual CharDataOpts getCharDataOpts() const; + virtual bool hasAttDefs() const; + virtual const ContentSpecNode* getContentSpec() const; + virtual ContentSpecNode* getContentSpec(); + virtual void setContentSpec(ContentSpecNode* toAdopt); + virtual XMLContentModel* getContentModel(); + virtual void setContentModel(XMLContentModel* const newModelToAdopt); + virtual const XMLCh* getFormattedContentModel () const; + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const SchemaAttDef* getAttDef(const XMLCh* const baseName, const int uriId) const; + SchemaAttDef* getAttDef(const XMLCh* const baseName, const int uriId); + const SchemaAttDef* getAttWildCard() const; + SchemaAttDef* getAttWildCard(); + ModelTypes getModelType() const; + PSVIDefs::PSVIScope getPSVIScope() const; + DatatypeValidator* getDatatypeValidator() const; + unsigned int getEnclosingScope() const; + int getFinalSet() const; + int getBlockSet() const; + int getMiscFlags() const; + XMLCh* getDefaultValue() const; + ComplexTypeInfo* getComplexTypeInfo() const; + virtual bool isGlobalDecl() const; + SchemaElementDecl* getSubstitutionGroupElem() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setModelType(const SchemaElementDecl::ModelTypes toSet); + void setPSVIScope(const PSVIDefs::PSVIScope toSet); + void setDatatypeValidator(DatatypeValidator* newDatatypeValidator); + void setEnclosingScope(const unsigned int enclosingScope); + void setFinalSet(const int finalSet); + void setBlockSet(const int blockSet); + void setMiscFlags(const int flags); + void setDefaultValue(const XMLCh* const value); + void setComplexTypeInfo(ComplexTypeInfo* const typeInfo); + void setAttWildCard(SchemaAttDef* const attWildCard); + void setSubstitutionGroupElem(SchemaElementDecl* const elemDecl); + + // ----------------------------------------------------------------------- + // IC methods + // ----------------------------------------------------------------------- + void addIdentityConstraint(IdentityConstraint* const ic); + XMLSize_t getIdentityConstraintCount() const; + IdentityConstraint* getIdentityConstraintAt(XMLSize_t index) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(SchemaElementDecl) + + virtual XMLElementDecl::objectType getObjectType() const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SchemaElementDecl(const SchemaElementDecl&); + SchemaElementDecl& operator=(const SchemaElementDecl&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fModelType + // The content model type of this element. This tells us what kind + // of content model to create. + // + // fDatatypeValidator + // The DatatypeValidator used to validate this element type. + // + // fEnclosingScope + // The enclosing scope where this element is declared. + // + // fFinalSet + // The value set of the 'final' attribute. + // + // fBlockSet + // The value set of the 'block' attribute. + // + // fMiscFlags + // Stores 'abstract/nullable' values + // + // fDefaultValue + // The default/fixed value + // + // fComplexTypeInfo + // Stores complex type information + // (no need to delete - handled by schema grammar) + // + // fAttDefs + // The list of attributes that are faulted in for this element + // when ComplexTypeInfo does not exist. We want to keep track + // of these faulted in attributes to avoid duplicate redundant + // error. + // + // fIdentityConstraints + // Store information about an element identity constraints. + // + // fAttWildCard + // Store wildcard attribute in the case of an element with a type of + // 'anyType'. + // + // fSubstitutionGroupElem + // The substitution group element declaration. + // ----------------------------------------------------------------------- + + // ----------------------------------------------------------------------- + ModelTypes fModelType; + PSVIDefs::PSVIScope fPSVIScope; + + unsigned int fEnclosingScope; + int fFinalSet; + int fBlockSet; + int fMiscFlags; + XMLCh* fDefaultValue; + ComplexTypeInfo* fComplexTypeInfo; + RefHash2KeysTableOf* fAttDefs; + RefVectorOf* fIdentityConstraints; + SchemaAttDef* fAttWildCard; + SchemaElementDecl* fSubstitutionGroupElem; + DatatypeValidator* fDatatypeValidator; +}; + +// --------------------------------------------------------------------------- +// SchemaElementDecl: XMLElementDecl virtual interface implementation +// --------------------------------------------------------------------------- +inline ContentSpecNode* SchemaElementDecl::getContentSpec() +{ + if (fComplexTypeInfo != 0) { + return fComplexTypeInfo->getContentSpec(); + } + + return 0; +} + +inline const ContentSpecNode* SchemaElementDecl::getContentSpec() const +{ + if (fComplexTypeInfo != 0) { + return fComplexTypeInfo->getContentSpec(); + } + + return 0; +} + +inline void +SchemaElementDecl::setContentSpec(ContentSpecNode*) +{ + //Handled by complexType +} + +inline XMLContentModel* SchemaElementDecl::getContentModel() +{ + if (fComplexTypeInfo != 0) { + return fComplexTypeInfo->getContentModel(); + } + return 0; +} + +inline void +SchemaElementDecl::setContentModel(XMLContentModel* const) +{ + //Handled by complexType +} + + +// --------------------------------------------------------------------------- +// SchemaElementDecl: Getter methods +// --------------------------------------------------------------------------- +inline SchemaElementDecl::ModelTypes SchemaElementDecl::getModelType() const +{ + if (fComplexTypeInfo) { + return (SchemaElementDecl::ModelTypes) fComplexTypeInfo->getContentType(); + } + + return fModelType; +} + +inline PSVIDefs::PSVIScope SchemaElementDecl::getPSVIScope() const +{ + return fPSVIScope; +} + +inline DatatypeValidator* SchemaElementDecl::getDatatypeValidator() const +{ + return fDatatypeValidator; +} + +inline unsigned int SchemaElementDecl::getEnclosingScope() const +{ + return fEnclosingScope; +} + +inline int SchemaElementDecl::getFinalSet() const +{ + return fFinalSet; +} + +inline int SchemaElementDecl::getBlockSet() const +{ + return fBlockSet; +} + +inline int SchemaElementDecl::getMiscFlags() const +{ + return fMiscFlags; +} + +inline XMLCh* SchemaElementDecl::getDefaultValue() const +{ + return fDefaultValue; +} + +inline ComplexTypeInfo* SchemaElementDecl::getComplexTypeInfo() const +{ + return fComplexTypeInfo; +} + +inline const SchemaAttDef* SchemaElementDecl::getAttWildCard() const { + return fAttWildCard; +} + +inline SchemaAttDef* SchemaElementDecl::getAttWildCard() { + return fAttWildCard; +} + +inline bool SchemaElementDecl::isGlobalDecl() const { + + return (fEnclosingScope == Grammar::TOP_LEVEL_SCOPE); +} + +inline SchemaElementDecl* +SchemaElementDecl::getSubstitutionGroupElem() const { + + return fSubstitutionGroupElem; +} + +// --------------------------------------------------------------------------- +// SchemaElementDecl: Setter methods +// --------------------------------------------------------------------------- +inline void +SchemaElementDecl::setModelType(const SchemaElementDecl::ModelTypes toSet) +{ + fModelType = toSet; +} + +inline void +SchemaElementDecl::setPSVIScope(const PSVIDefs::PSVIScope toSet) +{ + fPSVIScope = toSet; +} + +inline void SchemaElementDecl::setDatatypeValidator(DatatypeValidator* newDatatypeValidator) +{ + fDatatypeValidator = newDatatypeValidator; +} + +inline void SchemaElementDecl::setEnclosingScope(const unsigned int newEnclosingScope) +{ + fEnclosingScope = newEnclosingScope; +} + +inline void SchemaElementDecl::setFinalSet(const int finalSet) +{ + fFinalSet = finalSet; +} + +inline void SchemaElementDecl::setBlockSet(const int blockSet) +{ + fBlockSet = blockSet; +} + +inline void SchemaElementDecl::setMiscFlags(const int flags) +{ + fMiscFlags = flags; +} + +inline void SchemaElementDecl::setDefaultValue(const XMLCh* const value) +{ + if (fDefaultValue) { + getMemoryManager()->deallocate(fDefaultValue);//delete[] fDefaultValue; + } + + fDefaultValue = XMLString::replicate(value, getMemoryManager()); +} + +inline void +SchemaElementDecl::setComplexTypeInfo(ComplexTypeInfo* const typeInfo) +{ + fComplexTypeInfo = typeInfo; +} + +inline void +SchemaElementDecl::setAttWildCard(SchemaAttDef* const attWildCard) { + + if (fAttWildCard) + delete fAttWildCard; + + fAttWildCard = attWildCard; +} + +inline void +SchemaElementDecl::setSubstitutionGroupElem(SchemaElementDecl* const elemDecl) { + + fSubstitutionGroupElem = elemDecl; +} + +// --------------------------------------------------------------------------- +// SchemaElementDecl: IC methods +// --------------------------------------------------------------------------- +inline void +SchemaElementDecl::addIdentityConstraint(IdentityConstraint* const ic) { + + if (!fIdentityConstraints) { + fIdentityConstraints = new (getMemoryManager()) RefVectorOf(16, true, getMemoryManager()); + } + + fIdentityConstraints->addElement(ic); +} + +inline XMLSize_t SchemaElementDecl::getIdentityConstraintCount() const { + + if (fIdentityConstraints) { + return fIdentityConstraints->size(); + } + + return 0; +} + +inline IdentityConstraint* +SchemaElementDecl::getIdentityConstraintAt(XMLSize_t index) const { + + if (fIdentityConstraints) { + return fIdentityConstraints->elementAt(index); + } + + return 0; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaGrammar.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaGrammar.hpp new file mode 100644 index 000000000000..d2549e3e70e2 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaGrammar.hpp @@ -0,0 +1,626 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SCHEMAGRAMMAR_HPP) +#define XERCESC_INCLUDE_GUARD_SCHEMAGRAMMAR_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class stores the Schema information +// NOTE: Schemas are not namespace aware, so we just use regular NameIdPool +// data structures to store element and attribute decls. They are all set +// to be in the global namespace and the full QName is used as the base name +// of the decl. This means that all the URI parameters below are expected +// to be null pointers (and anything else will cause an exception.) +// + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- +class ComplexTypeInfo; +class XercesGroupInfo; +class XercesAttGroupInfo; +class XSAnnotation; + +// --------------------------------------------------------------------------- +// typedef declaration +// --------------------------------------------------------------------------- +typedef ValueVectorOf ElemVector; + + +class VALIDATORS_EXPORT SchemaGrammar : public Grammar +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + SchemaGrammar(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~SchemaGrammar(); + + // ----------------------------------------------------------------------- + // Implementation of Virtual Interface + // ----------------------------------------------------------------------- + virtual Grammar::GrammarType getGrammarType() const; + virtual const XMLCh* getTargetNamespace() const; + + // this method should only be used while the grammar is being + // constructed, not while it is being used + // in a validation episode! + virtual XMLElementDecl* findOrAddElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const prefixName + , const XMLCh* const qName + , unsigned int scope + , bool& wasAdded + ) ; + + virtual XMLSize_t getElemId + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ) const ; + + virtual const XMLElementDecl* getElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ) const ; + + virtual XMLElementDecl* getElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ); + + virtual const XMLElementDecl* getElemDecl + ( + const unsigned int elemId + ) const; + + virtual XMLElementDecl* getElemDecl + ( + const unsigned int elemId + ); + + virtual const XMLNotationDecl* getNotationDecl + ( + const XMLCh* const notName + ) const; + + virtual XMLNotationDecl* getNotationDecl + ( + const XMLCh* const notName + ); + + virtual bool getValidated() const; + + virtual XMLElementDecl* putElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const prefixName + , const XMLCh* const qName + , unsigned int scope + , const bool notDeclared = false + ); + + virtual XMLSize_t putElemDecl + ( + XMLElementDecl* const elemDecl + , const bool notDeclared = false + ) ; + + virtual XMLSize_t putNotationDecl + ( + XMLNotationDecl* const notationDecl + ) const; + + virtual void setValidated(const bool newState); + + virtual void reset(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + RefHash3KeysIdPoolEnumerator getElemEnumerator() const; + NameIdPoolEnumerator getNotationEnumerator() const; + RefHashTableOf* getAttributeDeclRegistry() const; + RefHashTableOf* getComplexTypeRegistry() const; + RefHashTableOf* getGroupInfoRegistry() const; + RefHashTableOf* getAttGroupInfoRegistry() const; + DatatypeValidatorFactory* getDatatypeRegistry(); + RefHash2KeysTableOf* getValidSubstitutionGroups() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setTargetNamespace(const XMLCh* const targetNamespace); + void setAttributeDeclRegistry(RefHashTableOf* const attReg); + void setComplexTypeRegistry(RefHashTableOf* const other); + void setGroupInfoRegistry(RefHashTableOf* const other); + void setAttGroupInfoRegistry(RefHashTableOf* const other); + void setValidSubstitutionGroups(RefHash2KeysTableOf* const); + + virtual void setGrammarDescription( XMLGrammarDescription*); + virtual XMLGrammarDescription* getGrammarDescription() const; + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + XMLSize_t putGroupElemDecl + ( + XMLElementDecl* const elemDecl + ) const; + + // ----------------------------------------------------------------------- + // Annotation management methods + // ----------------------------------------------------------------------- + /** + * Add annotation to the list of annotations for a given key + */ + void putAnnotation(void* key, XSAnnotation* const annotation); + + /** + * Add global annotation + * + * Note: XSAnnotation acts as a linked list + */ + void addAnnotation(XSAnnotation* const annotation); + + /** + * Retrieve the annotation that is associated with the specified key + * + * @param key represents a schema component object (i.e. SchemaGrammar) + * @return XSAnnotation associated with the key object + */ + XSAnnotation* getAnnotation(const void* const key); + + /** + * Retrieve the annotation that is associated with the specified key + * + * @param key represents a schema component object (i.e. SchemaGrammar) + * @return XSAnnotation associated with the key object + */ + const XSAnnotation* getAnnotation(const void* const key) const; + + /** + * Get global annotation + */ + XSAnnotation* getAnnotation(); + const XSAnnotation* getAnnotation() const; + + /** + * Get annotation hash table, to enumerate through them + */ + RefHashTableOf* getAnnotations(); + const RefHashTableOf* getAnnotations() const; + + /** + * Get/set scope count. + */ + unsigned int getScopeCount () const; + void setScopeCount (unsigned int); + + /** + * Get/set anonymous type count. + */ + unsigned int getAnonTypeCount () const; + void setAnonTypeCount (unsigned int); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(SchemaGrammar) + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SchemaGrammar(const SchemaGrammar&); + SchemaGrammar& operator=(const SchemaGrammar&); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Private data members + // + // fElemDeclPool + // This is the element decl pool. It contains all of the elements + // declared in the Schema (and their associated attributes.) + // + // fElemNonDeclPool + // This is the element decl pool that is is populated as new elements + // are seen in the XML document (not declared in the Schema), and they + // are given default characteristics. + // + // fGroupElemDeclPool + // This is the element decl pool for elements in a group that are + // referenced in different scope. It contains all of the elements + // declared in the Schema (and their associated attributes.) + // + // fNotationDeclPool + // This is a pool of NotationDecl objects, which contains all of the + // notations declared in the Schema. + // + // fTargetNamespace + // Target name space for this grammar. + // + // fAttributeDeclRegistry + // Global attribute declarations + // + // fComplexTypeRegistry + // Stores complexType declaration info + // + // fGroupInfoRegistry + // Stores global declaration info + // + // fAttGroupInfoRegistry + // Stores global declaration info + // + // fDatatypeRegistry + // Datatype validator factory + // + // fValidSubstitutionGroups + // Valid list of elements that can substitute a given element + // + // fIDRefList + // List of ids of schema declarations extracted during schema grammar + // traversal + // + // fValidated + // Indicates if the content of the Grammar has been pre-validated + // or not (UPA checking, etc.). When using a cached grammar, no need + // for pre content validation. + // + // fGramDesc: adopted + // + // ----------------------------------------------------------------------- + XMLCh* fTargetNamespace; + RefHash3KeysIdPool* fElemDeclPool; + RefHash3KeysIdPool* fElemNonDeclPool; + RefHash3KeysIdPool* fGroupElemDeclPool; + NameIdPool* fNotationDeclPool; + RefHashTableOf* fAttributeDeclRegistry; + RefHashTableOf* fComplexTypeRegistry; + RefHashTableOf* fGroupInfoRegistry; + RefHashTableOf* fAttGroupInfoRegistry; + RefHash2KeysTableOf* fValidSubstitutionGroups; + MemoryManager* fMemoryManager; + XMLSchemaDescription* fGramDesc; + RefHashTableOf* fAnnotations; + + bool fValidated; + DatatypeValidatorFactory fDatatypeRegistry; + + unsigned int fScopeCount; + unsigned int fAnonTypeCount; +}; + + +// --------------------------------------------------------------------------- +// SchemaGrammar: Getter methods +// --------------------------------------------------------------------------- +inline RefHash3KeysIdPoolEnumerator +SchemaGrammar::getElemEnumerator() const +{ + return RefHash3KeysIdPoolEnumerator(fElemDeclPool, false, fMemoryManager); +} + +inline NameIdPoolEnumerator +SchemaGrammar::getNotationEnumerator() const +{ + return NameIdPoolEnumerator(fNotationDeclPool, fMemoryManager); +} + +inline RefHashTableOf* SchemaGrammar::getAttributeDeclRegistry() const { + + return fAttributeDeclRegistry; +} + +inline RefHashTableOf* +SchemaGrammar::getComplexTypeRegistry() const { + + return fComplexTypeRegistry; +} + +inline RefHashTableOf* +SchemaGrammar::getGroupInfoRegistry() const { + + return fGroupInfoRegistry; +} + +inline RefHashTableOf* +SchemaGrammar::getAttGroupInfoRegistry() const { + + return fAttGroupInfoRegistry; +} + +inline DatatypeValidatorFactory* SchemaGrammar::getDatatypeRegistry() { + + return &fDatatypeRegistry; +} + +inline RefHash2KeysTableOf* +SchemaGrammar::getValidSubstitutionGroups() const { + + return fValidSubstitutionGroups; +} + +inline XMLGrammarDescription* SchemaGrammar::getGrammarDescription() const +{ + return fGramDesc; +} + +inline XSAnnotation* SchemaGrammar::getAnnotation(const void* const key) +{ + return fAnnotations->get(key); +} + +inline const XSAnnotation* SchemaGrammar::getAnnotation(const void* const key) const +{ + return fAnnotations->get(key); +} + +inline XSAnnotation* SchemaGrammar::getAnnotation() +{ + return fAnnotations->get(this); +} + +inline const XSAnnotation* SchemaGrammar::getAnnotation() const +{ + return fAnnotations->get(this); +} + +inline RefHashTableOf* SchemaGrammar::getAnnotations() +{ + return fAnnotations; +} + +inline const RefHashTableOf* SchemaGrammar::getAnnotations() const +{ + return fAnnotations; +} +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- +inline void SchemaGrammar::setTargetNamespace(const XMLCh* const targetNamespace) +{ + if (fTargetNamespace) + fMemoryManager->deallocate(fTargetNamespace);//delete [] fTargetNamespace; + fTargetNamespace = XMLString::replicate(targetNamespace, fMemoryManager); +} + +inline void +SchemaGrammar::setAttributeDeclRegistry(RefHashTableOf* const attReg) { + + fAttributeDeclRegistry = attReg; +} + +inline void +SchemaGrammar::setComplexTypeRegistry(RefHashTableOf* const other) { + + fComplexTypeRegistry = other; +} + +inline void +SchemaGrammar::setGroupInfoRegistry(RefHashTableOf* const other) { + + fGroupInfoRegistry = other; +} + +inline void +SchemaGrammar::setAttGroupInfoRegistry(RefHashTableOf* const other) { + + fAttGroupInfoRegistry = other; +} + +inline void +SchemaGrammar::setValidSubstitutionGroups(RefHash2KeysTableOf* const other) { + + fValidSubstitutionGroups = other; +} + + +// --------------------------------------------------------------------------- +// SchemaGrammar: Virtual methods +// --------------------------------------------------------------------------- +inline Grammar::GrammarType SchemaGrammar::getGrammarType() const { + return Grammar::SchemaGrammarType; +} + +inline const XMLCh* SchemaGrammar::getTargetNamespace() const { + return fTargetNamespace; +} + +// Element Decl +inline XMLSize_t SchemaGrammar::getElemId (const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const + , unsigned int scope ) const +{ + // + // In this case, we don't return zero to mean 'not found', so we have to + // map it to the official not found value if we don't find it. + // + const SchemaElementDecl* decl = fElemDeclPool->getByKey(baseName, uriId, scope); + if (!decl) { + + decl = fGroupElemDeclPool->getByKey(baseName, uriId, scope); + + if (!decl) + return XMLElementDecl::fgInvalidElemId; + } + return decl->getId(); +} + +inline const XMLElementDecl* SchemaGrammar::getElemDecl( const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const + , unsigned int scope ) const +{ + const SchemaElementDecl* decl = fElemDeclPool->getByKey(baseName, uriId, scope); + + if (!decl) { + + decl = fGroupElemDeclPool->getByKey(baseName, uriId, scope); + + if (!decl && fElemNonDeclPool) + decl = fElemNonDeclPool->getByKey(baseName, uriId, scope); + } + + return decl; +} + +inline XMLElementDecl* SchemaGrammar::getElemDecl (const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const + , unsigned int scope ) +{ + SchemaElementDecl* decl = fElemDeclPool->getByKey(baseName, uriId, scope); + + if (!decl) { + + decl = fGroupElemDeclPool->getByKey(baseName, uriId, scope); + + if (!decl && fElemNonDeclPool) + decl = fElemNonDeclPool->getByKey(baseName, uriId, scope); + } + + return decl; +} + +inline const XMLElementDecl* SchemaGrammar::getElemDecl(const unsigned int elemId) const +{ + // Look up this element decl by id + const SchemaElementDecl* decl = fElemDeclPool->getById(elemId); + + if (!decl) + decl = fGroupElemDeclPool->getById(elemId); + + return decl; +} + +inline XMLElementDecl* SchemaGrammar::getElemDecl(const unsigned int elemId) +{ + // Look up this element decl by id + SchemaElementDecl* decl = fElemDeclPool->getById(elemId); + + if (!decl) + decl = fGroupElemDeclPool->getById(elemId); + + return decl; +} + +inline XMLSize_t +SchemaGrammar::putElemDecl(XMLElementDecl* const elemDecl, + const bool notDeclared) +{ + if (notDeclared) + { + if(!fElemNonDeclPool) + fElemNonDeclPool = new (fMemoryManager) RefHash3KeysIdPool(29, true, 128, fMemoryManager); + return fElemNonDeclPool->put(elemDecl->getBaseName(), elemDecl->getURI(), ((SchemaElementDecl* )elemDecl)->getEnclosingScope(), (SchemaElementDecl*) elemDecl); + } + + return fElemDeclPool->put(elemDecl->getBaseName(), elemDecl->getURI(), ((SchemaElementDecl* )elemDecl)->getEnclosingScope(), (SchemaElementDecl*) elemDecl); +} + +inline XMLSize_t SchemaGrammar::putGroupElemDecl (XMLElementDecl* const elemDecl) const +{ + return fGroupElemDeclPool->put(elemDecl->getBaseName(), elemDecl->getURI(), ((SchemaElementDecl* )elemDecl)->getEnclosingScope(), (SchemaElementDecl*) elemDecl); +} + +// Notation Decl +inline const XMLNotationDecl* SchemaGrammar::getNotationDecl(const XMLCh* const notName) const +{ + return fNotationDeclPool->getByKey(notName); +} + +inline XMLNotationDecl* SchemaGrammar::getNotationDecl(const XMLCh* const notName) +{ + return fNotationDeclPool->getByKey(notName); +} + +inline XMLSize_t SchemaGrammar::putNotationDecl(XMLNotationDecl* const notationDecl) const +{ + return fNotationDeclPool->put(notationDecl); +} + +inline bool SchemaGrammar::getValidated() const +{ + return fValidated; +} + +inline void SchemaGrammar::setValidated(const bool newState) +{ + fValidated = newState; +} + +inline unsigned int +SchemaGrammar::getScopeCount () const +{ + return fScopeCount; +} + +inline void +SchemaGrammar::setScopeCount (unsigned int scopeCount) +{ + fScopeCount = scopeCount; +} + +inline unsigned int +SchemaGrammar::getAnonTypeCount () const +{ + return fAnonTypeCount; +} + +inline void +SchemaGrammar::setAnonTypeCount (unsigned int count) +{ + fAnonTypeCount = count; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaInfo.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaInfo.hpp new file mode 100644 index 000000000000..baa5b2e06882 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaInfo.hpp @@ -0,0 +1,432 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SCHEMAINFO_HPP) +#define XERCESC_INCLUDE_GUARD_SCHEMAINFO_HPP + + +/** When in a , type definitions being used (and indeed + * refs to 's and 's) may refer to info + * items either in the schema being redefined, in the , + * or else in the schema doing the redefining. Because of this + * latter we have to be prepared sometimes to look for our type + * definitions outside the schema stored in fSchemaRootElement. + * This simple class does this; it's just a linked list that + * lets us look at the 's on the queue; note also that this + * should provide us with a mechanism to handle nested 's. + * It's also a handy way of saving schema info when importing/including. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- +class XMLScanner; +class ValidationContext; +class NamespaceScope; + +class VALIDATORS_EXPORT SchemaInfo : public XMemory +{ +public: + + enum ListType { + // Redefine is treated as an include + IMPORT = 1, + INCLUDE = 2 + }; + + enum { + C_ComplexType, + C_SimpleType, + C_Group, + C_Attribute, + C_AttributeGroup, + C_Element, + C_Notation, + + C_Count + }; + + // ----------------------------------------------------------------------- + // Constructor/Destructor + // ----------------------------------------------------------------------- + SchemaInfo(const unsigned short fElemAttrDefaultQualified, + const int blockDefault, + const int finalDefault, + const int targetNSURI, + const NamespaceScope* const currNamespaceScope, + const XMLCh* const schemaURL, + const XMLCh* const targetNSURIString, + const DOMElement* const root, + XMLScanner* xmlScanner, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~SchemaInfo(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLCh* getCurrentSchemaURL() const; + const XMLCh* getTargetNSURIString() const; + const DOMElement* getRoot() const; + bool getProcessed() const; + int getBlockDefault() const; + int getFinalDefault() const; + int getTargetNSURI() const; + NamespaceScope* getNamespaceScope() const; + unsigned short getElemAttrDefaultQualified() const; + BaseRefVectorEnumerator getImportingListEnumerator() const; + ValueVectorOf* getRecursingAnonTypes() const; + ValueVectorOf* getRecursingTypeNames() const; + ValueVectorOf* getNonXSAttList() const; + ValidationContext* getValidationContext() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setProcessed(const bool aValue = true); + void setBlockDefault(const int aValue); + void setFinalDefault(const int aValue); + void setElemAttrDefaultQualified(const unsigned short aValue); + void resetRoot (); + + // ----------------------------------------------------------------------- + // Access methods + // ----------------------------------------------------------------------- + void addSchemaInfo(SchemaInfo* const toAdd, const ListType aListType); + bool containsInfo(const SchemaInfo* const toCheck, const ListType aListType) const; + SchemaInfo* getImportInfo(const unsigned int namespaceURI) const; + DOMElement* getTopLevelComponent(const unsigned short compCategory, + const XMLCh* const compName, + const XMLCh* const name); + DOMElement* getTopLevelComponent(const unsigned short compCategory, + const XMLCh* const compName, + const XMLCh* const name, + SchemaInfo** enclosingSchema); + void updateImportingInfo(SchemaInfo* const importingInfo); + bool circularImportExist(const unsigned int nameSpaceURI); + bool isFailedRedefine(const DOMElement* const anElem); + void addFailedRedefine(const DOMElement* const anElem); + void addRecursingType(const DOMElement* const elem, const XMLCh* const name); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SchemaInfo(const SchemaInfo&); + SchemaInfo& operator=(const SchemaInfo&); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void clearTopLevelComponents(); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fAdoptInclude; + bool fProcessed; + unsigned short fElemAttrDefaultQualified; + int fBlockDefault; + int fFinalDefault; + int fTargetNSURI; + NamespaceScope* fNamespaceScope; + XMLCh* fCurrentSchemaURL; + XMLCh* fTargetNSURIString; + const DOMElement* fSchemaRootElement; + RefVectorOf* fIncludeInfoList; + RefVectorOf* fImportedInfoList; + RefVectorOf* fImportingInfoList; + ValueVectorOf* fFailedRedefineList; + ValueVectorOf* fRecursingAnonTypes; + ValueVectorOf* fRecursingTypeNames; + RefHashTableOf* fTopLevelComponents[C_Count]; + DOMElement* fLastTopLevelComponent[C_Count]; + ValueVectorOf* fNonXSAttList; + ValidationContext* fValidationContext; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// SchemaInfo: Getter methods +// --------------------------------------------------------------------------- +inline unsigned short SchemaInfo::getElemAttrDefaultQualified() const { + + return fElemAttrDefaultQualified; +} + +inline bool SchemaInfo::getProcessed() const { + + return fProcessed; +} + +inline int SchemaInfo::getBlockDefault() const { + + return fBlockDefault; +} + +inline int SchemaInfo::getFinalDefault() const { + + return fFinalDefault; +} + +inline NamespaceScope* SchemaInfo::getNamespaceScope() const { + return fNamespaceScope; +} + +inline XMLCh* SchemaInfo::getCurrentSchemaURL() const { + + return fCurrentSchemaURL; +} + +inline const XMLCh* SchemaInfo::getTargetNSURIString() const { + + return fTargetNSURIString; +} + +inline const DOMElement* SchemaInfo::getRoot() const { + + return fSchemaRootElement; +} + +inline int SchemaInfo::getTargetNSURI() const { + + return fTargetNSURI; +} + +inline BaseRefVectorEnumerator +SchemaInfo::getImportingListEnumerator() const { + + return BaseRefVectorEnumerator(fImportingInfoList); +} + +inline ValueVectorOf* +SchemaInfo::getRecursingAnonTypes() const { + + return fRecursingAnonTypes; +} + + +inline ValueVectorOf* +SchemaInfo::getRecursingTypeNames() const { + + return fRecursingTypeNames; +} + +inline ValueVectorOf* SchemaInfo::getNonXSAttList() const +{ + return fNonXSAttList; +} + +// --------------------------------------------------------------------------- +// Setter methods +// --------------------------------------------------------------------------- +inline void SchemaInfo::setBlockDefault(const int aValue) { + + fBlockDefault = aValue; +} + +inline void SchemaInfo::setFinalDefault(const int aValue) { + + fFinalDefault = aValue; +} + +inline void SchemaInfo::setElemAttrDefaultQualified(const unsigned short aValue) { + + fElemAttrDefaultQualified = aValue; +} + +inline void SchemaInfo::setProcessed(const bool aValue) { + + fProcessed = aValue; + +/* if (fProcessed && fIncludeInfoList) { + + unsigned int includeListLen = fIncludeInfoList->size()); + for (unsigned int i = 0; i < includeListLen; i++) { + fIncludeInfoList->elementAt(i)->clearTopLevelComponents(); + } + }*/ +} + +inline void SchemaInfo::resetRoot () +{ + fSchemaRootElement = 0; +} + +// --------------------------------------------------------------------------- +// SchemaInfo: Access methods +// --------------------------------------------------------------------------- +inline void SchemaInfo::addSchemaInfo(SchemaInfo* const toAdd, + const ListType aListType) { + + if (aListType == IMPORT) { + + if (!fImportedInfoList) + fImportedInfoList = new (fMemoryManager) RefVectorOf(4, false, fMemoryManager); + + if (!fImportedInfoList->containsElement(toAdd)) { + + fImportedInfoList->addElement(toAdd); + toAdd->updateImportingInfo(this); + } + } + else { + + if (!fIncludeInfoList) { + + fIncludeInfoList = new (fMemoryManager) RefVectorOf(8, false, fMemoryManager); + fAdoptInclude = true; + } + + if (!fIncludeInfoList->containsElement(toAdd)) { + + fIncludeInfoList->addElement(toAdd); + //code was originally: + //toAdd->fIncludeInfoList = fIncludeInfoList; + //however for handling multiple imports this was causing + //to schemaInfo's to have the same fIncludeInfoList which they + //both owned so when it was deleted it crashed. + if (toAdd->fIncludeInfoList) { + if (toAdd->fIncludeInfoList != fIncludeInfoList) { + XMLSize_t size = toAdd->fIncludeInfoList->size(); + for (XMLSize_t i=0; icontainsElement(toAdd->fIncludeInfoList->elementAt(i))) { + fIncludeInfoList->addElement(toAdd->fIncludeInfoList->elementAt(i)); + } + } + size = fIncludeInfoList->size(); + for (XMLSize_t j=0; jfIncludeInfoList->containsElement(fIncludeInfoList->elementAt(j))) { + toAdd->fIncludeInfoList->addElement(fIncludeInfoList->elementAt(j)); + } + } + } + } + else { + toAdd->fIncludeInfoList = fIncludeInfoList; + } + } + } +} + +inline SchemaInfo* SchemaInfo::getImportInfo(const unsigned int namespaceURI) const { + + XMLSize_t importSize = (fImportedInfoList) ? fImportedInfoList->size() : 0; + SchemaInfo* currInfo = 0; + + for (XMLSize_t i=0; i < importSize; i++) { + + currInfo = fImportedInfoList->elementAt(i); + + if (currInfo->getTargetNSURI() == (int) namespaceURI) + return currInfo; + } + + return 0; +} + +inline ValidationContext* SchemaInfo::getValidationContext() const { + + return fValidationContext; +} + +inline bool SchemaInfo::containsInfo(const SchemaInfo* const toCheck, + const ListType aListType) const { + + if ((aListType == INCLUDE) && fIncludeInfoList) { + return fIncludeInfoList->containsElement(toCheck); + } + else if ((aListType == IMPORT) && fImportedInfoList) { + return fImportedInfoList->containsElement(toCheck); + } + + return false; +} + +inline bool SchemaInfo::circularImportExist(const unsigned int namespaceURI) { + + XMLSize_t importSize = fImportingInfoList->size(); + + for (XMLSize_t i=0; i < importSize; i++) { + if (fImportingInfoList->elementAt(i)->getTargetNSURI() == (int) namespaceURI) { + return true; + } + } + + return false; +} + +inline bool SchemaInfo::isFailedRedefine(const DOMElement* const anElem) { + + if (fFailedRedefineList) + return (fFailedRedefineList->containsElement(anElem)); + + return false; +} + +inline void SchemaInfo::addFailedRedefine(const DOMElement* const anElem) { + + if (!fFailedRedefineList) { + fFailedRedefineList = new (fMemoryManager) ValueVectorOf(4, fMemoryManager); + } + + fFailedRedefineList->addElement(anElem); +} + +inline void SchemaInfo::addRecursingType(const DOMElement* const elem, + const XMLCh* const name) { + + if (!fRecursingAnonTypes) { + fRecursingAnonTypes = new (fMemoryManager) ValueVectorOf(8, fMemoryManager); + fRecursingTypeNames = new (fMemoryManager) ValueVectorOf(8, fMemoryManager); + } + + fRecursingAnonTypes->addElement(elem); + fRecursingTypeNames->addElement(name); +} + +inline void SchemaInfo::clearTopLevelComponents() { + + for (unsigned int i = 0; i < C_Count; i++) { + + delete fTopLevelComponents[i]; + fTopLevelComponents[i] = 0; + fLastTopLevelComponent[i] = 0; + } +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file SchemaInfo.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaSymbols.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaSymbols.hpp new file mode 100644 index 000000000000..d501b765a934 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaSymbols.hpp @@ -0,0 +1,254 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SCHEMASYMBOLS_HPP) +#define XERCESC_INCLUDE_GUARD_SCHEMASYMBOLS_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/* + * Collection of symbols used to parse a Schema Grammar + */ + +class VALIDATORS_EXPORT SchemaSymbols +{ +public : + // ----------------------------------------------------------------------- + // Constant data + // ----------------------------------------------------------------------- + static const XMLCh fgURI_XSI[]; + static const XMLCh fgURI_SCHEMAFORSCHEMA[]; + // deprecated (typo) + static const XMLCh fgXSI_SCHEMALOCACTION[]; + // deprecated (typo) + static const XMLCh fgXSI_NONAMESPACESCHEMALOCACTION[]; + static const XMLCh fgXSI_SCHEMALOCATION[]; + static const XMLCh fgXSI_NONAMESPACESCHEMALOCATION[]; + static const XMLCh fgXSI_TYPE[]; + static const XMLCh fgELT_ALL[]; + static const XMLCh fgELT_ANNOTATION[]; + static const XMLCh fgELT_ANY[]; + static const XMLCh fgELT_WILDCARD[]; + static const XMLCh fgELT_ANYATTRIBUTE[]; + static const XMLCh fgELT_APPINFO[]; + static const XMLCh fgELT_ATTRIBUTE[]; + static const XMLCh fgELT_ATTRIBUTEGROUP[]; + static const XMLCh fgELT_CHOICE[]; + static const XMLCh fgELT_COMPLEXTYPE[]; + static const XMLCh fgELT_CONTENT[]; + static const XMLCh fgELT_DOCUMENTATION[]; + static const XMLCh fgELT_DURATION[]; + static const XMLCh fgELT_ELEMENT[]; + static const XMLCh fgELT_ENCODING[]; + static const XMLCh fgELT_ENUMERATION[]; + static const XMLCh fgELT_FIELD[]; + static const XMLCh fgELT_WHITESPACE[]; + static const XMLCh fgELT_GROUP[]; + static const XMLCh fgELT_IMPORT[]; + static const XMLCh fgELT_INCLUDE[]; + static const XMLCh fgELT_REDEFINE[]; + static const XMLCh fgELT_KEY[]; + static const XMLCh fgELT_KEYREF[]; + static const XMLCh fgELT_LENGTH[]; + static const XMLCh fgELT_MAXEXCLUSIVE[]; + static const XMLCh fgELT_MAXINCLUSIVE[]; + static const XMLCh fgELT_MAXLENGTH[]; + static const XMLCh fgELT_MINEXCLUSIVE[]; + static const XMLCh fgELT_MININCLUSIVE[]; + static const XMLCh fgELT_MINLENGTH[]; + static const XMLCh fgELT_NOTATION[]; + static const XMLCh fgELT_PATTERN[]; + static const XMLCh fgELT_PERIOD[]; + static const XMLCh fgELT_TOTALDIGITS[]; + static const XMLCh fgELT_FRACTIONDIGITS[]; + static const XMLCh fgELT_SCHEMA[]; + static const XMLCh fgELT_SELECTOR[]; + static const XMLCh fgELT_SEQUENCE[]; + static const XMLCh fgELT_SIMPLETYPE[]; + static const XMLCh fgELT_UNION[]; + static const XMLCh fgELT_LIST[]; + static const XMLCh fgELT_UNIQUE[]; + static const XMLCh fgELT_COMPLEXCONTENT[]; + static const XMLCh fgELT_SIMPLECONTENT[]; + static const XMLCh fgELT_RESTRICTION[]; + static const XMLCh fgELT_EXTENSION[]; + static const XMLCh fgATT_ABSTRACT[]; + static const XMLCh fgATT_ATTRIBUTEFORMDEFAULT[]; + static const XMLCh fgATT_BASE[]; + static const XMLCh fgATT_ITEMTYPE[]; + static const XMLCh fgATT_MEMBERTYPES[]; + static const XMLCh fgATT_BLOCK[]; + static const XMLCh fgATT_BLOCKDEFAULT[]; + static const XMLCh fgATT_DEFAULT[]; + static const XMLCh fgATT_ELEMENTFORMDEFAULT[]; + static const XMLCh fgATT_SUBSTITUTIONGROUP[]; + static const XMLCh fgATT_FINAL[]; + static const XMLCh fgATT_FINALDEFAULT[]; + static const XMLCh fgATT_FIXED[]; + static const XMLCh fgATT_FORM[]; + static const XMLCh fgATT_ID[]; + static const XMLCh fgATT_MAXOCCURS[]; + static const XMLCh fgATT_MINOCCURS[]; + static const XMLCh fgATT_NAME[]; + static const XMLCh fgATT_NAMESPACE[]; + static const XMLCh fgATT_NILL[]; + static const XMLCh fgATT_NILLABLE[]; + static const XMLCh fgATT_PROCESSCONTENTS[]; + static const XMLCh fgATT_REF[]; + static const XMLCh fgATT_REFER[]; + static const XMLCh fgATT_SCHEMALOCATION[]; + static const XMLCh fgATT_SOURCE[]; + static const XMLCh fgATT_SYSTEM[]; + static const XMLCh fgATT_PUBLIC[]; + static const XMLCh fgATT_TARGETNAMESPACE[]; + static const XMLCh fgATT_TYPE[]; + static const XMLCh fgATT_USE[]; + static const XMLCh fgATT_VALUE[]; + static const XMLCh fgATT_MIXED[]; + static const XMLCh fgATT_VERSION[]; + static const XMLCh fgATT_XPATH[]; + static const XMLCh fgATTVAL_TWOPOUNDANY[]; + static const XMLCh fgATTVAL_TWOPOUNDLOCAL[]; + static const XMLCh fgATTVAL_TWOPOUNDOTHER[]; + static const XMLCh fgATTVAL_TWOPOUNDTRAGETNAMESPACE[]; + static const XMLCh fgATTVAL_POUNDALL[]; + static const XMLCh fgATTVAL_BASE64[]; + static const XMLCh fgATTVAL_BOOLEAN[]; + static const XMLCh fgATTVAL_DEFAULT[]; + static const XMLCh fgATTVAL_ELEMENTONLY[]; + static const XMLCh fgATTVAL_EMPTY[]; + static const XMLCh fgATTVAL_EXTENSION[]; + static const XMLCh fgATTVAL_FALSE[]; + static const XMLCh fgATTVAL_FIXED[]; + static const XMLCh fgATTVAL_HEX[]; + static const XMLCh fgATTVAL_ID[]; + static const XMLCh fgATTVAL_LAX[]; + static const XMLCh fgATTVAL_MAXLENGTH[]; + static const XMLCh fgATTVAL_MINLENGTH[]; + static const XMLCh fgATTVAL_MIXED[]; + static const XMLCh fgATTVAL_NCNAME[]; + static const XMLCh fgATTVAL_OPTIONAL[]; + static const XMLCh fgATTVAL_PROHIBITED[]; + static const XMLCh fgATTVAL_QNAME[]; + static const XMLCh fgATTVAL_QUALIFIED[]; + static const XMLCh fgATTVAL_REQUIRED[]; + static const XMLCh fgATTVAL_RESTRICTION[]; + static const XMLCh fgATTVAL_SKIP[]; + static const XMLCh fgATTVAL_STRICT[]; + static const XMLCh fgATTVAL_STRING[]; + static const XMLCh fgATTVAL_TEXTONLY[]; + static const XMLCh fgATTVAL_TIMEDURATION[]; + static const XMLCh fgATTVAL_TRUE[]; + static const XMLCh fgATTVAL_UNQUALIFIED[]; + static const XMLCh fgATTVAL_URI[]; + static const XMLCh fgATTVAL_URIREFERENCE[]; + static const XMLCh fgATTVAL_SUBSTITUTIONGROUP[]; + static const XMLCh fgATTVAL_SUBSTITUTION[]; + static const XMLCh fgATTVAL_ANYTYPE[]; + static const XMLCh fgWS_PRESERVE[]; + static const XMLCh fgWS_COLLAPSE[]; + static const XMLCh fgWS_REPLACE[]; + static const XMLCh fgDT_STRING[]; + static const XMLCh fgDT_TOKEN[]; + static const XMLCh fgDT_LANGUAGE[]; + static const XMLCh fgDT_NAME[]; + static const XMLCh fgDT_NCNAME[]; + static const XMLCh fgDT_INTEGER[]; + static const XMLCh fgDT_DECIMAL[]; + static const XMLCh fgDT_BOOLEAN[]; + static const XMLCh fgDT_NONPOSITIVEINTEGER[]; + static const XMLCh fgDT_NEGATIVEINTEGER[]; + static const XMLCh fgDT_LONG[]; + static const XMLCh fgDT_INT[]; + static const XMLCh fgDT_SHORT[]; + static const XMLCh fgDT_BYTE[]; + static const XMLCh fgDT_NONNEGATIVEINTEGER[]; + static const XMLCh fgDT_ULONG[]; + static const XMLCh fgDT_UINT[]; + static const XMLCh fgDT_USHORT[]; + static const XMLCh fgDT_UBYTE[]; + static const XMLCh fgDT_POSITIVEINTEGER[]; +//datetime + static const XMLCh fgDT_DATETIME[]; + static const XMLCh fgDT_DATE[]; + static const XMLCh fgDT_TIME[]; + static const XMLCh fgDT_DURATION[]; + static const XMLCh fgDT_DAY[]; + static const XMLCh fgDT_MONTH[]; + static const XMLCh fgDT_MONTHDAY[]; + static const XMLCh fgDT_YEAR[]; + static const XMLCh fgDT_YEARMONTH[]; + + static const XMLCh fgDT_BASE64BINARY[]; + static const XMLCh fgDT_HEXBINARY[]; + static const XMLCh fgDT_FLOAT[]; + static const XMLCh fgDT_DOUBLE[]; + static const XMLCh fgDT_URIREFERENCE[]; + static const XMLCh fgDT_ANYURI[]; + static const XMLCh fgDT_QNAME[]; + static const XMLCh fgDT_NORMALIZEDSTRING[]; + static const XMLCh fgDT_ANYSIMPLETYPE[]; + static const XMLCh fgRegEx_XOption[]; + static const XMLCh fgRedefIdentifier[]; + static const int fgINT_MIN_VALUE; + static const int fgINT_MAX_VALUE; + + enum { + XSD_EMPTYSET = 0, + XSD_SUBSTITUTION = 1, + XSD_EXTENSION = 2, + XSD_RESTRICTION = 4, + XSD_LIST = 8, + XSD_UNION = 16, + XSD_ENUMERATION = 32 + }; + + // group orders + enum { + XSD_CHOICE = 0, + XSD_SEQUENCE= 1, + XSD_ALL = 2 + }; + + enum { + XSD_UNBOUNDED = -1, + XSD_NILLABLE = 1, + XSD_ABSTRACT = 2, + XSD_FIXED = 4 + }; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SchemaSymbols(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file SchemaSymbols.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaValidator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaValidator.hpp new file mode 100644 index 000000000000..51b14f78928a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SchemaValidator.hpp @@ -0,0 +1,443 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SCHEMAVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_SCHEMAVALIDATOR_HPP + +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class GrammarResolver; +class DatatypeValidator; +class SchemaElementDecl; + +// +// This is a derivative of the abstract validator interface. This class +// implements a validator that supports standard XML Schema semantics. +// This class handles scanning the of the schema, and provides +// the standard validation services against the Schema info it found. +// +class VALIDATORS_EXPORT SchemaValidator : public XMLValidator +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + SchemaValidator + ( + XMLErrorReporter* const errReporter = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~SchemaValidator(); + + // ----------------------------------------------------------------------- + // Implementation of the XMLValidator interface + // ----------------------------------------------------------------------- + virtual bool checkContent + ( + XMLElementDecl* const elemDecl + , QName** const children + , XMLSize_t childCount + , XMLSize_t* indexFailingChild + ); + + virtual void faultInAttr + ( + XMLAttr& toFill + , const XMLAttDef& attDef + ) const; + + virtual void preContentValidation(bool reuseGrammar, + bool validateDefAttr = false); + + virtual void postParseValidation(); + + virtual void reset(); + + virtual bool requiresNamespaces() const; + + virtual void validateAttrValue + ( + const XMLAttDef* attDef + , const XMLCh* const attrValue + , bool preValidation = false + , const XMLElementDecl* elemDecl = 0 + ); + + virtual void validateElement + ( + const XMLElementDecl* elemDef + ); + + virtual Grammar* getGrammar() const; + virtual void setGrammar(Grammar* aGrammar); + + // ----------------------------------------------------------------------- + // Virtual DTD handler interface. + // ----------------------------------------------------------------------- + virtual bool handlesDTD() const; + + // ----------------------------------------------------------------------- + // Virtual Schema handler interface. handlesSchema() always return false. + // ----------------------------------------------------------------------- + virtual bool handlesSchema() const; + + // ----------------------------------------------------------------------- + // Schema Validator methods + // ----------------------------------------------------------------------- + void normalizeWhiteSpace(DatatypeValidator* dV, const XMLCh* const value, XMLBuffer& toFill, bool bStandalone = false); + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setGrammarResolver(GrammarResolver* grammarResolver); + + void setXsiType(const XMLCh* const prefix + , const XMLCh* const localPart + , const unsigned int uriId); + + void setNillable(bool isNil); + void resetNillable(); + void setErrorReporter(XMLErrorReporter* const errorReporter); + void setExitOnFirstFatal(const bool newValue); + void setDatatypeBuffer(const XMLCh* const value); + void clearDatatypeBuffer(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + ComplexTypeInfo* getCurrentTypeInfo() const; + DatatypeValidator *getCurrentDatatypeValidator() const; + DatatypeValidator *getMostRecentAttrValidator() const; + bool getErrorOccurred() const; + bool getIsElemSpecified() const; + bool getIsXsiTypeSet() const; + const XMLCh* getNormalizedValue() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SchemaValidator(const SchemaValidator&); + SchemaValidator& operator=(const SchemaValidator&); + + // ----------------------------------------------------------------------- + // Element Consistency Checking methods + // ----------------------------------------------------------------------- + void checkRefElementConsistency(SchemaGrammar* const currentGrammar, + const ComplexTypeInfo* const curTypeInfo, + const XercesGroupInfo* const curGroup = 0); + + // ----------------------------------------------------------------------- + // Particle Derivation Checking methods + // ----------------------------------------------------------------------- + void checkParticleDerivation(SchemaGrammar* const currentGrammar, + const ComplexTypeInfo* const typeInfo); + void checkParticleDerivationOk(SchemaGrammar* const currentGrammar, + ContentSpecNode* const curNode, + const int derivedScope, + ContentSpecNode* const baseNode, + const int baseScope, + const ComplexTypeInfo* const baseInfo = 0, + const bool toCheckOccurrence = true); + ContentSpecNode* checkForPointlessOccurrences(ContentSpecNode* const specNode, + const ContentSpecNode::NodeTypes nodeType, + ValueVectorOf* const nodes); + void gatherChildren(const ContentSpecNode::NodeTypes parentNodeType, + ContentSpecNode* const specNode, + ValueVectorOf* const nodes); + bool isOccurrenceRangeOK(const int min1, const int max1, const int min2, const int max2); + void checkNSCompat(const ContentSpecNode* const derivedSpecNode, + const ContentSpecNode* const baseSpecNode, + const bool toCheckOccurence); + bool wildcardEltAllowsNamespace(const ContentSpecNode* const baseSpecNode, + const unsigned int derivedURI); + void checkNameAndTypeOK(SchemaGrammar* const currentGrammar, + const ContentSpecNode* const derivedSpecNode, + const int derivedScope, + const ContentSpecNode* const baseSpecNode, + const int baseScope, + const ComplexTypeInfo* const baseInfo = 0); + SchemaElementDecl* findElement(const int scope, + const unsigned int uriIndex, + const XMLCh* const name, + SchemaGrammar* const grammar, + const ComplexTypeInfo* const typeInfo = 0); + void checkICRestriction(const SchemaElementDecl* const derivedElemDecl, + const SchemaElementDecl* const baseElemDecl, + const XMLCh* const derivedElemName, + const XMLCh* const baseElemName); + void checkTypesOK(const SchemaElementDecl* const derivedElemDecl, + const SchemaElementDecl* const baseElemDecl, + const XMLCh* const derivedElemName); + void checkRecurseAsIfGroup(SchemaGrammar* const currentGrammar, + ContentSpecNode* const derivedSpecNode, + const int derivedScope, + const ContentSpecNode* const baseSpecNode, + const int baseScope, + ValueVectorOf* const nodes, + const ComplexTypeInfo* const baseInfo); + void checkRecurse(SchemaGrammar* const currentGrammar, + const ContentSpecNode* const derivedSpecNode, + const int derivedScope, + ValueVectorOf* const derivedNodes, + const ContentSpecNode* const baseSpecNode, + const int baseScope, + ValueVectorOf* const baseNodes, + const ComplexTypeInfo* const baseInfo, + const bool toLax = false); + void checkNSSubset(const ContentSpecNode* const derivedSpecNode, + const ContentSpecNode* const baseSpecNode); + bool checkNSSubsetChoiceRoot(const ContentSpecNode* const derivedSpecNode, + const ContentSpecNode* const baseSpecNode); + bool checkNSSubsetChoice(const ContentSpecNode* const derivedSpecNode, + const ContentSpecNode* const baseSpecNode); + bool isWildCardEltSubset(const ContentSpecNode* const derivedSpecNode, + const ContentSpecNode* const baseSpecNode); + void checkNSRecurseCheckCardinality(SchemaGrammar* const currentGrammar, + const ContentSpecNode* const derivedSpecNode, + ValueVectorOf* const derivedNodes, + const int derivedScope, + ContentSpecNode* const baseSpecNode, + const bool toCheckOccurence); + void checkRecurseUnordered(SchemaGrammar* const currentGrammar, + const ContentSpecNode* const derivedSpecNode, + ValueVectorOf* const derivedNodes, + const int derivedScope, + ContentSpecNode* const baseSpecNode, + ValueVectorOf* const baseNodes, + const int baseScope, + const ComplexTypeInfo* const baseInfo); + void checkMapAndSum(SchemaGrammar* const currentGrammar, + const ContentSpecNode* const derivedSpecNode, + ValueVectorOf* const derivedNodes, + const int derivedScope, + ContentSpecNode* const baseSpecNode, + ValueVectorOf* const baseNodes, + const int baseScope, + const ComplexTypeInfo* const baseInfo); + ContentSpecNode* getNonUnaryGroup(ContentSpecNode* const pNode); + + // ----------------------------------------------------------------------- + // Private data members + // + // ----------------------------------------------------------------------- + // The following comes from or set by the Scanner + // fSchemaGrammar + // The current schema grammar used by the validator + // + // fGrammarResolver + // All the schema grammar stored + // + // fXsiType + // Store the Schema Type Attribute Value if schema type is specified + // + // fNil + // Indicates if a nil value is acceptable + // fNilFound + // Indicates if Nillable has been set + // ----------------------------------------------------------------------- + // The following used internally in the validator + // + // fCurrentDatatypeValidator + // The validator used for validating the content of elements + // with simple types + // + // fDatatypeBuffer + // Buffer for simple type element string content + // + // fTrailing + // Previous chunk had a trailing space + // + // fSeenNonWhiteSpace + // Seen a non-whitespace character in the previous chunk + // + // fSeenId + // Indicate if an attribute of ID type has been seen already, reset per element. + // + // fSchemaErrorReporter + // Report schema process errors + // + // fTypeStack + // Stack of complex type declarations. + // + // fMostRecentAttrValidator + // DatatypeValidator that validated attribute most recently processed + // + // fErrorOccurred + // whether an error occurred in the most recent operation + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + SchemaGrammar* fSchemaGrammar; + GrammarResolver* fGrammarResolver; + QName* fXsiType; + bool fNil; + bool fNilFound; + DatatypeValidator* fCurrentDatatypeValidator; + XMLBuffer* fNotationBuf; + XMLBuffer fDatatypeBuffer; + bool fTrailing; + bool fSeenNonWhiteSpace; + bool fSeenId; + XSDErrorReporter fSchemaErrorReporter; + ValueStackOf* fTypeStack; + DatatypeValidator * fMostRecentAttrValidator; + bool fErrorOccurred; + bool fElemIsSpecified; +}; + + +// --------------------------------------------------------------------------- +// SchemaValidator: Setter methods +// --------------------------------------------------------------------------- +inline void SchemaValidator::setGrammarResolver(GrammarResolver* grammarResolver) { + fGrammarResolver = grammarResolver; +} + +inline void SchemaValidator::setXsiType(const XMLCh* const prefix + , const XMLCh* const localPart + , const unsigned int uriId) +{ + delete fXsiType; + fXsiType = new (fMemoryManager) QName(prefix, localPart, uriId, fMemoryManager); +} + +inline void SchemaValidator::setNillable(bool isNil) { + fNil = isNil; + fNilFound = true; +} + +inline void SchemaValidator::resetNillable() { + fNil = false; + fNilFound = false; +} + +inline void SchemaValidator::setExitOnFirstFatal(const bool newValue) { + + fSchemaErrorReporter.setExitOnFirstFatal(newValue); +} + +inline void SchemaValidator::setDatatypeBuffer(const XMLCh* const value) +{ + fDatatypeBuffer.append(value); +} + +inline void SchemaValidator::clearDatatypeBuffer() +{ + fDatatypeBuffer.reset(); +} + +// --------------------------------------------------------------------------- +// SchemaValidator: Getter methods +// --------------------------------------------------------------------------- +inline ComplexTypeInfo* SchemaValidator::getCurrentTypeInfo() const { + if (fTypeStack->empty()) + return 0; + return fTypeStack->peek(); +} + +inline DatatypeValidator * SchemaValidator::getCurrentDatatypeValidator() const +{ + return fCurrentDatatypeValidator; +} +inline DatatypeValidator *SchemaValidator::getMostRecentAttrValidator() const +{ + return fMostRecentAttrValidator; +} + +// --------------------------------------------------------------------------- +// Virtual interface +// --------------------------------------------------------------------------- +inline Grammar* SchemaValidator::getGrammar() const { + return fSchemaGrammar; +} + +inline void SchemaValidator::setGrammar(Grammar* aGrammar) { + fSchemaGrammar = (SchemaGrammar*) aGrammar; +} + +inline void SchemaValidator::setErrorReporter(XMLErrorReporter* const errorReporter) { + + XMLValidator::setErrorReporter(errorReporter); + fSchemaErrorReporter.setErrorReporter(errorReporter); +} + +// --------------------------------------------------------------------------- +// SchemaValidator: DTD handler interface +// --------------------------------------------------------------------------- +inline bool SchemaValidator::handlesDTD() const +{ + // No DTD scanning + return false; +} + +// --------------------------------------------------------------------------- +// SchemaValidator: Schema handler interface +// --------------------------------------------------------------------------- +inline bool SchemaValidator::handlesSchema() const +{ + return true; +} + +// --------------------------------------------------------------------------- +// SchemaValidator: Particle derivation checking +// --------------------------------------------------------------------------- +inline bool +SchemaValidator::isOccurrenceRangeOK(const int min1, const int max1, + const int min2, const int max2) { + + if (min1 >= min2 && + (max2 == SchemaSymbols::XSD_UNBOUNDED || + (max1 != SchemaSymbols::XSD_UNBOUNDED && max1 <= max2))) { + return true; + } + return false; +} + +inline bool SchemaValidator::getErrorOccurred() const +{ + return fErrorOccurred; +} + +inline bool SchemaValidator::getIsElemSpecified() const +{ + return fElemIsSpecified; +} + +inline const XMLCh* SchemaValidator::getNormalizedValue() const +{ + return fDatatypeBuffer.getRawBuffer(); +} + +inline bool SchemaValidator::getIsXsiTypeSet() const +{ + return (fXsiType!=0); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SubstitutionGroupComparator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SubstitutionGroupComparator.hpp new file mode 100644 index 000000000000..3c04c6c7669d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/SubstitutionGroupComparator.hpp @@ -0,0 +1,126 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SUBSTITUTIONGROUPCOMPARATOR_HPP) +#define XERCESC_INCLUDE_GUARD_SUBSTITUTIONGROUPCOMPARATOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class SchemaGrammar; + +class VALIDATORS_EXPORT SubstitutionGroupComparator : public XMemory +{ +public: + + // ----------------------------------------------------------------------- + // Public Constructor + // ----------------------------------------------------------------------- + /** @name Constructor. */ + //@{ + + SubstitutionGroupComparator(GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool); + + + //@} + + // ----------------------------------------------------------------------- + // Public Destructor + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + + ~SubstitutionGroupComparator(); + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * Checks that the "anElement" is within the substitution group. + * + * @param anElement QName of the element + * + * @param exemplar QName of the head element in the group + */ + bool isEquivalentTo(const QName* const anElement + , const QName* const exemplar); + //@} + + /* + * check whether one element or any element in its substitution group + * is allowed by a given wildcard uri + * + * @param pGrammar the grammar where the wildcard is declared + * @param element the QName of a given element + * @param wuri the uri of the wildcard + * @param wother whether the uri is from ##other, so wuri is excluded + * + * @return whether the element is allowed by the wildcard + */ + bool isAllowedByWildcard(SchemaGrammar* const pGrammar, QName* const element, unsigned int wuri, bool wother); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SubstitutionGroupComparator(); + SubstitutionGroupComparator(const SubstitutionGroupComparator&); + SubstitutionGroupComparator& operator=(const SubstitutionGroupComparator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // + // ----------------------------------------------------------------------- + GrammarResolver *fGrammarResolver; + XMLStringPool *fStringPool; +}; + + +// --------------------------------------------------------------------------- +// SubstitutionGroupComparator: Getters +// --------------------------------------------------------------------------- +inline SubstitutionGroupComparator::SubstitutionGroupComparator(GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool) +:fGrammarResolver(pGrammarResolver) +,fStringPool(pStringPool) +{} + +inline SubstitutionGroupComparator::~SubstitutionGroupComparator() +{} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file SubstitutionGroupComparator.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/TraverseSchema.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/TraverseSchema.hpp new file mode 100644 index 000000000000..deec07ebb257 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/TraverseSchema.hpp @@ -0,0 +1,925 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TRAVERSESCHEMA_HPP) +#define XERCESC_INCLUDE_GUARD_TRAVERSESCHEMA_HPP + +/** + * Instances of this class get delegated to Traverse the Schema and + * to populate the SchemaGrammar internal representation. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- +class GrammarResolver; +class XMLEntityHandler; +class XMLScanner; +class DatatypeValidator; +class DatatypeValidatorFactory; +class QName; +class ComplexTypeInfo; +class XMLAttDef; +class NamespaceScope; +class SchemaAttDef; +class InputSource; +class XercesGroupInfo; +class XercesAttGroupInfo; +class IdentityConstraint; +class XSDLocator; +class XSDDOMParser; +class XMLErrorReporter; + + +class VALIDATORS_EXPORT TraverseSchema : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constructors/Destructor + // ----------------------------------------------------------------------- + TraverseSchema + ( + DOMElement* const schemaRoot + , XMLStringPool* const uriStringPool + , SchemaGrammar* const schemaGrammar + , GrammarResolver* const grammarResolver + , RefHash2KeysTableOf* cachedSchemaInfoList + , RefHash2KeysTableOf* schemaInfoList + , XMLScanner* const xmlScanner + , const XMLCh* const schemaURL + , XMLEntityHandler* const entityHandler + , XMLErrorReporter* const errorReporter + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , bool multipleImport = false + ); + + ~TraverseSchema(); + +private: + // This enumeration is defined here for compatibility with the CodeWarrior + // compiler, which apparently doesn't like to accept default parameter + // arguments that it hasn't yet seen. The Not_All_Context argument is + // used in the declaration of checkMinMax, below. + // + // Flags indicate any special restrictions on minOccurs and maxOccurs + // relating to "all". + // Not_All_Context - not processing an + // All_Element - processing an in an + // Group_Ref_With_All - processing reference that contained + // All_Group - processing an group itself + enum + { + Not_All_Context = 0 + , All_Element = 1 + , Group_Ref_With_All = 2 + , All_Group = 4 + }; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + TraverseSchema(const TraverseSchema&); + TraverseSchema& operator=(const TraverseSchema&); + + // ----------------------------------------------------------------------- + // Init/CleanUp methods + // ----------------------------------------------------------------------- + void init(); + void cleanUp(); + + // ----------------------------------------------------------------------- + // Traversal methods + // ----------------------------------------------------------------------- + /** + * Traverse the Schema DOM tree + */ + void doTraverseSchema(const DOMElement* const schemaRoot); + void preprocessSchema(DOMElement* const schemaRoot, + const XMLCh* const schemaURL, + bool multipleImport = false); + void traverseSchemaHeader(const DOMElement* const schemaRoot); + XSAnnotation* traverseAnnotationDecl(const DOMElement* const childElem, + ValueVectorOf* const nonXSAttList, + const bool topLevel = false); + void traverseInclude(const DOMElement* const childElem); + void traverseImport(const DOMElement* const childElem); + void traverseRedefine(const DOMElement* const childElem); + void traverseAttributeDecl(const DOMElement* const childElem, + ComplexTypeInfo* const typeInfo, + const bool topLevel = false); + void traverseSimpleContentDecl(const XMLCh* const typeName, + const XMLCh* const qualifiedName, + const DOMElement* const contentDecl, + ComplexTypeInfo* const typeInfo, + Janitor* const janAnnot); + void traverseComplexContentDecl(const XMLCh* const typeName, + const DOMElement* const contentDecl, + ComplexTypeInfo* const typeInfo, + const bool isMixed, + Janitor* const janAnnot); + DatatypeValidator* traverseSimpleTypeDecl(const DOMElement* const childElem, + const bool topLevel = true, + int baseRefContext = SchemaSymbols::XSD_EMPTYSET); + int traverseComplexTypeDecl(const DOMElement* const childElem, + const bool topLevel = true, + const XMLCh* const recursingTypeName = 0); + DatatypeValidator* traverseByList(const DOMElement* const rootElem, + const DOMElement* const contentElem, + const XMLCh* const typeName, + const XMLCh* const qualifiedName, + const int finalSet, + Janitor* const janAnnot); + DatatypeValidator* traverseByRestriction(const DOMElement* const rootElem, + const DOMElement* const contentElem, + const XMLCh* const typeName, + const XMLCh* const qualifiedName, + const int finalSet, + Janitor* const janAnnot); + DatatypeValidator* traverseByUnion(const DOMElement* const rootElem, + const DOMElement* const contentElem, + const XMLCh* const typeName, + const XMLCh* const qualifiedName, + const int finalSet, + int baseRefContext, + Janitor* const janAnnot); + SchemaElementDecl* traverseElementDecl(const DOMElement* const childElem, + const bool topLevel = false); + const XMLCh* traverseNotationDecl(const DOMElement* const childElem); + const XMLCh* traverseNotationDecl(const DOMElement* const childElem, + const XMLCh* const name, + const XMLCh* const uriStr); + ContentSpecNode* traverseChoiceSequence(const DOMElement* const elemDecl, + const int modelGroupType, + bool& hasChildren); + ContentSpecNode* traverseAny(const DOMElement* const anyDecl); + ContentSpecNode* traverseAll(const DOMElement* const allElem, + bool& hasChildren); + XercesGroupInfo* traverseGroupDecl(const DOMElement* const childElem, + const bool topLevel = true); + XercesAttGroupInfo* traverseAttributeGroupDecl(const DOMElement* const elem, + ComplexTypeInfo* const typeInfo, + const bool topLevel = false); + XercesAttGroupInfo* traverseAttributeGroupDeclNS(const DOMElement* const elem, + const XMLCh* const uriStr, + const XMLCh* const name); + SchemaAttDef* traverseAnyAttribute(const DOMElement* const elem); + void traverseKey(const DOMElement* const icElem, + SchemaElementDecl* const elemDecl); + void traverseUnique(const DOMElement* const icElem, + SchemaElementDecl* const elemDecl); + void traverseKeyRef(const DOMElement* const icElem, + SchemaElementDecl* const elemDecl); + bool traverseIdentityConstraint(IdentityConstraint* const ic, + const DOMElement* const icElem); + + // ----------------------------------------------------------------------- + // Error Reporting methods + // ----------------------------------------------------------------------- + void reportSchemaError(const XSDLocator* const aLocator, + const XMLCh* const msgDomain, + const int errorCode); + void reportSchemaError(const XSDLocator* const aLocator, + const XMLCh* const msgDomain, + const int errorCode, + const XMLCh* const text1, + const XMLCh* const text2 = 0, + const XMLCh* const text3 = 0, + const XMLCh* const text4 = 0); + void reportSchemaError(const DOMElement* const elem, + const XMLCh* const msgDomain, + const int errorCode); + void reportSchemaError(const DOMElement* const elem, + const XMLCh* const msgDomain, + const int errorCode, + const XMLCh* const text1, + const XMLCh* const text2 = 0, + const XMLCh* const text3 = 0, + const XMLCh* const text4 = 0); + void reportSchemaError(const DOMElement* const elem, + const XMLException& except); + + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + /** + * Keep track of the xs:import found + */ + bool isImportingNS(const int namespaceURI); + void addImportedNS(const int namespaceURI); + + /** + * Retrieved the Namespace mapping from the schema element + */ + bool retrieveNamespaceMapping(const DOMElement* const elem); + + /** + * Loop through the children, and traverse the corresponding schema type + * type declaration (simpleType, complexType, import, ....) + */ + void processChildren(const DOMElement* const root); + void preprocessChildren(const DOMElement* const root); + + void preprocessImport(const DOMElement* const elemNode); + void preprocessInclude(const DOMElement* const elemNode); + void preprocessRedefine(const DOMElement* const elemNode); + + /** + * Parameters: + * rootElem - top element for a given type declaration + * contentElem - content must be annotation? or some other simple content + * isEmpty: - true if (annotation?, smth_else), false if (annotation?) + * processAnnot - default is true, false if reprocessing a complex type + * since we have already processed the annotation. + * + * Check for Annotation if it is present, traverse it. If a sibling is + * found and it is not an annotation return it, otherwise return 0. + * Used by traverseSimpleTypeDecl. + */ + DOMElement* checkContent(const DOMElement* const rootElem, + DOMElement* const contentElem, + const bool isEmpty, bool processAnnot = true); + + /** + * Parameters: + * contentElem - content element to check + * + * Check for identity constraints content. + */ + const DOMElement* checkIdentityConstraintContent(const DOMElement* const contentElem); + + DatatypeValidator* getDatatypeValidator(const XMLCh* const uriStr, + const XMLCh* const localPartStr); + + /** + * Process simpleType content of a list|restriction|union + * Return a dataype validator if valid type, otherwise 0. + */ + DatatypeValidator* checkForSimpleTypeValidator(const DOMElement* const content, + int baseRefContext = SchemaSymbols::XSD_EMPTYSET); + + /** + * Process complexType content of an element + * Return a ComplexTypeInfo if valid type, otherwise 0. + */ + ComplexTypeInfo* checkForComplexTypeInfo(const DOMElement* const content); + + /** + * Return DatatypeValidator available for the baseTypeStr. + */ + DatatypeValidator* findDTValidator(const DOMElement* const elem, + const XMLCh* const derivedTypeName, + const XMLCh* const baseTypeName, + const int baseRefContext); + + const XMLCh* resolvePrefixToURI(const DOMElement* const elem, + const XMLCh* const prefix); + + /** + * Return the prefix for a given rawname string + * + * Function allocated, caller managed (facm) - pointer to be deleted by + * caller. + */ + const XMLCh* getPrefix(const XMLCh* const rawName); + + /** + * Return the local for a given rawname string + * + * caller allocated, caller managed (cacm) + */ + const XMLCh* getLocalPart(const XMLCh* const rawName); + + /** + * Process a 'ref' of an Element declaration + */ + SchemaElementDecl* processElementDeclRef(const DOMElement* const elem, + const XMLCh* const refName); + void processElemDeclAttrs(const DOMElement* const elem, + SchemaElementDecl* const elemDecl, + const XMLCh*& valConstraint, + bool isTopLevel = false); + void processElemDeclIC(DOMElement* const elem, + SchemaElementDecl* const elemDecl); + bool checkElemDeclValueConstraint(const DOMElement* const elem, + SchemaElementDecl* const elemDecl, + const XMLCh* const valConstraint, + ComplexTypeInfo* const typeInfo, + DatatypeValidator* const validator); + + /** + * Process a 'ref' of an Attribute declaration + */ + void processAttributeDeclRef(const DOMElement* const elem, + ComplexTypeInfo* const typeInfo, + const XMLCh* const refName, + const XMLCh* const useVal, + const XMLCh* const defaultVal, + const XMLCh* const fixedVal); + + /** + * Process a 'ref' on a group + */ + XercesGroupInfo* processGroupRef(const DOMElement* const elem, + const XMLCh* const refName); + + /** + * Process a 'ref' on a attributeGroup + */ + XercesAttGroupInfo* processAttributeGroupRef(const DOMElement* const elem, + const XMLCh* const refName, + ComplexTypeInfo* const typeInfo); + + /** + * Parse block & final items + */ + int parseBlockSet(const DOMElement* const elem, const int blockType, const bool isRoot = false); + int parseFinalSet(const DOMElement* const elem, const int finalType, const bool isRoot = false); + + /** + * Return true if a name is an identity constraint, otherwise false + */ + bool isIdentityConstraintName(const XMLCh* const constraintName); + + /** + * If 'typeStr' belongs to a different schema, return that schema URI, + * otherwise return 0; + */ + const XMLCh* checkTypeFromAnotherSchema(const DOMElement* const elem, + const XMLCh* const typeStr); + + /** + * Return the datatype validator for a given element type attribute if + * the type is a simple type + */ + DatatypeValidator* getElementTypeValidator(const DOMElement* const elem, + const XMLCh* const typeStr, + bool& noErrorDetected, + const XMLCh* const otherSchemaURI); + + /** + * Return the complexType info for a given element type attribute if + * the type is a complex type + */ + ComplexTypeInfo* getElementComplexTypeInfo(const DOMElement* const elem, + const XMLCh* const typeStr, + const XMLCh* const otherSchemaURI); + + /** + * Return global schema element declaration for a given element name + */ + SchemaElementDecl* getGlobalElemDecl(const DOMElement* const elem, + const XMLCh* const name); + + /** + * Check validity constraint of a substitutionGroup attribute in + * an element declaration + */ + bool isSubstitutionGroupValid(const DOMElement* const elem, + const SchemaElementDecl* const elemDecl, + const ComplexTypeInfo* const typeInfo, + const DatatypeValidator* const validator, + const XMLCh* const elemName, + const bool toEmit = true); + + bool isSubstitutionGroupCircular(SchemaElementDecl* const elemDecl, + SchemaElementDecl* const subsElemDecl); + + void processSubstitutionGroup(const DOMElement* const elem, + SchemaElementDecl* const elemDecl, + ComplexTypeInfo*& typeInfo, + DatatypeValidator*& validator, + const XMLCh* const subsElemQName); + + /** + * Create a 'SchemaElementDecl' object and add it to SchemaGrammar + */ + SchemaElementDecl* createSchemaElementDecl(const DOMElement* const elem, + const XMLCh* const name, + bool& isDuplicate, + const XMLCh*& valConstraint, + const bool topLevel); + + /** + * Return the value of a given attribute name from an element node + */ + const XMLCh* getElementAttValue(const DOMElement* const elem, + const XMLCh* const attName, + const DatatypeValidator::ValidatorType attType = DatatypeValidator::UnKnown); + + /* return minOccurs */ + int checkMinMax(ContentSpecNode* const specNode, + const DOMElement* const elem, + const int allContext = Not_All_Context); + + /** + * Process complex content for a complexType + */ + void processComplexContent(const DOMElement* const elem, + const XMLCh* const typeName, + const DOMElement* const childElem, + ComplexTypeInfo* const typeInfo, + const XMLCh* const baseLocalPart, + const bool isMixed, + const bool isBaseAnyType = false); + + /** + * Process "base" information for a complexType + */ + void processBaseTypeInfo(const DOMElement* const elem, + const XMLCh* const baseName, + const XMLCh* const localPart, + const XMLCh* const uriStr, + ComplexTypeInfo* const typeInfo); + + /** + * Check if base is from another schema + */ + bool isBaseFromAnotherSchema(const XMLCh* const baseURI); + + /** + * Get complexType infp from another schema + */ + ComplexTypeInfo* getTypeInfoFromNS(const DOMElement* const elem, + const XMLCh* const uriStr, + const XMLCh* const localPart); + + DatatypeValidator* + getAttrDatatypeValidatorNS(const DOMElement* const elem, + const XMLCh* localPart, + const XMLCh* typeURI); + + /** + * Returns true if a DOM Element is an attribute or attribute group + */ + bool isAttrOrAttrGroup(const DOMElement* const elem); + + /** + * Process attributes of a complex type + */ + void processAttributes(const DOMElement* const elem, + const DOMElement* const attElem, + ComplexTypeInfo* const typeInfo, + const bool isBaseAnyType = false); + + /** + * Generate a name for an anonymous type + */ + const XMLCh* genAnonTypeName(const XMLCh* const prefix); + + void defaultComplexTypeInfo(ComplexTypeInfo* const typeInfo); + + /** + * Resolve a schema location attribute value to an input source. + * Caller to delete the returned object. + */ + InputSource* resolveSchemaLocation + ( + const XMLCh* const loc + , const XMLResourceIdentifier::ResourceIdentifierType resourceIdentitiferType + , const XMLCh* const nameSpace=0 + ); + + void restoreSchemaInfo(SchemaInfo* const toRestore, + SchemaInfo::ListType const aListType = SchemaInfo::INCLUDE, + const unsigned int saveScope = Grammar::TOP_LEVEL_SCOPE); + void popCurrentTypeNameStack(); + + /** + * Check whether a mixed content is emptiable or not. + * Needed to validate element constraint values (defualt, fixed) + */ + bool emptiableParticle(const ContentSpecNode* const specNode); + + void checkFixedFacet(const DOMElement* const, const XMLCh* const, + const DatatypeValidator* const, unsigned int&); + void buildValidSubstitutionListF(const DOMElement* const elem, + SchemaElementDecl* const, + SchemaElementDecl* const); + void buildValidSubstitutionListB(const DOMElement* const elem, + SchemaElementDecl* const, + SchemaElementDecl* const); + + void checkEnumerationRequiredNotation(const DOMElement* const elem, + const XMLCh* const name, + const XMLCh* const typeStr); + + void processElements(const DOMElement* const elem, + ComplexTypeInfo* const baseTypeInfo, + ComplexTypeInfo* const newTypeInfo); + + void processElements(const DOMElement* const elem, + XercesGroupInfo* const fromGroup, + ComplexTypeInfo* const typeInfo); + + void copyGroupElements(const DOMElement* const elem, + XercesGroupInfo* const fromGroup, + XercesGroupInfo* const toGroup, + ComplexTypeInfo* const typeInfo); + + void copyAttGroupAttributes(const DOMElement* const elem, + XercesAttGroupInfo* const fromAttGroup, + XercesAttGroupInfo* const toAttGroup, + ComplexTypeInfo* const typeInfo); + + void checkForEmptyTargetNamespace(const DOMElement* const elem); + + /** + * Attribute wild card intersection. + * + * Note: + * The first parameter will be the result of the intersection, so + * we need to make sure that first parameter is a copy of the + * actual attribute definition we need to intersect with. + * + * What we need to wory about is: type, defaultType, namespace, + * and URI. All remaining data members should be the same. + */ + void attWildCardIntersection(SchemaAttDef* const resultWildCart, + const SchemaAttDef* const toCompareWildCard); + + /** + * Attribute wild card union. + * + * Note: + * The first parameter will be the result of the union, so + * we need to make sure that first parameter is a copy of the + * actual attribute definition we need to intersect with. + * + * What we need to wory about is: type, defaultType, namespace, + * and URI. All remaining data members should be the same. + */ + void attWildCardUnion(SchemaAttDef* const resultWildCart, + const SchemaAttDef* const toCompareWildCard); + + void copyWildCardData(const SchemaAttDef* const srcWildCard, + SchemaAttDef* const destWildCard); + + /** + * Check that the attributes of a type derived by restriction satisfy + * the constraints of derivation valid restriction + */ + void checkAttDerivationOK(const DOMElement* const elem, + const ComplexTypeInfo* const baseTypeInfo, + const ComplexTypeInfo* const childTypeInfo); + void checkAttDerivationOK(const DOMElement* const elem, + const XercesAttGroupInfo* const baseAttGrpInfo, + const XercesAttGroupInfo* const childAttGrpInfo); + + /** + * Check whether a namespace value is valid with respect to wildcard + * constraint + */ + bool wildcardAllowsNamespace(const SchemaAttDef* const baseAttWildCard, + const unsigned int nameURI); + + /** + * Check whether a namespace constraint is an intensional subset of + * another namespace constraint + */ + bool isWildCardSubset(const SchemaAttDef* const baseAttWildCard, + const SchemaAttDef* const childAttWildCard); + + bool openRedefinedSchema(const DOMElement* const redefineElem); + + /** + * The purpose of this method is twofold: + * 1. To find and appropriately modify all information items + * in redefinedSchema with names that are redefined by children of + * redefineElem. + * 2. To make sure the redefine element represented by + * redefineElem is valid as far as content goes and with regard to + * properly referencing components to be redefined. + * + * No traversing is done here! + * This method also takes actions to find and, if necessary, modify + * the names of elements in 's in the schema that's being + * redefined. + */ + void renameRedefinedComponents(const DOMElement* const redefineElem, + SchemaInfo* const redefiningSchemaInfo, + SchemaInfo* const redefinedSchemaInfo); + + /** + * This method returns true if the redefine component is valid, and if + * it was possible to revise it correctly. + */ + bool validateRedefineNameChange(const DOMElement* const redefineChildElem, + const XMLCh* const redefineChildElemName, + const XMLCh* const redefineChildDeclName, + const int redefineNameCounter, + SchemaInfo* const redefiningSchemaInfo); + + /** + * This function looks among the children of 'redefineChildElem' for a + * component of type 'redefineChildComponentName'. If it finds one, it + * evaluates whether its ref attribute contains a reference to + * 'refChildTypeName'. If it does, it returns 1 + the value returned by + * calls to itself on all other children. In all other cases it returns + * 0 plus the sum of the values returned by calls to itself on + * redefineChildElem's children. It also resets the value of ref so that + * it will refer to the renamed type from the schema being redefined. + */ + int changeRedefineGroup(const DOMElement* const redefineChildElem, + const XMLCh* const redefineChildComponentName, + const XMLCh* const redefineChildTypeName, + const int redefineNameCounter); + + /** This simple function looks for the first occurrence of a + * 'redefineChildTypeName' item in the redefined schema and appropriately + * changes the value of its name. If it turns out that what we're looking + * for is in a though, then we just rename it--and it's + * reference--to be the same. + */ + void fixRedefinedSchema(const DOMElement* const elem, + SchemaInfo* const redefinedSchemaInfo, + const XMLCh* const redefineChildComponentName, + const XMLCh* const redefineChildTypeName, + const int redefineNameCounter); + + void getRedefineNewTypeName(const XMLCh* const oldTypeName, + const int redefineCounter, + XMLBuffer& newTypeName); + + /** + * This purpose of this method is threefold: + * 1. To extract the schema information of included/redefined schema. + * 2. Rename redefined components. + * 3. Process components of included/redefined schemas + */ + void preprocessRedefineInclude(SchemaInfo* const currSchemaInfo); + + /** + * Update the list of valid substitution groups in the case of circular + * import. + */ + void updateCircularSubstitutionList(SchemaInfo* const aSchemaInfo); + + void processKeyRefFor(SchemaInfo* const aSchemaInfo, + ValueVectorOf* const infoList); + + void processAttValue(const XMLCh* const attVal, XMLBuffer& aBuf); + + // routine to generate synthetic annotations + XSAnnotation* generateSyntheticAnnotation(const DOMElement* const elem + , ValueVectorOf* nonXSAttList); + + // routine to validate annotations + void validateAnnotations(); + + // ----------------------------------------------------------------------- + // Private constants + // ----------------------------------------------------------------------- + enum + { + ES_Block + , C_Block + , S_Final + , EC_Final + , ECS_Final + }; + + enum ExceptionCodes + { + NoException = 0, + InvalidComplexTypeInfo = 1, + RecursingElement = 2 + }; + + enum + { + Elem_Def_Qualified = 1, + Attr_Def_Qualified = 2 + }; + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fFullConstraintChecking; + int fTargetNSURI; + int fEmptyNamespaceURI; + unsigned int fCurrentScope; + unsigned int fScopeCount; + unsigned int fAnonXSTypeCount; + XMLSize_t fCircularCheckIndex; + const XMLCh* fTargetNSURIString; + DatatypeValidatorFactory* fDatatypeRegistry; + GrammarResolver* fGrammarResolver; + SchemaGrammar* fSchemaGrammar; + XMLEntityHandler* fEntityHandler; + XMLErrorReporter* fErrorReporter; + XMLStringPool* fURIStringPool; + XMLStringPool* fStringPool; + XMLBuffer fBuffer; + XMLScanner* fScanner; + RefHashTableOf* fAttributeDeclRegistry; + RefHashTableOf* fComplexTypeRegistry; + RefHashTableOf* fGroupRegistry; + RefHashTableOf* fAttGroupRegistry; + RefHashTableOf* fIC_ElementsNS; + RefHashTableOf* fPreprocessedNodes; + SchemaInfo* fSchemaInfo; + XercesGroupInfo* fCurrentGroupInfo; + XercesAttGroupInfo* fCurrentAttGroupInfo; + ComplexTypeInfo* fCurrentComplexType; + ValueVectorOf* fCurrentTypeNameStack; + ValueVectorOf* fCurrentGroupStack; + ValueVectorOf* fIC_Elements; + ValueVectorOf* fDeclStack; + ValueVectorOf** fGlobalDeclarations; + ValueVectorOf* fNonXSAttList; + ValueVectorOf* fImportedNSList; + RefHashTableOf, PtrHasher>* fIC_NodeListNS; + RefHash2KeysTableOf* fNotationRegistry; + RefHash2KeysTableOf* fRedefineComponents; + RefHash2KeysTableOf* fIdentityConstraintNames; + RefHash2KeysTableOf* fValidSubstitutionGroups; + RefHash2KeysTableOf* fSchemaInfoList; + RefHash2KeysTableOf* fCachedSchemaInfoList; + XSDDOMParser* fParser; + XSDErrorReporter fXSDErrorReporter; + XSDLocator* fLocator; + MemoryManager* fMemoryManager; + MemoryManager* fGrammarPoolMemoryManager; + XSAnnotation* fAnnotation; + GeneralAttributeCheck fAttributeCheck; + + friend class GeneralAttributeCheck; + friend class NamespaceScopeManager; +}; + + +// --------------------------------------------------------------------------- +// TraverseSchema: Helper methods +// --------------------------------------------------------------------------- +inline const XMLCh* TraverseSchema::getPrefix(const XMLCh* const rawName) { + + int colonIndex = XMLString::indexOf(rawName, chColon); + + if (colonIndex == -1 || colonIndex == 0) { + return XMLUni::fgZeroLenString; + } + + fBuffer.set(rawName, colonIndex); + + return fStringPool->getValueForId(fStringPool->addOrFind(fBuffer.getRawBuffer())); +} + +inline const XMLCh* TraverseSchema::getLocalPart(const XMLCh* const rawName) { + + int colonIndex = XMLString::indexOf(rawName, chColon); + XMLSize_t rawNameLen = XMLString::stringLen(rawName); + + if (XMLSize_t(colonIndex + 1) == rawNameLen) { + return XMLUni::fgZeroLenString; + } + + if (colonIndex == -1) { + fBuffer.set(rawName, rawNameLen); + } + else { + + fBuffer.set(rawName + colonIndex + 1, rawNameLen - colonIndex - 1); + } + + return fStringPool->getValueForId(fStringPool->addOrFind(fBuffer.getRawBuffer())); +} + +inline void +TraverseSchema::checkForEmptyTargetNamespace(const DOMElement* const elem) { + + const XMLCh* targetNS = getElementAttValue(elem, SchemaSymbols::fgATT_TARGETNAMESPACE); + + if (targetNS && !*targetNS) { + reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidTargetNSValue); + } +} + +inline bool TraverseSchema::isBaseFromAnotherSchema(const XMLCh* const baseURI) +{ + if (!XMLString::equals(baseURI,fTargetNSURIString) + && !XMLString::equals(baseURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) + && (baseURI && *baseURI)) { + //REVISIT, !!!! a hack: for schema that has no + //target namespace, e.g. personal-schema.xml + return true; + } + + return false; +} + +inline bool TraverseSchema::isAttrOrAttrGroup(const DOMElement* const elem) { + + const XMLCh* elementName = elem->getLocalName(); + + if (XMLString::equals(elementName, SchemaSymbols::fgELT_ATTRIBUTE) || + XMLString::equals(elementName, SchemaSymbols::fgELT_ATTRIBUTEGROUP) || + XMLString::equals(elementName, SchemaSymbols::fgELT_ANYATTRIBUTE)) { + return true; + } + + return false; +} + +inline const XMLCh* TraverseSchema::genAnonTypeName(const XMLCh* const prefix) { + + XMLCh anonCountStr[16]; // a count of 15 digits should be enough + + XMLString::sizeToText(fAnonXSTypeCount++, anonCountStr, 15, 10, fMemoryManager); + fBuffer.set(prefix); + fBuffer.append(anonCountStr); + + return fStringPool->getValueForId(fStringPool->addOrFind(fBuffer.getRawBuffer())); +} + +inline void TraverseSchema::popCurrentTypeNameStack() { + + XMLSize_t stackSize = fCurrentTypeNameStack->size(); + + if (stackSize != 0) { + fCurrentTypeNameStack->removeElementAt(stackSize - 1); + } +} + +inline void +TraverseSchema::copyWildCardData(const SchemaAttDef* const srcWildCard, + SchemaAttDef* const destWildCard) { + + destWildCard->getAttName()->setURI(srcWildCard->getAttName()->getURI()); + destWildCard->setType(srcWildCard->getType()); + destWildCard->setDefaultType(srcWildCard->getDefaultType()); +} + +inline void TraverseSchema::getRedefineNewTypeName(const XMLCh* const oldTypeName, + const int redefineCounter, + XMLBuffer& newTypeName) { + + newTypeName.set(oldTypeName); + + for (int i=0; i < redefineCounter; i++) { + newTypeName.append(SchemaSymbols::fgRedefIdentifier); + } +} + +inline bool TraverseSchema::isImportingNS(const int namespaceURI) { + + if (!fImportedNSList) + return false; + + return (fImportedNSList->containsElement(namespaceURI)); +} + +inline void TraverseSchema::addImportedNS(const int namespaceURI) { + + if (!fImportedNSList) { + fImportedNSList = new (fMemoryManager) ValueVectorOf(4, fMemoryManager); + } + + if (!fImportedNSList->containsElement(namespaceURI)) + fImportedNSList->addElement(namespaceURI); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file TraverseSchema.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp new file mode 100644 index 000000000000..f284a0571822 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp @@ -0,0 +1,185 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLSCHEMADESCRIPTIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLSCHEMADESCRIPTIONIMPL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLAttDefs; + +class XMLPARSER_EXPORT XMLSchemaDescriptionImpl : public XMLSchemaDescription +{ +public : + // ----------------------------------------------------------------------- + /** @name constructor and destructor */ + // ----------------------------------------------------------------------- + //@{ + XMLSchemaDescriptionImpl( + const XMLCh* const targetNamespace + , MemoryManager* const memMgr + ); + + ~XMLSchemaDescriptionImpl(); + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of GrammarDescription Interface */ + // ----------------------------------------------------------------------- + //@{ + /** + * getGrammarKey + * + */ + virtual const XMLCh* getGrammarKey() const; + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of SchemaDescription Interface */ + // ----------------------------------------------------------------------- + //@{ + + /** + * getContextType + * + */ + virtual ContextType getContextType() const; + + /** + * getTargetNamespace + * + */ + virtual const XMLCh* getTargetNamespace() const; + + /** + * getLocationHints + * + */ + virtual const RefArrayVectorOf* getLocationHints() const; + + /** + * getTriggeringComponent + * + */ + virtual const QName* getTriggeringComponent() const; + + /** + * getenclosingElementName + * + */ + virtual const QName* getEnclosingElementName() const; + + /** + * getAttributes + * + */ + virtual const XMLAttDef* getAttributes() const; + + /** + * setContextType + * + */ + virtual void setContextType(ContextType); + + /** + * setTargetNamespace + * + */ + virtual void setTargetNamespace(const XMLCh* const); + + /** + * setLocationHints + * + */ + virtual void setLocationHints(const XMLCh* const); + + /** + * setTriggeringComponent + * + */ + virtual void setTriggeringComponent(QName* const); + + /** + * getenclosingElementName + * + */ + virtual void setEnclosingElementName(QName* const); + + /** + * setAttributes + * + */ + virtual void setAttributes(XMLAttDef* const); + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLSchemaDescriptionImpl) + + XMLSchemaDescriptionImpl(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); + +private : + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + XMLSchemaDescriptionImpl(const XMLSchemaDescriptionImpl& ); + XMLSchemaDescriptionImpl& operator=(const XMLSchemaDescriptionImpl& ); + //@} + + // ----------------------------------------------------------------------- + // Private data members + // + // All data member in this implementation are owned to out survive + // parser. Except for fNamespace which is replicated upon set, the + // rest shall be created by the embedded memoryManager. + // + // fContextType + // + // fNamespace owned + // + // fLocationHints owned + // + // fTriggeringComponent owned + // + // fEnclosingElementName owned + // + // fAttributes referenced + // + // ----------------------------------------------------------------------- + + XMLSchemaDescription::ContextType fContextType; + const XMLCh* fNamespace; + RefArrayVectorOf* fLocationHints; + const QName* fTriggeringComponent; + const QName* fEnclosingElementName; + const XMLAttDef* fAttributes; + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XSDDOMParser.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XSDDOMParser.hpp new file mode 100644 index 000000000000..43cf11cc8ac7 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XSDDOMParser.hpp @@ -0,0 +1,322 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSDDOMPARSER_HPP) +#define XERCESC_INCLUDE_GUARD_XSDDOMPARSER_HPP + + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMElement; +class XMLValidator; + + +/** + * This class is used to parse schema documents into DOM trees + */ +class PARSERS_EXPORT XSDDOMParser : public XercesDOMParser +{ +public : + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors and Destructor */ + //@{ + /** Construct a XSDDOMParser, with an optional validator + * + * Constructor with an instance of validator class to use for + * validation. If you don't provide a validator, a default one will + * be created for you in the scanner. + * + * @param gramPool Pointer to the grammar pool instance from + * external application. + * The parser does NOT own it. + * + * @param valToAdopt Pointer to the validator instance to use. The + * parser is responsible for freeing the memory. + */ + XSDDOMParser + ( + XMLValidator* const valToAdopt = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , XMLGrammarPool* const gramPool = 0 + ); + + /** + * Destructor + */ + ~XSDDOMParser(); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the XMLDocumentHandler interface. + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLDocumentHandler interface. */ + //@{ + + /** Handle a start element event + * + * This method is used to report the start of an element. It is + * called at the end of the element, by which time all attributes + * specified are also parsed. A new DOM Element node is created + * along with as many attribute nodes as required. This new element + * is added appended as a child of the current node in the tree, and + * then replaces it as the current node (if the isEmpty flag is false.) + * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + * @param attrList A const reference to the object containing the + * list of attributes just scanned for this element. + * @param attrCount A count of number of attributes in the list + * specified by the parameter 'attrList'. + * @param isEmpty A flag indicating whether this is an empty element + * or not. If empty, then no endElement() call will + * be made. + * @param isRoot A flag indicating whether this element was the + * root element. + * @see DocumentHandler#startElement + */ + virtual void startElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const XMLCh* const elemPrefix + , const RefVectorOf& attrList + , const XMLSize_t attrCount + , const bool isEmpty + , const bool isRoot + ); + + /** Handle and end of element event + * + * This method is used to indicate the end tag of an element. The + * DOM parser pops the current element off the top of the element + * stack, and make it the new current element. + * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param isRoot A flag indicating whether this element was the + * root element. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + */ + virtual void endElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const bool isRoot + , const XMLCh* const elemPrefix + ); + + /** Handle document character events + * + * This method is used to report all the characters scanned by the + * parser. This DOM implementation stores this data in the appropriate + * DOM node, creating one if necessary. + * + * @param chars A const pointer to a Unicode string representing the + * character data. + * @param length The length of the Unicode string returned in 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + */ + virtual void docCharacters + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + /** Handle a document comment event + * + * This method is used to report any comments scanned by the parser. + * A new comment node is created which stores this data. + * + * @param comment A const pointer to a null terminated Unicode + * string representing the comment text. + */ + virtual void docComment + ( + const XMLCh* const comment + ); + + /** Handle a start entity reference event + * + * This method is used to indicate the start of an entity reference. + * If the expand entity reference flag is true, then a new + * DOM Entity reference node is created. + * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void startEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** Handle and end of entity reference event + * + * This method is used to indicate that an end of an entity reference + * was just scanned. + * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void endEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** Handle an ignorable whitespace vent + * + * This method is used to report all the whitespace characters, which + * are determined to be 'ignorable'. This distinction between characters + * is only made, if validation is enabled. + * + * Any whitespace before content is ignored. If the current node is + * already of type DOMNode::TEXT_NODE, then these whitespaces are + * appended, otherwise a new Text node is created which stores this + * data. Essentially all contiguous ignorable characters are collected + * in one node. + * + * @param chars A const pointer to a Unicode string representing the + * ignorable whitespace character data. + * @param length The length of the Unicode string 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + //@} + + // ----------------------------------------------------------------------- + // Get methods + // ----------------------------------------------------------------------- + bool getSawFatal() const; + + + // ----------------------------------------------------------------------- + // Set methods + // ----------------------------------------------------------------------- + void setUserErrorReporter(XMLErrorReporter* const errorReporter); + void setUserEntityHandler(XMLEntityHandler* const entityHandler); + + + // ----------------------------------------------------------------------- + // XMLErrorReporter interface + // ----------------------------------------------------------------------- + virtual void error + ( + const unsigned int errCode + , const XMLCh* const errDomain + , const ErrTypes type + , const XMLCh* const errorText + , const XMLCh* const systemId + , const XMLCh* const publicId + , const XMLFileLoc lineNum + , const XMLFileLoc colNum + ); + + // ----------------------------------------------------------------------- + // XMLEntityHandler interface + // ----------------------------------------------------------------------- + virtual InputSource* resolveEntity(XMLResourceIdentifier* resourceIdentifier); + +protected : + // ----------------------------------------------------------------------- + // Protected Helper methods + // ----------------------------------------------------------------------- + virtual DOMElement* createElementNSNode(const XMLCh *fNamespaceURI, + const XMLCh *qualifiedName); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSDDOMParser(const XSDDOMParser&); + XSDDOMParser& operator=(const XSDDOMParser&); + + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + void startAnnotation + ( + const XMLElementDecl& elemDecl + , const RefVectorOf& attrList + , const XMLSize_t attrCount + ); + void startAnnotationElement + ( + const XMLElementDecl& elemDecl + , const RefVectorOf& attrList + , const XMLSize_t attrCount + ); + void endAnnotationElement + ( + const XMLElementDecl& elemDecl + , bool complete + ); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fSawFatal; + int fAnnotationDepth; + int fInnerAnnotationDepth; + int fDepth; + XMLErrorReporter* fUserErrorReporter; + XMLEntityHandler* fUserEntityHandler; + ValueVectorOf* fURIs; + XMLBuffer fAnnotationBuf; + XSDErrorReporter fXSDErrorReporter; + XSDLocator fXSLocator; +}; + + +inline bool XSDDOMParser::getSawFatal() const +{ + return fSawFatal; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XSDErrorReporter.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XSDErrorReporter.hpp new file mode 100644 index 000000000000..39055a58d396 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XSDErrorReporter.hpp @@ -0,0 +1,115 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSDERRORREPORTER_HPP) +#define XERCESC_INCLUDE_GUARD_XSDERRORREPORTER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class Locator; +class XMLErrorReporter; + + +/** + * This class reports schema errors + */ +class VALIDATORS_EXPORT XSDErrorReporter : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors are hidden, only the virtual destructor is exposed + // ----------------------------------------------------------------------- + XSDErrorReporter(XMLErrorReporter* const errorReporter = 0); + + virtual ~XSDErrorReporter() + { + } + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getExitOnFirstFatal() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setErrorReporter(XMLErrorReporter* const errorReporter); + void setExitOnFirstFatal(const bool newValue); + + // ----------------------------------------------------------------------- + // Report error methods + // ----------------------------------------------------------------------- + void emitError(const unsigned int toEmit, + const XMLCh* const msgDomain, + const Locator* const aLocator); + void emitError(const unsigned int toEmit, + const XMLCh* const msgDomain, + const Locator* const aLocator, + const XMLCh* const text1, + const XMLCh* const text2 = 0, + const XMLCh* const text3 = 0, + const XMLCh* const text4 = 0, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + void emitError(const XMLException& except, + const Locator* const aLocator); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and destructor + // ----------------------------------------------------------------------- + XSDErrorReporter(const XSDErrorReporter&); + XSDErrorReporter& operator=(const XSDErrorReporter&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fExitOnFirstFatal; + XMLErrorReporter* fErrorReporter; +}; + + +// --------------------------------------------------------------------------- +// XSDErrorReporter: Getter methods +// --------------------------------------------------------------------------- +inline bool XSDErrorReporter::getExitOnFirstFatal() const +{ + return fExitOnFirstFatal; +} + +// --------------------------------------------------------------------------- +// XSDErrorReporter: Setter methods +// --------------------------------------------------------------------------- +inline void XSDErrorReporter::setExitOnFirstFatal(const bool newValue) +{ + fExitOnFirstFatal = newValue; +} + +inline void XSDErrorReporter::setErrorReporter(XMLErrorReporter* const errorReporter) +{ + fErrorReporter = errorReporter; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XSDLocator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XSDLocator.hpp new file mode 100644 index 000000000000..9bc8dd89fcb0 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XSDLocator.hpp @@ -0,0 +1,141 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSDLOCATOR_HPP) +#define XERCESC_INCLUDE_GUARD_XSDLOCATOR_HPP + +/** + * A Locator implementation + */ + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT XSDLocator: public XMemory, public Locator +{ +public: + + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + XSDLocator(); + + /** Destructor */ + virtual ~XSDLocator() + { + } + + //@} + + /** @name The locator interface */ + //@{ + /** + * Return the public identifier for the current document event. + *

This will be the public identifier + * @return A string containing the public identifier, or + * null if none is available. + * @see #getSystemId + */ + virtual const XMLCh* getPublicId() const; + + /** + * Return the system identifier for the current document event. + * + *

If the system identifier is a URL, the parser must resolve it + * fully before passing it to the application.

+ * + * @return A string containing the system identifier, or null + * if none is available. + * @see #getPublicId + */ + virtual const XMLCh* getSystemId() const; + + /** + * Return the line number where the current document event ends. + * Note that this is the line position of the first character + * after the text associated with the document event. + * @return The line number, or 0 if none is available. + * @see #getColumnNumber + */ + virtual XMLFileLoc getLineNumber() const; + + /** + * Return the column number where the current document event ends. + * Note that this is the column number of the first + * character after the text associated with the document + * event. The first column in a line is position 1. + * @return The column number, or 0 if none is available. + * @see #getLineNumber + */ + virtual XMLFileLoc getColumnNumber() const; + //@} + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setValues(const XMLCh* const systemId, + const XMLCh* const publicId, + const XMLFileLoc lineNo, const XMLFileLoc columnNo); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and destructor + // ----------------------------------------------------------------------- + XSDLocator(const XSDLocator&); + XSDLocator& operator=(const XSDLocator&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + XMLFileLoc fLineNo; + XMLFileLoc fColumnNo; + const XMLCh* fSystemId; + const XMLCh* fPublicId; +}; + +// --------------------------------------------------------------------------- +// XSDLocator: Getter methods +// --------------------------------------------------------------------------- +inline XMLFileLoc XSDLocator::getLineNumber() const +{ + return fLineNo; +} + +inline XMLFileLoc XSDLocator::getColumnNumber() const +{ + return fColumnNo; +} + +inline const XMLCh* XSDLocator::getPublicId() const +{ + return fPublicId; +} + +inline const XMLCh* XSDLocator::getSystemId() const +{ + return fSystemId; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XUtil.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XUtil.hpp new file mode 100644 index 000000000000..c07e9edcd1fb --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XUtil.hpp @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XUTIL_HPP) +#define XERCESC_INCLUDE_GUARD_XUTIL_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMNode; +class DOMElement; + +/** + * Some useful utility methods. + */ +class VALIDATORS_EXPORT XUtil +{ +public: + + // Finds and returns the first child element node. + static DOMElement* getFirstChildElement(const DOMNode* const parent); + + // Finds and returns the first child node with the given qualifiedname. + static DOMElement* getFirstChildElementNS(const DOMNode* const parent + , const XMLCh** const elemNames + , const XMLCh* const uriStr + , unsigned int length); + + // Finds and returns the next sibling element node. + static DOMElement* getNextSiblingElement(const DOMNode* const node); + + static DOMElement* getNextSiblingElementNS(const DOMNode* const node + , const XMLCh** const elemNames + , const XMLCh* const uriStr + , unsigned int length); + +private: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + // This class cannot be instantiated. + XUtil() {}; + ~XUtil() {}; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XercesAttGroupInfo.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XercesAttGroupInfo.hpp new file mode 100644 index 000000000000..93b7ea746897 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XercesAttGroupInfo.hpp @@ -0,0 +1,257 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XERCESATTGROUPINFO_HPP) +#define XERCESC_INCLUDE_GUARD_XERCESATTGROUPINFO_HPP + + +/** + * The class act as a place holder to store attributeGroup information. + * + * The class is intended for internal use. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT XercesAttGroupInfo : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constructors/Destructor + // ----------------------------------------------------------------------- + XercesAttGroupInfo + ( + unsigned int attGroupNameId + , unsigned int attGroupNamespaceId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~XercesAttGroupInfo(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool containsTypeWithId() const; + XMLSize_t attributeCount() const; + XMLSize_t anyAttributeCount() const; + unsigned int getNameId() const; + unsigned int getNamespaceId() const; + SchemaAttDef* attributeAt(const XMLSize_t index); + const SchemaAttDef* attributeAt(const XMLSize_t index) const; + SchemaAttDef* anyAttributeAt(const XMLSize_t index); + const SchemaAttDef* anyAttributeAt(const XMLSize_t index) const; + SchemaAttDef* getCompleteWildCard() const; + const SchemaAttDef* getAttDef(const XMLCh* const baseName, + const int uriId) const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setTypeWithId(const bool other); + void addAttDef(SchemaAttDef* const toAdd, const bool toClone = false); + void addAnyAttDef(SchemaAttDef* const toAdd, const bool toClone = false); + void setCompleteWildCard(SchemaAttDef* const toSet); + + // ----------------------------------------------------------------------- + // Query methods + // ----------------------------------------------------------------------- + bool containsAttribute(const XMLCh* const name, const unsigned int uri); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesAttGroupInfo) + XercesAttGroupInfo(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XercesAttGroupInfo(const XercesAttGroupInfo& elemInfo); + XercesAttGroupInfo& operator= (const XercesAttGroupInfo& other); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fTypeWithId; + unsigned int fNameId; + unsigned int fNamespaceId; + RefVectorOf* fAttributes; + RefVectorOf* fAnyAttributes; + SchemaAttDef* fCompleteWildCard; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// XercesAttGroupInfo: Getter methods +// --------------------------------------------------------------------------- +inline bool XercesAttGroupInfo::containsTypeWithId() const { + + return fTypeWithId; +} + +inline XMLSize_t XercesAttGroupInfo::attributeCount() const { + + if (fAttributes) { + return fAttributes->size(); + } + + return 0; +} + +inline XMLSize_t XercesAttGroupInfo::anyAttributeCount() const { + + if (fAnyAttributes) { + return fAnyAttributes->size(); + } + + return 0; +} + +inline unsigned int XercesAttGroupInfo::getNameId() const +{ + return fNameId; +} + +inline unsigned int XercesAttGroupInfo::getNamespaceId() const +{ + return fNamespaceId; +} + +inline SchemaAttDef* +XercesAttGroupInfo::attributeAt(const XMLSize_t index) { + + if (fAttributes) { + return fAttributes->elementAt(index); + } + + return 0; +} + +inline const SchemaAttDef* +XercesAttGroupInfo::attributeAt(const XMLSize_t index) const { + + if (fAttributes) { + return fAttributes->elementAt(index); + } + + return 0; +} + +inline SchemaAttDef* +XercesAttGroupInfo::anyAttributeAt(const XMLSize_t index) { + + if (fAnyAttributes) { + return fAnyAttributes->elementAt(index); + } + + return 0; +} + +inline const SchemaAttDef* +XercesAttGroupInfo::anyAttributeAt(const XMLSize_t index) const { + + if (fAnyAttributes) { + return fAnyAttributes->elementAt(index); + } + + return 0; +} + +inline SchemaAttDef* +XercesAttGroupInfo::getCompleteWildCard() const { + + return fCompleteWildCard; +} + +// --------------------------------------------------------------------------- +// XercesAttGroupInfo: Setter methods +// --------------------------------------------------------------------------- +inline void XercesAttGroupInfo::setTypeWithId(const bool other) { + + fTypeWithId = other; +} + +inline void XercesAttGroupInfo::addAttDef(SchemaAttDef* const toAdd, + const bool toClone) { + + if (!fAttributes) { + fAttributes = new (fMemoryManager) RefVectorOf(4, true, fMemoryManager); + } + + if (toClone) { + SchemaAttDef* clonedAttDef = new (fMemoryManager) SchemaAttDef(toAdd); + + if (!clonedAttDef->getBaseAttDecl()) + clonedAttDef->setBaseAttDecl(toAdd); + + fAttributes->addElement(clonedAttDef); + } + else { + fAttributes->addElement(toAdd); + } +} + +inline void XercesAttGroupInfo::addAnyAttDef(SchemaAttDef* const toAdd, + const bool toClone) { + + if (!fAnyAttributes) { + fAnyAttributes = new (fMemoryManager) RefVectorOf(2, true, fMemoryManager); + } + + if (toClone) { + SchemaAttDef* clonedAttDef = new (fMemoryManager) SchemaAttDef(toAdd); + + if (!clonedAttDef->getBaseAttDecl()) + clonedAttDef->setBaseAttDecl(toAdd); + + fAnyAttributes->addElement(clonedAttDef); + } + else { + fAnyAttributes->addElement(toAdd); + } +} + +inline void +XercesAttGroupInfo::setCompleteWildCard(SchemaAttDef* const toSet) { + + if (fCompleteWildCard) { + delete fCompleteWildCard; + } + + fCompleteWildCard = toSet; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XercesAttGroupInfo.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XercesElementWildcard.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XercesElementWildcard.hpp new file mode 100644 index 000000000000..b47d6289c313 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XercesElementWildcard.hpp @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XERCESELEMENTWILDCARD_HPP) +#define XERCESC_INCLUDE_GUARD_XERCESELEMENTWILDCARD_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward declarations +// --------------------------------------------------------------------------- +class SchemaGrammar; + + +class VALIDATORS_EXPORT XercesElementWildcard +{ + +public : + + // ----------------------------------------------------------------------- + // Class static methods + // ----------------------------------------------------------------------- + /* + * check whether two elements are in conflict + */ + static bool conflict(SchemaGrammar* const pGrammar, + ContentSpecNode::NodeTypes type1, + QName* q1, + ContentSpecNode::NodeTypes type2, + QName* q2, + SubstitutionGroupComparator* comparator); + +private: + + // ----------------------------------------------------------------------- + // private helper methods + // ----------------------------------------------------------------------- + static bool uriInWildcard(SchemaGrammar* const pGrammar, + QName* qname, + unsigned int wildcard, + ContentSpecNode::NodeTypes wtype, + SubstitutionGroupComparator* comparator); + + static bool wildcardIntersect(ContentSpecNode::NodeTypes t1, + unsigned int w1, + ContentSpecNode::NodeTypes t2, + unsigned int w2); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XercesElementWildcard(); + ~XercesElementWildcard(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif // XERCESELEMENTWILDCARD_HPP + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XercesGroupInfo.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XercesGroupInfo.hpp new file mode 100644 index 000000000000..3cd10586062f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/XercesGroupInfo.hpp @@ -0,0 +1,204 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XERCESGROUPINFO_HPP) +#define XERCESC_INCLUDE_GUARD_XERCESGROUPINFO_HPP + + +/** + * The class act as a place holder to store group information. + * + * The class is intended for internal use. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- +class ContentSpecNode; +class XSDLocator; + + +class VALIDATORS_EXPORT XercesGroupInfo : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constructors/Destructor + // ----------------------------------------------------------------------- + XercesGroupInfo + ( + unsigned int groupNameId + , unsigned int groupNamespaceId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~XercesGroupInfo(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getCheckElementConsistency() const; + unsigned int getScope() const; + XMLSize_t elementCount() const; + ContentSpecNode* getContentSpec() const; + SchemaElementDecl* elementAt(const XMLSize_t index); + const SchemaElementDecl* elementAt(const XMLSize_t index) const; + XSDLocator* getLocator() const; + XercesGroupInfo* getBaseGroup() const; + unsigned int getNameId() const; + unsigned int getNamespaceId() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setScope(const unsigned int other); + void setContentSpec(ContentSpecNode* const other); + void addElement(SchemaElementDecl* const toAdd); + void setLocator(XSDLocator* const aLocator); + void setBaseGroup(XercesGroupInfo* const baseGroup); + void setCheckElementConsistency(const bool aValue); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesGroupInfo) + XercesGroupInfo(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XercesGroupInfo(const XercesGroupInfo& elemInfo); + XercesGroupInfo& operator= (const XercesGroupInfo& other); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fCheckElementConsistency; + unsigned int fScope; + unsigned int fNameId; + unsigned int fNamespaceId; + ContentSpecNode* fContentSpec; + RefVectorOf* fElements; + XercesGroupInfo* fBaseGroup; // redefine by restriction + XSDLocator* fLocator; +}; + +// --------------------------------------------------------------------------- +// XercesGroupInfo: Getter methods +// --------------------------------------------------------------------------- +inline unsigned int XercesGroupInfo::getScope() const { + + return fScope; +} + +inline XMLSize_t XercesGroupInfo::elementCount() const { + + return fElements->size(); +} + +inline ContentSpecNode* XercesGroupInfo::getContentSpec() const { + + return fContentSpec; +} + +inline SchemaElementDecl* +XercesGroupInfo::elementAt(const XMLSize_t index) { + + return fElements->elementAt(index); +} + +inline const SchemaElementDecl* +XercesGroupInfo::elementAt(const XMLSize_t index) const { + + return fElements->elementAt(index); +} + +inline XSDLocator* XercesGroupInfo::getLocator() const { + + return fLocator; +} + +inline XercesGroupInfo* XercesGroupInfo::getBaseGroup() const { + + return fBaseGroup; +} + +inline bool XercesGroupInfo::getCheckElementConsistency() const { + + return fCheckElementConsistency; +} + +inline unsigned int XercesGroupInfo::getNameId() const +{ + return fNameId; +} + +inline unsigned int XercesGroupInfo::getNamespaceId() const +{ + return fNamespaceId; +} + +// --------------------------------------------------------------------------- +// XercesGroupInfo: Setter methods +// ---------------------------------------------------------------------------} +inline void XercesGroupInfo::setScope(const unsigned int other) { + + fScope = other; +} + +inline void XercesGroupInfo::setContentSpec(ContentSpecNode* const other) { + + fContentSpec = other; +} + +inline void XercesGroupInfo::addElement(SchemaElementDecl* const elem) { + + if (!fElements->containsElement(elem)) + fElements->addElement(elem); +} + +inline void XercesGroupInfo::setBaseGroup(XercesGroupInfo* const baseGroup) { + + fBaseGroup = baseGroup; +} + +inline void XercesGroupInfo::setCheckElementConsistency(const bool aValue) { + + fCheckElementConsistency = aValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XercesGroupInfo.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/FieldActivator.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/FieldActivator.hpp new file mode 100644 index 000000000000..6e9dda3f9973 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/FieldActivator.hpp @@ -0,0 +1,141 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_FIELDACTIVATOR_HPP) +#define XERCESC_INCLUDE_GUARD_FIELDACTIVATOR_HPP + +/** + * This class is responsible for activating fields within a specific scope; + * the caller merely requests the fields to be activated. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class IdentityConstraint; +class XPathMatcher; +class ValueStoreCache; +class IC_Field; +class XPathMatcherStack; + + +class VALIDATORS_EXPORT FieldActivator : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + FieldActivator(ValueStoreCache* const valueStoreCache, + XPathMatcherStack* const matcherStack, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + FieldActivator(const FieldActivator& other); + ~FieldActivator(); + + // ----------------------------------------------------------------------- + // Operator methods + // ----------------------------------------------------------------------- + FieldActivator& operator =(const FieldActivator& other); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getMayMatch(IC_Field* const field); + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setValueStoreCache(ValueStoreCache* const other); + void setMatcherStack(XPathMatcherStack* const matcherStack); + void setMayMatch(IC_Field* const field, bool value); + + // ----------------------------------------------------------------------- + // Activation methods + // ----------------------------------------------------------------------- + /** + * Start the value scope for the specified identity constraint. This + * method is called when the selector matches in order to initialize + * the value store. + */ + void startValueScopeFor(const IdentityConstraint* const ic, const int initialDepth); + + /** + * Request to activate the specified field. This method returns the + * matcher for the field. + */ + XPathMatcher* activateField(IC_Field* const field, const int initialDepth); + + /** + * Ends the value scope for the specified identity constraint. + */ + void endValueScopeFor(const IdentityConstraint* const ic, const int initialDepth); + +private: + // ----------------------------------------------------------------------- + // Data + // ----------------------------------------------------------------------- + ValueStoreCache* fValueStoreCache; + XPathMatcherStack* fMatcherStack; + ValueHashTableOf* fMayMatch; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// FieldActivator: Getter methods +// --------------------------------------------------------------------------- +inline bool FieldActivator::getMayMatch(IC_Field* const field) { + + return fMayMatch->get(field); +} + +// --------------------------------------------------------------------------- +// FieldActivator: Setter methods +// --------------------------------------------------------------------------- +inline void FieldActivator::setValueStoreCache(ValueStoreCache* const other) { + + fValueStoreCache = other; +} + +inline void +FieldActivator::setMatcherStack(XPathMatcherStack* const matcherStack) { + + fMatcherStack = matcherStack; +} + +inline void FieldActivator::setMayMatch(IC_Field* const field, bool value) { + + fMayMatch->put(field, value); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file FieldActivator.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/FieldValueMap.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/FieldValueMap.hpp new file mode 100644 index 000000000000..dd39eb705c54 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/FieldValueMap.hpp @@ -0,0 +1,198 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_FIELDVALUEMAP_HPP) +#define XERCESC_INCLUDE_GUARD_FIELDVALUEMAP_HPP + +/** + * This class maps values associated with fields of an identity constraint + * that have successfully matched some string in an instance document. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class IC_Field; +class DatatypeValidator; + + +class VALIDATORS_EXPORT FieldValueMap : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + FieldValueMap(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + FieldValueMap(const FieldValueMap& other); + ~FieldValueMap(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + DatatypeValidator* getDatatypeValidatorAt(const XMLSize_t index) const; + DatatypeValidator* getDatatypeValidatorFor(const IC_Field* const key) const; + XMLCh* getValueAt(const XMLSize_t index) const; + XMLCh* getValueFor(const IC_Field* const key) const; + IC_Field* keyAt(const XMLSize_t index) const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void put(IC_Field* const key, DatatypeValidator* const dv, + const XMLCh* const value); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + XMLSize_t size() const; + bool indexOf(const IC_Field* const key, XMLSize_t& location) const; + void clear(); + +private: + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Unimplemented operators + // ----------------------------------------------------------------------- + FieldValueMap& operator= (const FieldValueMap& other); + + // ----------------------------------------------------------------------- + // Data + // ----------------------------------------------------------------------- + ValueVectorOf* fFields; + ValueVectorOf* fValidators; + RefArrayVectorOf* fValues; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// FieldValueMap: Getter methods +// --------------------------------------------------------------------------- +inline DatatypeValidator* +FieldValueMap::getDatatypeValidatorAt(const XMLSize_t index) const { + + if (fValidators) { + return fValidators->elementAt(index); + } + + return 0; +} + +inline DatatypeValidator* +FieldValueMap::getDatatypeValidatorFor(const IC_Field* const key) const { + + XMLSize_t location; + if (fValidators && indexOf(key, location)) { + return fValidators->elementAt(location); + } + + return 0; +} + +inline XMLCh* FieldValueMap::getValueAt(const XMLSize_t index) const { + + if (fValues) { + return fValues->elementAt(index); + } + + return 0; +} + +inline XMLCh* FieldValueMap::getValueFor(const IC_Field* const key) const { + + XMLSize_t location; + if (fValues && indexOf(key, location)) { + return fValues->elementAt(location); + } + + return 0; +} + +inline IC_Field* FieldValueMap::keyAt(const XMLSize_t index) const { + + if (fFields) { + return fFields->elementAt(index); + } + + return 0; +} + +// --------------------------------------------------------------------------- +// FieldValueMap: Helper methods +// --------------------------------------------------------------------------- +inline XMLSize_t FieldValueMap::size() const { + + if (fFields) { + return fFields->size(); + } + + return 0; +} + +// --------------------------------------------------------------------------- +// FieldValueMap: Setter methods +// --------------------------------------------------------------------------- +inline void FieldValueMap::put(IC_Field* const key, + DatatypeValidator* const dv, + const XMLCh* const value) { + + if (!fFields) { + fFields = new (fMemoryManager) ValueVectorOf(4, fMemoryManager); + fValidators = new (fMemoryManager) ValueVectorOf(4, fMemoryManager); + fValues = new (fMemoryManager) RefArrayVectorOf(4, true, fMemoryManager); + } + + XMLSize_t keyIndex; + bool bFound=indexOf(key, keyIndex); + + if (!bFound) { + + fFields->addElement(key); + fValidators->addElement(dv); + fValues->addElement(XMLString::replicate(value, fMemoryManager)); + } + else { + fValidators->setElementAt(dv, keyIndex); + fValues->setElementAt(XMLString::replicate(value, fMemoryManager), keyIndex); + } +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file FieldValueMap.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IC_Field.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IC_Field.hpp new file mode 100644 index 000000000000..ccb4e8219d5e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IC_Field.hpp @@ -0,0 +1,152 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IC_FIELD_HPP) +#define XERCESC_INCLUDE_GUARD_IC_FIELD_HPP + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class ValueStore; +class FieldActivator; + + +class VALIDATORS_EXPORT IC_Field : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + IC_Field(XercesXPath* const xpath, + IdentityConstraint* const identityConstraint); + ~IC_Field(); + + // ----------------------------------------------------------------------- + // operators + // ----------------------------------------------------------------------- + bool operator== (const IC_Field& other) const; + bool operator!= (const IC_Field& other) const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XercesXPath* getXPath() const { return fXPath; } + IdentityConstraint* getIdentityConstraint() const { return fIdentityConstraint; } + + // ----------------------------------------------------------------------- + // Factory methods + // ----------------------------------------------------------------------- + XPathMatcher* createMatcher + ( + FieldActivator* const fieldActivator + , ValueStore* const valueStore + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IC_Field) + + IC_Field(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IC_Field(const IC_Field& other); + IC_Field& operator= (const IC_Field& other); + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + XercesXPath* fXPath; + IdentityConstraint* fIdentityConstraint; +}; + + +class VALIDATORS_EXPORT FieldMatcher : public XPathMatcher +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + ~FieldMatcher() {} + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + ValueStore* getValueStore() const { return fValueStore; } + IC_Field* getField() const { return fField; } + + // ----------------------------------------------------------------------- + // Virtual methods + // ----------------------------------------------------------------------- + void matched(const XMLCh* const content, DatatypeValidator* const dv, + const bool isNil); + +private: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + FieldMatcher(XercesXPath* const anXPath, + IC_Field* const aField, + ValueStore* const valueStore, + FieldActivator* const fieldActivator, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + FieldMatcher(const FieldMatcher& other); + FieldMatcher& operator= (const FieldMatcher& other); + + // ----------------------------------------------------------------------- + // Friends + // ----------------------------------------------------------------------- + friend class IC_Field; + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + ValueStore* fValueStore; + IC_Field* fField; + FieldActivator* fFieldActivator; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IC_Field.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IC_Key.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IC_Key.hpp new file mode 100644 index 000000000000..8d476bc9bd7c --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IC_Key.hpp @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IC_KEY_HPP) +#define XERCESC_INCLUDE_GUARD_IC_KEY_HPP + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT IC_Key: public IdentityConstraint +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + IC_Key(const XMLCh* const identityConstraintName, + const XMLCh* const elemName, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~IC_Key(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + short getType() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IC_Key) + + IC_Key(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IC_Key(const IC_Key& other); + IC_Key& operator= (const IC_Key& other); +}; + + +// --------------------------------------------------------------------------- +// IC_Key: Getter methods +// --------------------------------------------------------------------------- +inline short IC_Key::getType() const { + + return IdentityConstraint::ICType_KEY; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IC_Key.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IC_KeyRef.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IC_KeyRef.hpp new file mode 100644 index 000000000000..cdc8b1ad00b6 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IC_KeyRef.hpp @@ -0,0 +1,92 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IC_KEYREF_HPP) +#define XERCESC_INCLUDE_GUARD_IC_KEYREF_HPP + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT IC_KeyRef: public IdentityConstraint +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + IC_KeyRef(const XMLCh* const identityConstraintName, + const XMLCh* const elemName, + IdentityConstraint* const icKey, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~IC_KeyRef(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + short getType() const; + IdentityConstraint* getKey() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IC_KeyRef) + + IC_KeyRef(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IC_KeyRef(const IC_KeyRef& other); + IC_KeyRef& operator= (const IC_KeyRef& other); + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + IdentityConstraint* fKey; +}; + + +// --------------------------------------------------------------------------- +// IC_KeyRef: Getter methods +// --------------------------------------------------------------------------- +inline short IC_KeyRef::getType() const { + + return IdentityConstraint::ICType_KEYREF; +} + +inline IdentityConstraint* IC_KeyRef::getKey() const { + + return fKey; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IC_KeyRef.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IC_Selector.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IC_Selector.hpp new file mode 100644 index 000000000000..a74d310eef0f --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IC_Selector.hpp @@ -0,0 +1,155 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IC_SELECTOR_HPP) +#define XERCESC_INCLUDE_GUARD_IC_SELECTOR_HPP + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class FieldActivator; + + +class VALIDATORS_EXPORT IC_Selector : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + IC_Selector(XercesXPath* const xpath, + IdentityConstraint* const identityConstraint); + ~IC_Selector(); + + // ----------------------------------------------------------------------- + // operators + // ----------------------------------------------------------------------- + bool operator== (const IC_Selector& other) const; + bool operator!= (const IC_Selector& other) const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XercesXPath* getXPath() const { return fXPath; } + IdentityConstraint* getIdentityConstraint() const { return fIdentityConstraint; } + + // ----------------------------------------------------------------------- + // Factory methods + // ----------------------------------------------------------------------- + XPathMatcher* createMatcher(FieldActivator* const fieldActivator, + const int initialDepth, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IC_Selector) + + IC_Selector(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IC_Selector(const IC_Selector& other); + IC_Selector& operator= (const IC_Selector& other); + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + XercesXPath* fXPath; + IdentityConstraint* fIdentityConstraint; +}; + + +class VALIDATORS_EXPORT SelectorMatcher : public XPathMatcher +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + ~SelectorMatcher(); + + int getInitialDepth() const { return fInitialDepth; } + + // ----------------------------------------------------------------------- + // XMLDocumentHandler methods + // ----------------------------------------------------------------------- + virtual void startDocumentFragment(); + virtual void startElement(const XMLElementDecl& elemDecl, + const unsigned int urlId, + const XMLCh* const elemPrefix, + const RefVectorOf& attrList, + const XMLSize_t attrCount, + ValidationContext* validationContext = 0); + virtual void endElement(const XMLElementDecl& elemDecl, + const XMLCh* const elemContent, + ValidationContext* validationContext = 0, + DatatypeValidator* actualValidator = 0); + +private: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + SelectorMatcher(XercesXPath* const anXPath, + IC_Selector* const selector, + FieldActivator* const fieldActivator, + const int initialDepth, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SelectorMatcher(const SelectorMatcher& other); + SelectorMatcher& operator= (const SelectorMatcher& other); + + // ----------------------------------------------------------------------- + // Friends + // ----------------------------------------------------------------------- + friend class IC_Selector; + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + int fInitialDepth; + int fElementDepth; + int* fMatchedDepth; + IC_Selector* fSelector; + FieldActivator* fFieldActivator; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IC_Selector.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IC_Unique.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IC_Unique.hpp new file mode 100644 index 000000000000..267fb2896baf --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IC_Unique.hpp @@ -0,0 +1,84 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IC_UNIQUE_HPP) +#define XERCESC_INCLUDE_GUARD_IC_UNIQUE_HPP + + +/** + * Schema unique identity constraint + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT IC_Unique: public IdentityConstraint +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + IC_Unique(const XMLCh* const identityConstraintName, + const XMLCh* const elemName, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~IC_Unique(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + short getType() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IC_Unique) + + IC_Unique(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IC_Unique(const IC_Unique& other); + IC_Unique& operator= (const IC_Unique& other); +}; + + +// --------------------------------------------------------------------------- +// IC_Unique: Getter methods +// --------------------------------------------------------------------------- +inline short IC_Unique::getType() const { + + return IdentityConstraint::ICType_UNIQUE; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IC_Unique.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IdentityConstraint.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IdentityConstraint.hpp new file mode 100644 index 000000000000..f0c18597fad0 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IdentityConstraint.hpp @@ -0,0 +1,223 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IDENTITYCONSTRAINT_HPP) +#define XERCESC_INCLUDE_GUARD_IDENTITYCONSTRAINT_HPP + + +/** + * The class act as a base class for schema identity constraints. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- +class IC_Selector; + +class VALIDATORS_EXPORT IdentityConstraint : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constants + // ----------------------------------------------------------------------- + enum ICType { + ICType_UNIQUE = 0, + ICType_KEY = 1, + ICType_KEYREF = 2, + ICType_UNKNOWN + }; + + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + virtual ~IdentityConstraint(); + + // ----------------------------------------------------------------------- + // operators + // ----------------------------------------------------------------------- + bool operator== (const IdentityConstraint& other) const; + bool operator!= (const IdentityConstraint& other) const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + virtual short getType() const = 0; + XMLSize_t getFieldCount() const; + XMLCh* getIdentityConstraintName() const; + XMLCh* getElementName() const; + IC_Selector* getSelector() const; + int getNamespaceURI() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setSelector(IC_Selector* const selector); + void setNamespaceURI(int uri); + + // ----------------------------------------------------------------------- + // Access methods + // ----------------------------------------------------------------------- + void addField(IC_Field* const field); + const IC_Field* getFieldAt(const XMLSize_t index) const; + IC_Field* getFieldAt(const XMLSize_t index); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IdentityConstraint) + + static void storeIC(XSerializeEngine& serEng + , IdentityConstraint* const ic); + + static IdentityConstraint* loadIC(XSerializeEngine& serEng); + +protected: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + IdentityConstraint(const XMLCh* const identityConstraintName, + const XMLCh* const elementName, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IdentityConstraint(const IdentityConstraint& other); + IdentityConstraint& operator= (const IdentityConstraint& other); + + // ----------------------------------------------------------------------- + // CleanUp methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Data members + // + // fIdentityConstraintName + // The identity constraint name + // + // fElemName + // The element name + // + // fSelector + // The selector information + // + // fFields + // The field(s) information + // ----------------------------------------------------------------------- + XMLCh* fIdentityConstraintName; + XMLCh* fElemName; + IC_Selector* fSelector; + RefVectorOf* fFields; + MemoryManager* fMemoryManager; + int fNamespaceURI; +}; + + +// --------------------------------------------------------------------------- +// IdentityConstraint: Getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t IdentityConstraint::getFieldCount() const { + + if (fFields) { + return fFields->size(); + } + + return 0; +} + +inline XMLCh* IdentityConstraint::getIdentityConstraintName() const { + + return fIdentityConstraintName; +} + +inline XMLCh* IdentityConstraint::getElementName() const { + + return fElemName; +} + +inline IC_Selector* IdentityConstraint::getSelector() const { + + return fSelector; +} + +inline int IdentityConstraint::getNamespaceURI() const +{ + return fNamespaceURI; +} + +// --------------------------------------------------------------------------- +// IdentityConstraint: Setter methods +// --------------------------------------------------------------------------- +inline void IdentityConstraint::setNamespaceURI(int uri) +{ + fNamespaceURI = uri; +} + +// --------------------------------------------------------------------------- +// IdentityConstraint: Access methods +// --------------------------------------------------------------------------- +inline void IdentityConstraint::addField(IC_Field* const field) { + + if (!fFields) { + fFields = new (fMemoryManager) RefVectorOf(4, true, fMemoryManager); + } + + fFields->addElement(field); +} + +inline const IC_Field* IdentityConstraint::getFieldAt(const XMLSize_t index) const { + + if (fFields) { + return (fFields->elementAt(index)); + } + + return 0; +} + +inline IC_Field* IdentityConstraint::getFieldAt(const XMLSize_t index) { + + if (fFields) { + return (fFields->elementAt(index)); + } + + return 0; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IdentityConstraint.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IdentityConstraintHandler.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IdentityConstraintHandler.hpp new file mode 100644 index 000000000000..75eb2c26de7a --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/IdentityConstraintHandler.hpp @@ -0,0 +1,159 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IDENTITYCONSTRAINT_HANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_IDENTITYCONSTRAINT_HANDLER_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- + +class XMLScanner; +class FieldActivator; +class MemoryManager; +class XMLElementDecl; + +class VALIDATORS_EXPORT IdentityConstraintHandler: public XMemory +{ +public: + + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + virtual ~IdentityConstraintHandler(); + + IdentityConstraintHandler + ( + XMLScanner* const scanner + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + inline XMLSize_t getMatcherCount() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + // ----------------------------------------------------------------------- + // Access methods + // ----------------------------------------------------------------------- + inline void endDocument(); + + void deactivateContext + ( + SchemaElementDecl* const elem + , const XMLCh* const content + , ValidationContext* validationContext = 0 + , DatatypeValidator* actualValidator = 0); + + void activateIdentityConstraint + ( + SchemaElementDecl* const elem + , int elemDepth + , const unsigned int uriId + , const XMLCh* const elemPrefix + , const RefVectorOf& attrList + , const XMLSize_t attrCount + , ValidationContext* validationContext = 0 ); + + void reset(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IdentityConstraintHandler(const IdentityConstraintHandler& other); + IdentityConstraintHandler& operator= (const IdentityConstraintHandler& other); + + // ----------------------------------------------------------------------- + // CleanUp methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Helper + // ----------------------------------------------------------------------- + void activateSelectorFor( + IdentityConstraint* const ic + , const int initialDepth + ) ; + + // ----------------------------------------------------------------------- + // Data members + // + // fMatcherStack + // Stack of active XPath matchers for identity constraints. All + // active XPath matchers are notified of startElement, characters + // and endElement callbacks in order to perform their matches. + // + // fValueStoreCache + // Cache of value stores for identity constraint fields. + // + // fFieldActivator + // Activates fields within a certain scope when a selector matches + // its xpath. + // + // ----------------------------------------------------------------------- + XMLScanner* fScanner; + MemoryManager* fMemoryManager; + + XPathMatcherStack* fMatcherStack; + ValueStoreCache* fValueStoreCache; + FieldActivator* fFieldActivator; + +}; + + +// --------------------------------------------------------------------------- +// IdentityConstraintHandler: +// --------------------------------------------------------------------------- + +inline +void IdentityConstraintHandler::endDocument() +{ + fValueStoreCache->endDocument(); +} + +inline +XMLSize_t IdentityConstraintHandler::getMatcherCount() const +{ + return fMatcherStack->getMatcherCount(); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IdentityConstraintHandler.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/ValueStore.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/ValueStore.hpp new file mode 100644 index 000000000000..9dda3e99ab5d --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/ValueStore.hpp @@ -0,0 +1,146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALUESTORE_HPP) +#define XERCESC_INCLUDE_GUARD_VALUESTORE_HPP + +/** + * This class stores values associated to an identity constraint. + * Each value stored corresponds to a field declared for the identity + * constraint. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class FieldActivator; +class IdentityConstraint; +class XMLScanner; +class ValueStoreCache; + +struct ICValueHasher +{ + ICValueHasher(MemoryManager* const manager) : fMemoryManager(manager) {} + + XMLSize_t getHashVal(const void* key, XMLSize_t mod) const; + bool equals(const void *const key1, const void *const key2) const; + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + /** + * Returns whether a field associated value + * is a duplicate of another associated value. + * It is a duplicate only if either of these conditions are true: + * - The Datatypes are the same or related by derivation and the values + * are in the same valuespace. + * - The datatypes are unrelated and the values are Stringwise identical. + */ + bool isDuplicateOf(DatatypeValidator* const dv1, const XMLCh* const val1, + DatatypeValidator* const dv2, const XMLCh* const val2) const; + + + MemoryManager* fMemoryManager; +}; + +class VALIDATORS_EXPORT ValueStore : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + ValueStore(IdentityConstraint* const ic, + XMLScanner* const scanner, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ValueStore(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + IdentityConstraint* getIdentityConstraint() const; + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void append(const ValueStore* const other); + void startValueScope(); + void endValueScope(); + void addValue(FieldActivator* const fieldActivator, + IC_Field* const field, + DatatypeValidator* const dv, + const XMLCh* const value); + bool contains(const FieldValueMap* const other); + void clear(); + + // ----------------------------------------------------------------------- + // Document handling methods + // ----------------------------------------------------------------------- + void endDocumentFragment(ValueStoreCache* const valueStoreCache); + + // ----------------------------------------------------------------------- + // Error reporting methods + // ----------------------------------------------------------------------- + void duplicateValue(); + void reportNilError(IdentityConstraint* const ic); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueStore(const ValueStore& other); + ValueStore& operator= (const ValueStore& other); + + // ----------------------------------------------------------------------- + // Data + // ----------------------------------------------------------------------- + bool fDoReportError; + XMLSize_t fValuesCount; + IdentityConstraint* fIdentityConstraint; + FieldValueMap fValues; + RefHashTableOf* fValueTuples; + XMLScanner* fScanner; // for error reporting - REVISIT + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// ValueStore: Getter methods +// --------------------------------------------------------------------------- +inline IdentityConstraint* +ValueStore::getIdentityConstraint() const { + return fIdentityConstraint; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ValueStore.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/ValueStoreCache.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/ValueStoreCache.hpp new file mode 100644 index 000000000000..cf02064d8622 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/ValueStoreCache.hpp @@ -0,0 +1,172 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALUESTORECACHE_HPP) +#define XERCESC_INCLUDE_GUARD_VALUESTORECACHE_HPP + +/** + * This class is used to store the values for identity constraints. + * + * Sketch of algorithm: + * - When a constraint is first encountered, its values are stored in the + * (local) fIC2ValueStoreMap; + * - Once it is validated (i.e., when it goes out of scope), its values are + * merged into the fGlobalICMap; + * - As we encounter keyref's, we look at the global table to validate them. + * - Validation always occurs against the fGlobalIDConstraintMap (which + * comprises all the "eligible" id constraints). When an endelement is + * found, this Hashtable is merged with the one below in the stack. When a + * start tag is encountered, we create a new fGlobalICMap. + * i.e., the top of the fGlobalIDMapStack always contains the preceding + * siblings' eligible id constraints; the fGlobalICMap contains + * descendants+self. Keyrefs can only match descendants+self. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class ValueStore; +class SchemaElementDecl; +class XMLScanner; + + +class VALIDATORS_EXPORT ValueStoreCache : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + ValueStoreCache(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ValueStoreCache(); + + // ----------------------------------------------------------------------- + // Setter Methods + // ----------------------------------------------------------------------- + void setScanner(XMLScanner* const scanner); + + // ----------------------------------------------------------------------- + // Document Handling methods + // ----------------------------------------------------------------------- + void startDocument(); + void startElement(); + void endElement(); + void endDocument(); + + // ----------------------------------------------------------------------- + // Initialization methods + // ----------------------------------------------------------------------- + void initValueStoresFor(SchemaElementDecl* const elemDecl, const int initialDepth); + + + // ----------------------------------------------------------------------- + // Access methods + // ----------------------------------------------------------------------- + ValueStore* getValueStoreFor(const IC_Field* const field, const int initialDepth); + ValueStore* getValueStoreFor(const IdentityConstraint* const ic, const int initialDepth); + ValueStore* getGlobalValueStoreFor(const IdentityConstraint* const ic); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + /** This method takes the contents of the (local) ValueStore associated + * with ic and moves them into the global hashtable, if ic is a + * or a . If it's a , then we leave it for later. + */ + void transplant(IdentityConstraint* const ic, const int initialDepth); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueStoreCache(const ValueStoreCache& other); + ValueStoreCache& operator= (const ValueStoreCache& other); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void init(); + void cleanUp(); + + // ----------------------------------------------------------------------- + // Data + // ----------------------------------------------------------------------- + RefVectorOf* fValueStores; + RefHashTableOf* fGlobalICMap; + RefHash2KeysTableOf* fIC2ValueStoreMap; + RefStackOf >* fGlobalMapStack; + XMLScanner* fScanner; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// ValueStoreCache: Access methods +// --------------------------------------------------------------------------- +inline void ValueStoreCache::setScanner(XMLScanner* const scanner) { + + fScanner = scanner; +} + +// --------------------------------------------------------------------------- +// ValueStoreCache: Access methods +// --------------------------------------------------------------------------- +inline ValueStore* +ValueStoreCache::getValueStoreFor(const IC_Field* const field, const int initialDepth) { + + return fIC2ValueStoreMap->get(field->getIdentityConstraint(), initialDepth); +} + +inline ValueStore* +ValueStoreCache::getValueStoreFor(const IdentityConstraint* const ic, const int initialDepth) { + + return fIC2ValueStoreMap->get(ic, initialDepth); +} + +inline ValueStore* +ValueStoreCache::getGlobalValueStoreFor(const IdentityConstraint* const ic) { + + return fGlobalICMap->get(ic); +} + +// --------------------------------------------------------------------------- +// ValueStoreCache: Document handling methods +// --------------------------------------------------------------------------- +inline void ValueStoreCache::endDocument() { +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ValueStoreCache.hpp + */ diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/XPathException.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/XPathException.hpp new file mode 100644 index 000000000000..45c184aec512 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/XPathException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XPATHEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_XPATHEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(XPathException, VALIDATORS_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/XPathMatcher.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/XPathMatcher.hpp new file mode 100644 index 000000000000..6d377314ea7b --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/XPathMatcher.hpp @@ -0,0 +1,183 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XPATHMATCHER_HPP) +#define XERCESC_INCLUDE_GUARD_XPATHMATCHER_HPP + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class XMLElementDecl; +class XercesXPath; +class IdentityConstraint; +class DatatypeValidator; +class XMLStringPool; +class XercesLocationPath; +class XMLAttr; +class XercesNodeTest; +class QName; +class ValidationContext; + +class VALIDATORS_EXPORT XPathMatcher : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XPathMatcher(XercesXPath* const xpath, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + XPathMatcher(XercesXPath* const xpath, + IdentityConstraint* const ic, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~XPathMatcher(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + IdentityConstraint* getIdentityConstraint() const { return fIdentityConstraint; } + MemoryManager* getMemoryManager() const { return fMemoryManager; } + + // ----------------------------------------------------------------------- + // Match methods + // ----------------------------------------------------------------------- + /** + * Returns true if XPath has been matched. + */ + unsigned char isMatched(); + virtual int getInitialDepth() const; + + // ----------------------------------------------------------------------- + // XMLDocumentHandler methods + // ----------------------------------------------------------------------- + virtual void startDocumentFragment(); + virtual void startElement(const XMLElementDecl& elemDecl, + const unsigned int urlId, + const XMLCh* const elemPrefix, + const RefVectorOf& attrList, + const XMLSize_t attrCount, + ValidationContext* validationContext = 0); + virtual void endElement(const XMLElementDecl& elemDecl, + const XMLCh* const elemContent, + ValidationContext* validationContext = 0, + DatatypeValidator* actualValidator = 0); + + enum + { + XP_MATCHED = 1 // matched any way + , XP_MATCHED_A = 3 // matched on the attribute axis + , XP_MATCHED_D = 5 // matched on the descendant-or-self axixs + , XP_MATCHED_DP = 13 // matched some previous (ancestor) node on the + // descendant-or-self-axis, but not this node + }; + +protected: + + // ----------------------------------------------------------------------- + // Match methods + // ----------------------------------------------------------------------- + /** + * This method is called when the XPath handler matches the XPath + * expression. Subclasses can override this method to provide default + * handling upon a match. + */ + virtual void matched(const XMLCh* const content, + DatatypeValidator* const dv, const bool isNil); + + bool matches(const XercesNodeTest* nodeTest, const QName* qName); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XPathMatcher(const XPathMatcher&); + XPathMatcher& operator=(const XPathMatcher&); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void init(XercesXPath* const xpath); + void cleanUp(); + +protected: + // ----------------------------------------------------------------------- + // Data members + // + // fMatched + // Indicates whether XPath has been matched or not + // + // fNoMatchDepth + // Indicates whether matching is successful for the given xpath + // expression. + // + // fCurrentStep + // Stores current step. + // + // fStepIndexes + // Integer stack of step indexes. + // + // fLocationPaths + // fLocationPathSize + // XPath location path, and its size. + // + // fIdentityConstraint + // The identity constraint we're the matcher for. Only used for + // selectors. + // + // ----------------------------------------------------------------------- + XMLSize_t fLocationPathSize; + unsigned char* fMatched; + XMLSize_t* fNoMatchDepth; + XMLSize_t* fCurrentStep; + RefVectorOf >* fStepIndexes; + RefVectorOf* fLocationPaths; + IdentityConstraint* fIdentityConstraint; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// XPathMatcher: Helper methods +// --------------------------------------------------------------------------- +inline void XPathMatcher::cleanUp() { + + fMemoryManager->deallocate(fMatched);//delete [] fMatched; + fMemoryManager->deallocate(fNoMatchDepth);//delete [] fNoMatchDepth; + fMemoryManager->deallocate(fCurrentStep);//delete [] fCurrentStep; + delete fStepIndexes; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XPathMatcher.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/XPathMatcherStack.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/XPathMatcherStack.hpp new file mode 100644 index 000000000000..46561f327f51 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/XPathMatcherStack.hpp @@ -0,0 +1,139 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XPATHMATCHERSTACK_HPP) +#define XERCESC_INCLUDE_GUARD_XPATHMATCHERSTACK_HPP + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT XPathMatcherStack : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XPathMatcherStack(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~XPathMatcherStack(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XPathMatcher* getMatcherAt(const XMLSize_t index) const; + XMLSize_t getMatcherCount() const; + XMLSize_t size() const; + + // ----------------------------------------------------------------------- + // Access methods + // ----------------------------------------------------------------------- + void addMatcher(XPathMatcher* const matcher); + + // ----------------------------------------------------------------------- + // Stack methods + // ----------------------------------------------------------------------- + void pushContext(); + void popContext(); + + // ----------------------------------------------------------------------- + // Reset methods + // ----------------------------------------------------------------------- + void clear(); + +private: + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XPathMatcherStack(const XPathMatcherStack& other); + XPathMatcherStack& operator= (const XPathMatcherStack& other); + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + unsigned int fMatchersCount; + ValueStackOf* fContextStack; + RefVectorOf* fMatchers; +}; + +// --------------------------------------------------------------------------- +// XPathMatcherStack: Getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t XPathMatcherStack::size() const { + + return fContextStack->size(); +} + +inline XMLSize_t XPathMatcherStack::getMatcherCount() const { + + return fMatchersCount; +} + +inline XPathMatcher* +XPathMatcherStack::getMatcherAt(const XMLSize_t index) const { + + return fMatchers->elementAt(index); +} + +// --------------------------------------------------------------------------- +// XPathMatcherStack: Stack methods +// --------------------------------------------------------------------------- +inline void XPathMatcherStack::pushContext() { + + fContextStack->push(fMatchersCount); +} + +inline void XPathMatcherStack::popContext() { + + fMatchersCount = fContextStack->pop(); +} + +// --------------------------------------------------------------------------- +// XPathMatcherStack: Access methods +// --------------------------------------------------------------------------- +inline void XPathMatcherStack::addMatcher(XPathMatcher* const matcher) { + + if (fMatchersCount == fMatchers->size()) { + + fMatchers->addElement(matcher); + fMatchersCount++; + } + else { + fMatchers->setElementAt(matcher, fMatchersCount++); + } +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XPathMatcherStack.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/XPathSymbols.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/XPathSymbols.hpp new file mode 100644 index 000000000000..c1ce1accef0e --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/XPathSymbols.hpp @@ -0,0 +1,75 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XPATHSYMBOLS_HPP) +#define XERCESC_INCLUDE_GUARD_XPATHSYMBOLS_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/* + * Collection of symbols used to parse a Schema Grammar + */ + +class VALIDATORS_EXPORT XPathSymbols +{ +public : + // ----------------------------------------------------------------------- + // Constant data + // ----------------------------------------------------------------------- + static const XMLCh fgSYMBOL_AND[]; + static const XMLCh fgSYMBOL_OR[]; + static const XMLCh fgSYMBOL_MOD[]; + static const XMLCh fgSYMBOL_DIV[]; + static const XMLCh fgSYMBOL_COMMENT[]; + static const XMLCh fgSYMBOL_TEXT[]; + static const XMLCh fgSYMBOL_PI[]; + static const XMLCh fgSYMBOL_NODE[]; + static const XMLCh fgSYMBOL_ANCESTOR[]; + static const XMLCh fgSYMBOL_ANCESTOR_OR_SELF[]; + static const XMLCh fgSYMBOL_ATTRIBUTE[]; + static const XMLCh fgSYMBOL_CHILD[]; + static const XMLCh fgSYMBOL_DESCENDANT[]; + static const XMLCh fgSYMBOL_DESCENDANT_OR_SELF[]; + static const XMLCh fgSYMBOL_FOLLOWING[]; + static const XMLCh fgSYMBOL_FOLLOWING_SIBLING[]; + static const XMLCh fgSYMBOL_NAMESPACE[]; + static const XMLCh fgSYMBOL_PARENT[]; + static const XMLCh fgSYMBOL_PRECEDING[]; + static const XMLCh fgSYMBOL_PRECEDING_SIBLING[]; + static const XMLCh fgSYMBOL_SELF[]; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XPathSymbols(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XPathSymbols.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/XercesXPath.hpp b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/XercesXPath.hpp new file mode 100644 index 000000000000..d93cfd20c253 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/validators/schema/identity/XercesXPath.hpp @@ -0,0 +1,499 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XERCESXPATH_HPP) +#define XERCESC_INCLUDE_GUARD_XERCESXPATH_HPP + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- +class XMLStringPool; + +class VALIDATORS_EXPORT XercesNodeTest : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constants + // ----------------------------------------------------------------------- + enum NodeType { + NodeType_QNAME = 1, + NodeType_WILDCARD = 2, + NodeType_NODE = 3, + NodeType_NAMESPACE= 4, + NodeType_UNKNOWN + }; + + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XercesNodeTest(const short type, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + XercesNodeTest(const QName* const qName); + XercesNodeTest(const XMLCh* const prefix, const unsigned int uriId, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + XercesNodeTest(const XercesNodeTest& other); + ~XercesNodeTest() { delete fName; } + + // ----------------------------------------------------------------------- + // Operators + // ----------------------------------------------------------------------- + XercesNodeTest& operator= (const XercesNodeTest& other); + bool operator== (const XercesNodeTest& other) const; + bool operator!= (const XercesNodeTest& other) const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + short getType() const { return fType; } + QName* getName() const { return fName; } + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesNodeTest) + + XercesNodeTest(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + short fType; + QName* fName; +}; + + +/** + * A location path step comprised of an axis and node test. + */ +class VALIDATORS_EXPORT XercesStep : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constants + // ----------------------------------------------------------------------- + enum AxisType { // Axis type + AxisType_CHILD = 1, + AxisType_ATTRIBUTE = 2, + AxisType_SELF = 3, + AxisType_DESCENDANT = 4, + AxisType_UNKNOWN + }; + + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XercesStep(const unsigned short axisType, XercesNodeTest* const nodeTest); + XercesStep(const XercesStep& other); + ~XercesStep() { delete fNodeTest; } + + // ----------------------------------------------------------------------- + // Operators + // ----------------------------------------------------------------------- + XercesStep& operator= (const XercesStep& other); + bool operator== (const XercesStep& other) const; + bool operator!= (const XercesStep& other) const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + unsigned short getAxisType() const { return fAxisType; } + XercesNodeTest* getNodeTest() const { return fNodeTest; } + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesStep) + + XercesStep(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + unsigned short fAxisType; + XercesNodeTest* fNodeTest; +}; + + +/** + * A location path representation for an XPath expression. + */ +class VALIDATORS_EXPORT XercesLocationPath : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XercesLocationPath(RefVectorOf* const steps); + ~XercesLocationPath() { delete fSteps; } + + // ----------------------------------------------------------------------- + // Operators + // ----------------------------------------------------------------------- + bool operator== (const XercesLocationPath& other) const; + bool operator!= (const XercesLocationPath& other) const; + + // ----------------------------------------------------------------------- + // Access methods + // ----------------------------------------------------------------------- + XMLSize_t getStepSize() const; + void addStep(XercesStep* const aStep); + XercesStep* getStep(const XMLSize_t index) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesLocationPath) + + XercesLocationPath(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XercesLocationPath(const XercesLocationPath& other); + XercesLocationPath& operator= (const XercesLocationPath& other); + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + RefVectorOf* fSteps; +}; + + +class VALIDATORS_EXPORT XercesXPath : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constants + // ----------------------------------------------------------------------- + /** + * [28] ExprToken ::= '(' | ')' | '[' | ']' | '.' | '..' | '@' | ',' | '::' + * | NameTest | NodeType | Operator | FunctionName + * | AxisName | Literal | Number | VariableReference + */ + enum { + EXPRTOKEN_OPEN_PAREN = 0, + EXPRTOKEN_CLOSE_PAREN = 1, + EXPRTOKEN_OPEN_BRACKET = 2, + EXPRTOKEN_CLOSE_BRACKET = 3, + EXPRTOKEN_PERIOD = 4, + EXPRTOKEN_DOUBLE_PERIOD = 5, + EXPRTOKEN_ATSIGN = 6, + EXPRTOKEN_COMMA = 7, + EXPRTOKEN_DOUBLE_COLON = 8, + EXPRTOKEN_NAMETEST_ANY = 9, + EXPRTOKEN_NAMETEST_NAMESPACE = 10, + EXPRTOKEN_NAMETEST_QNAME = 11, + EXPRTOKEN_NODETYPE_COMMENT = 12, + EXPRTOKEN_NODETYPE_TEXT = 13, + EXPRTOKEN_NODETYPE_PI = 14, + EXPRTOKEN_NODETYPE_NODE = 15, + EXPRTOKEN_OPERATOR_AND = 16, + EXPRTOKEN_OPERATOR_OR = 17, + EXPRTOKEN_OPERATOR_MOD = 18, + EXPRTOKEN_OPERATOR_DIV = 19, + EXPRTOKEN_OPERATOR_MULT = 20, + EXPRTOKEN_OPERATOR_SLASH = 21, + EXPRTOKEN_OPERATOR_DOUBLE_SLASH = 22, + EXPRTOKEN_OPERATOR_UNION = 23, + EXPRTOKEN_OPERATOR_PLUS = 24, + EXPRTOKEN_OPERATOR_MINUS = 25, + EXPRTOKEN_OPERATOR_EQUAL = 26, + EXPRTOKEN_OPERATOR_NOT_EQUAL = 27, + EXPRTOKEN_OPERATOR_LESS = 28, + EXPRTOKEN_OPERATOR_LESS_EQUAL = 29, + EXPRTOKEN_OPERATOR_GREATER = 30, + EXPRTOKEN_OPERATOR_GREATER_EQUAL = 31, + EXPRTOKEN_FUNCTION_NAME = 32, + EXPRTOKEN_AXISNAME_ANCESTOR = 33, + EXPRTOKEN_AXISNAME_ANCESTOR_OR_SELF = 34, + EXPRTOKEN_AXISNAME_ATTRIBUTE = 35, + EXPRTOKEN_AXISNAME_CHILD = 36, + EXPRTOKEN_AXISNAME_DESCENDANT = 37, + EXPRTOKEN_AXISNAME_DESCENDANT_OR_SELF = 38, + EXPRTOKEN_AXISNAME_FOLLOWING = 39, + EXPRTOKEN_AXISNAME_FOLLOWING_SIBLING = 40, + EXPRTOKEN_AXISNAME_NAMESPACE = 41, + EXPRTOKEN_AXISNAME_PARENT = 42, + EXPRTOKEN_AXISNAME_PRECEDING = 43, + EXPRTOKEN_AXISNAME_PRECEDING_SIBLING = 44, + EXPRTOKEN_AXISNAME_SELF = 45, + EXPRTOKEN_LITERAL = 46, + EXPRTOKEN_NUMBER = 47, + EXPRTOKEN_VARIABLE_REFERENCE = 48 + }; + + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XercesXPath(const XMLCh* const xpathExpr, + XMLStringPool* const stringPool, + XercesNamespaceResolver* const scopeContext, + const unsigned int emptyNamespaceId, + const bool isSelector = false, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~XercesXPath(); + + // ----------------------------------------------------------------------- + // Operators + // ----------------------------------------------------------------------- + bool operator== (const XercesXPath& other) const; + bool operator!= (const XercesXPath& other) const; + + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + RefVectorOf* getLocationPaths() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesXPath) + + XercesXPath(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + XMLCh* getExpression(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XercesXPath(const XercesXPath& other); + XercesXPath& operator= (const XercesXPath& other); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + void checkForSelectedAttributes(); + void parseExpression(XMLStringPool* const stringPool, + XercesNamespaceResolver* const scopeContext); + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + unsigned int fEmptyNamespaceId; + XMLCh* fExpression; + RefVectorOf* fLocationPaths; + MemoryManager* fMemoryManager; +}; + + +class VALIDATORS_EXPORT XPathScanner : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constants + // ----------------------------------------------------------------------- + enum { + CHARTYPE_INVALID = 0, // invalid XML character + CHARTYPE_OTHER = 1, // not special - one of "#%&;?\^`{}~" or DEL + CHARTYPE_WHITESPACE = 2, // one of "\t\n\r " (0x09, 0x0A, 0x0D, 0x20) + CHARTYPE_EXCLAMATION = 3, // '!' (0x21) + CHARTYPE_QUOTE = 4, // '\"' or '\'' (0x22 and 0x27) + CHARTYPE_DOLLAR = 5, // '$' (0x24) + CHARTYPE_OPEN_PAREN = 6, // '(' (0x28) + CHARTYPE_CLOSE_PAREN = 7, // ')' (0x29) + CHARTYPE_STAR = 8, // '*' (0x2A) + CHARTYPE_PLUS = 9, // '+' (0x2B) + CHARTYPE_COMMA = 10, // ',' (0x2C) + CHARTYPE_MINUS = 11, // '-' (0x2D) + CHARTYPE_PERIOD = 12, // '.' (0x2E) + CHARTYPE_SLASH = 13, // '/' (0x2F) + CHARTYPE_DIGIT = 14, // '0'-'9' (0x30 to 0x39) + CHARTYPE_COLON = 15, // ':' (0x3A) + CHARTYPE_LESS = 16, // '<' (0x3C) + CHARTYPE_EQUAL = 17, // '=' (0x3D) + CHARTYPE_GREATER = 18, // '>' (0x3E) + CHARTYPE_ATSIGN = 19, // '@' (0x40) + CHARTYPE_LETTER = 20, // 'A'-'Z' or 'a'-'z' (0x41 to 0x5A and 0x61 to 0x7A) + CHARTYPE_OPEN_BRACKET = 21, // '[' (0x5B) + CHARTYPE_CLOSE_BRACKET = 22, // ']' (0x5D) + CHARTYPE_UNDERSCORE = 23, // '_' (0x5F) + CHARTYPE_UNION = 24, // '|' (0x7C) + CHARTYPE_NONASCII = 25 // Non-ASCII Unicode codepoint (>= 0x80) + }; + + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XPathScanner(XMLStringPool* const stringPool); + virtual ~XPathScanner() {} + + // ----------------------------------------------------------------------- + // Scan methods + // ----------------------------------------------------------------------- + bool scanExpression(const XMLCh* const data, XMLSize_t currentOffset, + const XMLSize_t endOffset, ValueVectorOf* const tokens); + +protected: + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + /** + * This method adds the specified token to the token list. By default, + * this method allows all tokens. However, subclasses can can override + * this method in order to disallow certain tokens from being used in the + * scanned XPath expression. This is a convenient way of allowing only + * a subset of XPath. + */ + virtual void addToken(ValueVectorOf* const tokens, const int aToken); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XPathScanner(const XPathScanner& other); + XPathScanner& operator= (const XPathScanner& other); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void init(); + + // ----------------------------------------------------------------------- + // Scan methods + // ----------------------------------------------------------------------- + XMLSize_t scanNCName(const XMLCh* const data, const XMLSize_t endOffset, + XMLSize_t currentOffset); + XMLSize_t scanNumber(const XMLCh* const data, const XMLSize_t endOffset, + XMLSize_t currentOffset, ValueVectorOf* const tokens); + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + int fAndSymbol; + int fOrSymbol; + int fModSymbol; + int fDivSymbol; + int fCommentSymbol; + int fTextSymbol; + int fPISymbol; + int fNodeSymbol; + int fAncestorSymbol; + int fAncestorOrSelfSymbol; + int fAttributeSymbol; + int fChildSymbol; + int fDescendantSymbol; + int fDescendantOrSelfSymbol; + int fFollowingSymbol; + int fFollowingSiblingSymbol; + int fNamespaceSymbol; + int fParentSymbol; + int fPrecedingSymbol; + int fPrecedingSiblingSymbol; + int fSelfSymbol; + XMLStringPool* fStringPool; + + static const XMLByte fASCIICharMap[128]; +}; + + +class VALIDATORS_EXPORT XPathScannerForSchema: public XPathScanner +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XPathScannerForSchema(XMLStringPool* const stringPool); + ~XPathScannerForSchema() {} + +protected: + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void addToken(ValueVectorOf* const tokens, const int aToken); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XPathScannerForSchema(const XPathScannerForSchema& other); + XPathScannerForSchema& operator= (const XPathScannerForSchema& other); +}; + +// --------------------------------------------------------------------------- +// XercesLocationPath: Access methods +// --------------------------------------------------------------------------- +inline XMLSize_t XercesLocationPath::getStepSize() const { + + if (fSteps) + return fSteps->size(); + + return 0; +} + +inline void XercesLocationPath::addStep(XercesStep* const aStep) { + + fSteps->addElement(aStep); +} + +inline XercesStep* XercesLocationPath::getStep(const XMLSize_t index) const { + + if (fSteps) + return fSteps->elementAt(index); + + return 0; +} + +// --------------------------------------------------------------------------- +// XercesScanner: Helper methods +// --------------------------------------------------------------------------- +inline void XPathScanner::addToken(ValueVectorOf* const tokens, + const int aToken) { + tokens->addElement(aToken); +} + + +// --------------------------------------------------------------------------- +// XercesXPath: Getter methods +// --------------------------------------------------------------------------- +inline RefVectorOf* XercesXPath::getLocationPaths() const { + + return fLocationPaths; +} + +inline XMLCh* XercesXPath::getExpression() { + return fExpression; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XercesPath.hpp + */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp b/src/libs/xerces-c/mingw/include/xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp new file mode 100644 index 000000000000..725976cf23fa --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XINCLUDEDOMDOCUMENTPROCESSOR_HPP) +#define XERCESC_INCLUDE_GUARD_XINCLUDEDOMDOCUMENTPROCESSOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLEntityHandler; + +/** + * Class for representing and manipulating the XMLCh * href's used + * by an xi:include element. + * + * This class is designed primarily for internal use. This class implements + * the functionality required to calculate relative hrefs and the base URI + * fixups required for performing XInclude functionality. + */ +class XINCLUDE_EXPORT XIncludeDOMDocumentProcessor +{ +public: + /** Walk the supplied DOMDocument performing all XInclude's as encountered. + * + * @param source A DOMDocument to parse, this document is not modified. + * @param errorHandled An errorHandler to call back in case of problems + * + * @return a newly created DOMDocument containing the parsed and actioned + * xinclude elements. + */ + DOMDocument *doXIncludeDOMProcess(const DOMDocument * const source, XMLErrorReporter *errorHandler, XMLEntityHandler* entityResolver=NULL); +}; + +XERCES_CPP_NAMESPACE_END + +#endif /* XINCLUDEDOMDOCUMENTPROCESSOR_HPP */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/xinclude/XIncludeLocation.hpp b/src/libs/xerces-c/mingw/include/xercesc/xinclude/XIncludeLocation.hpp new file mode 100644 index 000000000000..8648c0e81816 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/xinclude/XIncludeLocation.hpp @@ -0,0 +1,89 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XINCLUDELOCATION_HPP) +#define XERCESC_INCLUDE_GUARD_XINCLUDELOCATION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * Class for representing and manipulating the XMLCh * href's used + * by an xi:include element. + * + * This class is designed primarily for internal use. This class implements + * the functionality required to calculate relative hrefs and the base URI + * fixups required for performing XInclude functionality. + */ +class XINCLUDE_EXPORT XIncludeLocation +{ +public: + /** Create an XIncludeLocation, primed with the supplied href + * + * @param href the initial URI value + * + * @return nothing + */ + XIncludeLocation(const XMLCh *href); + + /** Destructor + * + * @return nothing + */ + ~XIncludeLocation(); + + /** Prepend the supplied href to the current location and modify the current XIncludeLocation's + * internal href field + * + * @param toPrepend the path to prepend + * + * @return the resultant compound URI + */ + const XMLCh *prependPath(const XMLCh *toPrepend); + + /** Get the current XIncludeLocation's compound URI location + * + * @return the current URI + */ + const XMLCh *getLocation(){ + return fHref; + }; + + /** Get a pointer to the end of the protocol section of a URI + * + * @param URI a URI to strip the protocol from + * + * @return a pointer into the supplied URI immediately after the last character of the protocol section + * the pointer points to the first character after the protocol. + */ + static const XMLCh *findEndOfProtocol(const XMLCh *URI); + +private: + const XMLCh *fHref; +}; + +XERCES_CPP_NAMESPACE_END + +#endif /* XINCLUDELOCATION_HPP */ + diff --git a/src/libs/xerces-c/mingw/include/xercesc/xinclude/XIncludeUtils.hpp b/src/libs/xerces-c/mingw/include/xercesc/xinclude/XIncludeUtils.hpp new file mode 100644 index 000000000000..b74097655f37 --- /dev/null +++ b/src/libs/xerces-c/mingw/include/xercesc/xinclude/XIncludeUtils.hpp @@ -0,0 +1,267 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XINCLUDEUTILS_HPP) +#define XERCESC_INCLUDE_GUARD_XINCLUDEUTILS_HPP + +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLEntityHandler; + +typedef struct XIncludeHistoryNode{ + XMLCh *URI; + struct XIncludeHistoryNode *next; +}XIncludeHistoryNode; + +/** + * Class implementing all the utility functions required by an XInclude parser. + * + * This class is designed primarily for internal use. This class implements + * utility methods to be called by an XInclude parser. It is intended to encapsulate + * the actual processing and recognition of XInclude components. + */ +class XINCLUDE_EXPORT XIncludeUtils +{ +private: + + /** Constructor + * + */ + XIncludeUtils(XMLErrorReporter *errorReporter); + + /** Destructor + * + */ + ~XIncludeUtils(); + + /** Parse the supplied XInclude element performing relevant XInclude functionality + * + * @param xincludeNode The XInclude node to parse and action + * @param parsedDocument The DOMDocument to which the results of the XInclude are to be added + * + * @return true if the XInclude processing was successful, false if not. Note that an + * XInclude that fails resulting in a successful fallback action would return true. + */ + bool doDOMNodeXInclude(DOMNode *xincludeNode, DOMDocument *parsedDocument, XMLEntityHandler* entityResolver); + + /** Parse an XInclude xml file into a DOMDocument node. + * + * @param href the location of the document to include + * @param relativeHref + * @param parsedDocument + * + * @return a newly created DOMDocument containing the parsed and actioned + * href, or NULL if the document could not be loaded. + */ + DOMDocument *doXIncludeXMLFileDOM(const XMLCh *href, + const XMLCh *relativeHref, + DOMNode *xincludeNode, + DOMDocument *parsedDocument, + XMLEntityHandler* entityResolver); + + /** Parse an XInclude text file into a DOMText node. + * + * @param href the location of the document to include + * @param relativeHref + * @param encoding + * @param parsedDocument + * + * @return a newly created DOMText containing the parsed and actioned + * href, or NULL if the document could not be loaded. + */ + DOMText *doXIncludeTEXTFileDOM(const XMLCh *href, + const XMLCh *relativeHref, + const XMLCh *encoding, + DOMNode *xincludeNode, + DOMDocument *parsedDocument, + XMLEntityHandler* entityResolver); + + /** Detect whether the supplied details are correct for an xi:include element + * + * @param name the element name + * @param namespaceURI the element namespace + * + * @return true if details are valid for an xi:include element, false + * if not. + */ + static bool isXIIncludeElement(const XMLCh *name, const XMLCh *namespaceURI); + + /** Detect whether the supplied details are correct for an xi:fallback element + * + * @param name the element name + * @param namespaceURI the element namespace + * + * @return true if details are valid for an xi:fallback element, false + * if not. + */ + static bool isXIFallbackElement(const XMLCh *name, const XMLCh *namespaceURI); + + /** Detect whether the supplied DOMNode is an xi:include element + * + * @param node The node to check + * + * @return true if node is an xi:include element, false + * if not. + */ + static bool isXIIncludeDOMNode(DOMNode *node); + + /** Detect whether the supplied DOMNode is an xi:fallback element + * + * @param node The DOMNode to check + * + * @return true if node is an xi:fallback element, false + * if not. + */ + static bool isXIFallbackDOMNode(DOMNode *node); + + /** Walk the content of the supplied source node, performing any xinclude actions + * that are encountered. + * + * @param source A DOMNode to parse, this node may be modified by the method + * @param parsedDocument the DOMDocument to which the parsed results are to be copied. + * + * @return true if XInclude behaviour was successfully performed on source, false if not. + */ + bool parseDOMNodeDoingXInclude(DOMNode *source, DOMDocument *parsedDocument, XMLEntityHandler* entityResolver); + + /** Parse the supplied URI and escape all characters as specified by + * the XINclusions specification. + * + * @param hrefAttrValue the href to parse and escape. + * @param needsDeallocating set to true if the return value needs deallocating + * by the caller after use, false if the value returned is the same as the + * hrefAttrValue passed in. + * + * @return an escaped version of hrefAttrValue or hrefAttrValue itself if + * hrefAttrValue contains only valid characters. + */ + /* 4.1.1 */ + const XMLCh *getEscapedHRefAttrValue(const XMLCh *hrefAttrValue, bool &needsDeallocating); + + /** Set the accept and accept-lang parameters on HTTP requests generated while + * XIncluding. + * + * @param acceptAttrValue + * @param acceptLangAttrValue + * + * @return true if the values were successfully added to the HTTP request, false + * if not. + */ + /* 4.1.2 */ + bool setContentNegotiation(const XMLCh *acceptAttrValue, const XMLCh *acceptLangAttrValue); + + /** Check the characters passed in are all valid characters for XInclusion + * as specified at http://www.w3.org/TR/xinclude/#text-included-items + * + * @param includeChars the characters to parse for validity + * + * @return true if the includeChars parameter contains only valid characters + * for inclusion, false if there are invalid characters in includeChars. + */ + bool checkTextIsValidForInclude(XMLCh *includeChars); + + /** Add the supplied parameter to the InclusionHistoryStack + * + * @param URItoAdd the URI to add to the InclusionHistoryStack/ + * + * @return true if the URI was added, false if a problem prevented + * the URI being added. + */ + bool addDocumentURIToCurrentInclusionHistoryStack(const XMLCh *URItoAdd); + + /** Check the XInclude InclusionHistoryStack to see if the supplied URI + * has already been included. This is used to ensure that circular inclusion + * chains are detected and that the inclusion mechanism does not get stuck in + * a loop. + * + * @param toFind the URI to look up. + * + * @return true if the toFind parameter is found in the InclusionHistortStack, + * false if the parameter is not in the stack or the stack is empty. + */ + bool isInCurrentInclusionHistoryStack(const XMLCh *toFind); + + /** Pop (i.e. remove and return) the top value from the InclusionHistoryStack + * + * @param toPop the value that is expected to be at the top of the stack, or + * NULL if no checking is required. + * + * @return the element at the top of the stack + */ + XIncludeHistoryNode * popFromCurrentInclusionHistoryStack(const XMLCh *toPop); + + /** Free the internal inclusion history list. + * + * @return nothing + */ + void freeInclusionHistory(); + + /** Construct and pass on an error description + * + * @param errorNode The DOMNode that was being parsed when the error occurred + * @param errorType The severity of the error + * @param errorMsg An optional message to include in the error report + * @param href The URI of the document being parsed. + * + * @return true if the errorHandler requests continuation of parsing despite error + * false if the errorHandler requests parsing end on encountering error, or it + * there is no error handler. + */ + bool reportError(const DOMNode* const errorNode + , XMLErrs::Codes errorType + , const XMLCh* const errorMsg + , const XMLCh* const href); + +public: + /* temporarily public to facilitate helper func getBaseAttrValue */ + static const XMLCh fgXIBaseAttrName[]; +private: + XIncludeHistoryNode *fIncludeHistoryHead; + XMLSize_t fErrorCount; + XMLErrorReporter *fErrorReporter; + static const XMLCh fgXIIncludeQName[]; + static const XMLCh fgXIFallbackQName[]; + static const XMLCh fgXIIncludeHREFAttrName[]; + static const XMLCh fgXIIncludeParseAttrName[]; + static const XMLCh fgXIIncludeParseAttrXMLValue[]; + static const XMLCh fgXIIncludeParseAttrTextValue[]; + static const XMLCh fgXIIncludeXPointerAttrName[]; + static const XMLCh fgXIIncludeEncodingAttrName[]; + static const XMLCh fgXIIncludeAcceptAttrName[]; + static const XMLCh fgXIIncludeAcceptLanguageAttrName[]; + static const XMLCh fgXIIIncludeNamespaceURI[]; + + friend class XIncludeDOMDocumentProcessor; + friend class AbstractDOMParser; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/mingw/lib/libxerces-c.dll.a b/src/libs/xerces-c/mingw/lib/libxerces-c.dll.a new file mode 100644 index 000000000000..20ea8bff2455 Binary files /dev/null and b/src/libs/xerces-c/mingw/lib/libxerces-c.dll.a differ diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOM.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOM.hpp new file mode 100644 index 000000000000..590033e8a63b --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOM.hpp @@ -0,0 +1,87 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOM_HPP) +#define XERCESC_INCLUDE_GUARD_DOM_HPP + +// +// This is the primary header file for inclusion in application +// programs using the C++ XML Document Object Model API. +// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Introduced in DOM Level 2 +#include +#include +#include +#include +#include +#include +#include + +// Introduced in DOM Level 3 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMAttr.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMAttr.hpp new file mode 100644 index 000000000000..b00caa88a4d2 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMAttr.hpp @@ -0,0 +1,176 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMATTR_HPP) +#define XERCESC_INCLUDE_GUARD_DOMATTR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMElement; +class DOMTypeInfo; + +/** + * The DOMAttr class refers to an attribute of an XML element. + * + * Typically the allowable values for the + * attribute are defined in a documenttype definition. + *

DOMAttr objects inherit the DOMNode interface, but + * since attributes are not actually child nodes of the elements they are associated with, the + * DOM does not consider them part of the document tree. Thus, the + * DOMNode attributes parentNode, + * previousSibling, and nextSibling have a null + * value for DOMAttr objects. The DOM takes the view that + * attributes are properties of elements rather than having a separate + * identity from the elements they are associated with; this should make it + * more efficient to implement such features as default attributes associated + * with all elements of a given type. Furthermore, attribute nodes + * may not be immediate children of a DOMDocumentFragment. However, + * they can be associated with DOMElement nodes contained within a + * DOMDocumentFragment. In short, users of the DOM + * need to be aware that DOMAttr nodes have some things in common + * with other objects inheriting the DOMNode interface, but they + * also are quite distinct. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMAttr: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMAttr() {} + DOMAttr(const DOMAttr &other) : DOMNode(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMAttr & operator = (const DOMAttr &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMAttr() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMAttr interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the name of this attribute. + * @since DOM Level 1 + */ + virtual const XMLCh * getName() const = 0; + + /** + * + * Returns true if the attribute received its value explicitly in the + * XML document, or if a value was assigned programatically with + * the setValue function. Returns false if the attribute value + * came from the default value declared in the document's DTD. + * @since DOM Level 1 + */ + virtual bool getSpecified() const = 0; + + /** + * Returns the value of the attribute. + * + * The value of the attribute is returned as a string. + * Character and general entity references are replaced with their values. + * @since DOM Level 1 + */ + virtual const XMLCh * getValue() const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Sets the value of the attribute. A text node with the unparsed contents + * of the string will be created. + * + * @param value The value of the DOM attribute to be set + * @since DOM Level 1 + */ + virtual void setValue(const XMLCh *value) = 0; + //@} + + /** @name Functions introduced in DOM Level 2. */ + //@{ + /** + * The DOMElement node this attribute is attached to or + * null if this attribute is not in use. + * + * @since DOM Level 2 + */ + virtual DOMElement *getOwnerElement() const = 0; + //@} + + /** @name Functions introduced in DOM Level 3. */ + //@{ + /** + * Returns whether this attribute is known to be of type ID or not. + * When it is and its value is unique, the ownerElement of this attribute + * can be retrieved using getElementById on DOMDocument. + * + * @return bool stating if this DOMAttr is an ID + * @since DOM level 3 + */ + virtual bool isId() const = 0; + + + /** + * Returns the type information associated with this attribute. + * + * @return the DOMTypeInfo associated with this attribute + * @since DOM level 3 + */ + virtual const DOMTypeInfo * getSchemaTypeInfo() const = 0; + + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMCDATASection.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMCDATASection.hpp new file mode 100644 index 000000000000..5975c01a0521 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMCDATASection.hpp @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCDATASECTION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCDATASECTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * CDATA sections are used to escape blocks of text containing characters that + * would otherwise be regarded as markup. The only delimiter that is + * recognized in a CDATA section is the "]]>" string that ends the CDATA + * section. CDATA sections cannot be nested. Their primary purpose is for + * including material such as XML fragments, without needing to escape all + * the delimiters. + *

The data attribute of the DOMText node holds + * the text that is contained by the CDATA section. Note that this may + * contain characters that need to be escaped outside of CDATA sections and + * that, depending on the character encoding ("charset") chosen for + * serialization, it may be impossible to write out some characters as part + * of a CDATA section. + *

The DOMCDATASection interface inherits from the + * DOMCharacterData interface through the DOMText + * interface. Adjacent DOMCDATASection nodes are not merged by use + * of the normalize method of the DOMNode interface. + * Because no markup is recognized within a DOMCDATASection, + * character numeric references cannot be used as an escape mechanism when + * serializing. Therefore, action needs to be taken when serializing a + * DOMCDATASection with a character encoding where some of the + * contained characters cannot be represented. Failure to do so would not + * produce well-formed XML.One potential solution in the serialization + * process is to end the CDATA section before the character, output the + * character using a character reference or entity reference, and open a new + * CDATA section for any further characters in the text node. Note, however, + * that some code conversion libraries at the time of writing do not return + * an error or exception when a character is missing from the encoding, + * making the task of ensuring that data is not corrupted on serialization + * more difficult. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMCDATASection: public DOMText { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMCDATASection() {} + DOMCDATASection(const DOMCDATASection &other) : DOMText(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMCDATASection & operator = (const DOMCDATASection &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMCDATASection() {}; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMCharacterData.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMCharacterData.hpp new file mode 100644 index 000000000000..f79154aae907 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMCharacterData.hpp @@ -0,0 +1,215 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCHARACTERDATA_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCHARACTERDATA_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * The DOMCharacterData interface extends DOMNode with a set of + * attributes and methods for accessing character data in the DOM. For + * clarity this set is defined here rather than on each object that uses + * these attributes and methods. No DOM objects correspond directly to + * DOMCharacterData, though DOMText and others do + * inherit the interface from it. All offsets in this interface + * start from 0. + *

As explained in the DOM spec, text strings in + * the DOM are represented in UTF-16, i.e. as a sequence of 16-bit units. In + * the following, the term 16-bit units is used whenever necessary to + * indicate that indexing on DOMCharacterData is done in 16-bit units. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMCharacterData: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMCharacterData() {} + DOMCharacterData(const DOMCharacterData &other) : DOMNode(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMCharacterData & operator = (const DOMCharacterData &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMCharacterData() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMCharacterData interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the character data of the node that implements this interface. + * + * The DOM implementation may not put arbitrary limits on the amount of data that + * may be stored in a DOMCharacterData node. However, + * implementation limits may mean that the entirety of a node's data may + * not fit into a single XMLCh* String. In such cases, the user + * may call substringData to retrieve the data in + * appropriately sized pieces. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. + * @since DOM Level 1 + */ + virtual const XMLCh * getData() const = 0; + + /** + * Returns the number of characters that are available through data and + * the substringData method below. + * + * This may have the value + * zero, i.e., CharacterData nodes may be empty. + * @since DOM Level 1 + */ + virtual XMLSize_t getLength() const = 0; + + /** + * Extracts a range of data from the node. + * + * @param offset Start offset of substring to extract. + * @param count The number of characters to extract. + * @return The specified substring. If the sum of offset and + * count exceeds the length, then all + * characters to the end of the data are returned. + * @exception DOMException + * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater + * than the number of characters in data, or if the + * specified count is negative. + * @since DOM Level 1 + */ + virtual const XMLCh * substringData(XMLSize_t offset, + XMLSize_t count) const = 0; + + // ----------------------------------------------------------------------- + // String methods + // ----------------------------------------------------------------------- + /** + * Append the string to the end of the character data of the node. + * + * Upon success, data provides access to the concatenation of + * data and the XMLCh* String specified. + * @param arg The XMLCh* String to append. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 1 + */ + virtual void appendData(const XMLCh *arg) = 0; + + /** + * Insert a string at the specified character offset. + * + * @param offset The character offset at which to insert. + * @param arg The XMLCh* String to insert. + * @exception DOMException + * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater + * than the number of characters in data. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 1 + */ + virtual void insertData(XMLSize_t offset, const XMLCh *arg) = 0; + + /** + * Remove a range of characters from the node. + * + * Upon success, + * data and length reflect the change. + * @param offset The offset from which to remove characters. + * @param count The number of characters to delete. If the sum of + * offset and count exceeds length + * then all characters from offset to the end of the data + * are deleted. + * @exception DOMException + * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater + * than the number of characters in data, or if the + * specified count is negative. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 1 + */ + virtual void deleteData(XMLSize_t offset, + XMLSize_t count) = 0; + + /** + * Replace the characters starting at the specified character offset with + * the specified string. + * + * @param offset The offset from which to start replacing. + * @param count The number of characters to replace. If the sum of + * offset and count exceeds length + * , then all characters to the end of the data are replaced (i.e., the + * effect is the same as a remove method call with the same + * range, followed by an append method invocation). + * @param arg The XMLCh* String with which the range must be + * replaced. + * @exception DOMException + * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater + * than the number of characters in data, or if the + * specified count is negative. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 1 + */ + virtual void replaceData(XMLSize_t offset, + XMLSize_t count, + const XMLCh *arg) = 0; + + /** + * Sets the character data of the node that implements this interface. + * + * @param data The XMLCh* String to set. + * @since DOM Level 1 + */ + virtual void setData(const XMLCh *data) = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMComment.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMComment.hpp new file mode 100644 index 000000000000..b0c9b5314e48 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMComment.hpp @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCOMMENT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCOMMENT_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * This interface inherits from CharacterData and represents the + * content of a comment, i.e., all the characters between the starting ' + * <!--' and ending '-->'. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMComment: public DOMCharacterData { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMComment() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMComment(const DOMComment &); + DOMComment & operator = (const DOMComment &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMComment() {}; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMConfiguration.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMConfiguration.hpp new file mode 100644 index 000000000000..bbd88092e406 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMConfiguration.hpp @@ -0,0 +1,454 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCONFIGURATION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCONFIGURATION_HPP + +//------------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------------ + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * The DOMConfiguration interface represents the configuration of + * a document and maintains a table of recognized parameters. + * Using the configuration, it is possible to change + * Document.normalizeDocument behavior, such as replacing + * CDATASection nodes with Text nodes or + * specifying the type of the schema that must be used when the + * validation of the Document is requested. DOMConfiguration + * objects are also used in [DOM Level 3 Load and Save] in + * the DOMLSParser and DOMLSSerializer interfaces. + * + * The DOMConfiguration distinguish two types of parameters: + * boolean (boolean parameters) and DOMUserData + * (parameters). The names used by the DOMConfiguration object are + * defined throughout the DOM Level 3 specifications. Names are + * case-insensitive. To avoid possible conflicts, as a + * convention, names referring to boolean parameters and + * parameters defined outside the DOM specification should be made + * unique. Names are recommended to follow the XML name + * production rule but it is not enforced by the DOM + * implementation. DOM Level 3 Core Implementations are required + * to recognize all boolean parameters and parameters defined in + * this specification. Each boolean parameter state or parameter + * value may then be supported or not by the implementation. Refer + * to their definition to know if a state or a value must be + * supported or not. + * + * Note: Parameters are similar to features and properties used in + * SAX2 [SAX]. + * + * The following list of parameters defined in the DOM: + * + * "error-handler" + * [required] + * A DOMErrorHandler object. If an error is + * encountered in the document, the implementation will call + * back the DOMErrorHandler registered using this + * parameter. + * When called, DOMError.relatedData will contain the + * closest node to where the error occured. If the + * implementation is unable to determine the node where the + * error occurs, DOMError.relatedData will contain the + * Document node. Mutations to the document from + * within an error handler will result in implementation + * dependent behaviour. + * + * "schema-type" + * [optional] + * A DOMString object containing an absolute URI and + * representing the type of the schema language used to + * validate a document against. Note that no lexical + * checking is done on the absolute URI. + * If this parameter is not set, a default value may be + * provided by the implementation, based on the schema + * languages supported and on the schema language used at + * load time. + * + * Note: For XML Schema [XML Schema Part 1], + * applications must use the value + * "http://www.w3.org/2001/XMLSchema". For XML DTD + * [XML 1.0], applications must use the value + * "http://www.w3.org/TR/REC-xml". Other schema languages + * are outside the scope of the W3C and therefore should + * recommend an absolute URI in order to use this method. + * + * "schema-location" + * [optional] + * A DOMString object containing a list of URIs, + * separated by white spaces (characters matching the + * nonterminal production S defined in section 2.3 + * [XML 1.0]), that represents the schemas against + * which validation should occur. The types of schemas + * referenced in this list must match the type specified + * with schema-type, otherwise the behaviour of an + * implementation is undefined. If the schema type is XML + * Schema [XML Schema Part 1], only one of the XML + * Schemas in the list can be with no namespace. + * If validation occurs against a namespace aware schema, + * i.e. XML Schema, and the targetNamespace of a schema + * (specified using this property) matches the + * targetNamespace of a schema occurring in the instance + * document, i.e in schemaLocation attribute, the schema + * specified by the user using this property will be used + * (i.e., in XML Schema the schemaLocation attribute in the + * instance document or on the import element will be + * effectively ignored). + * + * Note: It is illegal to set the schema-location parameter + * if the schema-type parameter value is not set. It is + * strongly recommended that DOMInputSource.baseURI will be + * set, so that an implementation can successfully resolve + * any external entities referenced. + * + * The following list of boolean parameters (features) defined in + * the DOM: + * + * "canonical-form" + * + * true + * [optional] + * Canonicalize the document according to the rules + * specified in [Canonical XML]. Note that this + * is limited to what can be represented in the DOM. + * In particular, there is no way to specify the order + * of the attributes in the DOM. + * + * false + * [required] (default) + * Do not canonicalize the document. + * + * "cdata-sections" + * + * true + * [required] (default) + * Keep CDATASection nodes in the document. + * + * false + * [required] + * Transform CDATASection nodes in the document + * into Text nodes. The new Text node is + * then combined with any adjacent Text node. + * + * "comments" + * + * true + * [required] (default) + * Keep Comment nodes in the document. + * + * false + * [required] + * Discard Comment nodes in the Document. + * + * "datatype-normalization" + * + * true + * [required] + * Exposed normalized values in the tree. + * + * false + * [required] (default) + * Do not perform normalization on the tree. + * + * "discard-default-content" + * + * true + * [required] (default) + * Use whatever information available to the + * implementation (i.e. XML schema, DTD, the specified + * flag on Attr nodes, and so on) to decide what + * attributes and content should be discarded or not. + * Note that the specified flag on Attr nodes in + * itself is not always reliable, it is only reliable + * when it is set to false since the only case where + * it can be set to false is if the attribute was + * created by the implementation. The default content + * won't be removed if an implementation does not have + * any information available. + * + * false + * [required] + * Keep all attributes and all content. + * + * "entities" + * + * true + * [required] + * Keep EntityReference and Entity nodes + * in the document. + * + * false + * [required] (default) + * Remove all EntityReference and Entity + * nodes from the document, putting the entity + * expansions directly in their place. Text + * nodes are into "normal" form. Only + * EntityReference nodes to non-defined entities + * are kept in the document. + * + * "infoset" + * + * true + * [required] + * Only keep in the document the information defined + * in the XML Information Set [XML Information + * set]. + * This forces the following features to false: + * namespace-declarations, validate-if-schema, + * entities, datatype-normalization, cdata-sections. + * This forces the following features to true: + * whitespace-in-element-content, comments, + * namespaces. + * Other features are not changed unless explicitly + * specified in the description of the features. + * Note that querying this feature with getFeature + * returns true only if the individual features + * specified above are appropriately set. + * + * false + * Setting infoset to false has no effect. + * + * "namespaces" + * + * true + * [required] (default) + * Perform the namespace processing as defined in + * [XML Namespaces]. + * + * false + * [optional] + * Do not perform the namespace processing. + * + * "namespace-declarations" + * + * true + * [required] (default) + * Include namespace declaration attributes, specified + * or defaulted from the schema or the DTD, in the + * document. See also the section Declaring + * Namespaces in [XML Namespaces]. + * + * false + * [required] + * Discard all namespace declaration attributes. The + * Namespace prefixes are retained even if this + * feature is set to false. + * + * "normalize-characters" + * + * true + * [optional] + * Perform the W3C Text Normalization of the + * characters [CharModel] in the document. + * + * false + * [required] (default) + * Do not perform character normalization. + * + * "split-cdata-sections" + * + * true + * [required] (default) + * Split CDATA sections containing the CDATA section + * termination marker ']]>'. When a CDATA section is + * split a warning is issued. + * + * false + * [required] + * Signal an error if a CDATASection contains an + * unrepresentable character. + * + * "validate" + * + * true + * [optional] + * Require the validation against a schema (i.e. XML + * schema, DTD, any other type or representation of + * schema) of the document as it is being normalized + * as defined by [XML 1.0]. If validation errors + * are found, or no schema was found, the error + * handler is notified. Note also that normalized + * values will not be exposed to the schema in used + * unless the feature datatype-normalization is true. + * + * Note: validate-if-schema and validate are mutually + * exclusive, setting one of them to true will set the + * other one to false. + * + * false + * [required] (default) + * Only XML 1.0 non-validating processing must be + * done. Note that validation might still happen if + * validate-if-schema is true. + * + * "validate-if-schema" + * + * true + * [optional] + * Enable validation only if a declaration for the + * document element can be found (independently of + * where it is found, i.e. XML schema, DTD, or any + * other type or representation of schema). If + * validation errors are found, the error handler is + * notified. Note also that normalized values will not + * be exposed to the schema in used unless the feature + * datatype-normalization is true. + * + * Note: validate-if-schema and validate are mutually + * exclusive, setting one of them to true will set the + * other one to false. + * + * false + * [required] (default) + * No validation should be performed if the document + * has a schema. Note that validation must still + * happen if validate is true. + * + * "element-content-whitespace" + * + * true + * [required] (default) + * Keep all white spaces in the document. + * + * false + * [optional] + * Discard white space in element content while + * normalizing. The implementation is expected to use + * the isWhitespaceInElementContent flag on Text + * nodes to determine if a text node should be written + * out or not. + * + * The resolutions of entities is done using Document.baseURI. + * However, when the features "LS-Load" or "LS-Save" defined in + * [DOM Level 3 Load and Save] are supported by the DOM + * implementation, the parameter "entity-resolver" can also be + * used on DOMConfiguration objects attached to Document + * nodes. If this parameter is set, + * Document.normalizeDocument will invoke the entity + * resolver instead of using Document.baseURI. + */ +class CDOM_EXPORT DOMConfiguration +{ +protected: + //----------------------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMConfiguration() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMConfiguration(const DOMConfiguration &); + DOMConfiguration & operator = (const DOMConfiguration &); + //@} + +public: + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** Set the value of a parameter. + * @param name The name of the parameter to set. + * @param value The new value or null if the user wishes to unset the + * parameter. While the type of the value parameter is defined as + * DOMUserData, the object type must match the type defined + * by the definition of the parameter. For example, if the parameter is + * "error-handler", the value must be of type DOMErrorHandler + * @exception DOMException (NOT_SUPPORTED_ERR) Raised when the + * parameter name is recognized but the requested value cannot be set. + * @exception DOMException (NOT_FOUND_ERR) Raised when the + * parameter name is not recognized. + * @since DOM level 3 + **/ + virtual void setParameter(const XMLCh* name, const void* value) = 0; + virtual void setParameter(const XMLCh* name, bool value) = 0; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** Return the value of a parameter if known. + * @param name The name of the parameter. + * @return The current object associated with the specified parameter or + * null if no object has been associated or if the parameter is not + * supported. + * @exception DOMException (NOT_FOUND_ERR) Raised when the i + * boolean parameter + * name is not recognized. + * @since DOM level 3 + **/ + virtual const void* getParameter(const XMLCh* name) const = 0; + + + // ----------------------------------------------------------------------- + // Query methods + // ----------------------------------------------------------------------- + + /** Check if setting a parameter to a specific value is supported. + * @param name The name of the parameter to check. + * @param value An object. if null, the returned value is true. + * @return true if the parameter could be successfully set to the specified + * value, or false if the parameter is not recognized or the requested value + * is not supported. This does not change the current value of the parameter + * itself. + * @since DOM level 3 + **/ + virtual bool canSetParameter(const XMLCh* name, const void* value) const = 0; + virtual bool canSetParameter(const XMLCh* name, bool value) const = 0; + + /** + * The list of the parameters supported by this DOMConfiguration object and + * for which at least one value can be set by the application. + * Note that this list can also contain parameter names defined outside this specification. + * + * @return The list of parameters that can be used with setParameter/getParameter + * @since DOM level 3 + **/ + virtual const DOMStringList* getParameterNames() const = 0; + + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMConfiguration() {}; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DOMConfiguration.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMDocument.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMDocument.hpp new file mode 100644 index 000000000000..ae8e65c445b3 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMDocument.hpp @@ -0,0 +1,819 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ +*/ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENT_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMConfiguration; +class DOMDocumentType; +class DOMElement; +class DOMDocumentFragment; +class DOMComment; +class DOMCDATASection; +class DOMProcessingInstruction; +class DOMAttr; +class DOMEntity; +class DOMEntityReference; +class DOMImplementation; +class DOMNodeFilter; +class DOMNodeList; +class DOMNotation; +class DOMText; +class DOMNode; + + +/** + * The DOMDocument interface represents the entire XML + * document. Conceptually, it is the root of the document tree, and provides + * the primary access to the document's data. + *

Since elements, text nodes, comments, processing instructions, etc. + * cannot exist outside the context of a DOMDocument, the + * DOMDocument interface also contains the factory methods needed + * to create these objects. The DOMNode objects created have a + * ownerDocument attribute which associates them with the + * DOMDocument within whose context they were created. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + */ + +class CDOM_EXPORT DOMDocument: public DOMDocumentRange, + public DOMXPathEvaluator, + public DOMDocumentTraversal, + public DOMNode { + + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMDocument() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMDocument(const DOMDocument &); + DOMDocument & operator = (const DOMDocument &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMDocument() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMDocument interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + /** + * Creates an element of the type specified. Note that the instance + * returned implements the DOMElement interface, so attributes + * can be specified directly on the returned object. + *
In addition, if there are known attributes with default values, + * DOMAttr nodes representing them are automatically created + * and attached to the element. + *
To create an element with a qualified name and namespace URI, use + * the createElementNS method. + * @param tagName The name of the element type to instantiate. For XML, + * this is case-sensitive. + * @return A new DOMElement object with the + * nodeName attribute set to tagName, and + * localName, prefix, and + * namespaceURI set to null. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified name contains an + * illegal character. + * @since DOM Level 1 + */ + virtual DOMElement *createElement(const XMLCh *tagName) = 0; + + /** + * Creates an empty DOMDocumentFragment object. + * @return A new DOMDocumentFragment. + * @since DOM Level 1 + */ + virtual DOMDocumentFragment *createDocumentFragment() = 0; + + /** + * Creates a DOMText node given the specified string. + * @param data The data for the node. + * @return The new DOMText object. + * @since DOM Level 1 + */ + virtual DOMText *createTextNode(const XMLCh *data) = 0; + + /** + * Creates a DOMComment node given the specified string. + * @param data The data for the node. + * @return The new DOMComment object. + * @since DOM Level 1 + */ + virtual DOMComment *createComment(const XMLCh *data) = 0; + + /** + * Creates a DOMCDATASection node whose value is the specified + * string. + * @param data The data for the DOMCDATASection contents. + * @return The new DOMCDATASection object. + * @since DOM Level 1 + */ + virtual DOMCDATASection *createCDATASection(const XMLCh *data) = 0; + + /** + * Creates a DOMProcessingInstruction node given the specified + * name and data strings. + * @param target The target part of the processing instruction. + * @param data The data for the node. + * @return The new DOMProcessingInstruction object. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified target contains an + * illegal character. + * @since DOM Level 1 + */ + virtual DOMProcessingInstruction *createProcessingInstruction(const XMLCh *target, + const XMLCh *data) = 0; + + + /** + * Creates an DOMAttr of the given name. Note that the + * DOMAttr instance can then be set on an DOMElement + * using the setAttributeNode method. + *
To create an attribute with a qualified name and namespace URI, use + * the createAttributeNS method. + * @param name The name of the attribute. + * @return A new DOMAttr object with the nodeName + * attribute set to name, and localName, + * prefix, and namespaceURI set to + * null. The value of the attribute is the empty string. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified name contains an + * illegal character. + * @since DOM Level 1 + */ + virtual DOMAttr *createAttribute(const XMLCh *name) = 0; + + + /** + * Creates an DOMEntityReference object. In addition, if the + * referenced entity is known, the child list of the + * DOMEntityReference node is made the same as that of the + * corresponding DOMEntity node.If any descendant of the + * DOMEntity node has an unbound namespace prefix, the + * corresponding descendant of the created DOMEntityReference + * node is also unbound; (its namespaceURI is + * null). The DOM Level 2 does not support any mechanism to + * resolve namespace prefixes. + * @param name The name of the entity to reference. + * @return The new DOMEntityReference object. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified name contains an + * illegal character. + * @since DOM Level 1 + */ + virtual DOMEntityReference *createEntityReference(const XMLCh *name) = 0; + + /** + * The Document Type Declaration (see DOMDocumentType) + * associated with this document. For XML + * documents without a document type declaration this returns + * null. The DOM Level 2 does not support editing the + * Document Type Declaration. docType cannot be altered in + * any way, including through the use of methods inherited from the + * DOMNode interface, such as insertNode or + * removeNode. + * @since DOM Level 1 + */ + virtual DOMDocumentType *getDoctype() const = 0; + + /** + * The DOMImplementation object that handles this document. A + * DOM application may use objects from multiple implementations. + * @since DOM Level 1 + */ + virtual DOMImplementation *getImplementation() const = 0; + + /** + * This is a convenience attribute that allows direct access to the child + * node that is the root element of the document. + * @since DOM Level 1 + */ + virtual DOMElement *getDocumentElement() const = 0; + + /** + * Returns a DOMNodeList of all the DOMElement(s) with a + * given tag name in the order in which they are encountered in a + * preorder traversal of the DOMDocument tree. + * + * The returned node list is "live", in that changes + * to the document tree made after a nodelist was initially + * returned will be immediately reflected in the node list. + * @param tagname The name of the tag to match on. The special value "*" + * matches all tags. + * @return A new DOMNodeList object containing all the matched + * DOMElement(s). + * @since DOM Level 1 + */ + virtual DOMNodeList *getElementsByTagName(const XMLCh *tagname) const = 0; + + //@} + + /** @name Functions introduced in DOM Level 2. */ + //@{ + + /** + * Imports a node from another document to this document. The returned + * node has no parent; (parentNode is null). + * The source node is not altered or removed from the original document; + * this method creates a new copy of the source node. + *
For all nodes, importing a node creates a node object owned by the + * importing document, with attribute values identical to the source + * node's nodeName and nodeType, plus the + * attributes related to namespaces (prefix, + * localName, and namespaceURI). As in the + * cloneNode operation on a DOMNode, the source + * node is not altered. + *
Additional information is copied as appropriate to the + * nodeType, attempting to mirror the behavior expected if + * a fragment of XML source was copied from one document to + * another, recognizing that the two documents may have different DTDs + * in the XML case. The following list describes the specifics for each + * type of node. + *

+ *
ATTRIBUTE_NODE
+ *
The ownerElement attribute + * is set to null and the specified flag is + * set to true on the generated DOMAttr. The + * descendants of the source DOMAttr are recursively imported + * and the resulting nodes reassembled to form the corresponding subtree. + * Note that the deep parameter has no effect on + * DOMAttr nodes; they always carry their children with them + * when imported.
+ *
DOCUMENT_FRAGMENT_NODE
+ *
If the deep option + * was set to true, the descendants of the source element + * are recursively imported and the resulting nodes reassembled to form + * the corresponding subtree. Otherwise, this simply generates an empty + * DOMDocumentFragment.
+ *
DOCUMENT_NODE
+ *
DOMDocument + * nodes cannot be imported.
+ *
DOCUMENT_TYPE_NODE
+ *
DOMDocumentType + * nodes cannot be imported.
+ *
ELEMENT_NODE
+ *
Specified attribute nodes of the + * source element are imported, and the generated DOMAttr + * nodes are attached to the generated DOMElement. Default + * attributes are not copied, though if the document being imported into + * defines default attributes for this element name, those are assigned. + * If the importNode deep parameter was set to + * true, the descendants of the source element are + * recursively imported and the resulting nodes reassembled to form the + * corresponding subtree.
+ *
ENTITY_NODE
+ *
DOMEntity nodes can be + * imported, however in the current release of the DOM the + * DOMDocumentType is readonly. Ability to add these imported + * nodes to a DOMDocumentType will be considered for addition + * to a future release of the DOM.On import, the publicId, + * systemId, and notationName attributes are + * copied. If a deep import is requested, the descendants + * of the the source DOMEntity are recursively imported and + * the resulting nodes reassembled to form the corresponding subtree.
+ *
+ * ENTITY_REFERENCE_NODE
+ *
Only the DOMEntityReference itself is + * copied, even if a deep import is requested, since the + * source and destination documents might have defined the entity + * differently. If the document being imported into provides a + * definition for this entity name, its value is assigned.
+ *
NOTATION_NODE
+ *
+ * DOMNotation nodes can be imported, however in the current + * release of the DOM the DOMDocumentType is readonly. Ability + * to add these imported nodes to a DOMDocumentType will be + * considered for addition to a future release of the DOM.On import, the + * publicId and systemId attributes are copied. + * Note that the deep parameter has no effect on + * DOMNotation nodes since they never have any children.
+ *
+ * PROCESSING_INSTRUCTION_NODE
+ *
The imported node copies its + * target and data values from those of the + * source node.
+ *
TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE
+ *
These three + * types of nodes inheriting from DOMCharacterData copy their + * data and length attributes from those of + * the source node.
+ *
+ * @param importedNode The node to import. + * @param deep If true, recursively import the subtree under + * the specified node; if false, import only the node + * itself, as explained above. This has no effect on DOMAttr + * , DOMEntityReference, and DOMNotation nodes. + * @return The imported node that belongs to this DOMDocument. + * @exception DOMException + * NOT_SUPPORTED_ERR: Raised if the type of node being imported is not + * supported. + * @since DOM Level 2 + */ + virtual DOMNode *importNode(const DOMNode *importedNode, bool deep) = 0; + + /** + * Creates an element of the given qualified name and namespace URI. + * @param namespaceURI The namespace URI of the element to create. + * @param qualifiedName The qualified name of the element type to + * instantiate. + * @return A new DOMElement object with the following + * attributes: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Attribute + * Value
DOMNode.nodeName + * qualifiedName
DOMNode.namespaceURI + * namespaceURI
DOMNode.prefixprefix, extracted + * from qualifiedName, or null if there is + * no prefix
DOMNode.localNamelocal name, extracted from + * qualifiedName
DOMElement.tagName + * qualifiedName
+ * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified qualified name + * contains an illegal character, per the XML 1.0 specification . + *
NAMESPACE_ERR: Raised if the qualifiedName is + * malformed per the Namespaces in XML specification, if the + * qualifiedName has a prefix and the + * namespaceURI is null, or if the + * qualifiedName has a prefix that is "xml" and the + * namespaceURI is different from " + * http://www.w3.org/XML/1998/namespace" . + *
NOT_SUPPORTED_ERR: Always thrown if the current document does not + * support the "XML" feature, since namespaces were + * defined by XML. + * @since DOM Level 2 + */ + virtual DOMElement *createElementNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName) = 0; + + /** + * Creates an attribute of the given qualified name and namespace URI. + * @param namespaceURI The namespace URI of the attribute to create. + * @param qualifiedName The qualified name of the attribute to + * instantiate. + * @return A new DOMAttr object with the following attributes: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Attribute + * Value
DOMNode.nodeNamequalifiedName
+ * DOMNode.namespaceURInamespaceURI
+ * DOMNode.prefixprefix, extracted from + * qualifiedName, or null if there is no + * prefix
DOMNode.localNamelocal name, extracted from + * qualifiedName
DOMAttr.name + * qualifiedName
DOMNode.nodeValuethe empty + * string
+ * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified qualified name + * contains an illegal character, per the XML 1.0 specification . + *
NAMESPACE_ERR: Raised if the qualifiedName is + * malformed per the Namespaces in XML specification, if the + * qualifiedName has a prefix and the + * namespaceURI is null, if the + * qualifiedName has a prefix that is "xml" and the + * namespaceURI is different from " + * http://www.w3.org/XML/1998/namespace", or if the + * qualifiedName, or its prefix, is "xmlns" and the + * namespaceURI is different from " + * http://www.w3.org/2000/xmlns/". + *
NOT_SUPPORTED_ERR: Always thrown if the current document does not + * support the "XML" feature, since namespaces were + * defined by XML. + * @since DOM Level 2 + */ + virtual DOMAttr *createAttributeNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName) = 0; + + /** + * Returns a DOMNodeList of all the DOMElement(s) with a + * given local name and namespace URI in the order in which they are + * encountered in a preorder traversal of the DOMDocument tree. + * @param namespaceURI The namespace URI of the elements to match on. The + * special value "*" matches all namespaces. + * @param localName The local name of the elements to match on. The + * special value "*" matches all local names. + * @return A new DOMNodeList object containing all the matched + * DOMElement(s). + * @since DOM Level 2 + */ + virtual DOMNodeList *getElementsByTagNameNS(const XMLCh *namespaceURI, + const XMLCh *localName) const = 0; + + /** + * Returns the DOMElement whose ID is given by + * elementId. If no such element exists, returns + * null. Behavior is not defined if more than one element + * has this ID. The DOM implementation must have + * information that says which attributes are of type ID. Attributes + * with the name "ID" are not of type ID unless so defined. + * Implementations that do not know whether attributes are of type ID or + * not are expected to return null. + * @param elementId The unique id value for an element. + * @return The matching element. + * @since DOM Level 2 + */ + virtual DOMElement * getElementById(const XMLCh *elementId) const = 0; + //@} + + /** @name Functions introduced in DOM Level 3. */ + //@{ + + /** + * An attribute specifying the encoding used for this document at the time of the parsing. + * This is null when it is not known, such as when the DOMDocument was created in memory. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getInputEncoding() const = 0; + + /** + * An attribute specifying, as part of the XML declaration, the encoding of this document. + * This is null when unspecified or when it is not known, such as when the + * DOMDocument was created in memory. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getXmlEncoding() const = 0; + + /** + * An attribute specifying, as part of the XML declaration, whether this document is standalone. + * This is false when unspecified. + * + * @since DOM Level 3 + */ + virtual bool getXmlStandalone() const = 0; + + /** + * An attribute specifying, as part of the XML declaration, whether this + * document is standalone. + *
This attribute represents the property [standalone] defined in . + * + * @since DOM Level 3 + */ + virtual void setXmlStandalone(bool standalone) = 0; + + /** + * An attribute specifying, as part of the XML declaration, the version + * number of this document. This is null when unspecified. + *
This attribute represents the property [version] defined in . + * + * @since DOM Level 3 + */ + virtual const XMLCh* getXmlVersion() const = 0; + + /** + * An attribute specifying, as part of the XML declaration, the version + * number of this document. This is null when unspecified. + *
This attribute represents the property [version] defined in . + * + * @since DOM Level 3 + */ + virtual void setXmlVersion(const XMLCh* version) = 0; + + /** + * The location of the document or null if undefined. + *
Beware that when the DOMDocument supports the feature + * "HTML" , the href attribute of the HTML BASE element takes precedence + * over this attribute. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getDocumentURI() const = 0; + /** + * The location of the document or null if undefined. + *
Beware that when the DOMDocument supports the feature + * "HTML" , the href attribute of the HTML BASE element takes precedence + * over this attribute. + * + * @since DOM Level 3 + */ + virtual void setDocumentURI(const XMLCh* documentURI) = 0; + + /** + * An attribute specifying whether errors checking is enforced or not. + * When set to false, the implementation is free to not + * test every possible error case normally defined on DOM operations, + * and not raise any DOMException. In case of error, the + * behavior is undefined. This attribute is true by + * defaults. + * + * @since DOM Level 3 + */ + virtual bool getStrictErrorChecking() const = 0; + /** + * An attribute specifying whether errors checking is enforced or not. + * When set to false, the implementation is free to not + * test every possible error case normally defined on DOM operations, + * and not raise any DOMException. In case of error, the + * behavior is undefined. This attribute is true by + * defaults. + * + * @since DOM Level 3 + */ + virtual void setStrictErrorChecking(bool strictErrorChecking) = 0; + + /** + * Rename an existing node. When possible this simply changes the name of + * the given node, otherwise this creates a new node with the specified + * name and replaces the existing node with the new node as described + * below. This only applies to nodes of type ELEMENT_NODE + * and ATTRIBUTE_NODE. + *
When a new node is created, the following operations are performed: + * the new node is created, any registered event listener is registered + * on the new node, any user data attached to the old node is removed + * from that node, the old node is removed from its parent if it has + * one, the children are moved to the new node, if the renamed node is + * an DOMElement its attributes are moved to the new node, the + * new node is inserted at the position the old node used to have in its + * parent's child nodes list if it has one, the user data that was + * attached to the old node is attach to the new node, the user data + * event NODE_RENAMED is fired. + *
When the node being renamed is an DOMAttr that is + * attached to an DOMElement, the node is first removed from + * the DOMElement attributes map. Then, once renamed, either + * by modifying the existing node or creating a new one as described + * above, it is put back. + * + * @param n The node to rename. + * @param namespaceURI The new namespaceURI. + * @param qualifiedName The new qualified name. + * @return The renamed node. This is either the specified node or the new + * node that was created to replace the specified node. + * @exception DOMException + * NOT_SUPPORTED_ERR: Raised when the type of the specified node is + * neither ELEMENT_NODE nor ATTRIBUTE_NODE. + *
WRONG_DOCUMENT_ERR: Raised when the specified node was created + * from a different document than this document. + *
NAMESPACE_ERR: Raised if the qualifiedName is + * malformed per the Namespaces in XML specification, if the + * qualifiedName has a prefix and the + * namespaceURI is null, or if the + * qualifiedName has a prefix that is "xml" and the + * namespaceURI is different from " + * http://www.w3.org/XML/1998/namespace" . Also raised, when the node + * being renamed is an attribute, if the qualifiedName, + * or its prefix, is "xmlns" and the namespaceURI is + * different from "http://www.w3.org/2000/xmlns/". + * @since DOM Level 3 + */ + virtual DOMNode* renameNode(DOMNode* n, const XMLCh* namespaceURI, const XMLCh* qualifiedName) = 0; + + + /** + * Changes the ownerDocument of a node, its children, as well + * as the attached attribute nodes if there are any. If the node has a + * parent it is first removed from its parent child list. This + * effectively allows moving a subtree from one document to another. The + * following list describes the specifics for each type of node. + * + *
+ *
+ * ATTRIBUTE_NODE
+ *
The ownerElement attribute is set to + * null and the specified flag is set to + * true on the adopted DOMAttr. The descendants + * of the source DOMAttr are recursively adopted.
+ *
+ * DOCUMENT_FRAGMENT_NODE
+ *
The descendants of the source node are + * recursively adopted.
+ *
DOCUMENT_NODE
+ *
DOMDocument nodes cannot + * be adopted.
+ *
DOCUMENT_TYPE_NODE
+ *
DOMDocumentType nodes cannot + * be adopted.
+ *
ELEMENT_NODE
+ *
Specified attribute nodes of the source + * element are adopted, and the generated DOMAttr nodes. + * Default attributes are discarded, though if the document being + * adopted into defines default attributes for this element name, those + * are assigned. The descendants of the source element are recursively + * adopted.
+ *
ENTITY_NODE
+ *
DOMEntity nodes cannot be adopted.
+ *
+ * ENTITY_REFERENCE_NODE
+ *
Only the DOMEntityReference node + * itself is adopted, the descendants are discarded, since the source + * and destination documents might have defined the entity differently. + * If the document being imported into provides a definition for this + * entity name, its value is assigned.
+ *
NOTATION_NODE
+ *
DOMNotation + * nodes cannot be adopted.
+ *
PROCESSING_INSTRUCTION_NODE, TEXT_NODE, + * CDATA_SECTION_NODE, COMMENT_NODE
+ *
These nodes can all be adopted. No + * specifics.
+ *
+ * @param source The node to move into this document. + * @return The adopted node, or null if this operation + * fails, such as when the source node comes from a different + * implementation. + * @exception DOMException + * NOT_SUPPORTED_ERR: Raised if the source node is of type + * DOCUMENT, DOCUMENT_TYPE. + *
NO_MODIFICATION_ALLOWED_ERR: Raised when the source node is + * readonly. + * @since DOM Level 3 + */ + virtual DOMNode* adoptNode(DOMNode* source) = 0; + + /** + * This method acts as if the document was going through a save and load + * cycle, putting the document in a "normal" form. The actual result + * depends on the features being set. See DOMConfiguration for + * details. + * + *
Noticeably this method normalizes DOMText nodes, makes + * the document "namespace wellformed", according to the algorithm + * described below in pseudo code, by adding missing namespace + * declaration attributes and adding or changing namespace prefixes, + * updates the replacement tree of DOMEntityReference nodes, + * normalizes attribute values, etc. + *
Mutation events, when supported, are generated to reflect the + * changes occurring on the document. + * Note that this is a partial implementation. Not all the required features are implemented. + * Currently DOMAttr and DOMText nodes are normalized. + * Features to remove DOMComment and DOMCDATASection work. + * @since DOM Level 3 + * + */ + virtual void normalizeDocument() = 0; + + + /** + * The configuration used when DOMDocument::normalizeDocument is invoked. + * + * @return The DOMConfiguration from this DOMDocument + * + * @since DOM Level 3 + */ + virtual DOMConfiguration* getDOMConfig() const = 0; + + //@} + + // ----------------------------------------------------------------------- + // Non-standard extension + // ----------------------------------------------------------------------- + /** @name Non-standard extension */ + //@{ + /** + * Non-standard extension + * + * Create a new entity. + * @param name The name of the entity to instantiate + * + */ + virtual DOMEntity *createEntity(const XMLCh *name) = 0; + + /** + * Non-standard extension + * + * Create a DOMDocumentType node. + * @return A DOMDocumentType that references the newly + * created DOMDocumentType node. + * + */ + virtual DOMDocumentType *createDocumentType(const XMLCh *name) = 0; + + /*** + * Provide default implementation to maintain source code compatibility + ***/ + virtual DOMDocumentType* createDocumentType(const XMLCh *qName, + const XMLCh*, //publicId, + const XMLCh* //systemId + ) + { + return createDocumentType(qName); + } + + /** + * Non-standard extension. + * + * Create a Notation. + * @param name The name of the notation to instantiate + * @return A DOMNotation that references the newly + * created DOMNotation node. + */ + virtual DOMNotation *createNotation(const XMLCh *name) = 0; + + /** + * Non-standard extension. + * + * Creates an element of the given qualified name and + * namespace URI, and also stores line/column number info. + * Used by internally XSDXercesDOMParser during schema traversal. + * + * @see createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName) + */ + virtual DOMElement *createElementNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName, + const XMLFileLoc lineNum, + const XMLFileLoc columnNum) = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMDocumentFragment.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMDocumentFragment.hpp new file mode 100644 index 000000000000..8c5504241963 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMDocumentFragment.hpp @@ -0,0 +1,108 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTFRAGMENT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENTFRAGMENT_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * DOMDocumentFragment is a "lightweight" or "minimal" + * DOMDocument object. + * + * It is very common to want to be able to + * extract a portion of a document's tree or to create a new fragment of a + * document. Imagine implementing a user command like cut or rearranging a + * document by moving fragments around. It is desirable to have an object + * which can hold such fragments and it is quite natural to use a DOMNode for + * this purpose. While it is true that a DOMDocument object could + * fulfill this role, a DOMDocument object can potentially be a + * heavyweight object, depending on the underlying implementation. What is + * really needed for this is a very lightweight object. + * DOMDocumentFragment is such an object. + *

Furthermore, various operations -- such as inserting nodes as children + * of another DOMNode -- may take DOMDocumentFragment + * objects as arguments; this results in all the child nodes of the + * DOMDocumentFragment being moved to the child list of this node. + *

The children of a DOMDocumentFragment node are zero or more + * nodes representing the tops of any sub-trees defining the structure of the + * document. DOMDocumentFragment nodes do not need to be + * well-formed XML documents (although they do need to follow the rules + * imposed upon well-formed XML parsed entities, which can have multiple top + * nodes). For example, a DOMDocumentFragment might have only one + * child and that child node could be a DOMText node. Such a + * structure model represents neither an HTML document nor a well-formed XML + * document. + *

When a DOMDocumentFragment is inserted into a + * DOMDocument (or indeed any other DOMNode that may take + * children) the children of the DOMDocumentFragment and not the + * DOMDocumentFragment itself are inserted into the + * DOMNode. This makes the DOMDocumentFragment very + * useful when the user wishes to create nodes that are siblings; the + * DOMDocumentFragment acts as the parent of these nodes so that the + * user can use the standard methods from the DOMNode interface, + * such as insertBefore() and appendChild(). + * + * @since DOM Level 1 + */ + +class CDOM_EXPORT DOMDocumentFragment: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMDocumentFragment() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMDocumentFragment(const DOMDocumentFragment &); + DOMDocumentFragment & operator = (const DOMDocumentFragment &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMDocumentFragment() {}; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMDocumentRange.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMDocumentRange.hpp new file mode 100644 index 000000000000..cee401075afe --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMDocumentRange.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ +*/ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTRANGE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENTRANGE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMRange; + + +/** + *

See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. + * @since DOM Level 2 + */ +class CDOM_EXPORT DOMDocumentRange { + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMDocumentRange() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMDocumentRange(const DOMDocumentRange &); + DOMDocumentRange & operator = (const DOMDocumentRange &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMDocumentRange() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMDocumentRange interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 2 */ + //@{ + /** + * To create the range consisting of boundary-points and offset of the + * selected contents + * + * @return The initial state of the Range such that both the boundary-points + * are positioned at the beginning of the corresponding DOMDOcument, before + * any content. The range returned can only be used to select content + * associated with this document, or with documentFragments and Attrs for + * which this document is the ownerdocument + * @since DOM Level 2 + */ + virtual DOMRange *createRange() = 0; + + //@} +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMDocumentTraversal.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMDocumentTraversal.hpp new file mode 100644 index 000000000000..b24e59178a68 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMDocumentTraversal.hpp @@ -0,0 +1,155 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ +*/ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTTRAVERSAL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENTTRAVERSAL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNode; +class DOMNodeIterator; +class DOMTreeWalker; + + +/** + * DOMDocumentTraversal contains methods that create + * DOMNodeIterators and DOMTreeWalkers to traverse a + * node and its children in document order (depth first, pre-order + * traversal, which is equivalent to the order in which the start tags occur + * in the text representation of the document). In DOMs which support the + * Traversal feature, DOMDocumentTraversal will be implemented by + * the same objects that implement the DOMDocument interface. + *

See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. + * @since DOM Level 2 + */ +class CDOM_EXPORT DOMDocumentTraversal { + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMDocumentTraversal() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMDocumentTraversal(const DOMDocumentTraversal &); + DOMDocumentTraversal & operator = (const DOMDocumentTraversal &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMDocumentTraversal() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMDocumentRange interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 2 */ + //@{ + /** + * Creates a NodeIterator object. (DOM2) + * + * NodeIterators are used to step through a set of nodes, e.g. the set of nodes in a NodeList, the + * document subtree governed by a particular node, the results of a query, or any other set of nodes. + * The set of nodes to be iterated is determined by the implementation of the NodeIterator. DOM Level 2 + * specifies a single NodeIterator implementation for document-order traversal of a document subtree. + * Instances of these iterators are created by calling DOMDocumentTraversal.createNodeIterator(). + * + * To produce a view of the document that has entity references expanded and does not + * expose the entity reference node itself, use the whatToShow flags to hide the entity + * reference node and set expandEntityReferences to true when creating the iterator. To + * produce a view of the document that has entity reference nodes but no entity expansion, + * use the whatToShow flags to show the entity reference node and set + * expandEntityReferences to false. + * + * @param root The root node of the DOM tree + * @param whatToShow This attribute determines which node types are presented via the iterator. + * @param filter The filter used to screen nodes + * @param entityReferenceExpansion The value of this flag determines whether the children of entity reference nodes are + * visible to the iterator. If false, they will be skipped over. + * @since DOM Level 2 + */ + + virtual DOMNodeIterator *createNodeIterator(DOMNode* root, + DOMNodeFilter::ShowType whatToShow, + DOMNodeFilter* filter, + bool entityReferenceExpansion) = 0; + /** + * Creates a TreeWalker object. (DOM2) + * + * TreeWalker objects are used to navigate a document tree or subtree using the view of the document defined + * by its whatToShow flags and any filters that are defined for the TreeWalker. Any function which performs + * navigation using a TreeWalker will automatically support any view defined by a TreeWalker. + * + * Omitting nodes from the logical view of a subtree can result in a structure that is substantially different from + * the same subtree in the complete, unfiltered document. Nodes that are siblings in the TreeWalker view may + * be children of different, widely separated nodes in the original view. For instance, consider a Filter that skips + * all nodes except for DOMText nodes and the root node of a document. In the logical view that results, all text + * nodes will be siblings and appear as direct children of the root node, no matter how deeply nested the + * structure of the original document. + * + * To produce a view of the document that has entity references expanded + * and does not expose the entity reference node itself, use the whatToShow + * flags to hide the entity reference node and set expandEntityReferences to + * true when creating the TreeWalker. To produce a view of the document + * that has entity reference nodes but no entity expansion, use the + * whatToShow flags to show the entity reference node and set + * expandEntityReferences to false + * + * @param root The root node of the DOM tree + * @param whatToShow This attribute determines which node types are presented via the tree-walker. + * @param filter The filter used to screen nodes + * @param entityReferenceExpansion The value of this flag determines whether the children of entity reference nodes are + * visible to the tree-walker. If false, they will be skipped over. + * @since DOM Level 2 + */ + + virtual DOMTreeWalker *createTreeWalker(DOMNode* root, + DOMNodeFilter::ShowType whatToShow, + DOMNodeFilter* filter, + bool entityReferenceExpansion) = 0; + + //@} +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMDocumentType.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMDocumentType.hpp new file mode 100644 index 000000000000..ae91c2a1eb5e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMDocumentType.hpp @@ -0,0 +1,160 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTTYPE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENTTYPE_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNamedNodeMap; + +/** + * Each DOMDocument has a doctype attribute whose value + * is either null or a DOMDocumentType object. The + * DOMDocumentType interface in the DOM Core provides an interface + * to the list of entities that are defined for the document, and little + * else because the effect of namespaces and the various XML schema efforts + * on DTD representation are not clearly understood as of this writing. + *

The DOM Level 2 doesn't support editing DOMDocumentType nodes. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMDocumentType: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMDocumentType() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMDocumentType(const DOMDocumentType &); + DOMDocumentType & operator = (const DOMDocumentType &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMDocumentType() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMDocumentType interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + /** + * The name of DTD; i.e., the name immediately following the + * DOCTYPE keyword. + * + * @since DOM Level 1 + */ + virtual const XMLCh * getName() const = 0; + + /** + * A DOMNamedNodeMap containing the general entities, both + * external and internal, declared in the DTD. Parameter entities are + * not contained. Duplicates are discarded. For example in: + * <!DOCTYPE
+ * ex SYSTEM "ex.dtd" [ <!ENTITY foo "foo"> <!ENTITY bar
+ * "bar"> <!ENTITY bar "bar2"> <!ENTITY % baz "baz">
+ * ]> <ex/>
+ * the interface provides access to foo + * and the first declaration of bar but not the second + * declaration of bar or baz. Every node in + * this map also implements the DOMEntity interface. + *
The DOM Level 2 does not support editing entities, therefore + * entities cannot be altered in any way. + * + * @since DOM Level 1 + */ + virtual DOMNamedNodeMap *getEntities() const = 0; + + + /** + * A DOMNamedNodeMap containing the notations declared in the + * DTD. Duplicates are discarded. Every node in this map also implements + * the DOMNotation interface. + *
The DOM Level 2 does not support editing notations, therefore + * notations cannot be altered in any way. + * + * @since DOM Level 1 + */ + virtual DOMNamedNodeMap *getNotations() const = 0; + //@} + + /** @name Functions introduced in DOM Level 2. */ + //@{ + /** + * Get the public identifier of the external subset. + * + * @return The public identifier of the external subset. + * @since DOM Level 2 + */ + virtual const XMLCh * getPublicId() const = 0; + + /** + * Get the system identifier of the external subset. + * + * @return The system identifier of the external subset. + * @since DOM Level 2 + */ + virtual const XMLCh * getSystemId() const = 0; + + /** + * The internal subset as a string, or null if there is none. + * This is does not contain the delimiting square brackets.The actual + * content returned depends on how much information is available to the + * implementation. This may vary depending on various parameters, + * including the XML processor used to build the document. + * + * @return The internal subset as a string. + * @since DOM Level 2 + */ + virtual const XMLCh * getInternalSubset() const = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMElement.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMElement.hpp new file mode 100644 index 000000000000..9527fea5610a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMElement.hpp @@ -0,0 +1,528 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMELEMENT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMELEMENT_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMAttr; +class DOMNodeList; +class DOMTypeInfo; + + +/** + * By far the vast majority of objects (apart from text) that authors + * encounter when traversing a document are DOMElement nodes. + * + * Assume the following XML document:<elementExample id="demo"> + * <subelement1/> + * <subelement2><subsubelement/></subelement2> + * </elementExample> + *

When represented using DOM, the top node is an DOMElement node + * for "elementExample", which contains two child DOMElement nodes, + * one for "subelement1" and one for "subelement2". "subelement1" contains no + * child nodes. + *

Elements may have attributes associated with them; since the + * DOMElement interface inherits from DOMNode, the generic + * DOMNode interface method getAttributes may be used + * to retrieve the set of all attributes for an element. There are methods on + * the DOMElement interface to retrieve either an DOMAttr + * object by name or an attribute value by name. In XML, where an attribute + * value may contain entity references, an DOMAttr object should be + * retrieved to examine the possibly fairly complex sub-tree representing the + * attribute value. On the other hand, in HTML, where all attributes have + * simple string values, methods to directly access an attribute value can + * safely be used as a convenience. + * + * @since DOM Level 1 + * + * It also defines the ElementTraversal helper interface defined by http://www.w3.org/TR/2008/REC-ElementTraversal-20081222/ + * + */ + +class CDOM_EXPORT DOMElement: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMElement() {} + DOMElement(const DOMElement &other) : DOMNode(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMElement & operator = (const DOMElement &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMElement() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMElement interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * The name of the element. + * + * For example, in: <elementExample + * id="demo"> ... </elementExample> , tagName has + * the value "elementExample". Note that this is + * case-preserving in XML, as are all of the operations of the DOM. + * @since DOM Level 1 + */ + virtual const XMLCh * getTagName() const = 0; + + /** + * Retrieves an attribute value by name. + * + * @param name The name of the attribute to retrieve. + * @return The DOMAttr value as a string, or the empty string if + * that attribute does not have a specified or default value. + * @since DOM Level 1 + */ + virtual const XMLCh * getAttribute(const XMLCh *name) const = 0; + + /** + * Retrieves an DOMAttr node by name. + * + * @param name The name (nodeName) of the attribute to retrieve. + * @return The DOMAttr node with the specified name (nodeName) or + * null if there is no such attribute. + * @since DOM Level 1 + */ + virtual DOMAttr * getAttributeNode(const XMLCh *name) const = 0; + + /** + * Returns a DOMNodeList of all descendant elements with a given + * tag name, in the order in which they would be encountered in a preorder + * traversal of the DOMElement tree. + * + * @param name The name of the tag to match on. The special value "*" + * matches all tags. + * @return A list of matching DOMElement nodes. + * @since DOM Level 1 + */ + virtual DOMNodeList * getElementsByTagName(const XMLCh *name) const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Adds a new attribute. + * + * If an attribute with that name is already present + * in the element, its value is changed to be that of the value parameter. + * This value is a simple string, it is not parsed as it is being set. So + * any markup (such as syntax to be recognized as an entity reference) is + * treated as literal text, and needs to be appropriately escaped by the + * implementation when it is written out. In order to assign an attribute + * value that contains entity references, the user must create an + * DOMAttr node plus any DOMText and + * DOMEntityReference nodes, build the appropriate subtree, and + * use setAttributeNode to assign it as the value of an + * attribute. + * @param name The name of the attribute to create or alter. + * @param value Value to set in string form. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified name contains an + * illegal character. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 1 + */ + virtual void setAttribute(const XMLCh *name, + const XMLCh *value) = 0; + /** + * Adds a new attribute. + * + * If an attribute with that name (nodeName) is already present + * in the element, it is replaced by the new one. + * @param newAttr The DOMAttr node to add to the attribute list. + * @return If the newAttr attribute replaces an existing + * attribute, the replaced + * DOMAttr node is returned, otherwise null is + * returned. + * @exception DOMException + * WRONG_DOCUMENT_ERR: Raised if newAttr was created from a + * different document than the one that created the element. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + *
INUSE_ATTRIBUTE_ERR: Raised if newAttr is already an + * attribute of another DOMElement object. The DOM user must + * explicitly clone DOMAttr nodes to re-use them in other + * elements. + * @since DOM Level 1 + */ + virtual DOMAttr * setAttributeNode(DOMAttr *newAttr) = 0; + + /** + * Removes the specified attribute node. + * If the removed DOMAttr + * has a default value it is immediately replaced. The replacing attribute + * has the same namespace URI and local name, as well as the original prefix, + * when applicable. + * + * @param oldAttr The DOMAttr node to remove from the attribute + * list. + * @return The DOMAttr node that was removed. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + *
NOT_FOUND_ERR: Raised if oldAttr is not an attribute + * of the element. + * @since DOM Level 1 + */ + virtual DOMAttr * removeAttributeNode(DOMAttr *oldAttr) = 0; + + /** + * Removes an attribute by name. + * + * If the removed attribute + * is known to have a default value, an attribute immediately appears + * containing the default value as well as the corresponding namespace URI, + * local name, and prefix when applicable.
To remove an attribute by local + * name and namespace URI, use the removeAttributeNS method. + * @param name The name of the attribute to remove. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 1 + */ + virtual void removeAttribute(const XMLCh *name) = 0; + //@} + + /** @name Functions introduced in DOM Level 2. */ + //@{ + /** + * Retrieves an attribute value by local name and namespace URI. + * + * @param namespaceURI The namespace URI of + * the attribute to retrieve. + * @param localName The local name of the + * attribute to retrieve. + * @return The DOMAttr value as a string, or an null if + * that attribute does not have a specified or default value. + * @since DOM Level 2 + */ + virtual const XMLCh * getAttributeNS(const XMLCh *namespaceURI, + const XMLCh *localName) const = 0; + + /** + * Adds a new attribute. If an attribute with the same + * local name and namespace URI is already present on the element, its prefix + * is changed to be the prefix part of the qualifiedName, and + * its value is changed to be the value parameter. This value is + * a simple string, it is not parsed as it is being set. So any markup (such + * as syntax to be recognized as an entity reference) is treated as literal + * text, and needs to be appropriately escaped by the implementation when it + * is written out. In order to assign an attribute value that contains entity + * references, the user must create an DOMAttr + * node plus any DOMText and DOMEntityReference + * nodes, build the appropriate subtree, and use + * setAttributeNodeNS or setAttributeNode to assign + * it as the value of an attribute. + * + * @param namespaceURI The namespace URI of + * the attribute to create or alter. + * @param qualifiedName The qualified name of the + * attribute to create or alter. + * @param value The value to set in string form. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an + * illegal character. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + *
+ * NAMESPACE_ERR: Raised if the qualifiedName is + * malformed, if the qualifiedName has a prefix and the + * namespaceURI is null or an empty string, + * if the qualifiedName has a prefix that is "xml" and the + * namespaceURI is different from + * "http://www.w3.org/XML/1998/namespace", if the + * qualifiedName has a prefix that is "xmlns" and the + * namespaceURI is different from + * "http://www.w3.org/2000/xmlns/", or if the + * qualifiedName is "xmlns" and the + * namespaceURI is different from + * "http://www.w3.org/2000/xmlns/". + * @since DOM Level 2 + */ + virtual void setAttributeNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName, const XMLCh *value) = 0; + + /** + * Removes an attribute by local name and namespace URI. If the + * removed attribute has a default value it is immediately replaced. + * The replacing attribute has the same namespace URI and local name, as well as + * the original prefix. + * + * @param namespaceURI The namespace URI of + * the attribute to remove. + * @param localName The local name of the + * attribute to remove. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 2 + */ + virtual void removeAttributeNS(const XMLCh *namespaceURI, + const XMLCh *localName) = 0; + + /** + * Retrieves an DOMAttr node by local name and namespace URI. + * + * @param namespaceURI The namespace URI of + * the attribute to retrieve. + * @param localName The local name of the + * attribute to retrieve. + * @return The DOMAttr node with the specified attribute local + * name and namespace URI or null if there is no such attribute. + * @since DOM Level 2 + */ + virtual DOMAttr * getAttributeNodeNS(const XMLCh *namespaceURI, + const XMLCh *localName) const = 0; + + /** + * Adds a new attribute. + * + * If an attribute with that local name and namespace URI is already present + * in the element, it is replaced by the new one. + * + * @param newAttr The DOMAttr node to add to the attribute list. + * @return If the newAttr attribute replaces an existing + * attribute with the same local name and namespace URI, + * the replaced DOMAttr node is + * returned, otherwise null is returned. + * @exception DOMException + * WRONG_DOCUMENT_ERR: Raised if newAttr was created from a + * different document than the one that created the element. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + *
INUSE_ATTRIBUTE_ERR: Raised if newAttr is already an + * attribute of another DOMElement object. The DOM user must + * explicitly clone DOMAttr nodes to re-use them in other + * elements. + * @since DOM Level 2 + */ + virtual DOMAttr * setAttributeNodeNS(DOMAttr *newAttr) = 0; + + /** + * Returns a DOMNodeList of all the DOMElements + * with a given local name and namespace URI in the order in which they + * would be encountered in a preorder traversal of the + * DOMDocument tree, starting from this node. + * + * @param namespaceURI The namespace URI of + * the elements to match on. The special value "*" matches all + * namespaces. + * @param localName The local name of the + * elements to match on. The special value "*" matches all local names. + * @return A new DOMNodeList object containing all the matched + * DOMElements. + * @since DOM Level 2 + */ + virtual DOMNodeList * getElementsByTagNameNS(const XMLCh *namespaceURI, + const XMLCh *localName) const = 0; + + /** + * Returns true when an attribute with a given name is + * specified on this element or has a default value, false + * otherwise. + * @param name The name of the attribute to look for. + * @return true if an attribute with the given name is + * specified on this element or has a default value, false + * otherwise. + * @since DOM Level 2 + */ + virtual bool hasAttribute(const XMLCh *name) const = 0; + + /** + * Returns true when an attribute with a given local name and + * namespace URI is specified on this element or has a default value, + * false otherwise. HTML-only DOM implementations do not + * need to implement this method. + * @param namespaceURI The namespace URI of the attribute to look for. + * @param localName The local name of the attribute to look for. + * @return true if an attribute with the given local name + * and namespace URI is specified or has a default value on this + * element, false otherwise. + * @since DOM Level 2 + */ + virtual bool hasAttributeNS(const XMLCh *namespaceURI, + const XMLCh *localName) const = 0; + //@} + + /** @name Functions introduced in DOM Level 3 */ + //@{ + + /** + * If the parameter isId is true, this method declares the specified + * attribute to be a user-determined ID attribute. + * This affects the value of DOMAttr::isId and the behavior of + * DOMDocument::getElementById, but does not change any schema that + * may be in use, in particular this does not affect the DOMAttr::getSchemaTypeInfo + * of the specified DOMAttr node. Use the value false for the parameter isId + * to undeclare an attribute for being a user-determined ID attribute. + * To specify an DOMAttr by local name and namespace URI, use the + * setIdAttributeNS method. + * + * @param name The name of the DOMAttr. + * @param isId Whether the attribute is of type ID. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+ * NOT_FOUND_ERR: Raised if the specified node is not an DOMAttr + * of this element. + * + * @since DOM Level 3 + */ + virtual void setIdAttribute(const XMLCh* name, bool isId) = 0; + + + /** + * If the parameter isId is true, this method declares the specified + * attribute to be a user-determined ID attribute. + * This affects the value of DOMAttr::isId and the behavior of + * DOMDocument::getElementById, but does not change any schema that + * may be in use, in particular this does not affect the DOMAttr::getSchemaTypeInfo + * of the specified DOMAttr node. Use the value false for the parameter isId + * to undeclare an attribute for being a user-determined ID attribute. + * + * @param namespaceURI The namespace URI of the DOMAttr. + * @param localName The local name of the DOMAttr. + * @param isId Whether the attribute is of type ID. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+ * NOT_FOUND_ERR: Raised if the specified node is not an DOMAttr of this element. + * + * @since DOM Level 3 + */ + virtual void setIdAttributeNS(const XMLCh* namespaceURI, const XMLCh* localName, bool isId) = 0; + + + + /** + * If the parameter isId is true, this method declares the specified + * attribute to be a user-determined ID attribute. + * This affects the value of DOMAttr::isId and the behavior of + * DOMDocument::getElementById, but does not change any schema that + * may be in use, in particular this does not affect the DOMAttr::getSchemaTypeInfo + * of the specified DOMAttr node. Use the value false for the parameter isId + * to undeclare an attribute for being a user-determined ID attribute. + * + * @param idAttr The DOMAttr node. + * @param isId Whether the attribute is of type ID. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+ * NOT_FOUND_ERR: Raised if the specified node is not an DOMAttr of this element. + * + * @since DOM Level 3 + */ + virtual void setIdAttributeNode(const DOMAttr *idAttr, bool isId) = 0; + + + + /** + * Returns the type information associated with this element. + * + * @return the DOMTypeInfo associated with this element + * @since DOM level 3 + */ + virtual const DOMTypeInfo* getSchemaTypeInfo() const = 0; + + //@} + + // ----------------------------------------------------------------------- + // DOMElementTraversal interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in the ElementTraversal specification (http://www.w3.org/TR/2008/REC-ElementTraversal-20081222/)*/ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * The first child of type DOMElement. + * + * @return The DOMElement object that is the first element node + * among the child nodes of this node, or null if there is none. + */ + virtual DOMElement * getFirstElementChild() const = 0; + + /** + * The last child of type DOMElement. + * + * @return The DOMElement object that is the last element node + * among the child nodes of this node, or null if there is none. + */ + virtual DOMElement * getLastElementChild() const = 0; + + /** + * The previous sibling node of type DOMElement. + * + * @return The DOMElement object that is the previous sibling element node + * in document order, or null if there is none. + */ + virtual DOMElement * getPreviousElementSibling() const = 0; + + /** + * The next sibling node of type DOMElement. + * + * @return The DOMElement object that is the next sibling element node + * in document order, or null if there is none. + */ + virtual DOMElement * getNextElementSibling() const = 0; + + /** + * The number of child nodes that are of type DOMElement. + * + * Note: the count is computed every time this function is invoked + * + * @return The number of DOMElement objects that are direct children + * of this object (nested elements are not counted), or 0 if there is none. + * + */ + virtual XMLSize_t getChildElementCount() const = 0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMEntity.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMEntity.hpp new file mode 100644 index 000000000000..8acea357dae1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMEntity.hpp @@ -0,0 +1,170 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMENTITY_HPP) +#define XERCESC_INCLUDE_GUARD_DOMENTITY_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This interface represents an entity, either parsed or unparsed, in an XML + * document. Note that this models the entity itself not the entity + * declaration. DOMEntity declaration modeling has been left for a + * later Level of the DOM specification. + *

The nodeName attribute that is inherited from + * DOMNode contains the name of the entity. + *

An XML processor may choose to completely expand entities before the + * structure model is passed to the DOM; in this case there will be no + * DOMEntityReference nodes in the document tree. + *

XML does not mandate that a non-validating XML processor read and + * process entity declarations made in the external subset or declared in + * external parameter entities. This means that parsed entities declared in + * the external subset need not be expanded by some classes of applications, + * and that the replacement value of the entity may not be available. When + * the replacement value is available, the corresponding DOMEntity + * node's child list represents the structure of that replacement text. + * Otherwise, the child list is empty. + *

The DOM Level 2 does not support editing DOMEntity nodes; if a + * user wants to make changes to the contents of an DOMEntity, + * every related DOMEntityReference node has to be replaced in the + * structure model by a clone of the DOMEntity's contents, and + * then the desired changes must be made to each of those clones instead. + * DOMEntity nodes and all their descendants are readonly. + *

An DOMEntity node does not have any parent.If the entity + * contains an unbound namespace prefix, the namespaceURI of + * the corresponding node in the DOMEntity node subtree is + * null. The same is true for DOMEntityReference + * nodes that refer to this entity, when they are created using the + * createEntityReference method of the DOMDocument + * interface. The DOM Level 2 does not support any mechanism to resolve + * namespace prefixes. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMEntity: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMEntity() {} + DOMEntity(const DOMEntity &other) : DOMNode(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMEntity & operator = (const DOMEntity &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMEntity() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMEntity interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * The public identifier associated with the entity, if specified. + * + * If the public identifier was not specified, this is null. + * + * @since DOM Level 1 + */ + virtual const XMLCh * getPublicId() const = 0; + + /** + * The system identifier associated with the entity, if specified. + * + * If the system identifier was not specified, this is null. + * + * @since DOM Level 1 + */ + virtual const XMLCh * getSystemId() const = 0; + + /** + * For unparsed entities, the name of the notation for the entity. + * + * For parsed entities, this is null. + * + * @since DOM Level 1 + */ + virtual const XMLCh * getNotationName() const = 0; + //@} + + /** @name Functions introduced in DOM Level 3. */ + //@{ + + /** + * An attribute specifying the encoding used for this entity at the time of parsing, + * when it is an external parsed entity. This is null if it an entity + * from the internal subset or if it is not known. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getInputEncoding() const = 0; + + /** + * An attribute specifying, as part of the text declaration, the encoding + * of this entity, when it is an external parsed entity. This is + * null otherwise. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getXmlEncoding() const = 0; + + /** + * An attribute specifying, as part of the text declaration, the version + * number of this entity, when it is an external parsed entity. This is + * null otherwise. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getXmlVersion() const = 0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMEntityReference.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMEntityReference.hpp new file mode 100644 index 000000000000..c88eb8248a53 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMEntityReference.hpp @@ -0,0 +1,96 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMENTITYREFERENCE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMENTITYREFERENCE_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * DOMEntityReference objects may be inserted into the structure + * model when an entity reference is in the source document, or when the + * user wishes to insert an entity reference. Note that character references + * and references to predefined entities are considered to be expanded by + * the HTML or XML processor so that characters are represented by their + * Unicode equivalent rather than by an entity reference. Moreover, the XML + * processor may completely expand references to entities while building the + * structure model, instead of providing DOMEntityReference + * objects. If it does provide such objects, then for a given + * DOMEntityReference node, it may be that there is no + * DOMEntity node representing the referenced entity. If such an + * DOMEntity exists, then the subtree of the + * DOMEntityReference node is in general a copy of the + * DOMEntity node subtree. However, this may not be true when an + * entity contains an unbound namespace prefix. In such a case, because the + * namespace prefix resolution depends on where the entity reference is, the + * descendants of the DOMEntityReference node may be bound to + * different namespace URIs. + *

As for DOMEntity nodes, DOMEntityReference nodes and + * all their descendants are readonly. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + * + * @since DOM Level 1 + */ + +class CDOM_EXPORT DOMEntityReference: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMEntityReference() {} + DOMEntityReference(const DOMEntityReference &other) : DOMNode(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMEntityReference & operator = (const DOMEntityReference &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMEntityReference() {}; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMError.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMError.hpp new file mode 100644 index 000000000000..a83c985cae38 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMError.hpp @@ -0,0 +1,173 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMERROR_HPP) +#define XERCESC_INCLUDE_GUARD_DOMERROR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMLocator; + + +/** + * DOMError is an interface that describes an error. + * + * @see DOMErrorHandler#handleError + * @since DOM Level 3 + */ + +class CDOM_EXPORT DOMError +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMError() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMError(const DOMError &); + DOMError & operator = (const DOMError &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMError() {}; + //@} + + // ----------------------------------------------------------------------- + // Class types + // ----------------------------------------------------------------------- + /** @name Public constants */ + //@{ + /** + * The severity of the error described by the DOMError. + * + *

DOM_SEVERITY_ERROR: + * The severity of the error described by the DOMError is error. + * A DOM_SEVERITY_ERROR may not cause the processing to stop if the error can + * be recovered, unless DOMErrorHandler::handleError() returns false.

+ * + *

DOM_SEVERITY_FATAL_ERROR + * The severity of the error described by the DOMError is fatal error. + * A DOM_SEVERITY_FATAL_ERROR will cause the normal processing to stop. The return + * value of DOMErrorHandler::handleError() is ignored unless the + * implementation chooses to continue, in which case the behavior becomes undefined.

+ * + *

DOM_SEVERITY_WARNING + * The severity of the error described by the DOMError is warning. + * A DOM_SEVERITY_WARNING will not cause the processing to stop, unless + * DOMErrorHandler::handleError() returns false.

+ * + * @since DOM Level 3 + */ + enum ErrorSeverity + { + DOM_SEVERITY_WARNING = 1, + DOM_SEVERITY_ERROR = 2, + DOM_SEVERITY_FATAL_ERROR = 3 + }; + //@} + + + // ----------------------------------------------------------------------- + // Virtual DOMError interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Get the severity of the error + * + * @see setSeverity + * @since DOM Level 3 + */ + virtual ErrorSeverity getSeverity() const = 0; + + /** + * Get the message describing the error that occured. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getMessage() const = 0; + + /** + * Get the location of the error + * + * @since DOM Level 3 + */ + virtual DOMLocator* getLocation() const = 0; + + /** + * The related platform dependent exception if any. + * + * @since DOM Level 3 + */ + virtual void* getRelatedException() const = 0; + + /** + * A XMLCh* indicating which related data is expected in + * relatedData. Users should refer to the specification of the error + * in order to find its XMLCh* type and relatedData + * definitions if any. + * + * Note: As an example, DOMDocument::normalizeDocument() does generate + * warnings when the "split-cdata-sections" parameter is in use. Therefore, the + * method generates a DOM_SEVERITY_WARNING with type "cdata-sections-splitted" + * and the first DOMCDATASection node in document order resulting from the split + * is returned by the relatedData attribute. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getType() const = 0; + + /** + * The related DOMError::getType dependent data if any. + * + * @since DOM Level 3 + */ + virtual void* getRelatedData() const = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMErrorHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMErrorHandler.hpp new file mode 100644 index 000000000000..70e061ebd9ec --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMErrorHandler.hpp @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMERRORHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMERRORHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMError; + +/** + * Basic interface for DOM error handlers. + * + *

DOMErrorHandler is a callback interface that the DOM implementation + * can call when reporting errors that happens while processing XML data, or + * when doing some other processing (e.g. validating a document).

+ * + *

The application that is using the DOM implementation is expected to + * implement this interface.

+ * + * @see DOMLSParser#getDomConfig + * @since DOM Level 3 + */ + +class CDOM_EXPORT DOMErrorHandler +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMErrorHandler() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMErrorHandler(const DOMErrorHandler &); + DOMErrorHandler & operator = (const DOMErrorHandler &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMErrorHandler() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMErrorHandler interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * This method is called on the error handler when an error occurs. + * If an exception is thrown from this method, it is considered to be equivalent of returning true. + * + * @param domError The error object that describes the error, this object + * may be reused by the DOM implementation across multiple + * calls to the handleError method. + * @return If the handleError method returns true the DOM + * implementation should continue as if the error didn't happen + * when possible, if the method returns false then the + * DOM implementation should stop the current processing when + * possible. + * + * @since DOM Level 3 + */ + virtual bool handleError(const DOMError& domError) = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMException.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMException.hpp new file mode 100644 index 000000000000..29dc152759d1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMException.hpp @@ -0,0 +1,257 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * DOM operations only raise exceptions in "exceptional" circumstances, i.e., + * when an operation is impossible to perform (either for logical reasons, + * because data is lost, or because the implementation has become unstable). + * In general, DOM methods return specific error values in ordinary + * processing situations, such as out-of-bound errors when using + * DOMNodeList. + *

Implementations should raise other exceptions under other circumstances. + * For example, implementations should raise an implementation-dependent + * exception if a null argument is passed. + *

Some languages and object systems do not support the concept of + * exceptions. For such systems, error conditions may be indicated using + * native error reporting mechanisms. For some bindings, for example, + * methods may return error codes similar to those listed in the + * corresponding method descriptions. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + * @since DOM Level 1 + */ + +class MemoryManager; + +class CDOM_EXPORT DOMException { +public: + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * ExceptionCode + * + *

INDEX_SIZE_ERR: + * If index or size is negative, or greater than the allowed value.

+ * + *

DOMSTRING_SIZE_ERR: + * If the specified range of text does not fit into a DOMString.

+ * + *

HIERARCHY_REQUEST_ERR: + * If any node is inserted somewhere it doesn't belong.

+ * + *

WRONG_DOCUMENT_ERR: + * If a node is used in a different document than the one that created it + * (that doesn't support it).

+ * + *

INVALID_CHARACTER_ERR: + * If an invalid or illegal character is specified, such as in a name. See + * production 2 in the XML specification for the definition of a legal + * character, and production 5 for the definition of a legal name + * character.

+ * + *

NO_DATA_ALLOWED_ERR: + * If data is specified for a node which does not support data.

+ * + *

NO_MODIFICATION_ALLOWED_ERR: + * If an attempt is made to modify an object where modifications are not + * allowed.

+ * + *

NOT_FOUND_ERR: + * If an attempt is made to reference a node in a context where it does + * not exist.

+ * + *

NOT_SUPPORTED_ERR: + * If the implementation does not support the requested type of object or + * operation.

+ * + *

INUSE_ATTRIBUTE_ERR: + * If an attempt is made to add an attribute that is already in use + * elsewhere.

+ * + * The above are since DOM Level 1 + * @since DOM Level 1 + * + *

INVALID_STATE_ERR: + * If an attempt is made to use an object that is not, or is no longer, + * usable.

+ * + *

SYNTAX_ERR: + * If an invalid or illegal string is specified.

+ * + *

INVALID_MODIFICATION_ERR: + * If an attempt is made to modify the type of the underlying object.

+ * + *

NAMESPACE_ERR: + * If an attempt is made to create or change an object in a way which is + * incorrect with regard to namespaces.

+ * + *

INVALID_ACCESS_ERR: + * If a parameter or an operation is not supported by the underlying + * object. + * + * The above are since DOM Level 2 + * @since DOM Level 2 + * + *

VALIDATION_ERR: + * If a call to a method such as insertBefore or + * removeChild would make the Node invalid + * with respect to "partial validity", this exception would be raised + * and the operation would not be done. + * + *

TYPE_MISMATCH_ERR: + * If the type of an object is incompatible with the expected type of + * the parameter associated to the object, this exception would be raised. + * + * The above is since DOM Level 3 + * @since DOM Level 3 + */ + enum ExceptionCode { + INDEX_SIZE_ERR = 1, + DOMSTRING_SIZE_ERR = 2, + HIERARCHY_REQUEST_ERR = 3, + WRONG_DOCUMENT_ERR = 4, + INVALID_CHARACTER_ERR = 5, + NO_DATA_ALLOWED_ERR = 6, + NO_MODIFICATION_ALLOWED_ERR = 7, + NOT_FOUND_ERR = 8, + NOT_SUPPORTED_ERR = 9, + INUSE_ATTRIBUTE_ERR = 10, + INVALID_STATE_ERR = 11, + SYNTAX_ERR = 12, + INVALID_MODIFICATION_ERR = 13, + NAMESPACE_ERR = 14, + INVALID_ACCESS_ERR = 15, + VALIDATION_ERR = 16, + TYPE_MISMATCH_ERR = 17 + }; + //@} + +public: + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + /** + * Default constructor for DOMException. + * + */ + DOMException(); + + /** + * Constructor which takes an error code and an optional message code. + * + * @param code The error code which indicates the exception + * @param messageCode The string containing the error message + * @param memoryManager The memory manager used to (de)allocate memory + */ + DOMException(short code, + short messageCode = 0, + MemoryManager* const memoryManager = XMLPlatformUtils::fgMemoryManager); + + /** + * Copy constructor. + * + * @param other The object to be copied. + */ + DOMException(const DOMException &other); + + //@} + + // ----------------------------------------------------------------------- + // Destructors + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + /** + * Destructor for DOMException. + * + */ + virtual ~DOMException(); + //@} + + +public: + // ----------------------------------------------------------------------- + // Getter + // ----------------------------------------------------------------------- + inline const XMLCh* getMessage() const; + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public variables */ + //@{ + /** + * A code value, from the set defined by the ExceptionCode enum, + * indicating the type of error that occured. + */ + short code; + + /** + * A string value. Applications may use this field to hold an error + * message. The field value is not set by the DOM implementation, + * meaning that the string will be empty when an exception is first + * thrown. + */ + const XMLCh *msg; + //@} + +protected: + MemoryManager* fMemoryManager; + +private: + + /** + * A boolean value. + * If the message is provided by the applications, it is not + * adopted. + * If the message is resolved by the DOM implementation, it is + * owned. + */ + bool fMsgOwned; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMException & operator = (const DOMException &); +}; + +inline const XMLCh* DOMException::getMessage() const +{ + return msg; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMImplementation.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMImplementation.hpp new file mode 100644 index 000000000000..e03ee6932022 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMImplementation.hpp @@ -0,0 +1,249 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATION_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMDocument; +class DOMDocumentType; + +/** + * The DOMImplementation interface provides a number of methods + * for performing operations that are independent of any particular instance + * of the document object model. + */ + +class CDOM_EXPORT DOMImplementation : public DOMImplementationLS +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMImplementation() {}; // no plain constructor + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMImplementation(const DOMImplementation &); // no copy constructor. + DOMImplementation & operator = (const DOMImplementation &); // No Assignment + //@} + + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMImplementation() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMImplementation interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + /** + * Test if the DOM implementation implements a specific feature. + * @param feature The name of the feature to test (case-insensitive). The + * values used by DOM features are defined throughout the DOM Level 2 + * specifications and listed in the section. The name must be an XML + * name. To avoid possible conflicts, as a convention, names referring + * to features defined outside the DOM specification should be made + * unique. + * @param version This is the version number of the feature to test. In + * Level 2, the string can be either "2.0" or "1.0". If the version is + * not specified, supporting any version of the feature causes the + * method to return true. + * @return true if the feature is implemented in the + * specified version, false otherwise. + * @since DOM Level 1 + */ + virtual bool hasFeature(const XMLCh *feature, const XMLCh *version) const = 0; + //@} + + // ----------------------------------------------------------------------- + // Functions introduced in DOM Level 2 + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 2 */ + //@{ + /** + * Creates an empty DOMDocumentType node. Entity declarations + * and notations are not made available. Entity reference expansions and + * default attribute additions do not occur. It is expected that a + * future version of the DOM will provide a way for populating a + * DOMDocumentType. + * @param qualifiedName The qualified name of the document type to be + * created. + * @param publicId The external subset public identifier. + * @param systemId The external subset system identifier. + * @return A new DOMDocumentType node with + * ownerDocument set to null. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified qualified name + * contains an illegal character. + *
NAMESPACE_ERR: Raised if the qualifiedName is + * malformed. + *
NOT_SUPPORTED_ERR: May be raised by DOM implementations which do + * not support the "XML" feature, if they choose not to + * support this method. Other features introduced in the future, by + * the DOM WG or in extensions defined by other groups, may also + * demand support for this method; please consult the definition of + * the feature to see if it requires this method. + * @since DOM Level 2 + */ + virtual DOMDocumentType *createDocumentType(const XMLCh *qualifiedName, + const XMLCh *publicId, + const XMLCh *systemId) = 0; + + /** + * Creates a DOMDocument object of the specified type with its document + * element. + * @param namespaceURI The namespace URI of the document element to + * create. + * @param qualifiedName The qualified name of the document element to be + * created. + * @param doctype The type of document to be created or null. + * When doctype is not null, its + * ownerDocument attribute is set to the document + * being created. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @return A new DOMDocument object. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified qualified name + * contains an illegal character. + *
NAMESPACE_ERR: Raised if the qualifiedName is + * malformed, if the qualifiedName has a prefix and the + * namespaceURI is null, or if the + * qualifiedName has a prefix that is "xml" and the + * namespaceURI is different from " + * http://www.w3.org/XML/1998/namespace" , or if the DOM + * implementation does not support the "XML" feature but + * a non-null namespace URI was provided, since namespaces were + * defined by XML. + *
WRONG_DOCUMENT_ERR: Raised if doctype has already + * been used with a different document or was created from a different + * implementation. + *
NOT_SUPPORTED_ERR: May be raised by DOM implementations which do + * not support the "XML" feature, if they choose not to support this + * method. Other features introduced in the future, by the DOM WG or + * in extensions defined by other groups, may also demand support for + * this method; please consult the definition of the feature to see if + * it requires this method. + * @since DOM Level 2 + */ + + virtual DOMDocument *createDocument(const XMLCh *namespaceURI, + const XMLCh *qualifiedName, + DOMDocumentType *doctype, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + //@} + // ----------------------------------------------------------------------- + // Functions introduced in DOM Level 3 + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * This method returns a specialized object which implements the specialized APIs + * of the specified feature and version, as specified in DOM Features. + * This method also allow the implementation to provide specialized objects which + * do not support the DOMImplementation interface. + * + * @param feature The name of the feature requested (case-insensitive). + * Note that any plus sign "+" prepended to the name of the feature will + * be ignored since it is not significant in the context of this method. + * @param version This is the version number of the feature to test. + * @return Returns an object which implements the specialized APIs of the specified + * feature and version, if any, or null if there is no object which implements + * interfaces associated with that feature. + * @since DOM Level 3 + */ + virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const = 0; + + //@} + + // ----------------------------------------------------------------------- + // Non-standard extension + // ----------------------------------------------------------------------- + /** @name Non-standard extension */ + //@{ + /** + * Non-standard extension + * + * Create a completely empty document that has neither a root element or a doctype node. + */ + virtual DOMDocument *createDocument(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + /** + * Non-standard extension + * + * Factory method for getting a DOMImplementation object. + * The DOM implementation retains ownership of the returned object. + * Application code should NOT delete it. + */ + static DOMImplementation *getImplementation(); + + /** + * Non-standard extension + * + * Load the default error text message for DOMException. + * @param msgToLoad The DOM ExceptionCode id to be processed + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @return true if the message is successfully loaded + */ + static bool loadDOMExceptionMsg + ( + const short msgToLoad + , XMLCh* const toFill + , const XMLSize_t maxChars + ); + + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMImplementationLS.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMImplementationLS.hpp new file mode 100644 index 000000000000..9687c667b5b2 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMImplementationLS.hpp @@ -0,0 +1,183 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLS_HPP) +#define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLS_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMLSParser; +class DOMLSSerializer; +class DOMLSInput; +class DOMLSOutput; +class MemoryManager; +class XMLGrammarPool; + +/** + *

DOMImplementationLS contains the factory methods for + * creating Load and Save objects.

+ * + *

An object that implements DOMImplementationLS is obtained by doing a + * binding specific cast from DOMImplementation to DOMImplementationLS. + * Implementations supporting the Load and Save feature must implement the + * DOMImplementationLS interface on whatever object implements the + * DOMImplementation interface.

+ * + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMImplementationLS +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMImplementationLS() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMImplementationLS(const DOMImplementationLS &); + DOMImplementationLS & operator = (const DOMImplementationLS &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMImplementationLS() {}; + //@} + + // ----------------------------------------------------------------------- + // Public constants + // ----------------------------------------------------------------------- + /** @name Public constants */ + //@{ + /** + * Create a synchronous or an asynchronous DOMLSParser. + * @see createLSParser(const DOMImplementationLSMode mode, const XMLCh* const schemaType) + * @since DOM Level 3 + * + */ + enum DOMImplementationLSMode + { + MODE_SYNCHRONOUS = 1, + MODE_ASYNCHRONOUS = 2 + }; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMImplementationLS interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Factory create methods + // ----------------------------------------------------------------------- + /** + * Create a new DOMLSParser. The newly constructed parser may then be configured + * by means of its DOMConfiguration object, and used to parse documents by + * means of its parse method. + * + * @param mode The mode argument is either MODE_SYNCHRONOUS + * or MODE_ASYNCHRONOUS, if mode is MODE_SYNCHRONOUS + * then the DOMLSParser that is created will operate in synchronous + * mode, if it's MODE_ASYNCHRONOUS then the DOMLSParser + * that is created will operate in asynchronous mode. + * @param schemaType An absolute URI representing the type of the schema + * language used during the load of a DOMDocument using the newly + * created DOMLSParser. Note that no lexical checking is done on + * the absolute URI. In order to create a DOMLSParser for any kind + * of schema types (i.e. the DOMLSParser will be free to use any + * schema found), use the value NULL. + * Note: For W3C XML Schema [XML Schema Part 1], applications must use + * the value "http://www.w3.org/2001/XMLSchema". For XML DTD [XML 1.0], + * applications must use the value "http://www.w3.org/TR/REC-xml". + * Other Schema languages are outside the scope of the W3C and therefore should + * recommend an absolute URI in order to use this method. + * @param manager Pointer to the memory manager to be used to allocate objects. + * @param gramPool The collection of cached grammars. + * @return The newly created DOMLSParser object. This + * DOMLSParser is either synchronous or asynchronous depending + * on the value of the mode argument. + * @exception DOMException NOT_SUPPORTED_ERR: Raised if the requested mode + * or schema type is not supported. + * + * @see DOMLSParser + * @since DOM Level 3 + */ + virtual DOMLSParser* createLSParser(const DOMImplementationLSMode mode, + const XMLCh* const schemaType, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager, + XMLGrammarPool* const gramPool = 0) = 0; + + + /** + * Create a new DOMLSSerializer. DOMLSSerializer is used to serialize a DOM tree + * back into an XML document. + * + * @return The newly created DOMLSSerializer object. + * + * @see DOMLSSerializer + * @since DOM Level 3 + */ + virtual DOMLSSerializer* createLSSerializer(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + /** + * Create a new "empty" DOMLSInput. + * + * @return The newly created DOMLSInput object. + * + * @see DOMLSInput + * @since DOM Level 3 + */ + virtual DOMLSInput* createLSInput(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + /** + * Create a new "empty" LSOutput. + * + * @return The newly created LSOutput object. + * + * @see LSOutput + * @since DOM Level 3 + */ + virtual DOMLSOutput* createLSOutput(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + //@} +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMImplementationList.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMImplementationList.hpp new file mode 100644 index 000000000000..449ba48d41ce --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMImplementationList.hpp @@ -0,0 +1,124 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLIST_HPP) +#define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLIST_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMImplementation; + + +/** + * The DOMImplementationList interface provides the abstraction of an ordered + * collection of DOM implementations, without defining or constraining how this collection + * is implemented. The items in the DOMImplementationList are accessible via + * an integral index, starting from 0. + */ + +class CDOM_EXPORT DOMImplementationList { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMImplementationList() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMImplementationList(const DOMImplementationList &); + DOMImplementationList & operator = (const DOMImplementationList &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMImplementationList() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMImplementationList interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the index item in the collection. + * + * If index is greater than or equal to the number of DOMImplementation in + * the list, this returns null. + * + * @param index Index into the collection. + * @return The DOMImplementation at the indexth position in the + * DOMImplementationList, or null if that is not a valid + * index. + * @since DOM Level 3 + */ + virtual DOMImplementation *item(XMLSize_t index) const = 0; + + /** + * Returns the number of DOMImplementation in the list. + * + * The range of valid child node indices is 0 to length-1 inclusive. + * @since DOM Level 3 + */ + virtual XMLSize_t getLength() const = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this list is no longer in use + * and that the implementation may relinquish any resources associated with it and + * its associated children. + * + * Access to a released object will lead to unexpected result. + * + */ + virtual void release() = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMImplementationRegistry.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMImplementationRegistry.hpp new file mode 100644 index 000000000000..91ce67a6b0af --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMImplementationRegistry.hpp @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONREGISTRY_HPP) +#define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONREGISTRY_HPP + + /** + * This class holds the list of registered DOMImplementations. Implementation + * or application can register DOMImplementationSource to the registry, and + * then can query DOMImplementation based on a list of requested features. + * + *

This provides an application with an implementation independent starting + * point. + * + * @see DOMImplementation + * @see DOMImplementationList + * @see DOMImplementationSource + * @since DOM Level 3 + */ + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMImplementation; +class DOMImplementationSource; +class DOMImplementationList; + +class CDOM_EXPORT DOMImplementationRegistry +{ +public: + // ----------------------------------------------------------------------- + // Static DOMImplementationRegistry interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * Return the first registered implementation that has the desired features, + * or null if none is found. + * + * @param features A string that specifies which features are required. + * This is a space separated list in which each feature is + * specified by its name optionally followed by a space + * and a version number. + * This is something like: "XML 1.0 Traversal 2.0" + * @return An implementation that has the desired features, or + * null if this source has none. + * @since DOM Level 3 + */ + static DOMImplementation* getDOMImplementation(const XMLCh* features); + + /** + * Return the list of registered implementation that have the desired features. + * + * @param features A string that specifies which features are required. + * This is a space separated list in which each feature is + * specified by its name optionally followed by a space + * and a version number. + * This is something like: "XML 1.0 Traversal 2.0" + * @return A DOMImplementationList object that contains the DOMImplementation + * that have the desired features + * @since DOM Level 3 + */ + static DOMImplementationList* getDOMImplementationList(const XMLCh* features); + + /** + * Register an implementation. + * + * @param source A DOMImplementation Source object to be added to the registry. + * The registry does NOT adopt the source object. Users still own it. + * @since DOM Level 3 + */ + static void addSource(DOMImplementationSource* source); + //@} + +private: + DOMImplementationRegistry(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMImplementationSource.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMImplementationSource.hpp new file mode 100644 index 000000000000..7afc03afbf7a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMImplementationSource.hpp @@ -0,0 +1,112 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONSOURCE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONSOURCE_HPP + + /** + * This interface permits a DOM implementer to supply one or more + * implementations, based upon requested features and versions. Each implemented + * DOMImplementationSource object is listed in the + * binding-specific list of available sources so that its + * DOMImplementation objects are made available. + * + * @since DOM Level 3 + */ +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMImplementation; +class DOMImplementationList; + +class CDOM_EXPORT DOMImplementationSource +{ +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMImplementationSource() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMImplementationSource(const DOMImplementationSource &); + DOMImplementationSource & operator = (const DOMImplementationSource &); + //@} + + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMImplementationSource() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMImplementationSource interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * A method to request the first DOM implementation that supports the specified features. + * + * @param features A string that specifies which features are required. + * This is a space separated list in which each feature is specified + * by its name optionally followed by a space and a version number. + * This is something like: "XML 1.0 Traversal 2.0" + * @return An implementation that has the desired features, or + * null if this source has none. + * @since DOM Level 3 + */ + virtual DOMImplementation* getDOMImplementation(const XMLCh* features) const = 0; + + /** + * A method to request a list of DOM implementations that support the specified features and versions, + * + * @param features A string that specifies which features are required. + * This is a space separated list in which each feature is specified + * by its name optionally followed by a space and a version number. + * This is something like: "XML 1.0 Traversal 2.0" + * @return A list of DOM implementations that support the desired features + * @since DOM Level 3 + */ + virtual DOMImplementationList* getDOMImplementationList(const XMLCh* features) const = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSException.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSException.hpp new file mode 100644 index 000000000000..862c02b2331f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSException.hpp @@ -0,0 +1,123 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSEXCEPTION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * Parser or write operations may throw an LSException if the processing is stopped. + * The processing can be stopped due to a DOMError with a severity of + * DOMError::DOM_SEVERITY_FATAL_ERROR or a non recovered DOMError::DOM_SEVERITY_ERROR, + * or if DOMErrorHandler::handleError() returned false. + *

Note: As suggested in the definition of the constants in the DOMError + * interface, a DOM implementation may choose to continue after a fatal error, but the + * resulting DOM tree is then implementation dependent. + *

See also the + * Document Object Model (DOM) Level 3 Load and Save Specification. + * @since DOM Level 3 + */ + +class MemoryManager; + +class CDOM_EXPORT DOMLSException : public DOMException { +public: + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Contants */ + //@{ + /** + * ExceptionCode + * + *

PARSE_ERR: + * If an attempt was made to load a document, or an XML Fragment, using DOMLSParser + * and the processing has been stopped.

+ * + *

SERIALIZE_ERR: + * If an attempt was made to serialize a Node using LSSerializer and the processing + * has been stopped.

+ * + * @since DOM Level 3 + */ + enum LSExceptionCode { + PARSE_ERR = 81, + SERIALIZE_ERR = 82 + }; + //@} + + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + /** + * Default constructor for DOMLSException. + * + */ + DOMLSException(); + + /** + * Constructor which takes an error code and a message. + * + * @param code The error code which indicates the exception + * @param messageCode The string containing the error message + * @param memoryManager The memory manager used to (de)allocate memory + */ + DOMLSException(short code, + short messageCode, + MemoryManager* const memoryManager); + + /** + * Copy constructor. + * + * @param other The object to be copied. + */ + DOMLSException(const DOMLSException &other); + + //@} + + // ----------------------------------------------------------------------- + // Destructors + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + /** + * Destructor for DOMLSException. + * + */ + virtual ~DOMLSException(); + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMLSException & operator = (const DOMLSException &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSInput.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSInput.hpp new file mode 100644 index 000000000000..1a6ebc82a9f8 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSInput.hpp @@ -0,0 +1,274 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSINPUT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSINPUT_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class InputSource; + + +/** + * This interface represents a single input source for an XML entity. + * + *

This interface allows an application to encapsulate information about + * an input source in a single object, which may include a public identifier, + * a system identifier, a byte stream (possibly with a specified encoding), + * and/or a character stream.

+ * + *

There are two places that the application will deliver this input source + * to the parser: as the argument to the parse method, or as the return value + * of the DOMLSResourceResolver.resolveResource method.

+ * + *

The DOMLSParser will use the DOMLSInput object to determine how to + * read XML input. If there is a character stream available, the parser will + * read that stream directly; if not, the parser will use a byte stream, if + * available; if neither a character stream nor a byte stream is available, + * the parser will attempt to open a URI connection to the resource identified + * by the system identifier.

+ * + *

A DOMLSInput object belongs to the application: the parser shall + * never modify it in any way (it may modify a copy if necessary).

+ * + * @see DOMLSParser#parse + * @see DOMLSResourceResolver#resolveResource + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMLSInput +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLSInput() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLSInput(const DOMLSInput &); + DOMLSInput & operator = (const DOMLSInput &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLSInput() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMLSInput interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * String data to parse. If provided, this will always be treated as a sequence of 16-bit units (UTF-16 encoded characters). + * It is not a requirement to have an XML declaration when using stringData. If an XML declaration is present, the value of + * the encoding attribute will be ignored. + * + */ + virtual const XMLCh* getStringData() const = 0; + + /** + * Returns the byte stream for this input source. + * + * @see InputSource + */ + virtual InputSource* getByteStream() const = 0; + + /** + * An input source can be set to force the parser to assume a particular + * encoding for the data that input source reprsents, via the setEncoding() + * method. This method returns name of the encoding that is to be forced. + * If the encoding has never been forced, it returns a null pointer. + * + * @return The forced encoding, or null if none was supplied. + * @see #setEncoding + * @since DOM Level 3 + */ + virtual const XMLCh* getEncoding() const = 0; + + + /** + * Get the public identifier for this input source. + * + * @return The public identifier, or null if none was supplied. + * @see #setPublicId + * @since DOM Level 3 + */ + virtual const XMLCh* getPublicId() const = 0; + + + /** + * Get the system identifier for this input source. + * + *

If the system ID is a URL, it will be fully resolved.

+ * + * @return The system identifier. + * @see #setSystemId + * @since DOM Level 3 + */ + virtual const XMLCh* getSystemId() const = 0; + + + /** + * Get the base URI to be used for resolving relative URIs to absolute + * URIs. If the baseURI is itself a relative URI, the behavior is + * implementation dependent. + * + * @return The base URI. + * @see #setBaseURI + * @since DOM Level 3 + */ + virtual const XMLCh* getBaseURI() const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + // ----------------------------------------------------------------------- + /** + * Sets the UTF-16 string for this input source. + * + */ + virtual void setStringData(const XMLCh* data) = 0; + + /** + * Sets the byte stream for this input source. + * + * @see BinInputStream + */ + virtual void setByteStream(InputSource* stream) = 0; + + /** + * Set the encoding which will be required for use with the XML text read + * via a stream opened by this input source. + * + *

This is usually not set, allowing the encoding to be sensed in the + * usual XML way. However, in some cases, the encoding in the file is known + * to be incorrect because of intermediate transcoding, for instance + * encapsulation within a MIME document. + * + * @param encodingStr The name of the encoding to force. + * @since DOM Level 3 + */ + virtual void setEncoding(const XMLCh* const encodingStr) = 0; + + + /** + * Set the public identifier for this input source. + * + *

The public identifier is always optional: if the application writer + * includes one, it will be provided as part of the location information.

+ * + * @param publicId The public identifier as a string. + * @see #getPublicId + * @since DOM Level 3 + */ + virtual void setPublicId(const XMLCh* const publicId) = 0; + + /** + * Set the system identifier for this input source. + * + *

The system id is always required. The public id may be used to map + * to another system id, but the system id must always be present as a fall + * back.

+ * + *

If the system ID is a URL, it must be fully resolved.

+ * + * @param systemId The system identifier as a string. + * @see #getSystemId + * @since DOM Level 3 + */ + virtual void setSystemId(const XMLCh* const systemId) = 0; + + /** + * Set the base URI to be used for resolving relative URIs to absolute + * URIs. If the baseURI is itself a relative URI, the behavior is + * implementation dependent. + * + * @param baseURI The base URI. + * @see #getBaseURI + * @since DOM Level 3 + */ + virtual void setBaseURI(const XMLCh* const baseURI) = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + + /** + * Indicates if the parser should issue fatal error if this input source + * is not found. If set to false, the parser issue warning message instead. + * + * @param flag True if the parser should issue fatal error if this input source is not found. + * If set to false, the parser issue warning message instead. (Default: true) + * + * @see #getIssueFatalErrorIfNotFound + */ + virtual void setIssueFatalErrorIfNotFound(bool flag) = 0; + + + /** + * Get the flag that indicates if the parser should issue fatal error if this input source + * is not found. + * + * @return True if the parser should issue fatal error if this input source is not found. + * False if the parser issue warning message instead. + * @see #setIssueFatalErrorIfNotFound + */ + virtual bool getIssueFatalErrorIfNotFound() const = 0; + + /** + * Called to indicate that this DOMLSInput is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSOutput.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSOutput.hpp new file mode 100644 index 000000000000..b59a6c0b5041 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSOutput.hpp @@ -0,0 +1,169 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSOUTPUT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSOUTPUT_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class XMLFormatTarget; + + +/** + * This interface represents an output destination for data. + * + * @see XMLFormatTarget + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMLSOutput +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLSOutput() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLSOutput(const DOMLSOutput &); + DOMLSOutput & operator = (const DOMLSOutput &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLSOutput() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMLSOutput interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the byte stream for this input source. + * + * @see InputSource + */ + virtual XMLFormatTarget* getByteStream() const = 0; + + /** + * An input source can be set to force the parser to assume a particular + * encoding for the data that input source reprsents, via the setEncoding() + * method. This method returns name of the encoding that is to be forced. + * If the encoding has never been forced, it returns a null pointer. + * + * @return The forced encoding, or null if none was supplied. + * @see #setEncoding + * @since DOM Level 3 + */ + virtual const XMLCh* getEncoding() const = 0; + + /** + * Get the system identifier for this input source. + * + *

If the system ID is a URL, it will be fully resolved.

+ * + * @return The system identifier. + * @see #setSystemId + * @since DOM Level 3 + */ + virtual const XMLCh* getSystemId() const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Sets the byte stream for this input source. + * + * @see BinInputStream + */ + virtual void setByteStream(XMLFormatTarget* stream) = 0; + + /** + * Set the encoding which will be required for use with the XML text read + * via a stream opened by this input source. + * + *

This is usually not set, allowing the encoding to be sensed in the + * usual XML way. However, in some cases, the encoding in the file is known + * to be incorrect because of intermediate transcoding, for instance + * encapsulation within a MIME document. + * + * @param encodingStr The name of the encoding to force. + * @since DOM Level 3 + */ + virtual void setEncoding(const XMLCh* const encodingStr) = 0; + + /** + * Set the system identifier for this input source. + * + *

The system id is always required. The public id may be used to map + * to another system id, but the system id must always be present as a fall + * back.

+ * + *

If the system ID is a URL, it must be fully resolved.

+ * + * @param systemId The system identifier as a string. + * @see #getSystemId + * @since DOM Level 3 + */ + virtual void setSystemId(const XMLCh* const systemId) = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this DOMLSOutput is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSParser.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSParser.hpp new file mode 100644 index 000000000000..dabdffcd82b8 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSParser.hpp @@ -0,0 +1,766 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + * + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSPARSER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSPARSER_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMErrorHandler; +class DOMLSInput; +class DOMNode; +class DOMDocument; + +/** + * DOMLSParser provides an API for parsing XML documents and building the + * corresponding DOM document tree. A DOMLSParser instance is obtained from + * the DOMImplementationLS interface by invoking its createLSParser method. + * + * @since DOM Level 3 + * + */ +class CDOM_EXPORT DOMLSParser +{ +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLSParser() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLSParser(const DOMLSParser &); + DOMLSParser & operator = (const DOMLSParser &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLSParser() {}; + //@} + + // ----------------------------------------------------------------------- + // Class types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * A set of possible actions for the parseWithContext method. + * + *

ACTION_APPEND_AS_CHILDREN: + * Append the result of the parse operation as children of the context node. + * For this action to work, the context node must be a DOMElement + * or a DOMDocumentFragment.

+ * + *

ACTION_INSERT_AFTER: + * Insert the result of the parse operation as the immediately following sibling + * of the context node. For this action to work the context node's parent must + * be a DOMElement or a DOMDocumentFragment.

+ * + *

ACTION_INSERT_BEFORE: + * Insert the result of the parse operation as the immediately preceding sibling + * of the context node. For this action to work the context node's parent must + * be a DOMElement or a DOMDocumentFragment.

+ * + *

ACTION_REPLACE: + * Replace the context node with the result of the parse operation. For this + * action to work, the context node must have a parent, and the parent must be + * a DOMElement or a DOMDocumentFragment.

+ * + *

ACTION_REPLACE_CHILDREN: + * Replace all the children of the context node with the result of the parse + * operation. For this action to work, the context node must be a DOMElement, + * a DOMDocument, or a DOMDocumentFragment.

+ * + * @see parseWithContext(...) + * @since DOM Level 3 + */ + enum ActionType + { + ACTION_APPEND_AS_CHILDREN = 1, + ACTION_REPLACE_CHILDREN = 2, + ACTION_INSERT_BEFORE = 3, + ACTION_INSERT_AFTER = 4, + ACTION_REPLACE = 5 + }; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMLSParser interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** + * Get a pointer to the DOMConfiguration object used when parsing + * an input source. + * This DOMConfiguration is specific to the parse operation. + * No parameter values from this DOMConfiguration object are passed + * automatically to the DOMConfiguration object on the + * DOMDocument that is created, or used, by the parse operation. + * The DOM application is responsible for passing any needed parameter values + * from this DOMConfiguration object to the DOMConfiguration + * object referenced by the DOMDocument object. + * + * In addition to the parameters recognized in on the DOMConfiguration + * interface defined in [DOM Level 3 Core], the DOMConfiguration objects + * for DOMLSParser add or modify the following parameters: + * + * "charset-overrides-xml-encoding" + * true [optional] (default) + * If a higher level protocol such as HTTP [IETF RFC 2616] provides an + * indication of the character encoding of the input stream being processed, + * that will override any encoding specified in the XML declaration or the + * Text declaration (see also section 4.3.3, "Character Encoding in Entities", + * in [XML 1.0]). Explicitly setting an encoding in the DOMLSInput + * overrides any encoding from the protocol. + * false [required] + * The parser ignores any character set encoding information from higher-level + * protocols. + * + * "disallow-doctype" + * true + * Throw a fatal "doctype-not-allowed" error if a doctype node is found while + * parsing the document. This is useful when dealing with things like SOAP + * envelopes where doctype nodes are not allowed. + * false (default) + * Allow doctype nodes in the document. + * + * "ignore-unknown-character-denormalizations" + * true [required] (default) + * If, while verifying full normalization when [XML 1.1] is supported, a + * processor encounters characters for which it cannot determine the normalization + * properties, then the processor will ignore any possible denormalizations + * caused by these characters. + * This parameter is ignored for [XML 1.0]. + * false [optional] + * Report an fatal "unknown-character-denormalization" error if a character + * is encountered for which the processor cannot determine the normalization + * properties. + * + * "infoset" + * See the definition of DOMConfiguration for a description of this parameter. + * Unlike in [DOM Level 3 Core], this parameter will default to true for DOMLSParser. + * + * "namespaces" + * true [required] (default) + * Perform the namespace processing as defined in [XML Namespaces] and + * [XML Namespaces 1.1]. + * false [optional] + * Do not perform the namespace processing. + * + * "resource-resolver" [required] + * A pointer to a DOMLSResourceResolver object, or NULL. If the value of this parameter + * is not null when an external resource (such as an external XML entity or an XML schema + * location) is encountered, the implementation will request that the DOMLSResourceResolver + * referenced in this parameter resolves the resource. + * + * "supported-media-types-only" + * true [optional] + * Check that the media type of the parsed resource is a supported media type. If + * an unsupported media type is encountered, a fatal error of type "unsupported-media-type" + * will be raised. The media types defined in [IETF RFC 3023] must always be accepted. + * false [required] (default) + * Accept any media type. + * + * "validate" + * See the definition of DOMConfiguration for a description of this parameter. + * Unlike in [DOM Level 3 Core], the processing of the internal subset is always accomplished, even + * if this parameter is set to false. + * + * "validate-if-schema" + * See the definition of DOMConfiguration for a description of this parameter. + * Unlike in [DOM Level 3 Core], the processing of the internal subset is always accomplished, even + * if this parameter is set to false. + * + * "well-formed" + * See the definition of DOMConfiguration for a description of this parameter. + * Unlike in [DOM Level 3 Core], this parameter cannot be set to false. + * + * In addition to these, Xerces adds these non standard parameters: + * + * "http://apache.org/xml/properties/entity-resolver" + * A pointer to a XMLEntityResolver object, or NULL. If the value of this parameter + * is not null when an external resource (such as an external XML entity or an XML schema + * location) is encountered, the implementation will request that the XMLEntityResolver + * referenced in this parameter resolves the resource. + * + * "http://apache.org/xml/properties/schema/external-schemaLocation" + * A string holding a set of [namespaceUri schemaLocation] entries that will be treated as + * the content of the attribute xsi:schemaLocation of the root element + * + * "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation" + * A string holding the schemaLocation for the empty namespace URI that will be treated as + * the content of the attribute xsi:noNamespaceSchemaLocation of the root element + * + * "http://apache.org/xml/properties/security-manager" + * A pointer to a SecurityManager object that will control how many entity references will be + * expanded during parsing + * + * "http://apache.org/xml/properties/scannerName" + * A string holding the type of scanner used while parsing. The valid names are: + *
    + *
  • IGXMLScanner: the default one, capable of both XMLSchema and DTD validation
  • + *
  • SGXMLScanner: a scanner that can only perform XMLSchema validation
  • + *
  • DGXMLScanner: a scanner that can only perform DTD validation
  • + *
  • WFXMLScanner: a scanner that cannot perform any type validation, only well-formedness
  • + *
+ * + * "http://apache.org/xml/properties/parser-use-DOMDocument-from-Implementation" + * A string holding the capabilities of the DOM implementation to be used to create the DOMDocument + * resulting from the parse operation. For instance, "LS" or "Core" + * + * "http://apache.org/xml/features/validation/schema" + * true + * Enable XMLSchema validation (note that also namespace processing should be enabled) + * false (default) + * Don't perform XMLSchema validation + * + * "http://apache.org/xml/features/validation/schema-full-checking" + * true + * Turn on full XMLSchema checking (e.g. Unique Particle Attribution) + * false (default) + * Don't perform full XMLSchema checking + * + * "http://apache.org/xml/features/validating/load-schema" + * true (default) + * Allow the parser to load schemas that are not in the grammar pool + * false + * Schemas that are not in the grammar pool are ignored + * + * "http://apache.org/xml/features/dom/user-adopts-DOMDocument" + * true + * The DOMDocument objects returned by parse will be owned by the caller + * false (default) + * The DOMDocument objects returned by parse will be owned by this DOMLSParser + * and deleted when released + * + * "http://apache.org/xml/features/nonvalidating/load-external-dtd" + * true (default) + * Allow the parser to load external DTDs + * false + * References to external DTDs will be ignored + * + * "http://apache.org/xml/features/continue-after-fatal-error" + * true + * Parsing should try to continue even if a fatal error has been triggered, trying to generate a DOM tree + * from a non well-formed XML + * false (default) + * Violation of XML rules will abort parsing + * + * "http://apache.org/xml/features/validation-error-as-fatal" + * true + * Validation errors are treated as fatal errors, and abort parsing (unless "continue-after-fatal-error" + * has been specified) + * false (default) + * Validation errors are normal errors + * + * "http://apache.org/xml/features/validation/cache-grammarFromParse" + * true + * XMLSchemas referenced by an XML file are cached in order to be reused by other parse operations + * false (default) + * XMLSchemas loaded during a parse operation will be discarded before the next one + * + * "http://apache.org/xml/features/validation/use-cachedGrammarInParse" + * true + * During this parse operation, reuse the XMLSchemas found in the cache + * false (default) + * Don't reuse the XMLSchemas found in the cache + * + * "http://apache.org/xml/features/calculate-src-ofs" + * true + * During parsing update the position in the source stream + * false (default) + * Don't waste time computing the position in the source stream + * + * "http://apache.org/xml/features/standard-uri-conformant" + * true + * Require that every URL being resolved is made of valid URL characters only + * false (default) + * Allow invalid URL characters in URL (e.g. spaces) + * + * "http://apache.org/xml/features/dom-has-psvi-info" + * true + * Add schema informations to DOMElement and DOMAttr nodes in the output DOM tree + * false (default) + * Don't store schema informations in the output DOM tree + * + * "http://apache.org/xml/features/generate-synthetic-annotations" + * true + * Create annotation objects in the representation of the loaded XMLSchemas + * false (default) + * Discard annotations found in the loaded XMLSchemas + * + * "http://apache.org/xml/features/validate-annotations" + * true + * Check that annotations are valid according to their XMLSchema definition + * false (default) + * Don't validate annotations + * + * "http://apache.org/xml/features/validation/identity-constraint-checking" + * true (default) + * Enforce identity constraints specified in the XMLSchema + * false + * Don't enforce identity constraints + * + * "http://apache.org/xml/features/validation/ignoreCachedDTD" + * true + * Don't reuse DTDs found in the cache, even if use-cachedGrammarInParse is true + * false (default) + * Reuse DTDs found in the cache, if use-cachedGrammarInParse is true + * + * "http://apache.org/xml/features/schema/ignore-annotations" + * true + * Don't process annotations found in an XMLSchema + * false (default) + * Process the annotations found in an XMLSchema + * + * "http://apache.org/xml/features/disable-default-entity-resolution" + * true + * Entities will be resolved only by a resolver installed by the user + * false (default) + * If the entity resolver has not been installed, or it refuses to resolve the given entity, the + * parser will try to locate it himself + * + * "http://apache.org/xml/features/validation/schema/skip-dtd-validation" + * true + * If XMLSchema validation is true, DTD validation will not be performed + * false (default) + * If a DTD is found, it will be used to validate the XML + * + * @return The pointer to the configuration object. + * @since DOM Level 3 + */ + virtual DOMConfiguration* getDomConfig() = 0; + + /** + * Get a const pointer to the application filter + * + * This method returns the installed application filter. If no filter + * has been installed, then it will be a zero pointer. + * + * @return A const pointer to the installed application filter + * @since DOM Level 3 + */ + virtual const DOMLSParserFilter* getFilter() const = 0; + + /** + * Return whether the parser is asynchronous + * + * @return true if the DOMLSParser is asynchronous, + * false if it is synchronous + * @since DOM Level 3 + */ + virtual bool getAsync() const = 0; + + /** + * Return whether the parser is busy parsing + * + * @return true if the DOMLSParser is currently busy + * loading a document, otherwise false. + * @since DOM Level 3 + */ + virtual bool getBusy() const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Set the application filter + * + * When the application provides a filter, the parser will call out to + * the filter at the completion of the construction of each DOMElement + * node. The filter implementation can choose to remove the element from the + * document being constructed or to terminate the parse early. + * The filter is invoked after the operations requested by the DOMConfiguration + * parameters have been applied. For example, if "validate" is set to true, + * the validation is done before invoking the filter. + * + * Any previously set filter is merely dropped, since the parser + * does not own them. + * + * @param filter A const pointer to the user supplied application + * filter. + * + * @see #getFilter + * @since DOM Level 3 + */ + virtual void setFilter(DOMLSParserFilter* const filter) = 0; + + // ----------------------------------------------------------------------- + // Parsing methods + // ----------------------------------------------------------------------- + /** + * Parse an XML document from a resource identified by a DOMLSInput. + * + * The parser owns the returned DOMDocument. It will be deleted + * when the parser is released. + * + * @param source The DOMLSInput from which the source of the document + * is to be read. + * @return If the DOMLSParser is a synchronous DOMLSParser + * the newly created and populated DOMDocument is returned. + * If the DOMLSParser is asynchronous then NULL + * is returned since the document object may not yet be constructed when + * this method returns. + * @exception DOMException INVALID_STATE_ERR: Raised if the DOMLSParser::busy + * attribute is true. + * @exception DOMLSException PARSE_ERR: Starting from Xerces-C++ 4.0.0 this exception is + * raised if the DOMLSParser was unable + * to load the XML document. DOM applications should + * attach a DOMErrorHandler using the + * parameter "error-handler" if they wish to get details + * on the error. + * + * @see DOMLSInput#DOMLSInput + * @see DOMConfiguration + * @see resetDocumentPool + * @since DOM Level 3 + */ + virtual DOMDocument* parse(const DOMLSInput* source) = 0; + + /** + * Parse an XML document from a location identified by a URI reference [IETF RFC 2396]. + * If the URI contains a fragment identifier (see section 4.1 in [IETF RFC 2396]), + * the behavior is not defined by this specification, future versions of this + * specification may define the behavior. + * + * The parser owns the returned DOMDocument. It will be deleted + * when the parser is released. + * + * @param uri The location of the XML document to be read (in Unicode) + * @return If the DOMLSParser is a synchronous DOMLSParser + * the newly created and populated DOMDocument is returned. + * If the DOMLSParser is asynchronous then NULL + * is returned since the document object is not yet parsed when this method returns. + * @exception DOMException INVALID_STATE_ERR: Raised if the DOMLSParser::busy + * attribute is true. + * @exception DOMLSException PARSE_ERR: Starting from Xerces-C++ 4.0.0 this exception is + * raised if the DOMLSParser was unable + * to load the XML document. DOM applications should + * attach a DOMErrorHandler using the + * parameter "error-handler" if they wish to get details + * on the error. + * + * @see #parse(DOMLSInput,...) + * @see resetDocumentPool + * @since DOM Level 3 + */ + virtual DOMDocument* parseURI(const XMLCh* const uri) = 0; + + /** + * Parse an XML document from a location identified by a URI reference [IETF RFC 2396]. + * If the URI contains a fragment identifier (see section 4.1 in [IETF RFC 2396]), + * the behavior is not defined by this specification, future versions of this + * specification may define the behavior. + * + * The parser owns the returned DOMDocument. It will be deleted + * when the parser is released. + * + * @param uri The location of the XML document to be read (in the local code page) + * @return If the DOMLSParser is a synchronous DOMLSParser + * the newly created and populated DOMDocument is returned. + * If the DOMLSParser is asynchronous then NULL + * is returned since the document object is not yet parsed when this method returns. + * @exception DOMException INVALID_STATE_ERR: Raised if the DOMLSParser::busy + * attribute is true. + * @exception DOMLSException PARSE_ERR: Starting from Xerces-C++ 4.0.0 this exception is + * raised if the DOMLSParser was unable + * to load the XML document. DOM applications should + * attach a DOMErrorHandler using the + * parameter "error-handler" if they wish to get details + * on the error. + * + * @see #parse(DOMLSInput,...) + * @see resetDocumentPool + * @since DOM Level 3 + */ + virtual DOMDocument* parseURI(const char* const uri) = 0; + + /** + * Parse an XML fragment from a resource identified by a DOMLSInput + * and insert the content into an existing document at the position specified + * with the context and action arguments. When parsing the input stream, the + * context node (or its parent, depending on where the result will be inserted) + * is used for resolving unbound namespace prefixes. The context node's + * ownerDocument node (or the node itself if the node of type + * DOCUMENT_NODE) is used to resolve default attributes and entity + * references. + * As the new data is inserted into the document, at least one mutation event + * is fired per new immediate child or sibling of the context node. + * If the context node is a DOMDocument node and the action is + * ACTION_REPLACE_CHILDREN, then the document that is passed as + * the context node will be changed such that its xmlEncoding, + * documentURI, xmlVersion, inputEncoding, + * xmlStandalone, and all other such attributes are set to what they + * would be set to if the input source was parsed using DOMLSParser::parse(). + * This method is always synchronous, even if the DOMLSParser is + * asynchronous (DOMLSParser::getAsync() returns true). + * If an error occurs while parsing, the caller is notified through the ErrorHandler + * instance associated with the "error-handler" parameter of the DOMConfiguration. + * When calling parseWithContext, the values of the following configuration + * parameters will be ignored and their default values will always be used instead: + * "validate", + * "validate-if-schema" + * "element-content-whitespace". + * Other parameters will be treated normally, and the parser is expected to call + * the DOMLSParserFilter just as if a whole document was parsed. + * + * @param source The DOMLSInput from which the source document is + * to be read. The source document must be an XML fragment, i.e. + * anything except a complete XML document (except in the case where + * the context node of type DOCUMENT_NODE, and the action is + * ACTION_REPLACE_CHILDREN), a DOCTYPE + * (internal subset), entity declaration(s), notation declaration(s), + * or XML or text declaration(s). + * @param contextNode The node that is used as the context for the data that is being + * parsed. This node must be a DOMDocument node, a + * DOMDocumentFragment node, or a node of a type that + * is allowed as a child of an DOMElement node, e.g. + * it cannot be an DOMAttribute node. + * @param action This parameter describes which action should be taken between the new + * set of nodes being inserted and the existing children of the context node. + * The set of possible actions is defined in ACTION_TYPES above. + * @return Return the node that is the result of the parse operation. If the result is more + * than one top-level node, the first one is returned. + * + * @exception DOMException + * HIERARCHY_REQUEST_ERR: Raised if the content cannot replace, be inserted before, after, + * or as a child of the context node (see also DOMNode::insertBefore + * or DOMNode::replaceChild in [DOM Level 3 Core]). + * NOT_SUPPORTED_ERR: Raised if the DOMLSParser doesn't support this method, + * or if the context node is of type DOMDocument and the DOM + * implementation doesn't support the replacement of the DOMDocumentType + * child or DOMElement child. + * NO_MODIFICATION_ALLOWED_ERR: Raised if the context node is a read only node and the content + * is being appended to its child list, or if the parent node of + * the context node is read only node and the content is being + * inserted in its child list. + * INVALID_STATE_ERR: Raised if the DOMLSParser::getBusy() returns true. + * + * @exception DOMLSException PARSE_ERR: Raised if the DOMLSParser was unable to load + * the XML fragment. DOM applications should attach a + * DOMErrorHandler using the parameter "error-handler" + * if they wish to get details on the error. + * @since DOM Level 3 + */ + virtual DOMNode* parseWithContext(const DOMLSInput* source, DOMNode* contextNode, const ActionType action) = 0; + + /** + * Abort the loading of the document that is currently being loaded by the DOMLSParser. + * If the DOMLSParser is currently not busy, a call to this method does nothing. + * + * Note: invoking this method will remove the installed DOMLSParserFilter filter + * + * @since DOM Level 3 + */ + virtual void abort() = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this DOMLSParser is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + + /** Reset the documents vector pool and release all the associated memory + * back to the system. + * + * When parsing a document using a DOM parser, all memory allocated + * for a DOM tree is associated to the DOM document. + * + * If you do multiple parse using the same DOM parser instance, then + * multiple DOM documents will be generated and saved in a vector pool. + * All these documents (and thus all the allocated memory) + * won't be deleted until the parser instance is destroyed. + * + * If you don't need these DOM documents anymore and don't want to + * destroy the DOM parser instance at this moment, then you can call this method + * to reset the document vector pool and release all the allocated memory + * back to the system. + * + * It is an error to call this method if you are in the middle of a + * parse (e.g. in the mid of a progressive parse). + * + * @exception IOException An exception from the parser if this function + * is called when a parse is in progress. + * + */ + virtual void resetDocumentPool() = 0; + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via an input source + * object. + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the DOMLSInput parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * @param source A const reference to the DOMLSInput object which + * points to the schema grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no chaching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * + * @see DOMLSInput#DOMLSInput + */ + virtual Grammar* loadGrammar(const DOMLSInput* source, + const Grammar::GrammarType grammarType, + const bool toCache = false) = 0; + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag is + * enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML grammar file to be + * preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no chaching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const XMLCh* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false) = 0; + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag is + * enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * @param systemId A const char pointer to a native string which contains + * the path to the XML grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no chaching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const char* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false) = 0; + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param nameSpaceKey Namespace key + * @return Grammar associated with the Namespace key. + */ + virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey) const = 0; + + /** + * Retrieve the grammar where the root element is declared. + * + * @return Grammar where root element declared + */ + virtual Grammar* getRootGrammar() const = 0; + + /** + * Returns the string corresponding to a URI id from the URI string pool. + * + * @param uriId id of the string in the URI string pool. + * @return URI string corresponding to the URI id. + */ + virtual const XMLCh* getURIText(unsigned int uriId) const = 0; + + /** + * Clear the cached grammar pool + */ + virtual void resetCachedGrammarPool() = 0; + + /** + * Returns the current src offset within the input source. + * + * @return offset within the input source + */ + virtual XMLFilePos getSrcOffset() const = 0; + + //@} + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSParserFilter.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSParserFilter.hpp new file mode 100644 index 000000000000..f72c83b02c1f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSParserFilter.hpp @@ -0,0 +1,164 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSPARSERFILTER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSPARSERFILTER_HPP + + /** + * + * DOMLSParserFilter.hpp: interface for the DOMLSParserFilter class. + * + * DOMLSParserFilter provide applications the ability to examine nodes + * as they are being created during the parse process. + * + * DOMLSParserFilter lets the application decide what nodes should be + * in the output DOM tree or not. + * + * @since DOM Level 3 + */ + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMElement; +class DOMNode; + +class CDOM_EXPORT DOMLSParserFilter { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLSParserFilter() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLSParserFilter(const DOMLSParserFilter &); + DOMLSParserFilter & operator = (const DOMLSParserFilter &); + //@} + + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLSParserFilter() {}; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Contants */ + //@{ + /** + * Constants returned by acceptNode. + * + *

FILTER_ACCEPT: + * Accept the node.

+ * + *

FILTER_REJECT: + * Reject the node and its children.

+ * + *

FILTER_SKIP: + * Skip this single node. The children of this node will still be considered.

+ * + *

FILTER_INTERRUPT: + * Interrupt the normal processing of the document.

+ * + * @since DOM Level 3 + */ + enum FilterAction {FILTER_ACCEPT = 1, + FILTER_REJECT = 2, + FILTER_SKIP = 3, + FILTER_INTERRUPT = 4}; + + // ----------------------------------------------------------------------- + // Virtual DOMLSParserFilter interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * This method will be called by the parser at the completion of the parsing of each node. + * The node and all of its descendants will exist and be complete. The parent node will also exist, + * although it may be incomplete, i.e. it may have additional children that have not yet been parsed. + * Attribute nodes are never passed to this function. + * From within this method, the new node may be freely modified - children may be added or removed, + * text nodes modified, etc. The state of the rest of the document outside this node is not defined, + * and the affect of any attempt to navigate to, or to modify any other part of the document is undefined. + * For validating parsers, the checks are made on the original document, before any modification by the + * filter. No validity checks are made on any document modifications made by the filter. + * If this new node is rejected, the parser might reuse the new node and any of its descendants. + * + * @param node The newly constructed element. At the time this method is called, the element is complete - + * it has all of its children (and their children, recursively) and attributes, and is attached + * as a child to its parent. + * @return One of the FilterAction enum + */ + virtual FilterAction acceptNode(DOMNode* node) = 0; + + /** + * The parser will call this method after each DOMElement start tag has been scanned, + * but before the remainder of the DOMElement is processed. The intent is to allow the element, + * including any children, to be efficiently skipped. Note that only element nodes are passed to the + * startElement function. + * The element node passed to startElement for filtering will include all of the attributes, but none + * of the children nodes. The DOMElement may not yet be in place in the document being + * constructed (it may not have a parent node.) + * A startElement filter function may access or change the attributes for the DOMElement. + * Changing namespace declarations will have no effect on namespace resolution by the parser. + * + * @param node The newly encountered element. At the time this method is called, the element is incomplete - + * it will have its attributes, but no children. + * @return One of the FilterAction enum + */ + virtual FilterAction startElement(DOMElement* node) = 0; + + /** + * Tells the DOMLSParser what types of nodes to show to the method DOMLSParserFilter::acceptNode. + * If a node is not shown to the filter using this attribute, it is automatically included in the DOM document being built. + * See DOMNodeFilter for definition of the constants. The constants SHOW_ATTRIBUTE, SHOW_DOCUMENT, + * SHOW_DOCUMENT_TYPE, SHOW_NOTATION, SHOW_ENTITY, and SHOW_DOCUMENT_FRAGMENT are meaningless here. + * Those nodes will never be passed to DOMLSParserFilter::acceptNode. + * + * @return The constants of what types of nodes to show. + * @since DOM Level 3 + */ + virtual DOMNodeFilter::ShowType getWhatToShow() const = 0; + + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSResourceResolver.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSResourceResolver.hpp new file mode 100644 index 000000000000..e2d740c38b05 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSResourceResolver.hpp @@ -0,0 +1,143 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSRESOURCERESOLVER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSRESOURCERESOLVER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMLSInput; + +/** + * DOMLSResourceResolver provides a way for applications to redirect references + * to external entities. + * + *

Applications needing to implement customized handling for external + * entities must implement this interface and register their implementation + * by setting the entityResolver attribute of the DOMLSParser.

+ * + *

The DOMLSParser will then allow the application to intercept any + * external entities (including the external DTD subset and external parameter + * entities) before including them.

+ * + *

Many DOM applications will not need to implement this interface, but it + * will be especially useful for applications that build XML documents from + * databases or other specialized input sources, or for applications that use + * URNs.

+ * + * @see DOMLSParser#getDomConfig + * @see DOMLSInput#DOMLSInput + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMLSResourceResolver +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLSResourceResolver() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLSResourceResolver(const DOMLSResourceResolver &); + DOMLSResourceResolver & operator = (const DOMLSResourceResolver &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLSResourceResolver() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMLSResourceResolver interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * Allow the application to resolve external resources. + * + * The DOMLSParser will call this method before opening any external resource, + * including the external DTD subset, external entities referenced within the DTD, and + * external entities referenced within the document element (however, the top-level + * document entity is not passed to this method). The application may then request that + * the DOMLSParser resolve the external resource itself, that it use an + * alternative URI, or that it use an entirely different input source. + * + * Application writers can use this method to redirect external system identifiers to + * secure and/or local URI, to look up public identifiers in a catalogue, or to read + * an entity from a database or other input source (including, for example, a dialog box). + * + * The returned DOMLSInput is owned by the DOMLSParser which is + * responsible to clean up the memory. + * + * @param resourceType The type of the resource being resolved. For XML [XML 1.0] resources + * (i.e. entities), applications must use the value "http://www.w3.org/TR/REC-xml". + * For XML Schema [XML Schema Part 1], applications must use the value + * "http://www.w3.org/2001/XMLSchema". Other types of resources are outside + * the scope of this specification and therefore should recommend an absolute + * URI in order to use this method. + * @param namespaceUri The namespace of the resource being resolved, e.g. the target namespace + * of the XML Schema [XML Schema Part 1] when resolving XML Schema resources. + * @param publicId The public identifier of the external entity being referenced, or null + * if no public identifier was supplied or if the resource is not an entity. + * @param systemId The system identifier, a URI reference [IETF RFC 2396], of the external + * resource being referenced, or null if no system identifier was supplied. + * @param baseURI The absolute base URI of the resource being parsed, or null if + * there is no base URI. + * @return A DOMLSInput object describing the new input source, + * or null to request that the parser open a regular + * URI connection to the resource. + * The returned DOMLSInput is owned by the DOMLSParser which is + * responsible to clean up the memory. + * @see DOMLSInput#DOMLSInput + * @since DOM Level 3 + */ + virtual DOMLSInput* resolveResource( const XMLCh* const resourceType + , const XMLCh* const namespaceUri + , const XMLCh* const publicId + , const XMLCh* const systemId + , const XMLCh* const baseURI) = 0; + + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSSerializer.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSSerializer.hpp new file mode 100644 index 000000000000..8bb4ff71e1f4 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSSerializer.hpp @@ -0,0 +1,547 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSSERIALIZER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSSERIALIZER_HPP + +/** + * + * DOMLSSerializer provides an API for serializing (writing) a DOM document out in + * an XML document. The XML data is written to an output stream, the type of + * which depends on the specific language bindings in use. During + * serialization of XML data, namespace fixup is done when possible. + *

DOMLSSerializer accepts any node type for serialization. For + * nodes of type Document or Entity, well formed + * XML will be created if possible. The serialized output for these node + * types is either as a Document or an External Entity, respectively, and is + * acceptable input for an XML parser. For all other types of nodes the + * serialized form is not specified, but should be something useful to a + * human for debugging or diagnostic purposes. Note: rigorously designing an + * external (source) form for stand-alone node types that don't already have + * one defined in seems a bit much to take on here. + *

Within a Document or Entity being serialized, Nodes are processed as + * follows Documents are written including an XML declaration and a DTD + * subset, if one exists in the DOM. Writing a document node serializes the + * entire document. Entity nodes, when written directly by + * write defined in the DOMLSSerializer interface, + * output the entity expansion but no namespace fixup is done. The resulting + * output will be valid as an external entity. Entity References nodes are + * serializes as an entity reference of the form + * "&entityName;") in the output. Child nodes (the + * expansion) of the entity reference are ignored. CDATA sections + * containing content characters that can not be represented in the + * specified output encoding are handled according to the + * "split-cdata-sections" feature.If the feature is true, CDATA + * sections are split, and the unrepresentable characters are serialized as + * numeric character references in ordinary content. The exact position and + * number of splits is not specified. If the feature is false, + * unrepresentable characters in a CDATA section are reported as errors. The + * error is not recoverable - there is no mechanism for supplying + * alternative characters and continuing with the serialization. All other + * node types (DOMElement, DOMText, etc.) are serialized to their corresponding + * XML source form. + *

Within the character data of a document (outside of markup), any + * characters that cannot be represented directly are replaced with + * character references. Occurrences of '<' and '&' are replaced by + * the predefined entities &lt; and &amp. The other predefined + * entities (&gt, &apos, etc.) are not used; these characters can be + * included directly. Any character that can not be represented directly in + * the output character encoding is serialized as a numeric character + * reference. + *

Attributes not containing quotes are serialized in quotes. Attributes + * containing quotes but no apostrophes are serialized in apostrophes + * (single quotes). Attributes containing both forms of quotes are + * serialized in quotes, with quotes within the value represented by the + * predefined entity &quot;. Any character that can not be represented + * directly in the output character encoding is serialized as a numeric + * character reference. + *

Within markup, but outside of attributes, any occurrence of a character + * that cannot be represented in the output character encoding is reported + * as an error. An example would be serializing the element + * <LaCañada/> with the encoding="us-ascii". + *

When requested by setting the normalize-characters feature + * on DOMLSSerializer, all data to be serialized, both markup and + * character data, is W3C Text normalized according to the rules defined in + * . The W3C Text normalization process affects only the data as it is being + * written; it does not alter the DOM's view of the document after + * serialization has completed. + *

Namespaces are fixed up during serialization, the serialization process + * will verify that namespace declarations, namespace prefixes and the + * namespace URIs associated with Elements and Attributes are consistent. If + * inconsistencies are found, the serialized form of the document will be + * altered to remove them. The algorithm used for doing the namespace fixup + * while seralizing a document is a combination of the algorithms used for + * lookupNamespaceURI and lookupPrefix. previous paragraph to be + * defined closer here. + *

Any changes made affect only the namespace prefixes and declarations + * appearing in the serialized data. The DOM's view of the document is not + * altered by the serialization operation, and does not reflect any changes + * made to namespace declarations or prefixes in the serialized output. + *

While serializing a document the serializer will write out + * non-specified values (such as attributes whose specified is + * false) if the output-default-values feature is + * set to true. If the output-default-values flag + * is set to false and the use-abstract-schema + * feature is set to true the abstract schema will be used to + * determine if a value is specified or not, if + * use-abstract-schema is not set the specified + * flag on attribute nodes is used to determine if attribute values should + * be written out. + *

Ref to Core spec (1.1.9, XML namespaces, 5th paragraph) entity ref + * description about warning about unbound entity refs. Entity refs are + * always serialized as &foo;, also mention this in the load part of + * this spec. + *

When serializing a document the DOMLSSerializer checks to see if the document + * element in the document is a DOM Level 1 element or a DOM Level 2 (or + * higher) element (this check is done by looking at the localName of the + * root element). If the root element is a DOM Level 1 element then the + * DOMLSSerializer will issue an error if a DOM Level 2 (or higher) element is + * found while serializing. Likewise if the document element is a DOM Level + * 2 (or higher) element and the DOMLSSerializer sees a DOM Level 1 element an + * error is issued. Mixing DOM Level 1 elements with DOM Level 2 (or higher) + * is not supported. + *

DOMLSSerializers have a number of named features that can be + * queried or set. The name of DOMLSSerializer features must be valid + * XML names. Implementation specific features (extensions) should choose an + * implementation dependent prefix to avoid name collisions. + *

Here is a list of properties that must be recognized by all + * implementations. + *

+ *
"normalize-characters"
+ *
+ *
+ *
true
+ *
[ + * optional] (default) Perform the W3C Text Normalization of the characters + * in document as they are written out. Only the characters being written + * are (potentially) altered. The DOM document itself is unchanged.
+ *
+ * false
+ *
[required] do not perform character normalization.
+ *
+ *
+ * "split-cdata-sections"
+ *
+ *
+ *
true
+ *
[required] (default) + * Split CDATA sections containing the CDATA section termination marker + * ']]>' or characters that can not be represented in the output + * encoding, and output the characters using numeric character references. + * If a CDATA section is split a warning is issued.
+ *
false
+ *
[ + * required] Signal an error if a CDATASection contains an + * unrepresentable character.
+ *
+ *
"validation"
+ *
+ *
+ *
true
+ *
[ + * optional] Use the abstract schema to validate the document as it is being + * serialized. If validation errors are found the error handler is notified + * about the error. Setting this state will also set the feature + * use-abstract-schema to true.
+ *
false
+ *
[ + * required] (default) Don't validate the document as it is being + * serialized.
+ *
+ *
"expand-entity-references"
+ *
+ *
+ *
true
+ *
[ + * optional] Expand EntityReference nodes when serializing.
+ *
+ * false
+ *
[required] (default) Serialize all + * EntityReference nodes as XML entity references.
+ *
+ *
+ * "whitespace-in-element-content"
+ *
+ *
+ *
true
+ *
[required] ( + * default) Output all white spaces in the document.
+ *
false
+ *
[ + * optional] Only output white space that is not within element content. The + * implementation is expected to use the + * isWhitespaceInElementContent flag on Text nodes + * to determine if a text node should be written out or not.
+ *
+ *
+ * "discard-default-content"
+ *
+ *
+ *
true
+ *
[required] (default + * ) Use whatever information available to the implementation (i.e. XML + * schema, DTD, the specified flag on Attr nodes, + * and so on) to decide what attributes and content should be serialized or + * not. Note that the specified flag on Attr nodes + * in itself is not always reliable, it is only reliable when it is set to + * false since the only case where it can be set to + * false is if the attribute was created by a Level 1 + * implementation.
+ *
false
+ *
[required] Output all attributes and + * all content.
+ *
+ *
"format-canonical"
+ *
+ *
+ *
true
+ *
[optional] + * This formatting writes the document according to the rules specified in . + * Setting this feature to true will set the feature "format-pretty-print" + * to false.
+ *
false
+ *
[required] (default) Don't canonicalize the + * output.
+ *
+ *
"format-pretty-print"
+ *
+ *
+ *
true
+ *
[optional] + * Formatting the output by adding whitespace to produce a pretty-printed, + * indented, human-readable form. The exact form of the transformations is + * not specified by this specification. Setting this feature to true will + * set the feature "format-canonical" to false.
+ *
false
+ *
[required] + * (default) Don't pretty-print the result.
+ *
+ *
"http://apache.org/xml/features/dom/byte-order-mark"
+ *
+ *
+ *
false
+ *
[optional] + * (default) Setting this feature to true will output the correct BOM for the specified + * encoding.
+ *
true
+ *
[required] + * Don't generate a BOM.
+ *
+ *
"http://apache.org/xml/features/pretty-print/space-first-level-elements"
+ *
+ *
+ *
true
+ *
[optional] + * (default) Setting this feature to true will add an extra line feed between the elements + * that are children of the document root.
+ *
false
+ *
[required] + * Don't add the extra line feed.
+ *
+ *
+ *

See also the Document Object Model (DOM) Level 3 Load and Save Specification. + * + * @since DOM Level 3 + */ + + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMLSOutput; + +class CDOM_EXPORT DOMLSSerializer +{ +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLSSerializer() {}; + //@} +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLSSerializer(const DOMLSSerializer &); + DOMLSSerializer & operator = (const DOMLSSerializer &); + //@} + + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLSSerializer() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMLSSerializer interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Feature methods + // ----------------------------------------------------------------------- + /** + * The DOMConfiguration object used by the LSSerializer when serializing a DOM node. + * + * In addition to the parameters recognized in on the DOMConfiguration + * interface defined in [DOM Level 3 Core], the DOMConfiguration objects + * for DOMLSSerializer add or modify the following parameters: + * + * "canonical-form" + * true [optional] + * Writes the document according to the rules specified in [Canonical XML]. In addition to + * the behavior described in "canonical-form" [DOM Level 3 Core], setting this parameter to + * true will set the parameters "format-pretty-print", "discard-default-content", and + * "xml-declaration", to false. Setting one of those parameters to true will set this + * parameter to false. Serializing an XML 1.1 document when "canonical-form" is true will + * generate a fatal error. + * false [required] (default) + * Do not canonicalize the output. + * + * "discard-default-content" + * true [required] (default) + * Use the DOMAttr::getSpecified attribute to decide what attributes should be discarded. + * Note that some implementations might use whatever information available to the implementation + * (i.e. XML schema, DTD, the DOMAttr::getSpecified attribute, and so on) to determine what + * attributes and content to discard if this parameter is set to true. + * false [required] + * Keep all attributes and all content. + * + * "format-pretty-print" + * true [optional] + * Formatting the output by adding whitespace to produce a pretty-printed, indented, + * human-readable form. The exact form of the transformations is not specified by this specification. + * Pretty-printing changes the content of the document and may affect the validity of the document, + * validating implementations should preserve validity. + * false [required] (default) + * Don't pretty-print the result. + * + * "ignore-unknown-character-denormalizations" + * true [required] (default) + * If, while verifying full normalization when [XML 1.1] is supported, a character is encountered + * for which the normalization properties cannot be determined, then raise a "unknown-character-denormalization" + * warning (instead of raising an error, if this parameter is not set) and ignore any possible + * denormalizations caused by these characters. + * false [optional] + * Report a fatal error if a character is encountered for which the processor cannot determine the + * normalization properties. + * + * "normalize-characters" + * This parameter is equivalent to the one defined by DOMConfiguration in [DOM Level 3 Core]. + * Unlike in the Core, the default value for this parameter is true. While DOM implementations are not + * required to support fully normalizing the characters in the document according to appendix E of [XML 1.1], + * this parameter must be activated by default if supported. + * + * "xml-declaration" + * true [required] (default) + * If a DOMDocument, DOMElement, or DOMEntity node is serialized, the XML declaration, or text declaration, + * should be included. The version (DOMDocument::xmlVersion if the document is a Level 3 document and the + * version is non-null, otherwise use the value "1.0"), and the output encoding (see DOMLSSerializer::write + * for details on how to find the output encoding) are specified in the serialized XML declaration. + * false [required] + * Do not serialize the XML and text declarations. Report a "xml-declaration-needed" warning if this will + * cause problems (i.e. the serialized data is of an XML version other than [XML 1.0], or an encoding would + * be needed to be able to re-parse the serialized data). + * + * "error-handler" + * Contains a DOMErrorHandler object. If an error is encountered in the document, the implementation will call back + * the DOMErrorHandler registered using this parameter. The implementation may provide a default DOMErrorHandler + * object. When called, DOMError::relatedData will contain the closest node to where the error occurred. + * If the implementation is unable to determine the node where the error occurs, DOMError::relatedData will contain + * the DOMDocument node. Mutations to the document from within an error handler will result in implementation + * dependent behavior. + * + * @return The pointer to the configuration object. + * @since DOM Level 3 + */ + virtual DOMConfiguration* getDomConfig() = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * The end-of-line sequence of characters to be used in the XML being + * written out. The only permitted values are these: + *

+ *
null
+ *
+ * Use a default end-of-line sequence. DOM implementations should choose + * the default to match the usual convention for text files in the + * environment being used. Implementations must choose a default + * sequence that matches one of those allowed by 2.11 "End-of-Line + * Handling". However, Xerces-C++ always uses LF when this + * property is set to null since otherwise automatic + * translation of LF to CR-LF on Windows for text files would + * result in such files containing CR-CR-LF. If you need Windows-style + * end of line sequences in your output, consider writing to a file + * opened in text mode or explicitly set this property to CR-LF.
+ *
CR
+ *
The carriage-return character (\#xD).
+ *
CR-LF
+ *
The + * carriage-return and line-feed characters (\#xD \#xA).
+ *
LF
+ *
The line-feed + * character (\#xA).
+ *
+ *
The default value for this attribute is null. + * + * @param newLine The end-of-line sequence of characters to be used. + * @see getNewLine + * @since DOM Level 3 + */ + virtual void setNewLine(const XMLCh* const newLine) = 0; + + /** + * When the application provides a filter, the serializer will call out + * to the filter before serializing each Node. Attribute nodes are never + * passed to the filter. The filter implementation can choose to remove + * the node from the stream or to terminate the serialization early. + * + * @param filter The writer filter to be used. + * @see getFilter + * @since DOM Level 3 + */ + virtual void setFilter(DOMLSSerializerFilter *filter) = 0; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Return the end-of-line sequence of characters to be used in the XML being + * written out. + * + * @return The end-of-line sequence of characters to be used. + * @see setNewLine + * @since DOM Level 3 + */ + virtual const XMLCh* getNewLine() const = 0; + + /** + * Return the WriterFilter used. + * + * @return The writer filter used. + * @see setFilter + * @since DOM Level 3 + */ + virtual DOMLSSerializerFilter* getFilter() const = 0; + + // ----------------------------------------------------------------------- + // Write methods + // ----------------------------------------------------------------------- + /** + * Write out the specified node as described above in the description of + * DOMLSSerializer. Writing a Document or Entity node produces a + * serialized form that is well formed XML. Writing other node types + * produces a fragment of text in a form that is not fully defined by + * this document, but that should be useful to a human for debugging or + * diagnostic purposes. + * + * @param nodeToWrite The Document or Entity node to + * be written. For other node types, something sensible should be + * written, but the exact serialized form is not specified. + * @param destination The destination for the data to be written. + * @return Returns true if node was + * successfully serialized and false in case a failure + * occured and the failure wasn't canceled by the error handler. + * @since DOM Level 3 + */ + virtual bool write(const DOMNode* nodeToWrite, + DOMLSOutput* const destination) = 0; + + /** + * Write out the specified node as described above in the description of + * DOMLSSerializer. Writing a Document or Entity node produces a + * serialized form that is well formed XML. Writing other node types + * produces a fragment of text in a form that is not fully defined by + * this document, but that should be useful to a human for debugging or + * diagnostic purposes. + * + * @param nodeToWrite The Document or Entity node to + * be written. For other node types, something sensible should be + * written, but the exact serialized form is not specified. + * @param uri The destination for the data to be written. + * @return Returns true if node was + * successfully serialized and false in case a failure + * occured and the failure wasn't canceled by the error handler. + * @since DOM Level 3 + */ + virtual bool writeToURI(const DOMNode* nodeToWrite, + const XMLCh* uri) = 0; + /** + * Serialize the specified node as described above in the description of + * DOMLSSerializer. The result of serializing the node is + * returned as a string. Writing a Document or Entity node produces a + * serialized form that is well formed XML. Writing other node types + * produces a fragment of text in a form that is not fully defined by + * this document, but that should be useful to a human for debugging or + * diagnostic purposes. + * + * @param nodeToWrite The node to be written. + * @param manager The memory manager to be used to allocate the result string. + * If NULL is used, the memory manager used to construct the serializer will + * be used. + * @return Returns the serialized data, or null in case a + * failure occured and the failure wasn't canceled by the error + * handler. The returned string is always in UTF-16. + * The encoding information available in DOMLSSerializer is ignored in writeToString(). + * @since DOM Level 3 + */ + virtual XMLCh* writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL) = 0; + + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this Writer is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} + + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSSerializerFilter.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSSerializerFilter.hpp new file mode 100644 index 000000000000..12b048c4cd6f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLSSerializerFilter.hpp @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSSERIALIZERFILTER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSSERIALIZERFILTER_HPP + +/** + * + * DOMLSSerializerFilter.hpp: interface for the DOMLSSerializerFilter class. + * + * DOMLSSerializerFilter provide applications the ability to examine nodes + * as they are being serialized. + * + * DOMLSSerializerFilter lets the application decide what nodes should be + * serialized or not. + * + * The DOMDocument, DOMDocumentType, DOMNotation, and DOMEntity nodes are not passed + * to the filter. + * + * @since DOM Level 3 + */ + + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMLSSerializerFilter : public DOMNodeFilter { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLSSerializerFilter() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLSSerializerFilter(const DOMLSSerializerFilter &); + DOMLSSerializerFilter & operator = (const DOMLSSerializerFilter &); + //@} + + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLSSerializerFilter() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMLSSerializerFilter interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * Interface from DOMNodeFilter, + * to be implemented by implementation (derived class) + */ + virtual FilterAction acceptNode(const DOMNode* node) const = 0; + + /** + * Tells the DOMLSSerializer what types of nodes to show to the filter. + * See DOMNodeFilter for definition of the constants. + * The constant SHOW_ATTRIBUTE is meaningless here, attribute nodes will + * never be passed to a DOMLSSerializerFilter. + * + * @return The constants of what types of nodes to show. + * @since DOM Level 3 + */ + virtual ShowType getWhatToShow() const =0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLocator.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLocator.hpp new file mode 100644 index 000000000000..18b3c6a0a153 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMLocator.hpp @@ -0,0 +1,135 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLOCATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLOCATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNode; + + +/** + * DOMLocator is an interface that describes a location. (e.g. where an error + * occured). + * + * @see DOMError#DOMError + * @since DOM Level 3 + */ + +class CDOM_EXPORT DOMLocator +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMLocator() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMLocator(const DOMLocator &); + DOMLocator & operator = (const DOMLocator &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMLocator() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMLocator interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Get the line number where the error occured, or 0 if there is + * no line number available. + * + * @since DOM Level 3 + */ + virtual XMLFileLoc getLineNumber() const = 0; + + /** + * Get the column number where the error occured, or 0 if there + * is no column number available. + * + * @since DOM Level 3 + */ + virtual XMLFileLoc getColumnNumber() const = 0; + + /** + * Get the byte offset into the input source, or ~(XMLFilePos(0)) if + * there is no byte offset available. + * + * @since DOM Level 3 + */ + virtual XMLFilePos getByteOffset() const = 0; + + /** + * Get the UTF-16 offset into the input source, or ~(XMLFilePos(0)) if + * there is no UTF-16 offset available. + * + * @since DOM Level 3 + */ + virtual XMLFilePos getUtf16Offset() const = 0; + + /** + * Get the DOMNode where the error occured, or null if there + * is no node available. + * + * @since DOM Level 3 + */ + virtual DOMNode* getRelatedNode() const = 0; + + /** + * Get the URI where the error occured, or null if there is no + * URI available. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getURI() const = 0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMMemoryManager.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMMemoryManager.hpp new file mode 100644 index 000000000000..c1dd83cc7a4d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMMemoryManager.hpp @@ -0,0 +1,160 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMMEMORYMANAGER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMMEMORYMANAGER_HPP + +//------------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------------ + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * The DOMMemoryManager interface exposes the memory allocation-related + * functionalities of a DOMDocument + */ + +class CDOM_EXPORT DOMMemoryManager +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMMemoryManager() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMMemoryManager(const DOMMemoryManager &); + DOMMemoryManager & operator = (const DOMMemoryManager &); + //@} + +public: + + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMMemoryManager() {}; + //@} + + // ----------------------------------------------------------------------- + // data types + // ----------------------------------------------------------------------- + enum NodeObjectType { + ATTR_OBJECT = 0, + ATTR_NS_OBJECT = 1, + CDATA_SECTION_OBJECT = 2, + COMMENT_OBJECT = 3, + DOCUMENT_FRAGMENT_OBJECT = 4, + DOCUMENT_TYPE_OBJECT = 5, + ELEMENT_OBJECT = 6, + ELEMENT_NS_OBJECT = 7, + ENTITY_OBJECT = 8, + ENTITY_REFERENCE_OBJECT = 9, + NOTATION_OBJECT = 10, + PROCESSING_INSTRUCTION_OBJECT = 11, + TEXT_OBJECT = 12 + }; + + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the size of the chunks of memory allocated by the memory manager + * + * @return the dimension of the chunks of memory allocated by the memory manager + */ + virtual XMLSize_t getMemoryAllocationBlockSize() const = 0; + + //@} + + //@{ + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Set the size of the chunks of memory allocated by the memory manager + * + * @param size the new size of the chunks; it must be greater than 4KB + */ + virtual void setMemoryAllocationBlockSize(XMLSize_t size) = 0; + //@} + + //@{ + // ----------------------------------------------------------------------- + // Operations + // ----------------------------------------------------------------------- + /** + * Allocate a memory block of the requested size from the managed pool + * + * @param amount the size of the new memory block + * + * @return the pointer to the newly allocated block + */ + virtual void* allocate(XMLSize_t amount) = 0; + + /** + * Allocate a memory block of the requested size from the managed pool of DOM objects + * + * @param amount the size of the new memory block + * @param type the type of the DOM object that will be stored in the block + * + * @return the pointer to the newly allocated block + */ + virtual void* allocate(XMLSize_t amount, DOMMemoryManager::NodeObjectType type) = 0; + + /** + * Release a DOM object and place its memory back in the pool + * + * @param object the pointer to the DOM node + * @param type the type of the DOM object + */ + virtual void release(DOMNode* object, DOMMemoryManager::NodeObjectType type) = 0; + + /** + * Allocate a memory block from the mnaged pool and copy the provided string + * + * @param src the string to be copied + * + * @return the pointer to the newly allocated block + */ + virtual XMLCh* cloneString(const XMLCh *src) = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DOMMemoryManager.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNamedNodeMap.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNamedNodeMap.hpp new file mode 100644 index 000000000000..b13d188cb086 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNamedNodeMap.hpp @@ -0,0 +1,245 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNAMEDNODEMAP_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNAMEDNODEMAP_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNode; + +/** + * DOMNamedNodeMaps are used to + * represent collections of nodes that can be accessed by name. + * + * Note that DOMNamedNodeMap does not inherit from DOMNodeList; + * DOMNamedNodeMaps are not maintained in any particular order. + * Nodes contained in a DOMNamedNodeMap may + * also be accessed by an ordinal index, but this is simply to allow + * convenient enumeration of the contents, and + * does not imply that the DOM specifies an order to these Nodes. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMNamedNodeMap { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMNamedNodeMap() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMNamedNodeMap(const DOMNamedNodeMap &); + DOMNamedNodeMap & operator = (const DOMNamedNodeMap &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMNamedNodeMap() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMNamedNodeMap interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Adds a node using its nodeName attribute. + * + *
As the nodeName attribute is used to derive the name + * which the node must be stored under, multiple nodes of certain types + * (those that have a "special" string value) cannot be stored as the names + * would clash. This is seen as preferable to allowing nodes to be aliased. + * @param arg A node to store in a named node map. The node will later be + * accessible using the value of the nodeName attribute of + * the node. If a node with that name is already present in the map, it + * is replaced by the new one. + * @return If the new DOMNode replaces an existing node the + * replaced DOMNode is returned, + * otherwise null is returned. + * @exception DOMException + * WRONG_DOCUMENT_ERR: Raised if arg was created from a + * different document than the one that created the + * DOMNamedNodeMap. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this + * DOMNamedNodeMap is readonly. + *
INUSE_ATTRIBUTE_ERR: Raised if arg is an + * DOMAttr that is already an attribute of another + * DOMElement object. The DOM user must explicitly clone + * DOMAttr nodes to re-use them in other elements. + * @since DOM Level 1 + */ + virtual DOMNode *setNamedItem(DOMNode *arg) = 0; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the indexth item in the map. + * + * If index + * is greater than or equal to the number of nodes in the map, this returns + * null. + * @param index Index into the map. + * @return The node at the indexth position in the + * DOMNamedNodeMap, or null if that is not a valid + * index. + * @since DOM Level 1 + */ + virtual DOMNode *item(XMLSize_t index) const = 0; + + /** + * Retrieves a node specified by name. + * + * @param name The nodeName of a node to retrieve. + * @return A DOMNode (of any type) with the specified nodeName, or + * null if it does not identify any node in + * the map. + * @since DOM Level 1 + */ + virtual DOMNode *getNamedItem(const XMLCh *name) const = 0; + + /** + * The number of nodes in the map. + * + * The range of valid child node indices is + * 0 to length-1 inclusive. + * @since DOM Level 1 + */ + virtual XMLSize_t getLength() const = 0; + + // ----------------------------------------------------------------------- + // Node methods + // ----------------------------------------------------------------------- + /** + * Removes a node specified by name. + * + * If the removed node is an + * DOMAttr with a default value it is immediately replaced. + * @param name The nodeName of a node to remove. + * @return The node removed from the map if a node with such a name exists. + * @exception DOMException + * NOT_FOUND_ERR: Raised if there is no node named name in + * the map. + *
+ * NO_MODIFICATION_ALLOWED_ERR: Raised if this DOMNamedNodeMap + * is readonly. + * @since DOM Level 1 + */ + virtual DOMNode *removeNamedItem(const XMLCh *name) = 0; + //@} + + /** @name Functions introduced in DOM Level 2 */ + //@{ + /** + * Retrieves a node specified by local name and namespace URI. + * + * @param namespaceURI The namespace URI of + * the node to retrieve. + * @param localName The local name of the node to retrieve. + * @return A DOMNode (of any type) with the specified + * local name and namespace URI, or null if they do not + * identify any node in the map. + * @since DOM Level 2 + */ + virtual DOMNode *getNamedItemNS(const XMLCh *namespaceURI, + const XMLCh *localName) const = 0; + + /** + * Adds a node using its namespaceURI and localName. + * + * @param arg A node to store in a named node map. The node will later be + * accessible using the value of the namespaceURI and + * localName attribute of the node. If a node with those + * namespace URI and local name is already present in the map, it is + * replaced by the new one. + * @return If the new DOMNode replaces an existing node the + * replaced DOMNode is returned, + * otherwise null is returned. + * @exception DOMException + * WRONG_DOCUMENT_ERR: Raised if arg was created from a + * different document than the one that created the + * DOMNamedNodeMap. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this + * DOMNamedNodeMap is readonly. + *
INUSE_ATTRIBUTE_ERR: Raised if arg is an + * DOMAttr that is already an attribute of another + * DOMElement object. The DOM user must explicitly clone + * DOMAttr nodes to re-use them in other elements. + * @since DOM Level 2 + */ + virtual DOMNode *setNamedItemNS(DOMNode *arg) = 0; + + /** + * Removes a node specified by local name and namespace URI. + * + * @param namespaceURI The namespace URI of + * the node to remove. + * @param localName The local name of the + * node to remove. When this DOMNamedNodeMap contains the + * attributes attached to an element, as returned by the attributes + * attribute of the DOMNode interface, if the removed + * attribute is known to have a default value, an attribute + * immediately appears containing the default value + * as well as the corresponding namespace URI, local name, and prefix. + * @return The node removed from the map if a node with such a local name + * and namespace URI exists. + * @exception DOMException + * NOT_FOUND_ERR: Raised if there is no node named name in + * the map. + *
+ * NO_MODIFICATION_ALLOWED_ERR: Raised if this DOMNamedNodeMap + * is readonly. + * @since DOM Level 2 + */ + virtual DOMNode *removeNamedItemNS(const XMLCh *namespaceURI, + const XMLCh *localName) = 0; + //@} + +}; + +#define GetDOMNamedNodeMapMemoryManager GET_INDIRECT_MM(fOwnerNode) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNode.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNode.hpp new file mode 100644 index 000000000000..49d45f228f9a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNode.hpp @@ -0,0 +1,925 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMDocument; +class DOMNamedNodeMap; +class DOMNodeList; +class DOMUserDataHandler; + +/** + * The DOMNode interface is the primary datatype for the entire + * Document Object Model. It represents a single node in the document tree. + * While all objects implementing the DOMNode interface expose + * methods for dealing with children, not all objects implementing the + * DOMNode interface may have children. For example, + * DOMText nodes may not have children, and adding children to + * such nodes results in a DOMException being raised. + *

The attributes nodeName, nodeValue and + * attributes are included as a mechanism to get at node + * information without casting down to the specific derived interface. In + * cases where there is no obvious mapping of these attributes for a + * specific nodeType (e.g., nodeValue for an + * DOMElement or attributes for a DOMComment + * ), this returns null. Note that the specialized interfaces + * may contain additional and more convenient mechanisms to get and set the + * relevant information. + *

The values of nodeName, + * nodeValue, and attributes vary according to the + * node type as follows: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
InterfacenodeNamenodeValueattributes
DOMAttrname of attributevalue of attributenull
DOMCDATASection"\#cdata-section"content of the CDATA Sectionnull
DOMComment"\#comment"content of the commentnull
DOMDocument"\#document"nullnull
DOMDocumentFragment"\#document-fragment"nullnull
DOMDocumentTypedocument type namenullnull
DOMElementtag namenullNamedNodeMap
DOMEntityentity namenullnull
DOMEntityReferencename of entity referencednullnull
DOMNotationnotation namenullnull
DOMProcessingInstructiontargetentire content excluding the targetnull
DOMText"\#text"content of the text nodenull
+ *

See also the Document Object Model (DOM) Level 2 Core Specification. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMNode() {} + DOMNode(const DOMNode &) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMNode & operator = (const DOMNode &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMNode() {}; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * NodeType + * + * @since DOM Level 1 + */ + enum NodeType { + ELEMENT_NODE = 1, + ATTRIBUTE_NODE = 2, + TEXT_NODE = 3, + CDATA_SECTION_NODE = 4, + ENTITY_REFERENCE_NODE = 5, + ENTITY_NODE = 6, + PROCESSING_INSTRUCTION_NODE = 7, + COMMENT_NODE = 8, + DOCUMENT_NODE = 9, + DOCUMENT_TYPE_NODE = 10, + DOCUMENT_FRAGMENT_NODE = 11, + NOTATION_NODE = 12 + }; + + /** + * DocumentPosition: + * + *

DOCUMENT_POSITION_CONTAINED_BY: + * The node is contained by the reference node. A node which is contained is always following, too.

+ *

DOCUMENT_POSITION_CONTAINS: + * The node contains the reference node. A node which contains is always preceding, too.

+ *

DOCUMENT_POSITION_DISCONNECTED: + * The two nodes are disconnected. Order between disconnected nodes is always implementation-specific.

+ *

DOCUMENT_POSITION_FOLLOWING: + * The node follows the reference node.

+ *

DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: + * The determination of preceding versus following is implementation-specific.

+ *

DOCUMENT_POSITION_PRECEDING: + * The second node precedes the reference node.

+ * + * @since DOM Level 3 + */ + enum DocumentPosition { + DOCUMENT_POSITION_DISCONNECTED = 0x01, + DOCUMENT_POSITION_PRECEDING = 0x02, + DOCUMENT_POSITION_FOLLOWING = 0x04, + DOCUMENT_POSITION_CONTAINS = 0x08, + DOCUMENT_POSITION_CONTAINED_BY = 0x10, + DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20 + }; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMNode interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * The name of this node, depending on its type; see the table above. + * @since DOM Level 1 + */ + virtual const XMLCh * getNodeName() const = 0; + + /** + * Gets the value of this node, depending on its type. + * + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. + * @since DOM Level 1 + */ + virtual const XMLCh * getNodeValue() const = 0; + + /** + * An enum value representing the type of the underlying object. + * @since DOM Level 1 + */ + virtual NodeType getNodeType() const = 0; + + /** + * Gets the parent of this node. + * + * All nodes, except DOMDocument, + * DOMDocumentFragment, and DOMAttr may have a parent. + * However, if a node has just been created and not yet added to the tree, + * or if it has been removed from the tree, a null DOMNode + * is returned. + * @since DOM Level 1 + */ + virtual DOMNode *getParentNode() const = 0; + + /** + * Gets a DOMNodeList that contains all children of this node. + * + * If there + * are no children, this is a DOMNodeList containing no nodes. + * The content of the returned DOMNodeList is "live" in the sense + * that, for instance, changes to the children of the node object that + * it was created from are immediately reflected in the nodes returned by + * the DOMNodeList accessors; it is not a static snapshot of the + * content of the node. This is true for every DOMNodeList, + * including the ones returned by the getElementsByTagName + * method. + * @since DOM Level 1 + */ + virtual DOMNodeList *getChildNodes() const = 0; + /** + * Gets the first child of this node. + * + * If there is no such node, this returns null. + * @since DOM Level 1 + */ + virtual DOMNode *getFirstChild() const = 0; + + /** + * Gets the last child of this node. + * + * If there is no such node, this returns null. + * @since DOM Level 1 + */ + virtual DOMNode *getLastChild() const = 0; + + /** + * Gets the node immediately preceding this node. + * + * If there is no such node, this returns null. + * @since DOM Level 1 + */ + virtual DOMNode *getPreviousSibling() const = 0; + + /** + * Gets the node immediately following this node. + * + * If there is no such node, this returns null. + * @since DOM Level 1 + */ + virtual DOMNode *getNextSibling() const = 0; + + /** + * Gets a DOMNamedNodeMap containing the attributes of this node (if it + * is an DOMElement) or null otherwise. + * @since DOM Level 1 + */ + virtual DOMNamedNodeMap *getAttributes() const = 0; + + /** + * Gets the DOMDocument object associated with this node. + * + * This is also + * the DOMDocument object used to create new nodes. When this + * node is a DOMDocument or a DOMDocumentType + * which is not used with any DOMDocument yet, this is + * null. + * + * @since DOM Level 1 + */ + virtual DOMDocument *getOwnerDocument() const = 0; + + // ----------------------------------------------------------------------- + // Node methods + // ----------------------------------------------------------------------- + /** + * Returns a duplicate of this node. + * + * This function serves as a generic copy constructor for nodes. + * + * The duplicate node has no parent ( + * parentNode returns null.). + *
Cloning an DOMElement copies all attributes and their + * values, including those generated by the XML processor to represent + * defaulted attributes, but this method does not copy any text it contains + * unless it is a deep clone, since the text is contained in a child + * DOMText node. Cloning any other type of node simply returns a + * copy of this node. + * @param deep If true, recursively clone the subtree under the + * specified node; if false, clone only the node itself (and + * its attributes, if it is an DOMElement). + * @return The duplicate node. + * @since DOM Level 1 + */ + virtual DOMNode * cloneNode(bool deep) const = 0; + + /** + * Inserts the node newChild before the existing child node + * refChild. + * + * If refChild is null, + * insert newChild at the end of the list of children. + *
If newChild is a DOMDocumentFragment object, + * all of its children are inserted, in the same order, before + * refChild. If the newChild is already in the + * tree, it is first removed. Note that a DOMNode that + * has never been assigned to refer to an actual node is == null. + * @param newChild The node to insert. + * @param refChild The reference node, i.e., the node before which the new + * node must be inserted. + * @return The node being inserted. + * @exception DOMException + * HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not + * allow children of the type of the newChild node, or if + * the node to insert is one of this node's ancestors. + *
WRONG_DOCUMENT_ERR: Raised if newChild was created + * from a different document than the one that created this node. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being + * inserted is readonly. + *
NOT_FOUND_ERR: Raised if refChild is not a child of + * this node. + * @since DOM Level 1 + */ + virtual DOMNode *insertBefore(DOMNode *newChild, + DOMNode *refChild) = 0; + + + /** + * Replaces the child node oldChild with newChild + * in the list of children, and returns the oldChild node. + * + * If newChild is a DOMDocumentFragment object, + * oldChild is replaced by all of the DOMDocumentFragment + * children, which are inserted in the same order. + * + * If the newChild is already in the tree, it is first removed. + * @param newChild The new node to put in the child list. + * @param oldChild The node being replaced in the list. + * @return The node replaced. + * @exception DOMException + * HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not + * allow children of the type of the newChild node, or it + * the node to put in is one of this node's ancestors. + *
WRONG_DOCUMENT_ERR: Raised if newChild was created + * from a different document than the one that created this node. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the new node is readonly. + *
NOT_FOUND_ERR: Raised if oldChild is not a child of + * this node. + * @since DOM Level 1 + */ + virtual DOMNode *replaceChild(DOMNode *newChild, + DOMNode *oldChild) = 0; + /** + * Removes the child node indicated by oldChild from the list + * of children, and returns it. + * + * @param oldChild The node being removed. + * @return The node removed. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + *
NOT_FOUND_ERR: Raised if oldChild is not a child of + * this node. + * @since DOM Level 1 + */ + virtual DOMNode *removeChild(DOMNode *oldChild) = 0; + + /** + * Adds the node newChild to the end of the list of children of + * this node. + * + * If the newChild is already in the tree, it is + * first removed. + * @param newChild The node to add.If it is a DOMDocumentFragment + * object, the entire contents of the document fragment are moved into + * the child list of this node + * @return The node added. + * @exception DOMException + * HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not + * allow children of the type of the newChild node, or if + * the node to append is one of this node's ancestors. + *
WRONG_DOCUMENT_ERR: Raised if newChild was created + * from a different document than the one that created this node. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being + * appended is readonly. + * @since DOM Level 1 + */ + virtual DOMNode *appendChild(DOMNode *newChild) = 0; + + // ----------------------------------------------------------------------- + // Query methods + // ----------------------------------------------------------------------- + /** + * This is a convenience method to allow easy determination of whether a + * node has any children. + * + * @return true if the node has any children, + * false if the node has no children. + * @since DOM Level 1 + */ + virtual bool hasChildNodes() const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Sets the value of the node. + * + * Any node which can have a nodeValue will + * also accept requests to set it to a string. The exact response to + * this varies from node to node -- Attribute, for example, stores + * its values in its children and has to replace them with a new Text + * holding the replacement value. + * + * For most types of Node, value is null and attempting to set it + * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will + * also be thrown if the node is read-only. + * @see #getNodeValue + * @since DOM Level 1 + */ + virtual void setNodeValue(const XMLCh *nodeValue) = 0; + //@} + + /** @name Functions introduced in DOM Level 2. */ + //@{ + /** + * Puts all DOMText + * nodes in the full depth of the sub-tree underneath this DOMNode, + * including attribute nodes, into a "normal" form where only markup (e.g., + * tags, comments, processing instructions, CDATA sections, and entity + * references) separates DOMText + * nodes, i.e., there are neither adjacent DOMText + * nodes nor empty DOMText + * nodes. This can be used to ensure that the DOM view of a document is the + * same as if it were saved and re-loaded, and is useful when operations + * (such as XPointer lookups) that depend on a particular document tree + * structure are to be used. + *

Note: In cases where the document contains DOMCDATASections, + * the normalize operation alone may not be sufficient, since XPointers do + * not differentiate between DOMText + * nodes and DOMCDATASection + * nodes.

+ * + * @since DOM Level 2 + */ + virtual void normalize() = 0; + + /** + * Tests whether the DOM implementation implements a specific + * feature and that feature is supported by this node. + * + * @param feature The string of the feature to test. This is the same + * name as what can be passed to the method hasFeature on + * DOMImplementation. + * @param version This is the version number of the feature to test. In + * Level 2, version 1, this is the string "2.0". If the version is not + * specified, supporting any version of the feature will cause the + * method to return true. + * @return Returns true if the specified feature is supported + * on this node, false otherwise. + * @since DOM Level 2 + */ + virtual bool isSupported(const XMLCh *feature, + const XMLCh *version) const = 0; + + /** + * Get the namespace URI of + * this node, or null if it is unspecified. + *

+ * This is not a computed value that is the result of a namespace lookup + * based on an examination of the namespace declarations in scope. It is + * merely the namespace URI given at creation time. + *

+ * For nodes of any type other than ELEMENT_NODE and + * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, + * such as createElement from the DOMDocument + * interface, this is always null. + * + * @since DOM Level 2 + */ + virtual const XMLCh * getNamespaceURI() const = 0; + + /** + * Get the namespace prefix + * of this node, or null if it is unspecified. + * + * @since DOM Level 2 + */ + virtual const XMLCh * getPrefix() const = 0; + + /** + * Returns the local part of the qualified name of this node. + *

+ * For nodes created with a DOM Level 1 method, such as + * createElement from the DOMDocument interface, + * it is null. + * + * @since DOM Level 2 + */ + virtual const XMLCh * getLocalName() const = 0; + + /** + * Set the namespace prefix of this node. + *

+ * Note that setting this attribute, when permitted, changes + * the nodeName attribute, which holds the qualified + * name, as well as the tagName and name + * attributes of the DOMElement and DOMAttr + * interfaces, when applicable. + *

+ * Note also that changing the prefix of an + * attribute, that is known to have a default value, does not make a new + * attribute with the default value and the original prefix appear, since the + * namespaceURI and localName do not change. + * + * + * @param prefix The prefix of this node. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified prefix contains + * an illegal character. + *
+ * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + *
+ * NAMESPACE_ERR: Raised if the specified prefix is + * malformed, if the namespaceURI of this node is + * null, if the specified prefix is "xml" and the + * namespaceURI of this node is different from + * "http://www.w3.org/XML/1998/namespace", if this node is an attribute + * and the specified prefix is "xmlns" and the + * namespaceURI of this node is different from + * "http://www.w3.org/2000/xmlns/", or if this node is an attribute and + * the qualifiedName of this node is "xmlns". + * @since DOM Level 2 + */ + virtual void setPrefix(const XMLCh * prefix) = 0; + + /** + * Returns whether this node (if it is an element) has any attributes. + * @return true if this node has any attributes, + * false otherwise. + * @since DOM Level 2 + */ + virtual bool hasAttributes() const = 0; + //@} + + /** @name Functions introduced in DOM Level 3. */ + //@{ + /** + * Returns whether this node is the same node as the given one. + *
This method provides a way to determine whether two + * DOMNode references returned by the implementation reference + * the same object. When two DOMNode references are references + * to the same object, even if through a proxy, the references may be + * used completely interchangeably, such that all attributes have the + * same values and calling the same DOM method on either reference + * always has exactly the same effect. + * + * @param other The node to test against. + * @return Returns true if the nodes are the same, + * false otherwise. + * @since DOM Level 3 + */ + virtual bool isSameNode(const DOMNode* other) const = 0; + + /** + * Tests whether two nodes are equal. + *
This method tests for equality of nodes, not sameness (i.e., + * whether the two nodes are pointers to the same object) which can be + * tested with DOMNode::isSameNode. All nodes that are the same + * will also be equal, though the reverse may not be true. + *
Two nodes are equal if and only if the following conditions are + * satisfied: The two nodes are of the same type.The following string + * attributes are equal: nodeName, localName, + * namespaceURI, prefix, nodeValue + * , baseURI. This is: they are both null, or + * they have the same length and are character for character identical. + * The attributes DOMNamedNodeMaps are equal. + * This is: they are both null, or they have the same + * length and for each node that exists in one map there is a node that + * exists in the other map and is equal, although not necessarily at the + * same index.The childNodes DOMNodeLists are + * equal. This is: they are both null, or they have the + * same length and contain equal nodes at the same index. This is true + * for DOMAttr nodes as for any other type of node. Note that + * normalization can affect equality; to avoid this, nodes should be + * normalized before being compared. + *
For two DOMDocumentType nodes to be equal, the following + * conditions must also be satisfied: The following string attributes + * are equal: publicId, systemId, + * internalSubset.The entities + * DOMNamedNodeMaps are equal.The notations + * DOMNamedNodeMaps are equal. + *
On the other hand, the following do not affect equality: the + * ownerDocument attribute, the specified + * attribute for DOMAttr nodes, the + * isWhitespaceInElementContent attribute for + * DOMText nodes, as well as any user data or event listeners + * registered on the nodes. + * + * @param arg The node to compare equality with. + * @return If the nodes, and possibly subtrees are equal, + * true otherwise false. + * @since DOM Level 3 + */ + virtual bool isEqualNode(const DOMNode* arg) const = 0; + + + /** + * Associate an object to a key on this node. The object can later be + * retrieved from this node by calling getUserData with the + * same key. + * + * Deletion of the user data remains the responsibility of the + * application program; it will not be automatically deleted when + * the nodes themselves are reclaimed. + * + * Both the parameter data and the returned object are + * void pointer, it is applications' responsibility to keep track of + * their original type. Casting them to the wrong type may result + * unexpected behavior. + * + * @param key The key to associate the object to. + * @param data The object to associate to the given key, or + * null to remove any existing association to that key. + * @param handler The handler to associate to that key, or + * null. + * @return Returns the void* object previously associated to + * the given key on this node, or null if there was none. + * @see #getUserData + * + * @since DOM Level 3 + */ + virtual void* setUserData(const XMLCh* key, + void* data, + DOMUserDataHandler* handler) = 0; + + /** + * Retrieves the object associated to a key on a this node. The object + * must first have been set to this node by calling + * setUserData with the same key. + * + * @param key The key the object is associated to. + * @return Returns the void* associated to the given key + * on this node, or null if there was none. + * @see #setUserData + * @since DOM Level 3 + */ + virtual void* getUserData(const XMLCh* key) const = 0; + + + /** + * The absolute base URI of this node or null if undefined. + * This value is computed according to . However, when the + * DOMDocument supports the feature "HTML" , the base URI is + * computed using first the value of the href attribute of the HTML BASE + * element if any, and the value of the documentURI + * attribute from the DOMDocument interface otherwise. + * + *
When the node is an DOMElement, a DOMDocument + * or a a DOMProcessingInstruction, this attribute represents + * the properties [base URI] defined in . When the node is a + * DOMNotation, an DOMEntity, or an + * DOMEntityReference, this attribute represents the + * properties [declaration base URI]. + * @since DOM Level 3 + */ + virtual const XMLCh* getBaseURI() const = 0; + + /** + * Compares the reference node, i.e. the node on which this method is being called, + * with a node, i.e. the one passed as a parameter, with regard to their position + * in the document and according to the document order. + * + * @param other The node to compare against this node. + * @return Returns how the given node is positioned relatively to this + * node. + * @since DOM Level 3 + */ + virtual short compareDocumentPosition(const DOMNode* other) const = 0; + + /** + * WARNING: This method is known to be buggy and does + * not produce accurate results under a variety of conditions. + * + *
This attribute returns the text content of this node and its + * descendants. No serialization is performed, the returned string + * does not contain any markup. No whitespace normalization is + * performed and the returned string does not contain the white + * spaces in element content. + * + *
The string returned is made of the text content of this node + * depending on its type, as defined below: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Node typeContent
+ * ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, + * DOCUMENT_FRAGMENT_NODEconcatenation of the textContent + * attribute value of every child node, excluding COMMENT_NODE and + * PROCESSING_INSTRUCTION_NODE nodes
ATTRIBUTE_NODE, TEXT_NODE, + * CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE + * nodeValue
DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE + * null
+ * @exception DOMException + * DOMSTRING_SIZE_ERR: Raised when it would return more characters than + * fit in a DOMString variable on the implementation + * platform. + * @see #setTextContent + * @since DOM Level 3 + */ + virtual const XMLCh* getTextContent() const = 0; + + /** + * This attribute removes any possible children this node may have and, if the + * new string is not empty or null, replaced by a single DOMText + * node containing the string this attribute is set to. No parsing is + * performed, the input string is taken as pure textual content. + * + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. + * @see #getTextContent + * @since DOM Level 3 + */ + virtual void setTextContent(const XMLCh* textContent) = 0; + + /** + * Look up the prefix associated to the given namespace URI, starting from this node. + * The default namespace declarations are ignored by this method. + * + * @param namespaceURI The namespace URI to look for. + * @return Returns an associated namespace prefix if found, + * null if none is found. If more + * than one prefix are associated to the namespace prefix, the + * returned namespace prefix is implementation dependent. + * @since DOM Level 3 + */ + virtual const XMLCh* lookupPrefix(const XMLCh* namespaceURI) const = 0; + + /** + * This method checks if the specified namespaceURI is the + * default namespace or not. + * + * @param namespaceURI The namespace URI to look for. + * @return true if the specified namespaceURI + * is the default namespace, false otherwise. + * @since DOM Level 3 + */ + virtual bool isDefaultNamespace(const XMLCh* namespaceURI) const = 0; + + /** + * Look up the namespace URI associated to the given prefix, starting from + * this node. + * + * @param prefix The prefix to look for. If this parameter is + * null, the method will return the default namespace URI + * if any. + * @return Returns the associated namespace URI or null if + * none is found. + * @since DOM Level 3 + */ + virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const = 0; + + /** + * This method makes available a DOMNode's specialized interface + * + * @param feature The name of the feature requested (case-insensitive). + * @param version The version of the feature requested. + * @return Returns an alternate DOMNode which implements the + * specialized APIs of the specified feature, if any, or + * null if there is no alternate DOMNode which + * implements interfaces associated with that feature. Any alternate + * DOMNode returned by this method must delegate to the + * primary core DOMNode and not return results inconsistent + * with the primary core DOMNode such as key, + * attributes, childNodes, etc. + * @since DOM Level 3 + */ + virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this Node (and its associated children) is no longer in use + * and that the implementation may relinquish any resources associated with it and + * its associated children. + * + * If this is a document, any nodes it owns (created by DOMDocument::createXXXX()) + * are also released. + * + * Access to a released object will lead to unexpected result. + * + * @exception DOMException + * INVALID_ACCESS_ERR: Raised if this Node has a parent and thus should not be released yet. + */ + virtual void release() = 0; + //@} +#if defined(XML_DOMREFCOUNT_EXPERIMENTAL) + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * This is custom function which can be implemented by classes deriving + * from DOMNode for implementing reference counting on DOMNodes. Any + * implementation which has memory management model which involves + * disposing of nodes immediately after being used can override this + * function to do that job. + */ + virtual void decRefCount() {} + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * This is custom function which can be implemented by classes deriving + * from DOMNode for implementing reference counting on DOMNodes. + */ + virtual void incRefCount() {} + //@} +#endif +}; + +/*** + * Utilities macros for getting memory manager within DOM +***/ +#define GET_OWNER_DOCUMENT(ptr) \ + ((DOMDocumentImpl*)(ptr->getOwnerDocument())) + +#define GET_DIRECT_MM(ptr) \ + (ptr ? ((DOMDocumentImpl*)ptr)->getMemoryManager() : XMLPlatformUtils::fgMemoryManager) + +#define GET_INDIRECT_MM(ptr) \ + (!ptr ? XMLPlatformUtils::fgMemoryManager : \ + GET_OWNER_DOCUMENT(ptr) ? GET_OWNER_DOCUMENT(ptr)->getMemoryManager() : \ + XMLPlatformUtils::fgMemoryManager) + +/*** + * For DOMNode and its derivatives +***/ +#define GetDOMNodeMemoryManager GET_INDIRECT_MM(this) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNodeFilter.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNodeFilter.hpp new file mode 100644 index 000000000000..0373affef371 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNodeFilter.hpp @@ -0,0 +1,221 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODEFILTER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODEFILTER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * Filters are objects that know how to "filter out" nodes. If a + * DOMNodeIterator or DOMTreeWalker is given a + * DOMNodeFilter, it applies the filter before it returns the next + * node. If the filter says to accept the node, the traversal logic returns + * it; otherwise, traversal looks for the next node and pretends that the + * node that was rejected was not there. + *

The DOM does not provide any filters. DOMNodeFilter is just an + * interface that users can implement to provide their own filters. + *

DOMNodeFilters do not need to know how to traverse from node + * to node, nor do they need to know anything about the data structure that + * is being traversed. This makes it very easy to write filters, since the + * only thing they have to know how to do is evaluate a single node. One + * filter may be used with a number of different kinds of traversals, + * encouraging code reuse. + *

See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. + * @since DOM Level 2 + */ + +class CDOM_EXPORT DOMNodeFilter +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMNodeFilter() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMNodeFilter(const DOMNodeFilter &); + DOMNodeFilter & operator = (const DOMNodeFilter &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMNodeFilter() {}; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * Constants returned by acceptNode. + * + *

FILTER_ACCEPT: + * Accept the node. Navigation methods defined for + * DOMNodeIterator or DOMTreeWalker will return this + * node.

+ * + *

FILTER_REJECT: + * Reject the node. Navigation methods defined for + * DOMNodeIterator or DOMTreeWalker will not return + * this node. For DOMTreeWalker, the children of this node + * will also be rejected. DOMNodeIterators treat this as a + * synonym for FILTER_SKIP.

+ * + *

FILTER_SKIP: + * Skip this single node. Navigation methods defined for + * DOMNodeIterator or DOMTreeWalker will not return + * this node. For both DOMNodeIterator and + * DOMTreeWalker, the children of this node will still be + * considered.

+ * + * @since DOM Level 2 + */ + enum FilterAction {FILTER_ACCEPT = 1, + FILTER_REJECT = 2, + FILTER_SKIP = 3}; + + /** + * Constants for whatToShow + * + *

SHOW_ALL: + * Show all DOMNode(s).

+ * + *

SHOW_ELEMENT: + * Show DOMElement nodes.

+ * + *

SHOW_ATTRIBUTE: + * Show DOMAttr nodes. This is meaningful only when creating an + * DOMNodeIterator or DOMTreeWalker with an + * attribute node as its root; in this case, it means that + * the attribute node will appear in the first position of the iteration + * or traversal. Since attributes are never children of other nodes, + * they do not appear when traversing over the document tree.

+ * + *

SHOW_TEXT: + * Show DOMText nodes.

+ * + *

SHOW_CDATA_SECTION: + * Show DOMCDATASection nodes.

+ * + *

SHOW_ENTITY_REFERENCE: + * Show DOMEntityReference nodes.

+ * + *

SHOW_ENTITY: + * Show DOMEntity nodes. This is meaningful only when creating + * an DOMNodeIterator or DOMTreeWalker with an + * DOMEntity node as its root; in this case, it + * means that the DOMEntity node will appear in the first + * position of the traversal. Since entities are not part of the + * document tree, they do not appear when traversing over the document + * tree.

+ * + *

SHOW_PROCESSING_INSTRUCTION: + * Show DOMProcessingInstruction nodes.

+ * + *

SHOW_COMMENT: + * Show DOMComment nodes.

+ * + *

SHOW_DOCUMENT: + * Show DOMDocument nodes.

+ * + *

SHOW_DOCUMENT_TYPE: + * Show DOMDocumentType nodes.

+ * + *

SHOW_DOCUMENT_FRAGMENT: + * Show DOMDocumentFragment nodes.

+ * + *

SHOW_NOTATION: + * Show DOMNotation nodes. This is meaningful only when creating + * an DOMNodeIterator or DOMTreeWalker with a + * DOMNotation node as its root; in this case, it + * means that the DOMNotation node will appear in the first + * position of the traversal. Since notations are not part of the + * document tree, they do not appear when traversing over the document + * tree.

+ * + * @since DOM Level 2 + */ + enum ShowTypeMasks { + SHOW_ALL = 0x0000FFFF, + SHOW_ELEMENT = 0x00000001, + SHOW_ATTRIBUTE = 0x00000002, + SHOW_TEXT = 0x00000004, + SHOW_CDATA_SECTION = 0x00000008, + SHOW_ENTITY_REFERENCE = 0x00000010, + SHOW_ENTITY = 0x00000020, + SHOW_PROCESSING_INSTRUCTION = 0x00000040, + SHOW_COMMENT = 0x00000080, + SHOW_DOCUMENT = 0x00000100, + SHOW_DOCUMENT_TYPE = 0x00000200, + SHOW_DOCUMENT_FRAGMENT = 0x00000400, + SHOW_NOTATION = 0x00000800 + }; + + typedef unsigned long ShowType; + + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMNodeFilter interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 2 */ + //@{ + /** + * Test whether a specified node is visible in the logical view of a + * DOMTreeWalker or DOMNodeIterator. This function + * will be called by the implementation of DOMTreeWalker and + * DOMNodeIterator; it is not normally called directly from + * user code. (Though you could do so if you wanted to use the same + * filter to guide your own application logic.) + * @param node The node to check to see if it passes the filter or not. + * @return A constant to determine whether the node is accepted, + * rejected, or skipped, as defined above. + * @since DOM Level 2 + */ + virtual FilterAction acceptNode (const DOMNode* node) const =0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNodeIterator.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNodeIterator.hpp new file mode 100644 index 000000000000..cc08e72366bd --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNodeIterator.hpp @@ -0,0 +1,196 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODEITERATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODEITERATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * DOMNodeIterators are used to step through a set of nodes, e.g. + * the set of nodes in a DOMNodeList, the document subtree + * governed by a particular DOMNode, the results of a query, or + * any other set of nodes. The set of nodes to be iterated is determined by + * the implementation of the DOMNodeIterator. DOM Level 2 + * specifies a single DOMNodeIterator implementation for + * document-order traversal of a document subtree. Instances of these + * DOMNodeIterators are created by calling + * DOMDocumentTraversal.createNodeIterator(). + *

See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. + * @since DOM Level 2 + */ +class CDOM_EXPORT DOMNodeIterator +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMNodeIterator() {} + DOMNodeIterator(const DOMNodeIterator &) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMNodeIterator & operator = (const DOMNodeIterator &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMNodeIterator() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMNodeFilter interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 2 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * The root node of the DOMNodeIterator, as specified + * when it was created. + * @since DOM Level 2 + */ + virtual DOMNode* getRoot() = 0; + /** + * Return which node types are presented via the iterator. + * This attribute determines which node types are presented via the + * DOMNodeIterator. The available set of constants is defined + * in the DOMNodeFilter interface. Nodes not accepted by + * whatToShow will be skipped, but their children may still + * be considered. Note that this skip takes precedence over the filter, + * if any. + * @since DOM Level 2 + * + */ + virtual DOMNodeFilter::ShowType getWhatToShow() = 0; + + /** + * The DOMNodeFilter used to screen nodes. + * + * @since DOM Level 2 + */ + virtual DOMNodeFilter* getFilter() = 0; + + /** + * Return the expandEntityReferences flag. + * The value of this flag determines whether the children of entity + * reference nodes are visible to the DOMNodeIterator. If + * false, these children and their descendants will be rejected. Note + * that this rejection takes precedence over whatToShow and + * the filter. Also note that this is currently the only situation where + * DOMNodeIterators may reject a complete subtree rather than + * skipping individual nodes. + *
+ *
To produce a view of the document that has entity references + * expanded and does not expose the entity reference node itself, use + * the whatToShow flags to hide the entity reference node + * and set expandEntityReferences to true when creating the + * DOMNodeIterator. To produce a view of the document that has + * entity reference nodes but no entity expansion, use the + * whatToShow flags to show the entity reference node and + * set expandEntityReferences to false. + * + * @since DOM Level 2 + */ + virtual bool getExpandEntityReferences() = 0; + + // ----------------------------------------------------------------------- + // Query methods + // ----------------------------------------------------------------------- + /** + * Returns the next node in the set and advances the position of the + * DOMNodeIterator in the set. After a + * DOMNodeIterator is created, the first call to + * nextNode() returns the first node in the set. + * @return The next DOMNode in the set being iterated over, or + * null if there are no more members in that set. + * @exception DOMException + * INVALID_STATE_ERR: Raised if this method is called after the + * detach method was invoked. + * @since DOM Level 2 + */ + virtual DOMNode* nextNode() = 0; + + /** + * Returns the previous node in the set and moves the position of the + * DOMNodeIterator backwards in the set. + * @return The previous DOMNode in the set being iterated over, + * or null if there are no more members in that set. + * @exception DOMException + * INVALID_STATE_ERR: Raised if this method is called after the + * detach method was invoked. + * @since DOM Level 2 + */ + virtual DOMNode* previousNode() = 0; + + /** + * Detaches the DOMNodeIterator from the set which it iterated + * over, releasing any computational resources and placing the + * DOMNodeIterator in the INVALID state. After + * detach has been invoked, calls to nextNode + * or previousNode will raise the exception + * INVALID_STATE_ERR. + * @since DOM Level 2 + */ + virtual void detach() = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this NodeIterator is no longer in use + * and that the implementation may relinquish any resources associated with it. + * (release() will call detach() where appropriate) + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} +}; + +#define GetDOMNodeIteratorMemoryManager GET_DIRECT_MM(fDocument) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNodeList.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNodeList.hpp new file mode 100644 index 000000000000..52249cfcb128 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNodeList.hpp @@ -0,0 +1,112 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODELIST_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODELIST_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNode; + + +/** + * The DOMNodeList interface provides the abstraction of an ordered + * collection of nodes. DOMNodeLists are created by DOMDocument::getElementsByTagName(), + * DOMNode::getChildNodes(), + * + *

The items in the DOMNodeList are accessible via an integral + * index, starting from 0. + * + * DOMNodeLists are "live", in that any changes to the document tree are immediately + * reflected in any DOMNodeLists that may have been created for that tree. + */ + +class CDOM_EXPORT DOMNodeList { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMNodeList() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMNodeList(const DOMNodeList &); + DOMNodeList & operator = (const DOMNodeList &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMNodeList() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMNodeList interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the index item in the collection. + * + * If index is greater than or equal to the number of nodes in + * the list, this returns null. + * + * @param index Index into the collection. + * @return The node at the indexth position in the + * DOMNodeList, or null if that is not a valid + * index. + * @since DOM Level 1 + */ + virtual DOMNode *item(XMLSize_t index) const = 0; + + /** + * Returns the number of nodes in the list. + * + * The range of valid child node indices is 0 to length-1 inclusive. + * @since DOM Level 1 + */ + virtual XMLSize_t getLength() const = 0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNotation.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNotation.hpp new file mode 100644 index 000000000000..26811b39ac4f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMNotation.hpp @@ -0,0 +1,114 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNOTATION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNOTATION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * This interface represents a notation declared in the DTD. A notation either + * declares, by name, the format of an unparsed entity (see section 4.7 of + * the XML 1.0 specification), or is used for formal declaration of + * Processing Instruction targets (see section 2.6 of the XML 1.0 + * specification). The nodeName attribute inherited from + * DOMNode is set to the declared name of the notation. + *

The DOM Level 1 does not support editing DOMNotation nodes; + * they are therefore readonly. + *

A DOMNotation node does not have any parent. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMNotation: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMNotation() {} + DOMNotation(const DOMNotation &other) : DOMNode(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMNotation & operator = (const DOMNotation &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMNotation() {}; + //@} + + + // ----------------------------------------------------------------------- + // Virtual DOMNotation interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Get the public identifier of this notation. + * + * If the public identifier was not + * specified, this is null. + * @return Returns the public identifier of the notation + * @since DOM Level 1 + */ + virtual const XMLCh *getPublicId() const = 0; + + /** + * Get the system identifier of this notation. + * + * If the system identifier was not + * specified, this is null. + * @return Returns the system identifier of the notation + * @since DOM Level 1 + */ + virtual const XMLCh *getSystemId() const = 0; + + + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMPSVITypeInfo.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMPSVITypeInfo.hpp new file mode 100644 index 000000000000..8ccd1fbe8e60 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMPSVITypeInfo.hpp @@ -0,0 +1,118 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMPSVITYPEINFO_HPP) +#define XERCESC_INCLUDE_GUARD_DOMPSVITYPEINFO_HPP + +//------------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------------ +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * The DOMPSVITypeInfo interface represent the PSVI info used by + * DOMElement or DOMAttr nodes, specified in the + * schemas associated with the document. + */ +class CDOM_EXPORT DOMPSVITypeInfo +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMPSVITypeInfo() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMPSVITypeInfo(const DOMPSVITypeInfo &); + DOMPSVITypeInfo & operator = (const DOMPSVITypeInfo &); + //@} + +public: + + enum PSVIProperty + { + PSVI_Validity + , PSVI_Validation_Attempted + , PSVI_Type_Definition_Type + , PSVI_Type_Definition_Name + , PSVI_Type_Definition_Namespace + , PSVI_Type_Definition_Anonymous + , PSVI_Nil + , PSVI_Member_Type_Definition_Name + , PSVI_Member_Type_Definition_Namespace + , PSVI_Member_Type_Definition_Anonymous + , PSVI_Schema_Default + , PSVI_Schema_Normalized_Value + , PSVI_Schema_Specified + }; + + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMPSVITypeInfo() {}; + //@} + + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the string value of the specified PSVI property associated to a + * DOMElement or DOMAttr, or null if not available. + * + * + * @return the string value of the specified PSVI property associated to a + * DOMElement or DOMAttr, or null if not available. + */ + virtual const XMLCh* getStringProperty(PSVIProperty prop) const = 0; + + /** + * Returns the numeric value of the specified PSVI property associated to a + * DOMElement or DOMAttr, or null if not available. + * + * + * @return the numeric value of the specified PSVI property associated to a + * DOMElement or DOMAttr, or null if not available. + */ + virtual int getNumericProperty(PSVIProperty prop) const = 0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DOMPSVITypeInfo.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMProcessingInstruction.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMProcessingInstruction.hpp new file mode 100644 index 000000000000..fe89606d9143 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMProcessingInstruction.hpp @@ -0,0 +1,121 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMPROCESSINGINSTRUCTION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMPROCESSINGINSTRUCTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * The DOMProcessingInstruction interface represents a "processing + * instruction", used in XML as a way to keep processor-specific information + * in the text of the document. + * + * @since DOM Level 1 + */ +class CDOM_EXPORT DOMProcessingInstruction: public DOMNode { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMProcessingInstruction() {} + DOMProcessingInstruction(const DOMProcessingInstruction &other) : DOMNode(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMProcessingInstruction & operator = (const DOMProcessingInstruction &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMProcessingInstruction() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMProcessingInstruction interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * The target of this processing instruction. + * + * XML defines this as being the + * first token following the markup that begins the processing instruction. + * + * @since DOM Level 1 + */ + virtual const XMLCh * getTarget() const = 0; + + /** + * The content of this processing instruction. + * + * This is from the first non + * white space character after the target to the character immediately + * preceding the ?>. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. + * @since DOM Level 1 + */ + virtual const XMLCh * getData() const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Sets the content of this processing instruction. + * + * This is from the first non + * white space character after the target to the character immediately + * preceding the ?>. + * @param data The string containing the processing instruction + * @since DOM Level 1 + */ + virtual void setData(const XMLCh * data) = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMRange.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMRange.hpp new file mode 100644 index 000000000000..3aec0de9397f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMRange.hpp @@ -0,0 +1,530 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMRANGE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMRANGE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMNode; +class DOMDocumentFragment; + +/** + *

See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. + * @since DOM Level 2 + */ +class CDOM_EXPORT DOMRange { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMRange() {} + DOMRange(const DOMRange &) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMRange & operator = (const DOMRange &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMRange() {}; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * Constants CompareHow. + * + *

START_TO_START: + * Compare start boundary-point of sourceRange to start + * boundary-point of Range on which compareBoundaryPoints + * is invoked.

+ * + *

START_TO_END: + * Compare start boundary-point of sourceRange to end + * boundary-point of Range on which compareBoundaryPoints + * is invoked.

+ * + *

END_TO_END: + * Compare end boundary-point of sourceRange to end + * boundary-point of Range on which compareBoundaryPoints + * is invoked.

+ * + *

END_TO_START: + * Compare end boundary-point of sourceRange to start + * boundary-point of Range on which compareBoundaryPoints + * is invoked.

+ * + * @since DOM Level 2 + */ + enum CompareHow { + START_TO_START = 0, + START_TO_END = 1, + END_TO_END = 2, + END_TO_START = 3 + }; + + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMRange interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 2 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * DOMNode within which the Range begins + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual DOMNode* getStartContainer() const = 0; + + /** + * Offset within the starting node of the Range. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual XMLSize_t getStartOffset() const = 0; + + /** + * DOMNode within which the Range ends + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual DOMNode* getEndContainer() const = 0; + + /** + * Offset within the ending node of the Range. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual XMLSize_t getEndOffset() const = 0; + + /** + * TRUE if the Range is collapsed + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual bool getCollapsed() const = 0; + + /** + * The deepest common ancestor container of the Range's two + * boundary-points. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual const DOMNode* getCommonAncestorContainer() const = 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * Sets the attributes describing the start of the Range. + * @param refNode The refNode value. This parameter must be + * different from null. + * @param offset The startOffset value. + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if refNode or an ancestor + * of refNode is an DOMEntity, DOMNotation, or DOMDocumentType + * node. + * @exception DOMException + * INDEX_SIZE_ERR: Raised if offset is negative or greater + * than the number of child units in refNode. Child units + * are 16-bit units if refNode is a type of DOMCharacterData + * node (e.g., a DOMText or DOMComment node) or a DOMProcessingInstruction + * node. Child units are Nodes in all other cases. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void setStart(const DOMNode *refNode, XMLSize_t offset) = 0; + + /** + * Sets the attributes describing the end of a Range. + * @param refNode The refNode value. This parameter must be + * different from null. + * @param offset The endOffset value. + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if refNode or an ancestor + * of refNode is an DOMEntity, DOMNotation, or DOMDocumentType + * node. + * @exception DOMException + * INDEX_SIZE_ERR: Raised if offset is negative or greater + * than the number of child units in refNode. Child units + * are 16-bit units if refNode is a type of DOMCharacterData + * node (e.g., a DOMText or DOMComment node) or a DOMProcessingInstruction + * node. Child units are Nodes in all other cases. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void setEnd(const DOMNode *refNode, XMLSize_t offset) = 0; + + /** + * Sets the start position to be before a node + * @param refNode Range starts before refNode + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if the root container of + * refNode is not an DOMAttr, DOMDocument, or DOMDocumentFragment + * node or if refNode is a DOMDocument, DOMDocumentFragment, + * DOMAttr, DOMEntity, or DOMNotation node. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void setStartBefore(const DOMNode *refNode) = 0; + + /** + * Sets the start position to be after a node + * @param refNode Range starts after refNode + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if the root container of + * refNode is not an DOMAttr, DOMDocument, or DOMDocumentFragment + * node or if refNode is a DOMDocument, DOMDocumentFragment, + * DOMAttr, DOMEntity, or DOMNotation node. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void setStartAfter(const DOMNode *refNode) = 0; + + /** + * Sets the end position to be before a node. + * @param refNode Range ends before refNode + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if the root container of + * refNode is not an DOMAttr, DOMDocument, or DOMDocumentFragment + * node or if refNode is a DOMDocument, DOMDocumentFragment, + * DOMAttr, DOMEntity, or DOMNotation node. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void setEndBefore(const DOMNode *refNode) = 0; + + /** + * Sets the end of a Range to be after a node + * @param refNode Range ends after refNode. + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if the root container of + * refNode is not a DOMAttr, DOMDocument or DOMDocumentFragment + * node or if refNode is a DOMDocument, DOMDocumentFragment, + * DOMAttr, DOMEntity, or DOMNotation node. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void setEndAfter(const DOMNode *refNode) = 0; + + // ----------------------------------------------------------------------- + // Misc methods + // ----------------------------------------------------------------------- + /** + * Collapse a Range onto one of its boundary-points + * @param toStart If TRUE, collapses the Range onto its start; if FALSE, + * collapses it onto its end. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual void collapse(bool toStart) = 0; + + /** + * Select a node and its contents + * @param refNode The node to select. + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if an ancestor of refNode + * is an DOMEntity, DOMNotation or DOMDocumentType node or if + * refNode is a DOMDocument, DOMDocumentFragment, DOMAttr, DOMEntity, + * or DOMNotation node. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void selectNode(const DOMNode *refNode) = 0; + + /** + * Select the contents within a node + * @param refNode DOMNode to select from + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if refNode or an ancestor + * of refNode is an DOMEntity, DOMNotation or DOMDocumentType node. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + *
WRONG_DOCUMENT_ERR: Raised if refNode was created + * from a different document than the one that created this range. + * + * @since DOM Level 2 + */ + virtual void selectNodeContents(const DOMNode *refNode) = 0; + + /** + * Compare the boundary-points of two Ranges in a document. + * @param how A code representing the type of comparison, as defined + * above. + * @param sourceRange The Range on which this current + * Range is compared to. + * @return -1, 0 or 1 depending on whether the corresponding + * boundary-point of the Range is respectively before, equal to, or + * after the corresponding boundary-point of sourceRange. + * @exception DOMException + * WRONG_DOCUMENT_ERR: Raised if the two Ranges are not in the same + * DOMDocument or DOMDocumentFragment. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + * + * @since DOM Level 2 + */ + virtual short compareBoundaryPoints(CompareHow how, const DOMRange* sourceRange) const = 0; + + /** + * Removes the contents of a Range from the containing document or + * document fragment without returning a reference to the removed + * content. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of + * the Range is read-only or any of the nodes that contain any of the + * content of the Range are read-only. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + * + * @since DOM Level 2 + */ + virtual void deleteContents() = 0; + + /** + * Moves the contents of a Range from the containing document or document + * fragment to a new DOMDocumentFragment. + * @return A DOMDocumentFragment containing the extracted contents. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of + * the Range is read-only or any of the nodes which contain any of the + * content of the Range are read-only. + *
HIERARCHY_REQUEST_ERR: Raised if a DOMDocumentType node would be + * extracted into the new DOMDocumentFragment. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + * + * @since DOM Level 2 + */ + virtual DOMDocumentFragment* extractContents() = 0; + + /** + * Duplicates the contents of a Range + * @return A DOMDocumentFragment that contains content equivalent to this + * Range. + * @exception DOMException + * HIERARCHY_REQUEST_ERR: Raised if a DOMDocumentType node would be + * extracted into the new DOMDocumentFragment. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + * + * @since DOM Level 2 + */ + virtual DOMDocumentFragment* cloneContents() const = 0; + + /** + * Inserts a node into the DOMDocument or DOMDocumentFragment at the start of + * the Range. If the container is a DOMText node, this will be split at the + * start of the Range (as if the DOMText node's splitText method was + * performed at the insertion point) and the insertion will occur + * between the two resulting DOMText nodes. Adjacent DOMText nodes will not be + * automatically merged. If the node to be inserted is a + * DOMDocumentFragment node, the children will be inserted rather than the + * DOMDocumentFragment node itself. + * @param newNode The node to insert at the start of the Range + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of the + * start of the Range is read-only. + *
WRONG_DOCUMENT_ERR: Raised if newNode and the + * container of the start of the Range were not created from the same + * document. + *
HIERARCHY_REQUEST_ERR: Raised if the container of the start of + * the Range is of a type that does not allow children of the type of + * newNode or if newNode is an ancestor of + * the container. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + * @exception DOMRangeException + * INVALID_NODE_TYPE_ERR: Raised if newNode is an DOMAttr, + * DOMEntity, DOMNotation, or DOMDocument node. + * + * @since DOM Level 2 + */ + virtual void insertNode(DOMNode *newNode) = 0; + + /** + * Reparents the contents of the Range to the given node and inserts the + * node at the position of the start of the Range. + * @param newParent The node to surround the contents with. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of + * either boundary-point of the Range is read-only. + *
WRONG_DOCUMENT_ERR: Raised if newParent and the + * container of the start of the Range were not created from the same + * document. + *
HIERARCHY_REQUEST_ERR: Raised if the container of the start of + * the Range is of a type that does not allow children of the type of + * newParent or if newParent is an ancestor + * of the container or if node would end up with a child + * node of a type not allowed by the type of node. + *
INVALID_STATE_ERR: Raised if detach() has already + * been invoked on this object. + * @exception DOMRangeException + * BAD_BOUNDARYPOINTS_ERR: Raised if the Range partially selects a + * non-text node. + *
INVALID_NODE_TYPE_ERR: Raised if node is an DOMAttr, + * DOMEntity, DOMDocumentType, DOMNotation, DOMDocument, or DOMDocumentFragment node. + * + * @since DOM Level 2 + */ + virtual void surroundContents(DOMNode *newParent) = 0; + + /** + * Produces a new Range whose boundary-points are equal to the + * boundary-points of the Range. + * @return The duplicated Range. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual DOMRange* cloneRange() const = 0; + + /** + * Returns the contents of a Range as a string. This string contains only + * the data characters, not any markup. + * @return The contents of the Range. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual const XMLCh* toString() const = 0; + + /** + * Called to indicate that the Range is no longer in use and that the + * implementation may relinquish any resources associated with this + * Range. Subsequent calls to any methods or attribute getters on this + * Range will result in a DOMException being thrown with an + * error code of INVALID_STATE_ERR. + * @exception DOMException + * INVALID_STATE_ERR: Raised if detach() has already been + * invoked on this object. + * + * @since DOM Level 2 + */ + virtual void detach() = 0; + + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this Range is no longer in use + * and that the implementation may relinquish any resources associated with it. + * (release() will call detach() where appropriate) + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMRangeException.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMRangeException.hpp new file mode 100644 index 000000000000..34eb34241901 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMRangeException.hpp @@ -0,0 +1,114 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMRANGEEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMRANGEEXCEPTION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Range operations may throw a DOMRangeException as specified in + * their method descriptions. + *

See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. + * @since DOM Level 2 + */ + +class CDOM_EXPORT DOMRangeException : public DOMException { +public: + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * Enumerators for DOM Range Exceptions + * + *

BAD_BOUNDARYPOINTS_ERR: + * If the boundary-points of a Range do not meet specific requirements.

+ * + *

INVALID_NODE_TYPE_ERR: + * If the container of an boundary-point of a Range is being set to either + * a node of an invalid type or a node with an ancestor of an invalid + * type.

+ * + * @since DOM Level 2 + */ + enum RangeExceptionCode { + BAD_BOUNDARYPOINTS_ERR = 111, + INVALID_NODE_TYPE_ERR = 112 + }; + //@} + +public: + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + /** + * Default constructor for DOMRangeException. + * + */ + DOMRangeException(); + + /** + * Constructor which takes an error code and a message. + * + * @param code The error code which indicates the exception + * @param messageCode The string containing the error message + * @param memoryManager The memory manager used to (de)allocate memory + */ + DOMRangeException(short code, + short messageCode, + MemoryManager* const memoryManager); + + /** + * Copy constructor. + * + * @param other The object to be copied. + */ + DOMRangeException(const DOMRangeException &other); + //@} + + // ----------------------------------------------------------------------- + // Destructors + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + /** + * Destructor for DOMRangeException. + * + */ + virtual ~DOMRangeException(); + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMRangeException & operator = (const DOMRangeException &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMStringList.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMStringList.hpp new file mode 100644 index 000000000000..c0ac42169df4 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMStringList.hpp @@ -0,0 +1,131 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMSTRINGLIST_HPP) +#define XERCESC_INCLUDE_GUARD_DOMSTRINGLIST_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * The DOMStringList interface provides the abstraction of an ordered + * collection of strings, without defining or constraining how this collection + * is implemented. The items in the DOMStringList are accessible via + * an integral index, starting from 0. + */ + +class CDOM_EXPORT DOMStringList { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMStringList() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMStringList(const DOMStringList &); + DOMStringList & operator = (const DOMStringList &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMStringList() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMStringList interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns the index item in the collection. + * + * If index is greater than or equal to the number of strings in + * the list, this returns null. + * + * @param index Index into the collection. + * @return The string at the indexth position in the + * DOMStringList, or null if that is not a valid + * index. + * @since DOM Level 3 + */ + virtual const XMLCh *item(XMLSize_t index) const = 0; + + /** + * Returns the number of strings in the list. + * + * The range of valid child node indices is 0 to length-1 inclusive. + * + * @since DOM Level 3 + */ + virtual XMLSize_t getLength() const = 0; + + /** + * Test if a string is part of this DOMStringList + * + * @return true if the string has been found, false otherwise. + * + * @since DOM Level 3 + */ + virtual bool contains(const XMLCh*) const = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this list is no longer in use + * and that the implementation may relinquish any resources associated with it and + * its associated children. + * + * Access to a released object will lead to unexpected result. + * + */ + virtual void release() = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMText.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMText.hpp new file mode 100644 index 000000000000..ab5a0b18067a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMText.hpp @@ -0,0 +1,182 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMTEXT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMTEXT_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * The DOMText interface inherits from DOMCharacterData + * and represents the textual content (termed character data in XML) of an + * DOMElement or DOMAttr. If there is no markup inside + * an element's content, the text is contained in a single object + * implementing the DOMText interface that is the only child of + * the element. If there is markup, it is parsed into the information items + * (elements, comments, etc.) and DOMText nodes that form the list + * of children of the element. + *

When a document is first made available via the DOM, there is only one + * DOMText node for each block of text. Users may create adjacent + * DOMText nodes that represent the contents of a given element + * without any intervening markup, but should be aware that there is no way + * to represent the separations between these nodes in XML or HTML, so they + * will not (in general) persist between DOM editing sessions. The + * normalize() method on DOMNode merges any such + * adjacent DOMText objects into a single node for each block of + * text. + *

See also the Document Object Model (DOM) Level 2 Core Specification. + */ +class CDOM_EXPORT DOMText: public DOMCharacterData { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMText() {} + DOMText(const DOMText &other) : DOMCharacterData(other) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + DOMText & operator = (const DOMText &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMText() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMText interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 1 */ + //@{ + /** + * Breaks this node into two nodes at the specified offset, + * keeping both in the tree as siblings. After being split, this node + * will contain all the content up to the offset point. A + * new node of the same type, which contains all the content at and + * after the offset point, is returned. If the original + * node had a parent node, the new node is inserted as the next sibling + * of the original node. When the offset is equal to the + * length of this node, the new node has no data. + * @param offset The 16-bit unit offset at which to split, starting from + * 0. + * @return The new node, of the same type as this node. + * @exception DOMException + * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater + * than the number of 16-bit units in data. + *
NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. + * @since DOM Level 1 + */ + virtual DOMText *splitText(XMLSize_t offset) = 0; + //@} + + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * Returns whether this text node contains element content whitespace, + * often abusively called "ignorable whitespace". The text node is determined + * to contain whitespace in element content during the load of the document + * or if validation occurs while using DOMDocument::normalizeDocument(). + * + * @since DOM Level 3 + */ + virtual bool getIsElementContentWhitespace() const = 0; + + /** + * Returns all text of DOMText nodes logically-adjacent text + * nodes to this node, concatenated in document order. + * + * @since DOM Level 3 + */ + virtual const XMLCh* getWholeText() const = 0; + + /** + * Substitutes the a specified text for the text of the current node and + * all logically-adjacent text nodes. + * + *
This method returns the node in the hierarchy which received the + * replacement text, which is null if the text was empty or is the + * current node if the current node is not read-only or otherwise is a + * new node of the same type as the current node inserted at the site of + * the replacement. All logically-adjacent text nodes are removed + * including the current node unless it was the recipient of the + * replacement text. + *
Where the nodes to be removed are read-only descendants of an + * DOMEntityReference, the DOMEntityReference must + * be removed instead of the read-only nodes. If any + * DOMEntityReference to be removed has descendants that are + * not DOMEntityReference, DOMText, or + * DOMCDATASection nodes, the replaceWholeText + * method must fail before performing any modification of the document, + * raising a DOMException with the code + * NO_MODIFICATION_ALLOWED_ERR. + * + * @param content The content of the replacing DOMText node. + * @return The DOMText node created with the specified content. + * @exception DOMException + * NO_MODIFICATION_ALLOWED_ERR: Raised if one of the DOMText + * nodes being replaced is readonly. + * @since DOM Level 3 + */ + virtual DOMText* replaceWholeText(const XMLCh* content) = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard extension + // ----------------------------------------------------------------------- + /** @name Non-standard extension */ + //@{ + /** + * Non-standard extension + * + * Return true if this node contains ignorable whitespaces only. + * @return True if this node contains ignorable whitespaces only. + */ + virtual bool isIgnorableWhitespace() const = 0; + //@} + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMTreeWalker.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMTreeWalker.hpp new file mode 100644 index 000000000000..bd8ce4bb776b --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMTreeWalker.hpp @@ -0,0 +1,276 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMTREEWALKER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMTREEWALKER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * DOMTreeWalker objects are used to navigate a document tree or + * subtree using the view of the document defined by their + * whatToShow flags and filter (if any). Any function which + * performs navigation using a DOMTreeWalker will automatically + * support any view defined by a DOMTreeWalker. + *

Omitting nodes from the logical view of a subtree can result in a + * structure that is substantially different from the same subtree in the + * complete, unfiltered document. Nodes that are siblings in the + * DOMTreeWalker view may be children of different, widely + * separated nodes in the original view. For instance, consider a + * DOMNodeFilter that skips all nodes except for DOMText nodes and + * the root node of a document. In the logical view that results, all text + * nodes will be siblings and appear as direct children of the root node, no + * matter how deeply nested the structure of the original document. + *

See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. + * + * @since DOM Level 2 + */ +class CDOM_EXPORT DOMTreeWalker { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMTreeWalker() {} + DOMTreeWalker(const DOMTreeWalker &) {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMTreeWalker & operator = (const DOMTreeWalker &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMTreeWalker() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMTreeWalker interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 2 */ + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** + * The root node of the DOMTreeWalker, as specified + * when it was created. + * + * @since DOM Level 2 + */ + virtual DOMNode* getRoot() = 0; + /** + * This attribute determines which node types are presented via the + * DOMTreeWalker. The available set of constants is defined in + * the DOMNodeFilter interface. Nodes not accepted by + * whatToShow will be skipped, but their children may still + * be considered. Note that this skip takes precedence over the filter, + * if any. + * + * @since DOM Level 2 + */ + virtual DOMNodeFilter::ShowType getWhatToShow()= 0; + + /** + * Return The filter used to screen nodes. + * + * @since DOM Level 2 + */ + virtual DOMNodeFilter* getFilter()= 0; + + /** + * The value of this flag determines whether the children of entity + * reference nodes are visible to the DOMTreeWalker. If false, + * these children and their descendants will be rejected. Note that + * this rejection takes precedence over whatToShow and the + * filter, if any. + *
To produce a view of the document that has entity references + * expanded and does not expose the entity reference node itself, use + * the whatToShow flags to hide the entity reference node + * and set expandEntityReferences to true when creating the + * DOMTreeWalker. To produce a view of the document that has + * entity reference nodes but no entity expansion, use the + * whatToShow flags to show the entity reference node and + * set expandEntityReferences to false. + * + * @since DOM Level 2 + */ + virtual bool getExpandEntityReferences()= 0; + + /** + * Return the node at which the DOMTreeWalker is currently positioned. + * + * @since DOM Level 2 + */ + virtual DOMNode* getCurrentNode()= 0; + + // ----------------------------------------------------------------------- + // Query methods + // ----------------------------------------------------------------------- + /** + * Moves to and returns the closest visible ancestor node of the current + * node. If the search for parentNode attempts to step + * upward from the DOMTreeWalker's root node, or + * if it fails to find a visible ancestor node, this method retains the + * current position and returns null. + * @return The new parent node, or null if the current node + * has no parent in the DOMTreeWalker's logical view. + * + * @since DOM Level 2 + */ + virtual DOMNode* parentNode()= 0; + + /** + * Moves the DOMTreeWalker to the first visible child of the + * current node, and returns the new node. If the current node has no + * visible children, returns null, and retains the current + * node. + * @return The new node, or null if the current node has no + * visible children in the DOMTreeWalker's logical view. + * + * @since DOM Level 2 + */ + virtual DOMNode* firstChild()= 0; + + /** + * Moves the DOMTreeWalker to the last visible child of the + * current node, and returns the new node. If the current node has no + * visible children, returns null, and retains the current + * node. + * @return The new node, or null if the current node has no + * children in the DOMTreeWalker's logical view. + * + * @since DOM Level 2 + */ + virtual DOMNode* lastChild()= 0; + + /** + * Moves the DOMTreeWalker to the previous sibling of the + * current node, and returns the new node. If the current node has no + * visible previous sibling, returns null, and retains the + * current node. + * @return The new node, or null if the current node has no + * previous sibling. in the DOMTreeWalker's logical view. + * + * @since DOM Level 2 + */ + virtual DOMNode* previousSibling()= 0; + + /** + * Moves the DOMTreeWalker to the next sibling of the current + * node, and returns the new node. If the current node has no visible + * next sibling, returns null, and retains the current node. + * @return The new node, or null if the current node has no + * next sibling. in the DOMTreeWalker's logical view. + * + * @since DOM Level 2 + */ + virtual DOMNode* nextSibling()= 0; + + /** + * Moves the DOMTreeWalker to the previous visible node in + * document order relative to the current node, and returns the new + * node. If the current node has no previous node, or if the search for + * previousNode attempts to step upward from the + * DOMTreeWalker's root node, returns + * null, and retains the current node. + * @return The new node, or null if the current node has no + * previous node in the DOMTreeWalker's logical view. + * + * @since DOM Level 2 + */ + virtual DOMNode* previousNode()= 0; + + /** + * Moves the DOMTreeWalker to the next visible node in document + * order relative to the current node, and returns the new node. If the + * current node has no next node, or if the search for nextNode attempts + * to step upward from the DOMTreeWalker's root + * node, returns null, and retains the current node. + * @return The new node, or null if the current node has no + * next node in the DOMTreeWalker's logical view. + * + * @since DOM Level 2 + */ + virtual DOMNode* nextNode()= 0; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** + * The node at which the DOMTreeWalker is currently positioned. + *
Alterations to the DOM tree may cause the current node to no longer + * be accepted by the DOMTreeWalker's associated filter. + * currentNode may also be explicitly set to any node, + * whether or not it is within the subtree specified by the + * root node or would be accepted by the filter and + * whatToShow flags. Further traversal occurs relative to + * currentNode even if it is not part of the current view, + * by applying the filters in the requested direction; if no traversal + * is possible, currentNode is not changed. + * @exception DOMException + * NOT_SUPPORTED_ERR: Raised if an attempt is made to set + * currentNode to null. + * + * @since DOM Level 2 + */ + virtual void setCurrentNode(DOMNode* currentNode)= 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this TreeWalker is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} +}; + +#define GetDOMTreeWalkerMemoryManager GET_INDIRECT_MM(fCurrentNode) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMTypeInfo.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMTypeInfo.hpp new file mode 100644 index 000000000000..4e22b8d5347a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMTypeInfo.hpp @@ -0,0 +1,196 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMTYPEINFO_HPP) +#define XERCESC_INCLUDE_GUARD_DOMTYPEINFO_HPP + +//------------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------------ +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * The DOMTypeInfo interface represent a type used by + * DOMElement or DOMAttr nodes, specified in the + * schemas associated with the document. The type is a pair of a namespace URI + * and name properties, and depends on the document's schema. + */ +class CDOM_EXPORT DOMTypeInfo +{ +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMTypeInfo() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMTypeInfo(const DOMTypeInfo &); + DOMTypeInfo & operator = (const DOMTypeInfo &); + //@} + +public: + + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMTypeInfo() {}; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Contants */ + //@{ + /** + * These are the available values for the derivationMethod parameter used by the + * method DOMTypeInfo::isDerivedFrom(). It is a set of possible types + * of derivation, and the values represent bit positions. If a bit in the derivationMethod + * parameter is set to 1, the corresponding type of derivation will be taken into account + * when evaluating the derivation between the reference type definition and the other type + * definition. When using the isDerivedFrom method, combining all of them in the + * derivationMethod parameter is equivalent to invoking the method for each of them separately + * and combining the results with the OR boolean function. This specification only defines + * the type of derivation for XML Schema. + * + * In addition to the types of derivation listed below, please note that: + * - any type derives from xsd:anyType. + * - any simple type derives from xsd:anySimpleType by restriction. + * - any complex type does not derive from xsd:anySimpleType by restriction. + * + *

DERIVATION_EXTENSION: + * If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the + * derivation by extension. The reference type definition is derived by extension from the other + * type definition if the other type definition can be reached recursively following the + * {base type definition} property from the reference type definition, and at least one of the + * derivation methods involved is an extension.

+ * + *

DERIVATION_LIST: + * If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the list. + * The reference type definition is derived by list from the other type definition if there exists + * two type definitions T1 and T2 such as the reference type definition is derived from T1 by + * DERIVATION_RESTRICTION or DERIVATION_EXTENSION, T2 is derived from the other type definition by + * DERIVATION_RESTRICTION, T1 has {variety} list, and T2 is the {item type definition}. Note that + * T1 could be the same as the reference type definition, and T2 could be the same as the other + * type definition.

+ * + *

DERIVATION_RESTRICTION: + * If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the + * derivation by restriction if complex types are involved, or a restriction if simple types are + * involved. + * The reference type definition is derived by restriction from the other type definition if the + * other type definition is the same as the reference type definition, or if the other type definition + * can be reached recursively following the {base type definition} property from the reference type + * definition, and all the derivation methods involved are restriction.

+ * + *

DERIVATION_UNION: + * If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the union + * if simple types are involved. + * The reference type definition is derived by union from the other type definition if there exists + * two type definitions T1 and T2 such as the reference type definition is derived from T1 by + * DERIVATION_RESTRICTION or DERIVATION_EXTENSION, T2 is derived from the other type definition by + * DERIVATION_RESTRICTION, T1 has {variety} union, and one of the {member type definitions} is T2. + * Note that T1 could be the same as the reference type definition, and T2 could be the same as the + * other type definition.

+ * + * @since DOM Level 3 + * + */ + enum DerivationMethods { + DERIVATION_RESTRICTION = 0x001, + DERIVATION_EXTENSION = 0x002, + DERIVATION_UNION = 0x004, + DERIVATION_LIST = 0x008 + }; + //@} + + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Returns The name of a type declared for the associated DOMElement + * or DOMAttr, or null if unknown. + * + * @return The name of a type declared for the associated DOMElement + * or DOMAttribute, or null if unknown. + * @since DOM level 3 + */ + virtual const XMLCh* getTypeName() const = 0; + + /** + * The namespace of the type declared for the associated DOMElement + * or DOMAttr or null if the DOMElement does not have + * declaration or if no namespace information is available. + * + * @return The namespace of the type declared for the associated DOMElement + * or DOMAttr or null if the DOMElement does not have + * declaration or if no namespace information is available. + * @since DOM level 3 + */ + virtual const XMLCh* getTypeNamespace() const = 0; + //@} + + //@{ + /** + * This method returns if there is a derivation between the reference type definition, + * i.e. the DOMTypeInfo on which the method is being called, and the other type definition, + * i.e. the one passed as parameters. + * + * @param typeNamespaceArg The namespace of the other type definition. + * @param typeNameArg The name of the other type definition. + * @param derivationMethod The type of derivation and conditions applied between two types, + * as described in the list of constants provided in this interface. + * @return If the document's schema is a DTD or no schema is associated with the document, + * this method will always return false. + * If the document's schema is an XML Schema, the method will true if the reference + * type definition is derived from the other type definition according to the derivation + * parameter. If the value of the parameter is 0 (no bit is set to 1 for the + * derivationMethod parameter), the method will return true if the other type definition + * can be reached by recursing any combination of {base type definition}, + * {item type definition}, or {member type definitions} from the reference type definition. + * @since DOM level 3 + */ + virtual bool isDerivedFrom(const XMLCh* typeNamespaceArg, + const XMLCh* typeNameArg, + DerivationMethods derivationMethod) const = 0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DOMTypeInfo.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMUserDataHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMUserDataHandler.hpp new file mode 100644 index 000000000000..8487f2905aa2 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMUserDataHandler.hpp @@ -0,0 +1,140 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMUSERDATAHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMUSERDATAHANDLER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * When associating an object to a key on a node using setUserData + * the application can provide a handler that gets called when the node the + * object is associated to is being cloned or imported. This can be used by + * the application to implement various behaviors regarding the data it + * associates to the DOM nodes. This interface defines that handler. + * + *

See also the Document Object Model (DOM) Level 3 Core Specification. + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMUserDataHandler { +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMUserDataHandler() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMUserDataHandler(const DOMUserDataHandler &); + DOMUserDataHandler & operator = (const DOMUserDataHandler &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMUserDataHandler() {}; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * Operation Type + * + *

NODE_CLONED: + * The node is cloned.

+ * + *

NODE_IMPORTED + * The node is imported.

+ * + *

NODE_DELETED + * The node is deleted.

+ * + *

NODE_RENAMED + * The node is renamed. + * + *

NODE_ADOPTED + * The node is adopted. + * + * @since DOM Level 3 + */ + enum DOMOperationType { + NODE_CLONED = 1, + NODE_IMPORTED = 2, + NODE_DELETED = 3, + NODE_RENAMED = 4, + NODE_ADOPTED = 5 + }; + //@} + + + // ----------------------------------------------------------------------- + // Virtual DOMUserDataHandler interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * This method is called whenever the node for which this handler is + * registered is imported or cloned. + * + * @param operation Specifies the type of operation that is being + * performed on the node. + * @param key Specifies the key for which this handler is being called. + * @param data Specifies the data for which this handler is being called. + * @param src Specifies the node being cloned, adopted, imported, or renamed. + * This is null when the node is being deleted. + * @param dst Specifies the node newly created if any, or null. + * + * @since DOM Level 3 + */ + virtual void handle(DOMOperationType operation, + const XMLCh* const key, + void* data, + const DOMNode* src, + DOMNode* dst) = 0; + + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathEvaluator.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathEvaluator.hpp new file mode 100644 index 000000000000..84d8eb2a4d12 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathEvaluator.hpp @@ -0,0 +1,180 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHEVALUATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHEVALUATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMXPathNSResolver; +class DOMXPathExpression; +class DOMNode; + +/** + * The evaluation of XPath expressions is provided by DOMXPathEvaluator. + * In a DOM implementation which supports the XPath feature, the DOMXPathEvaluator + * interface will be implemented on the same object which implements the Document interface permitting + * it to be obtained by casting or by using the DOM Level 3 getFeature method. In this case the + * implementation obtained from the Document supports the XPath DOM module and is compatible + * with the XPath 1.0 specification. + * Evaluation of expressions with specialized extension functions or variables may not + * work in all implementations and is, therefore, not portable. XPathEvaluator implementations + * may be available from other sources that could provide specific support for specialized extension + * functions or variables as would be defined by other specifications. + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathEvaluator +{ + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMXPathEvaluator() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMXPathEvaluator(const DOMXPathEvaluator &); + DOMXPathEvaluator& operator = (const DOMXPathEvaluator&); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMXPathEvaluator() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMXPathEvaluator interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + + /** + * Creates a parsed XPath expression with resolved namespaces. This is useful + * when an expression will be reused in an application since it makes it + * possible to compile the expression string into a more efficient internal + * form and preresolve all namespace prefixes which occur within the expression. + * @param expression of type XMLCh - The XPath expression string to be parsed. + * @param resolver of type XPathNSResolver - The resolver permits + * translation of all prefixes, including the xml namespace prefix, within the XPath expression + * into appropriate namespace URIs. If this is specified as null, any namespace + * prefix within the expression will result in DOMException being thrown with the + * code NAMESPACE_ERR. + * @return DOMXPathExpression The compiled form of the XPath expression. + * @exception DOMXPathException + * INVALID_EXPRESSION_ERR: Raised if the expression is not legal according to the + * rules of the DOMXPathEvaluator. + * @exception DOMException + * NAMESPACE_ERR: Raised if the expression contains namespace prefixes which cannot + * be resolved by the specified XPathNSResolver. + * @since DOM Level 3 + */ + virtual DOMXPathExpression* createExpression(const XMLCh *expression, + const DOMXPathNSResolver *resolver) = 0; + + + /** Adapts any DOM node to resolve namespaces so that an XPath expression can be + * easily evaluated relative to the context of the node where it appeared within + * the document. This adapter works like the DOM Level 3 method lookupNamespaceURI + * on nodes in resolving the namespaceURI from a given prefix using the current + * information available in the node's hierarchy at the time lookupNamespaceURI + * is called. also correctly resolving the implicit xml prefix. + * @param nodeResolver of type DOMNode The node to be used as a context + * for namespace resolution. If this parameter is null, an unpopulated + * DOMXPathNSResolver is returned, which can be populated using the + * Xerces-C extension DOMXPathNSResolver::addNamespaceBinding(). + * @return DOMXPathNSResolver The object which resolves namespaces + * with respect to the definitions in scope for the specified node. + */ + virtual DOMXPathNSResolver* createNSResolver(const DOMNode *nodeResolver) = 0; + + + /** + * Evaluates an XPath expression string and returns a result of the specified + * type if possible. + * @param expression of type XMLCh The XPath expression string to be parsed + * and evaluated. + * @param contextNode of type DOMNode The context is context node + * for the evaluation + * of this XPath expression. If the DOMXPathEvaluator was obtained by + * casting the DOMDocument then this must be owned by the same + * document and must be a DOMDocument, DOMElement, + * DOMAttribute, DOMText, DOMCDATASection, + * DOMComment, DOMProcessingInstruction, or + * XPathNamespace node. If the context node is a DOMText or + * a DOMCDATASection, then the context is interpreted as the whole + * logical text node as seen by XPath, unless the node is empty in which case it + * may not serve as the XPath context. + * @param resolver of type XPathNSResolver The resolver permits + * translation of all prefixes, including the xml namespace prefix, within + * the XPath expression into appropriate namespace URIs. If this is specified + * as null, any namespace prefix within the expression will result in + * DOMException being thrown with the code NAMESPACE_ERR. + * @param type - If a specific type is specified, then + * the result will be returned as the corresponding type. This must be one + * of the codes of the DOMXPathResult interface. + * @param result of type DOMXPathResult* - The result specifies a specific result object + * which may be reused and returned by this method. If this is specified as + * null or the implementation does not reuse the specified result, a new result + * object will be constructed and returned. + * @return DOMXPathResult* The result of the evaluation of the XPath expression. + * @exception DOMXPathException + * INVALID_EXPRESSION_ERR: Raised if the expression is not legal + * according to the rules of the DOMXPathEvaluator + * TYPE_ERR: Raised if the result cannot be converted to return the specified type. + * @exception DOMException + * NAMESPACE_ERR: Raised if the expression contains namespace prefixes + * which cannot be resolved by the specified XPathNSResolver. + * WRONG_DOCUMENT_ERR: The DOMNode is from a document that is not supported + * by this DOMXPathEvaluator. + * NOT_SUPPORTED_ERR: The DOMNode is not a type permitted as an XPath context + * node or the request type is not permitted by this DOMXPathEvaluator. + */ + virtual DOMXPathResult* evaluate(const XMLCh *expression, + const DOMNode *contextNode, + const DOMXPathNSResolver *resolver, + DOMXPathResult::ResultType type, + DOMXPathResult* result) = 0; + + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathException.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathException.hpp new file mode 100644 index 000000000000..b276353cb84b --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathException.hpp @@ -0,0 +1,105 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHEXCEPTION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathException : public DOMException +{ +public: + //@{ + /** + * ExceptionCode + *
INVALID_EXPRESSION_ERR The expression has a syntax error or otherwise + * is not a legal expression according to the rules of the specific + * DOMXPathEvaluator or contains specialized extension functions + * or variables not supported by this implementation. + *
TYPE_ERR The expression cannot be converted to return the specified type. + *
NO_RESULT_ERROR There is no current result in the result object. + */ + enum ExceptionCode { + INVALID_EXPRESSION_ERR = 51, + TYPE_ERR = 52, + NO_RESULT_ERROR = 53 + }; + //@} + +public: + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + /** + * Default constructor for DOMXPathException. + * + */ + DOMXPathException(); + + /** + * Constructor which takes an error code and a message. + * + * @param code The error code which indicates the exception + * @param messageCode The string containing the error message + * @param memoryManager The memory manager used to (de)allocate memory + */ + DOMXPathException(short code, + short messageCode = 0, + MemoryManager* const memoryManager = XMLPlatformUtils::fgMemoryManager); + + /** + * Copy constructor. + * + * @param other The object to be copied. + */ + DOMXPathException(const DOMXPathException &other); + + //@} + + // ----------------------------------------------------------------------- + // Destructors + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + /** + * Destructor for DOMXPathException. + * + */ + virtual ~DOMXPathException(); + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMXPathException& operator = (const DOMXPathException&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathExpression.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathExpression.hpp new file mode 100644 index 000000000000..9ffd1440fa3c --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathExpression.hpp @@ -0,0 +1,129 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHEXPRESSION_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHEXPRESSION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMNode; + +/** + * The DOMXPathExpression interface represents a parsed and resolved XPath expression. + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathExpression +{ + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMXPathExpression() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMXPathExpression(const DOMXPathExpression &); + DOMXPathExpression& operator = (const DOMXPathExpression&); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMXPathExpression() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMXPathExpression interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + + /** + * Evaluates this XPath expression and returns a result. + * @param contextNode of type DOMNode The context is context + * node for the evaluation of this XPath expression. + * If the XPathEvaluator was obtained by casting the Document then this must + * be owned by the same document and must be a DOMDocument, DOMElement, + * DOMAttribute, DOMText, DOMCDATASection, + * DOMComment, DOMProcessingInstruction, or + * XPathNamespace. If the context node is a DOMText or a + * DOMCDATASection, then the context is interpreted as the whole logical + * text node as seen by XPath, unless the node is empty in which case it may not + * serve as the XPath context. + * @param type If a specific type is specified, then the result + * will be coerced to return the specified type relying on XPath conversions and fail + * if the desired coercion is not possible. This must be one of the type codes of DOMXPathResult. + * @param result of type DOMXPathResult* The result specifies a specific result object which + * may be reused and returned by this method. If this is specified as nullor the + * implementation does not reuse the specified result, a new result object will be constructed + * and returned. + * @return DOMXPathResult* The result of the evaluation of the XPath expression. + * @exception DOMXPathException + * TYPE_ERR: Raised if the result cannot be converted to return the specified type. + * @exception DOMException + * WRONG_DOCUMENT_ERR: The DOMNode is from a document that is not supported by + * the XPathEvaluator that created this DOMXPathExpression. + * NOT_SUPPORTED_ERR: The DOMNode is not a type permitted as an XPath context node or the + * request type is not permitted by this DOMXPathExpression. + */ + + virtual DOMXPathResult* evaluate(const DOMNode *contextNode, + DOMXPathResult::ResultType type, + DOMXPathResult* result) const = 0; + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this DOMXPathExpression is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathNSResolver.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathNSResolver.hpp new file mode 100644 index 000000000000..d486661211af --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathNSResolver.hpp @@ -0,0 +1,130 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHNSRESOLVER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHNSRESOLVER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN +/** + * The DOMXPathNSResolver interface permit prefix strings + * in the expression to be properly bound to namespaceURI strings. + * DOMXPathEvaluator can construct an implementation of + * DOMXPathNSResolver from a node, or the interface may be + * implemented by any application. + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathNSResolver +{ + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMXPathNSResolver() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMXPathNSResolver(const DOMXPathNSResolver &); + DOMXPathNSResolver& operator = (const DOMXPathNSResolver&); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMXPathNSResolver() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMDocument interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + + /** Look up the namespace URI associated to the given namespace prefix. + * + * @param prefix of type XMLCh - The prefix to look for. An empty or + * null string denotes the default namespace. + * @return the associated namespace URI or null if none is found. + */ + virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const = 0; + //@} + + + // ----------------------------------------------------------------------- + // Non-standard extension + // ----------------------------------------------------------------------- + /** @name Non-standard extension */ + //@{ + + /** + * Non-standard extension + * + * XPath2 implementations require a reverse lookup in the static context. + * Look up the prefix associated with the namespace URI + * @param URI of type XMLCh - The namespace to look for. + * @return the associated prefix which can be an empty string if this + * is a default namespace or null if none is found. + */ + virtual const XMLCh* lookupPrefix(const XMLCh* URI) const = 0; + + /** + * Non-standard extension + * + * Associate the given namespace prefix to the namespace URI. + * @param prefix of type XMLCh - The namespace prefix to bind. An empty + * or null string denotes the default namespace. + * @param uri of type XMLCh - The associated namespace URI. If this + * argument is null or an empty string then the existing binding for this + * prefix is removed. + */ + virtual void addNamespaceBinding(const XMLCh* prefix, const XMLCh* uri) = 0; + + /** + * Called to indicate that this object (and its associated children) is no longer in use + * and that the implementation may relinquish any resources associated with it and + * its associated children. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathNamespace.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathNamespace.hpp new file mode 100644 index 000000000000..81f634f4fea6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathNamespace.hpp @@ -0,0 +1,115 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHNAMESPACE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHNAMESPACE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMElement; + +/** + * The DOMXPathNamespace interface is returned by DOMXPathResult + * interfaces to represent the XPath namespace node type that DOM lacks. There is no + * public constructor for this node type. Attempts to place it into a hierarchy or a + * NamedNodeMap result in a DOMException with the code HIERARCHY_REQUEST_ERR. This node + * is read only, so methods or setting of attributes that would mutate the node result + * in a DOMException with the code NO_MODIFICATION_ALLOWED_ERR. + * The core specification describes attributes of the DOMNode interface that + * are different for different node types but does not describe XPATH_NAMESPACE_NODE, + * so here is a description of those attributes for this node type. All attributes of + * DOMNode not described in this section have a null or false value. + * ownerDocument matches the ownerDocument of the ownerElement even if the element is later adopted. + * nodeName is always the string "#namespace". + * prefix is the prefix of the namespace represented by the node. + * localName is the same as prefix. + * nodeType is equal to XPATH_NAMESPACE_NODE. + * namespaceURI is the namespace URI of the namespace represented by the node. + * nodeValue is the same as namespaceURI. + * adoptNode, cloneNode, and importNode fail on this node type by raising a DOMException with the code NOT_SUPPORTED_ERR. + * Note: In future versions of the XPath specification, the definition of a namespace node may + * be changed incompatibly, in which case incompatible changes to field values may be required to + * implement versions beyond XPath 1.0. + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathNamespace : public DOMNode +{ + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMXPathNamespace() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMXPathNamespace(const DOMXPathNamespace &); + DOMXPathNamespace& operator = (const DOMXPathNamespace&); + //@} + +public: + + + enum XPathNodeType { + XPATH_NAMESPACE_NODE = 13 + }; + + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMXPathNamespace() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual DOMXPathNamespace interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + /** + * The DOMElement on which the namespace was in scope when + * it was requested. This does not change on a returned namespace node + * even if the document changes such that the namespace goes out of + * scope on that element and this node is no longer found there by XPath. + * @since DOM Level 3 + */ + virtual DOMElement *getOwnerElement() const = 0; + + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathResult.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathResult.hpp new file mode 100644 index 000000000000..bc584b622566 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/DOMXPathResult.hpp @@ -0,0 +1,351 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHRESULT_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHRESULT_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMXPathNSResolver; +class DOMXPathExpression; +class DOMTypeInfo; +class DOMNode; + +/** + * The DOMXPathResult interface represents the result of the + * evaluation of an XPath 1.0 or XPath 2.0 expression within the context + * of a particular node. Since evaluation of an XPath expression can result + * in various result types, this object makes it possible to discover and + * manipulate the type and value of the result. + * + * Note that some function signatures were changed compared to the + * DOM Level 3 in order to accommodate XPath 2.0. + * + * @since DOM Level 3 + */ +class CDOM_EXPORT DOMXPathResult +{ + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + DOMXPathResult() {}; + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented constructors and operators */ + //@{ + DOMXPathResult(const DOMXPathResult &); + DOMXPathResult& operator = (const DOMXPathResult&); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~DOMXPathResult() {}; + //@} + + // ----------------------------------------------------------------------- + // Class Types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + *

ANY_TYPE + *
[XPath 1.0] This code does not represent a specific type. An evaluation of an XPath + * expression will never produce this type. If this type is requested, then + * the evaluation returns whatever type naturally results from evaluation + * of the expression. + * If the natural result is a node set when ANY_TYPE was requested, then + * UNORDERED_NODE_ITERATOR_TYPE is always the resulting type. Any other + * representation of a node set must be explicitly requested. + *

ANY_UNORDERED_NODE_TYPE + *
[XPath 1.0] The result is a node set as defined by XPath 1.0 and will be accessed + * as a single node, which may be null if the node set is empty. Document + * modification does not invalidate the node, but may mean that the result + * node no longer corresponds to the current document. This is a convenience + * that permits optimization since the implementation can stop once any node + * in the resulting set has been found. + * If there is more than one node in the actual result, the single node + * returned might not be the first in document order. + *

BOOLEAN_TYPE + *
[XPath 1.0] The result is a boolean as defined by XPath 1.0. Document modification + * does not invalidate the boolean, but may mean that reevaluation would not + * yield the same boolean. + *

FIRST_ORDERED_NODE_TYPE + *
[XPath 1.0] The result is a node set as defined by XPath 1.0 and will be accessed + * as a single node, which may be null if the node set is empty. Document + * modification does not invalidate the node, but may mean that the result + * node no longer corresponds to the current document. This is a convenience + * that permits optimization since the implementation can stop once the first + * node in document order of the resulting set has been found. + * If there are more than one node in the actual result, the single node + * returned will be the first in document order. + *

NUMBER_TYPE + *
[XPath 1.0] The result is a number as defined by XPath 1.0. Document modification does + * not invalidate the number, but may mean that reevaluation would not yield the + * same number. + *

ORDERED_NODE_ITERATOR_TYPE + *
[XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed + * iteratively, which will produce document-ordered nodes. Document modification + * invalidates the iteration. + *

ORDERED_NODE_SNAPSHOT_TYPE + *
[XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed as a + * snapshot list of nodes that will be in original document order. Document + * modification does not invalidate the snapshot but may mean that reevaluation would + * not yield the same snapshot and nodes in the snapshot may have been altered, moved, + * or removed from the document. + *

STRING_TYPE + *
[XPath 1.0] The result is a string as defined by XPath 1.0. Document modification does not + * invalidate the string, but may mean that the string no longer corresponds to the + * current document. + *

UNORDERED_NODE_ITERATOR_TYPE + *
[XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed iteratively, + * which may not produce nodes in a particular order. Document modification invalidates the iteration. + * This is the default type returned if the result is a node set and ANY_TYPE is requested. + *

UNORDERED_NODE_SNAPSHOT_TYPE + *
[XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed as a + * snapshot list of nodes that may not be in a particular order. Document modification + * does not invalidate the snapshot but may mean that reevaluation would not yield the same + * snapshot and nodes in the snapshot may have been altered, moved, or removed from the document. + *

FIRST_RESULT_TYPE + *
[XPath 2.0] The result is a sequence as defined by XPath 2.0 and will be accessed + * as a single current value or there will be no current value if the sequence + * is empty. Document modification does not invalidate the value, but may mean + * that the result no longer corresponds to the current document. This is a + * convenience that permits optimization since the implementation can stop once + * the first item in the resulting sequence has been found. If there is more + * than one item in the actual result, the single item returned might not be + * the first in document order. + *

ITERATOR_RESULT_TYPE + *
[XPath 2.0] The result is a sequence as defined by XPath 2.0 that will be accessed + * iteratively. Document modification invalidates the iteration. + *

SNAPSHOT_RESULT_TYPE + *
[XPath 2.0] The result is a sequence as defined by XPath 2.0 that will be accessed + * as a snapshot list of values. Document modification does not invalidate the + * snapshot but may mean that reevaluation would not yield the same snapshot + * and any items in the snapshot may have been altered, moved, or removed from + * the document. + */ + enum ResultType { + /* XPath 1.0 */ + ANY_TYPE = 0, + NUMBER_TYPE = 1, + STRING_TYPE = 2, + BOOLEAN_TYPE = 3, + UNORDERED_NODE_ITERATOR_TYPE = 4, + ORDERED_NODE_ITERATOR_TYPE = 5, + UNORDERED_NODE_SNAPSHOT_TYPE = 6, + ORDERED_NODE_SNAPSHOT_TYPE = 7, + ANY_UNORDERED_NODE_TYPE = 8, + FIRST_ORDERED_NODE_TYPE = 9, + /* XPath 2.0 */ + FIRST_RESULT_TYPE = 100, + ITERATOR_RESULT_TYPE = 101, + SNAPSHOT_RESULT_TYPE = 102 + }; + //@} + + + // ----------------------------------------------------------------------- + // Virtual DOMXPathResult interface + // ----------------------------------------------------------------------- + /** @name Functions introduced in DOM Level 3 */ + //@{ + + /** + * Returns the result type of this result + * @return ResultType + * A code representing the type of this result, as defined by the type constants. + */ + virtual ResultType getResultType() const = 0; + + /** + * Returns the DOM type info of the current result node or value + * (XPath 2 only). + * @return typeInfo of type TypeInfo, readonly + */ + virtual const DOMTypeInfo *getTypeInfo() const = 0; + + /** + * Returns true if the result has a current result and the value is a + * node (XPath 2 only). This function is necessary to distinguish + * between a string value and a node of type string as returned by + * the getTypeInfo() function. + * @return isNode of type boolean, readonly + */ + virtual bool isNode() const = 0; + + /** + * Returns the boolean value of this result + * @return booleanValue of type boolean + * The value of this boolean result. + * @exception DOMXPathException + * TYPE_ERR: raised if ResultType is not BOOLEAN_TYPE (XPath 1.0) or + * if current result cannot be properly converted to boolean (XPath 2.0). + *
+ * NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0). + */ + virtual bool getBooleanValue() const = 0; + + /** + * Returns the integer value of this result (XPath 2 only). + * @return integerValue of type int + * The value of this integer result. + * @exception DOMXPathException + * TYPE_ERR: raised if current result cannot be properly converted to + * int (XPath 2.0). + *
+ * NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0). + */ + virtual int getIntegerValue() const = 0; + + /** + * Returns the number value of this result + * @return numberValue + * The value of this number result. If the native double type of the DOM + * binding does not directly support the exact IEEE 754 result of the XPath + * expression, then it is up to the definition of the binding to specify how + * the XPath number is converted to the native binding number. + * @exception DOMXPathException + * TYPE_ERR: raised if ResultType is not NUMBER_TYPE (XPath 1.0) or + * if current result cannot be properly converted to double (XPath 2.0). + *
+ * NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0). + */ + virtual double getNumberValue() const = 0; + + /** + * Returns the string value of this result + * @return stringValue + * The value of this string result. + * @exception DOMXPathException + * TYPE_ERR: raised if ResultType is not STRING_TYPE (XPath 1.0) or + * if current result cannot be properly converted to string (XPath 2.0). + *
+ * NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0). + */ + virtual const XMLCh* getStringValue() const = 0; + + /** + * Returns the node value of this result + * @return nodeValue + * The value of this node result, which may be null. + * @exception DOMXPathException + * TYPE_ERR: raised if ResultType is not ANY_UNORDERED_NODE_TYPE, + * FIRST_ORDERED_NODE_TYPE, UNORDERED_NODE_ITERATOR_TYPE, + * ORDERED_NODE_ITERATOR_TYPE, UNORDERED_NODE_SNAPSHOT_TYPE, or + * ORDERED_NODE_SNAPSHOT_TYPE (XPath 1.0) or if current result is + * not a node (XPath 2.0). + *
+ * NO_RESULT_ERROR: raised if there is no current result in the result + * object. + */ + virtual DOMNode* getNodeValue() const = 0; + + /** + * Iterates and returns true if the current result is the next item from the + * sequence or false if there are no more items. + * @return boolean True if the current result is the next item from the sequence + * or false if there are no more items. + * @exception XPathException + * TYPE_ERR: raised if ResultType is not UNORDERED_NODE_ITERATOR_TYPE or + * ORDERED_NODE_ITERATOR_TYPE (XPath 1.0) or if ResultType is not + * ITERATOR_RESULT_TYPE (XPath 2.0). + * @exception DOMException + * INVALID_STATE_ERR: The document has been mutated since the result was returned. + */ + virtual bool iterateNext() = 0; + + /** + * Signifies that the iterator has become invalid. + * @return invalidIteratorState + * True if ResultType is UNORDERED_NODE_ITERATOR_TYPE or + * ORDERED_NODE_ITERATOR_TYPE (XPath 1.0) or ITERATOR_RESULT_TYPE (XPath 2.0) + * and the document has been modified since this result was returned. + * @exception XPathException + * TYPE_ERR: raised if ResultType is not UNORDERED_NODE_ITERATOR_TYPE or + * ORDERED_NODE_ITERATOR_TYPE (XPath 1.0) or if ResultType is not + * ITERATOR_RESULT_TYPE (XPath 2.0). + */ + virtual bool getInvalidIteratorState() const = 0; + + /** + * Sets the current result to the indexth item in the snapshot collection. If + * index is greater than or equal to the number of items in the list, this method + * returns false. Unlike the iterator result, the snapshot does not become + * invalid, but may not correspond to the current document if it is mutated. + * @param index of type XMLSize_t - Index into the snapshot collection. + * @return boolean True if the current result is the next item from the sequence + * or false if there are no more items. + * @exception XPathException + * TYPE_ERR: raised if ResultType is not UNORDERED_NODE_SNAPSHOT_TYPE or + * ORDERED_NODE_SNAPSHOT_TYPE (XPath 1.0) or if ResultType is not + * SNAPSHOT_RESULT_TYPE (XPath 2.0). + */ + virtual bool snapshotItem(XMLSize_t index) = 0; + + /** + * The number of items in the result snapshot. Valid values for snapshotItem + * indices are 0 to snapshotLength-1 inclusive. + * @return snapshotLength of type XMLSize_t + * @exception XPathException + * TYPE_ERR: raised if ResultType is not UNORDERED_NODE_SNAPSHOT_TYPE or + * ORDERED_NODE_SNAPSHOT_TYPE (XPath 1.0) or if ResultType is not + * SNAPSHOT_RESULT_TYPE (XPath 2.0). + */ + virtual XMLSize_t getSnapshotLength() const = 0; + + //@} + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this DOMXPathResult is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/StDOMNode.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/StDOMNode.hpp new file mode 100644 index 000000000000..49cec3af6d3a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/StDOMNode.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_STDOMNODE_HPP) +#define XERCESC_INCLUDE_GUARD_STDOMNODE_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/* This class is a smart pointer implementation over DOMNode interface and +** classes derived from it. It takes care of reference counting automatically. +** Reference counting is optional so use of this class is experimental. +*/ +template class StDOMNode { + T* m_node; + + static inline void INCREFCOUNT(T *x) { if (x != (T*)0) x->incRefCount(); } + static inline void DECREFCOUNT(T *x) { if (x != (T*)0) x->decRefCount(); } + +public: + inline StDOMNode(T* node = (T*)0) : m_node(node) { INCREFCOUNT(m_node); } + inline StDOMNode(const StDOMNode& stNode) : m_node(stNode.m_node) { INCREFCOUNT(m_node); } + inline ~StDOMNode() { DECREFCOUNT(m_node); } + + inline T* operator= (T *node) + { + if (m_node != node) { + DECREFCOUNT(m_node); + m_node = node; + INCREFCOUNT(m_node); + } + return (m_node); + } + + inline bool operator!= (T* node) const { return (m_node != node); } + inline bool operator== (T* node) const { return (m_node == node); } + + inline T& operator* () { return (*m_node); } + inline const T& operator* () const { return (*m_node); } + inline T* operator-> () const { return (m_node); } + inline operator T*() const { return (m_node); } + inline void ClearNode() { operator=((T*)(0)); } +}; + +#if defined(XML_DOMREFCOUNT_EXPERIMENTAL) + typedef StDOMNode DOMNodeSPtr; +#else + typedef DOMNode* DOMNodeSPtr; +#endif + +/* StDOMNode is a smart pointer implementation over DOMNode interface and +** classes derived from it. It takes care of reference counting automatically. +** Reference counting is optional so use of this class is experimental. +*/ +#if defined(XML_DOMREFCOUNT_EXPERIMENTAL) + typedef StDOMNode DOMAttrSPtr; +#else + typedef DOMAttr* DOMAttrSPtr; +#endif + +/* StDOMNode is a smart pointer implementation over DOMNode interface and +** classes derived from it. It takes care of reference counting automatically. +** Reference counting is optional so use of this class is experimental. +*/ +#if defined(XML_DOMREFCOUNT_EXPERIMENTAL) + typedef StDOMNode DOMElementSPtr; +#else + typedef DOMElement* DOMElementSPtr; +#endif + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMAttrImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMAttrImpl.hpp new file mode 100644 index 000000000000..8c6a5ae7ba89 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMAttrImpl.hpp @@ -0,0 +1,142 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMATTRIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMATTRIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#include +#include "DOMNodeBase.hpp" +#include "DOMParentNode.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMDocumentImpl.hpp" +#include +#include +#include "DOMNodeIDMap.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMElementImpl; +class DOMTypeInfoImpl; + +class CDOM_EXPORT DOMAttrImpl: public DOMAttr, public HasDOMNodeImpl, public HasDOMParentImpl { + +public: + DOMNodeImpl fNode; + DOMParentNode fParent; + const XMLCh *fName; + +protected: + const DOMTypeInfoImpl *fSchemaType; + +public: + DOMAttrImpl(DOMDocument *ownerDocument, const XMLCh *aName); + DOMAttrImpl(const DOMAttrImpl &other, bool deep=false); + virtual ~DOMAttrImpl(); + +public: + // Add all functions that are pure virtual in DOMNODE + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMPARENTIMPL_DECL; + +public: + virtual const XMLCh * getName() const; + virtual bool getSpecified() const; + virtual const XMLCh * getValue() const; + virtual void setSpecified(bool arg); + virtual void setValue(const XMLCh * value); + virtual DOMElement * getOwnerElement() const; + virtual bool isId() const; + virtual const DOMTypeInfo* getSchemaTypeInfo() const; + + void setOwnerElement(DOMElement *ownerElem); //internal use only + + // helper function for DOM Level 3 renameNode + virtual DOMNode* rename(const XMLCh* namespaceURI, const XMLCh* name); + + //helper function for DOM Level 3 TypeInfo + virtual void setSchemaTypeInfo(const DOMTypeInfoImpl* typeInfo); + + // helper method that sets this attr to an idnode and places it into the document map + virtual void addAttrToIDNodeMap(); + + // helper to remove this attr from from the id map if it is in there + virtual void removeAttrFromIDNodeMap(); + +public: + // Set attribute value fast. Assumptions: + // + // - node is not read-only + // - no ID management is performed + // - this attribute does not have a value + // + virtual void setValueFast (const XMLCh * value); + +protected: + void getTextValue(DOMNode* node, XMLBuffer& buf) const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMAttrImpl& operator=(const DOMAttrImpl&); +}; + +inline void DOMAttrImpl::removeAttrFromIDNodeMap() +{ + if (fNode.isIdAttr()) { + ((DOMDocumentImpl *)fParent.fOwnerDocument)->getNodeIDMap()->remove(this); + fNode.isIdAttr(false); + } +} + +inline void DOMAttrImpl::addAttrToIDNodeMap() +{ + if (fNode.isIdAttr()) + return; + + fNode.isIdAttr(true); + + // REVIST For now, we don't worry about what happens if the new + // name conflicts as per setValue + DOMDocumentImpl *doc = (DOMDocumentImpl *)(fParent.fOwnerDocument); + + if (doc->fNodeIDMap == 0) + doc->fNodeIDMap = new (doc) DOMNodeIDMap(500, doc); + + doc->getNodeIDMap()->add(this); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMAttrMapImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMAttrMapImpl.hpp new file mode 100644 index 000000000000..eeebf402303a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMAttrMapImpl.hpp @@ -0,0 +1,125 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMATTRMAPIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMATTRMAPIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMNode; +class DOMNodeVector; + +class CDOM_EXPORT DOMAttrMapImpl : public DOMNamedNodeMap +{ +protected: + DOMNodeVector* fNodes; + DOMNode* fOwnerNode; // the node this map belongs to + bool attrDefaults; + + virtual void cloneContent(const DOMAttrMapImpl *srcmap); + + bool readOnly(); // revisit. Look at owner node read-only. + +public: + DOMAttrMapImpl(DOMNode *ownerNod); + + // revisit. This "copy" constructor is used for cloning an Element with Attributes, + // and for setting up default attributes. It's probably not right + // for one or the other or both. + DOMAttrMapImpl(DOMNode *ownerNod, const DOMAttrMapImpl *defaults); + DOMAttrMapImpl(); + + virtual ~DOMAttrMapImpl(); + virtual DOMAttrMapImpl *cloneAttrMap(DOMNode *ownerNode); + virtual bool hasDefaults(); + virtual void hasDefaults(bool value); + virtual int findNamePoint(const XMLCh *name) const; + virtual int findNamePoint(const XMLCh *namespaceURI, + const XMLCh *localName) const; + virtual DOMNode* removeNamedItemAt(XMLSize_t index); + virtual void setReadOnly(bool readOnly, bool deep); + + + virtual XMLSize_t getLength() const; + virtual DOMNode* item(XMLSize_t index) const; + + virtual DOMNode* getNamedItem(const XMLCh *name) const; + virtual DOMNode* setNamedItem(DOMNode *arg); + virtual DOMNode* removeNamedItem(const XMLCh *name); + + virtual DOMNode* getNamedItemNS(const XMLCh *namespaceURI, + const XMLCh *localName) const; + virtual DOMNode* setNamedItemNS(DOMNode *arg); + virtual DOMNode* removeNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName); + + // Fast versions of the above functions which bypass validity checks. + // It also assumes that fNode is not 0 (call reserve) and that there + // is no previous node with this name. These are used in parsing. + // + void setNamedItemFast(DOMNode *arg); + void setNamedItemNSFast(DOMNode *arg); + + // Tries to reserve space for the specified number of elements. + // Currently only works on newly-created instances (fNodes == 0). + // + void reserve (XMLSize_t); + + void reconcileDefaultAttributes(const DOMAttrMapImpl* defaults); + void moveSpecifiedAttributes(DOMAttrMapImpl* srcmap); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMAttrMapImpl(const DOMAttrMapImpl &); + DOMAttrMapImpl & operator = (const DOMAttrMapImpl &); +}; + +// --------------------------------------------------------------------------- +// DOMAttrMapImpl: Getters & Setters +// --------------------------------------------------------------------------- + +inline bool DOMAttrMapImpl::hasDefaults() +{ + return attrDefaults; +} + +inline void DOMAttrMapImpl::hasDefaults(bool value) +{ + attrDefaults = value; +} + +XERCES_CPP_NAMESPACE_END + + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMAttrNSImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMAttrNSImpl.hpp new file mode 100644 index 000000000000..c6122673fa32 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMAttrNSImpl.hpp @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMATTRNSIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMATTRNSIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include "DOMAttrImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMAttrNSImpl: public DOMAttrImpl { +protected: + //Introduced in DOM Level 2 + const XMLCh * fNamespaceURI; //namespace URI of this node + const XMLCh * fLocalName; //local part of qualified name + const XMLCh * fPrefix; // prefix part of qualified name + // revisit - can return local part + // by pointing into the qualified (L1) name. + +public: + DOMAttrNSImpl(DOMDocument *ownerDoc, const XMLCh *name); + DOMAttrNSImpl(DOMDocument *ownerDoc, //DOM Level 2 + const XMLCh *namespaceURI, const XMLCh *qualifiedName); + DOMAttrNSImpl(const DOMAttrNSImpl &other, bool deep=false); + + // Fast construction without any checks for name validity. Used in + // parsing. Note that if prefix is not specified and localName is + // 'xmlns', this constructor expects proper namespaceURI. + // + DOMAttrNSImpl(DOMDocument *ownerDoc, + const XMLCh *namespaceURI, + const XMLCh *prefix, // Null or empty - no prefix. + const XMLCh *localName, + const XMLCh *qualifiedName); + + virtual DOMNode * cloneNode(bool deep) const; + //Introduced in DOM Level 2 + virtual const XMLCh * getNamespaceURI() const; + virtual const XMLCh * getPrefix() const; + virtual const XMLCh * getLocalName() const; + virtual void setPrefix(const XMLCh *prefix); + virtual void release(); + + // helper function for DOM Level 3 renameNode + virtual DOMNode* rename(const XMLCh* namespaceURI, const XMLCh* name); + void setName(const XMLCh* namespaceURI, const XMLCh* name); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMAttrNSImpl & operator = (const DOMAttrNSImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMCDATASectionImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMCDATASectionImpl.hpp new file mode 100644 index 000000000000..d141deb27f78 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMCDATASectionImpl.hpp @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCDATASECTIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCDATASECTIONIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#include +#include +#include "DOMNodeBase.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMChildNode.hpp" +#include "DOMParentNode.hpp" +#include "DOMCharacterDataImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMCDATASectionImpl: public DOMCDATASection, public HasDOMNodeImpl, public HasDOMChildImpl { +protected: + DOMNodeImpl fNode; + DOMChildNode fChild; + DOMCharacterDataImpl fCharacterData; + + +public: + DOMCDATASectionImpl(DOMDocument *ownerDoc, const XMLCh* data); + DOMCDATASectionImpl(DOMDocument *ownerDoc, const XMLCh* data, XMLSize_t n); + DOMCDATASectionImpl(const DOMCDATASectionImpl &other, bool deep = false); + + virtual ~DOMCDATASectionImpl(); + + // Functions inherited from TEXT + virtual DOMText* splitText(XMLSize_t offset); + // DOM Level 3 + virtual bool getIsElementContentWhitespace() const; + virtual const XMLCh* getWholeText() const; + virtual DOMText* replaceWholeText(const XMLCh* content); + + // non-standard extension + virtual bool isIgnorableWhitespace() const; + + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMCHILDIMPL_DECL; + +public: + // Functions introduced by DOMCharacterData + virtual const XMLCh* getData() const; + virtual XMLSize_t getLength() const; + virtual const XMLCh* substringData(XMLSize_t offset, + XMLSize_t count) const; + virtual void appendData(const XMLCh *arg); + virtual void insertData(XMLSize_t offset, const XMLCh *arg); + virtual void deleteData(XMLSize_t offset, + XMLSize_t count); + virtual void replaceData(XMLSize_t offset, + XMLSize_t count, + const XMLCh *arg); + virtual void setData(const XMLCh *data); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMCDATASectionImpl & operator = (const DOMCDATASectionImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMCasts.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMCasts.hpp new file mode 100644 index 000000000000..7d99dae293ae --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMCasts.hpp @@ -0,0 +1,109 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCASTS_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCASTS_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +// +// Define inline casting functions to convert from +// (DOMNode*) to the embedded instances of DOMNodeImpl, +// DOMParentNode, and DOMChildNode. +// +// Each type of embedded object corresponds to a HasXXX virtual +// interface class that a given DOM implementation class will +// support to expose its embedded object(s) to other implementation +// classes. +// +// This replaces the previous implementation that relied upon unsafe +// casts and member offsets that rely on unspecified behavior in C++, +// with a hopefully small cost in memory and performance. +// + +#include +#include "DOMNodeBase.hpp" +#include "DOMElementImpl.hpp" +#include "DOMTextImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +static inline const DOMNodeImpl *castToNodeImpl(const DOMNode *p) +{ + const HasDOMNodeImpl* pE = dynamic_cast(p); + if (!pE || !pE->getNodeImpl()) { + throw DOMException(DOMException::INVALID_STATE_ERR, 0, XMLPlatformUtils::fgMemoryManager); + } + return pE->getNodeImpl(); +} + +static inline DOMNodeImpl *castToNodeImpl(DOMNode *p) +{ + HasDOMNodeImpl *pE = dynamic_cast(p); + if (!pE || !pE->getNodeImpl()) { + throw DOMException(DOMException::INVALID_STATE_ERR, 0, XMLPlatformUtils::fgMemoryManager); + } + return pE->getNodeImpl(); +} + +static inline const DOMParentNode *castToParentImpl(const DOMNode *p) { + const HasDOMParentImpl *pE = dynamic_cast(p); + if (!pE || !pE->getParentNodeImpl()) { + throw DOMException(DOMException::INVALID_STATE_ERR, 0, XMLPlatformUtils::fgMemoryManager); + } + return pE->getParentNodeImpl(); +} + +static inline DOMParentNode *castToParentImpl(DOMNode *p) { + HasDOMParentImpl *pE = dynamic_cast(p); + if (!pE || !pE->getParentNodeImpl()) { + throw DOMException(DOMException::INVALID_STATE_ERR, 0, XMLPlatformUtils::fgMemoryManager); + } + return pE->getParentNodeImpl(); +} + +static inline const DOMChildNode *castToChildImpl(const DOMNode *p) { + const HasDOMChildImpl *pE = dynamic_cast(p); + if (!pE || !pE->getChildNodeImpl()) { + throw DOMException(DOMException::INVALID_STATE_ERR, 0, XMLPlatformUtils::fgMemoryManager); + } + return pE->getChildNodeImpl(); +} + +static inline DOMChildNode *castToChildImpl(DOMNode *p) { + HasDOMChildImpl *pE = dynamic_cast(p); + if (!pE || !pE->getChildNodeImpl()) { + throw DOMException(DOMException::INVALID_STATE_ERR, 0, XMLPlatformUtils::fgMemoryManager); + } + return pE->getChildNodeImpl(); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMCharacterDataImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMCharacterDataImpl.hpp new file mode 100644 index 000000000000..55c94956f0ba --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMCharacterDataImpl.hpp @@ -0,0 +1,90 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCHARACTERDATAIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCHARACTERDATAIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNode; +class DOMDocument; +class DOMDocumentImpl; +class DOMBuffer; + +// Instances of DOMCharacterDataImpl appear as members of node types +// that implement the DOMCharacterData interfaces. +// Operations in those classes are delegated to this class. +// +class CDOM_EXPORT DOMCharacterDataImpl +{ +public: + DOMBuffer* fDataBuf; + // for the buffer bid + DOMDocumentImpl* fDoc; + +public: + DOMCharacterDataImpl(DOMDocument *doc, const XMLCh *dat); + DOMCharacterDataImpl(DOMDocument *doc, const XMLCh* data, XMLSize_t n); + DOMCharacterDataImpl(const DOMCharacterDataImpl &other); + ~DOMCharacterDataImpl(); + const XMLCh * getNodeValue() const; + void setNodeValue(const XMLCh * value); + void appendData(const DOMNode *node, const XMLCh *data); + void appendData(const DOMNode *node, const XMLCh *data, XMLSize_t n); + void appendDataFast(const DOMNode *node, const XMLCh *data, XMLSize_t n); + void deleteData(const DOMNode *node, XMLSize_t offset, XMLSize_t count); + const XMLCh* getData() const; + XMLSize_t getLength() const; + void insertData(const DOMNode *node, XMLSize_t offset, const XMLCh * data); + void replaceData(const DOMNode *node, XMLSize_t offset, XMLSize_t count, const XMLCh * data); + void setData(const DOMNode *node, const XMLCh * arg); + void setNodeValue(const DOMNode *node, const XMLCh *value); + + + const XMLCh* substringData(const DOMNode *node, XMLSize_t offset, XMLSize_t count) const; + void releaseBuffer(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMCharacterDataImpl & operator = (const DOMCharacterDataImpl &); +}; + +#define GetDOMCharacterDataImplMemoryManager GET_DIRECT_MM(fDoc) + +XERCES_CPP_NAMESPACE_END + + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMChildNode.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMChildNode.hpp new file mode 100644 index 000000000000..5cacbf023dc1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMChildNode.hpp @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCHILDNODE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCHILDNODE_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +/** + * ChildNode adds to NodeImpl the capability of being a child, this is having + * siblings. + **/ + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMDocument; +class DOMNode; + + +class CDOM_EXPORT DOMChildNode { + +public: + DOMNode *previousSibling; + DOMNode *nextSibling; + + DOMChildNode(); + DOMChildNode(const DOMChildNode &other); + ~DOMChildNode(); + + DOMNode * getNextSibling() const; + DOMNode * getParentNode(const DOMNode *thisNode) const; + DOMNode * getPreviousSibling(const DOMNode *thisNode) const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMChildNode & operator = (const DOMChildNode &); +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMCommentImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMCommentImpl.hpp new file mode 100644 index 000000000000..45c6eedcc209 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMCommentImpl.hpp @@ -0,0 +1,89 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCOMMENTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCOMMENTIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#include +#include + +#include "DOMNodeBase.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMChildNode.hpp" +#include "DOMCharacterDataImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMCommentImpl: public DOMComment, public HasDOMNodeImpl, public HasDOMChildImpl { +public: + DOMNodeImpl fNode; + DOMChildNode fChild; + DOMCharacterDataImpl fCharacterData; + +public: + DOMCommentImpl(DOMDocument *, const XMLCh *); + DOMCommentImpl(const DOMCommentImpl &other, bool deep); + virtual ~DOMCommentImpl(); + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMCHILDIMPL_DECL; + +public: + // Functions from DOMCharacterData + virtual void appendData(const XMLCh *data); + virtual void deleteData(XMLSize_t offset, XMLSize_t count); + virtual const XMLCh * getData() const; + virtual XMLSize_t getLength() const; + virtual void insertData(XMLSize_t offset, const XMLCh * data); + virtual void replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh * data); + virtual void setData(const XMLCh * arg); + virtual const XMLCh * substringData(XMLSize_t offset, XMLSize_t count) const; + + // Non standard extension for the range to work + DOMComment* splitText(XMLSize_t offset); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMCommentImpl & operator = (const DOMCommentImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMConfigurationImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMConfigurationImpl.hpp new file mode 100644 index 000000000000..91033a1524dd --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMConfigurationImpl.hpp @@ -0,0 +1,150 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#if !defined(XERCESC_INCLUDE_GUARD_DOMCONFIGURATIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMCONFIGURATIONIMPL_HPP + +//------------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------------ +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMDocumentImpl; +class DOMStringListImpl; + +class CDOM_EXPORT DOMConfigurationImpl : public DOMConfiguration +{ +private: + //unimplemented + DOMConfigurationImpl(const DOMConfiguration &); + DOMConfigurationImpl & operator = (const DOMConfiguration &); + + +public: + + //----------------------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------------------- + DOMConfigurationImpl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~DOMConfigurationImpl(); + + enum DOMConfigurationFeature { + FEATURE_CANONICAL_FORM = 0x0001, + FEATURE_CDATA_SECTIONS = 0x0002, + FEATURE_COMMENTS = 0x0004, + FEATURE_DATATYPE_NORMALIZATION = 0x0008, + FEATURE_DISCARD_DEFAULT_CONTENT = 0x0010, + FEATURE_ENTITIES = 0x0020, + FEATURE_INFOSET = 0x0040, + FEATURE_NAMESPACES = 0x0080, + FEATURE_NAMESPACE_DECLARATIONS = 0x0100, + FEATURE_NORMALIZE_CHARACTERS = 0x0200, + FEATURE_SPLIT_CDATA_SECTIONS = 0x0400, + FEATURE_VALIDATE = 0x0800, + FEATURE_VALIDATE_IF_SCHEMA = 0x1000, + FEATURE_ELEMENT_CONTENT_WHITESPACE = 0x2000 + }; + + unsigned short featureValues; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + virtual void setParameter(const XMLCh* name, const void* value); + virtual void setParameter(const XMLCh* name, bool value); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + virtual const void* getParameter(const XMLCh* name) const; + + + // ----------------------------------------------------------------------- + // Query methods + // ----------------------------------------------------------------------- + + virtual bool canSetParameter(const XMLCh* name, const void* value) const; + virtual bool canSetParameter(const XMLCh* name, bool value) const; + + virtual const DOMStringList* getParameterNames() const; + + // --------------------------------------------------------------------------- + // Impl specific methods + // --------------------------------------------------------------------------- + + /* specific get and set methods for non-boolean parameters + * */ + + DOMErrorHandler* getErrorHandler() const; + + const XMLCh* getSchemaType() const; + + const XMLCh* getSchemaLocation() const; + + void setErrorHandler(DOMErrorHandler *erHandler); + + void setSchemaType(const XMLCh* st); + + void setSchemaLocation(const XMLCh* sl); + + // The default values for the boolean parameters + // from CANONICAL_FORM to ELEMENT_CONTENT_WHITESPACE + // 10010110010110 = 0x2596 + static const unsigned short fDEFAULT_VALUES; + + +protected: + // implements a simple map between the name and its enum value + DOMConfigurationFeature getFeatureFlag(const XMLCh* name) const; + + // the error handler + DOMErrorHandler* fErrorHandler; + + // the schema type + const XMLCh* fSchemaType; + + // the schema location + const XMLCh* fSchemaLocation; + + // the list of supported parameters + DOMStringListImpl* fSupportedParameters; + + MemoryManager* fMemoryManager; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DOMConfigurationImpl.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDeepNodeListImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDeepNodeListImpl.hpp new file mode 100644 index 000000000000..9b040dadc962 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDeepNodeListImpl.hpp @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDEEPNODELISTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDEEPNODELISTIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNode; + + +class CDOM_EXPORT DOMDeepNodeListImpl: public DOMNodeList { +protected: + const DOMNode* fRootNode; + const XMLCh* fTagName; + bool fMatchAll; + int fChanges; + DOMNode* fCurrentNode; + XMLSize_t fCurrentIndexPlus1; + + //DOM Level 2 + const XMLCh* fNamespaceURI; + bool fMatchAllURI; + bool fMatchURIandTagname; //match both namespaceURI and tagName + +public: + DOMDeepNodeListImpl(const DOMNode *rootNode, const XMLCh *tagName); + DOMDeepNodeListImpl(const DOMNode *rootNode, //DOM Level 2 + const XMLCh *namespaceURI, + const XMLCh *localName); + virtual ~DOMDeepNodeListImpl(); + virtual XMLSize_t getLength() const; + virtual DOMNode* item(XMLSize_t index) const; + DOMNode* cacheItem(XMLSize_t index); + +protected: + DOMNode* nextMatchingElementAfter(DOMNode *current); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMDeepNodeListImpl(const DOMDeepNodeListImpl &); + DOMDeepNodeListImpl & operator = (const DOMDeepNodeListImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDeepNodeListPool.c b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDeepNodeListPool.c new file mode 100644 index 000000000000..7b3521d53de1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDeepNodeListPool.c @@ -0,0 +1,428 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#include +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + + +// --------------------------------------------------------------------------- +// DOMDeepNodeListPool: Constructors and Destructor +// --------------------------------------------------------------------------- +template +DOMDeepNodeListPool::DOMDeepNodeListPool( const XMLSize_t modulus + , const bool adoptElems + , const XMLSize_t initSize) : + fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) + , fMemoryManager(XMLPlatformUtils::fgMemoryManager) +{ + initialize(modulus); + + // + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + + fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*));//new TVal*[fIdPtrsCount]; + fIdPtrs[0] = 0; +} + +template +DOMDeepNodeListPool::DOMDeepNodeListPool( const XMLSize_t modulus + , const bool adoptElems + , const THasher& hasher + , const XMLSize_t initSize) : + fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) + , fMemoryManager(XMLPlatformUtils::fgMemoryManager) + , fHasher(hasher) +{ + initialize(modulus); + + // + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + + fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*));//new TVal*[fIdPtrsCount]; + fIdPtrs[0] = 0; +} + +template +DOMDeepNodeListPool::DOMDeepNodeListPool( const XMLSize_t modulus + , const XMLSize_t initSize) : + fAdoptedElems(true) + , fBucketList(0) + , fHashModulus(modulus) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) + , fMemoryManager(XMLPlatformUtils::fgMemoryManager) +{ + initialize(modulus); + + // + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + + fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*));//new TVal*[fIdPtrsCount]; + fIdPtrs[0] = 0; +} + +template +void DOMDeepNodeListPool::initialize(const XMLSize_t modulus) +{ + if (modulus == 0) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); + + // Allocate the bucket list and zero them + fBucketList = (DOMDeepNodeListPoolTableBucketElem**) + fMemoryManager->allocate + ( + fHashModulus * sizeof(DOMDeepNodeListPoolTableBucketElem*) + );//new DOMDeepNodeListPoolTableBucketElem*[fHashModulus]; + for (XMLSize_t index = 0; index < fHashModulus; index++) + fBucketList[index] = 0; +} + +template +DOMDeepNodeListPool::~DOMDeepNodeListPool() +{ + removeAll(); + + // Then delete the bucket list & hasher & id pointers list + fMemoryManager->deallocate(fIdPtrs);//delete [] fIdPtrs; + fMemoryManager->deallocate(fBucketList);//delete [] fBucketList; +} + + +// --------------------------------------------------------------------------- +// DOMDeepNodeListPool: Element management +// --------------------------------------------------------------------------- +template +bool DOMDeepNodeListPool::isEmpty() const +{ + // Just check the bucket list for non-empty elements + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + if (fBucketList[buckInd] != 0) + return false; + } + return true; +} + +template +bool DOMDeepNodeListPool::containsKey( const void* const key1 + , const XMLCh* const key2 + , const XMLCh* const key3) const +{ + XMLSize_t hashVal; + const DOMDeepNodeListPoolTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); + return (findIt != 0); +} + +template +void DOMDeepNodeListPool::removeAll() +{ + if (fIdCounter == 0) return; + + // Clean up the buckets first + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + // Get the bucket list head for this entry + DOMDeepNodeListPoolTableBucketElem* curElem = fBucketList[buckInd]; + DOMDeepNodeListPoolTableBucketElem* nextElem; + while (curElem) + { + // Save the next element before we hose this one + nextElem = curElem->fNext; + + // If we adopted the data, then delete it too + // (Note: the userdata hash table instance has data type of void *. + // This will generate compiler warnings here on some platforms, but they + // can be ignored since fAdoptedElements is false. + if (fAdoptedElems) + delete curElem->fData; + + // Then delete the current element and move forward + fMemoryManager->deallocate(curElem->fKey2);//delete [] curElem->fKey2; + fMemoryManager->deallocate(curElem->fKey3);//delete [] curElem->fKey3; + + delete curElem; + curElem = nextElem; + } + + // Clean out this entry + fBucketList[buckInd] = 0; + } + + // Reset the id counter + fIdCounter = 0; +} + +template +void DOMDeepNodeListPool::cleanup() +{ + removeAll(); + + // Then delete the bucket list & hasher & id pointers list + fMemoryManager->deallocate(fIdPtrs);//delete [] fIdPtrs; + fMemoryManager->deallocate(fBucketList);//delete [] fBucketList; +} + + + +// --------------------------------------------------------------------------- +// DOMDeepNodeListPool: Getters +// --------------------------------------------------------------------------- +template +TVal* +DOMDeepNodeListPool::getByKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3) +{ + XMLSize_t hashVal; + DOMDeepNodeListPoolTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); + if (!findIt) + return 0; + return findIt->fData; +} + +template +const TVal* +DOMDeepNodeListPool::getByKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3) const +{ + XMLSize_t hashVal; + const DOMDeepNodeListPoolTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); + if (!findIt) + return 0; + return findIt->fData; +} + +template +TVal* +DOMDeepNodeListPool::getById(const XMLSize_t elemId) +{ + // If its either zero or beyond our current id, its an error + if (!elemId || (elemId > fIdCounter)) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); + + return fIdPtrs[elemId]; +} + +template +const TVal* +DOMDeepNodeListPool::getById(const XMLSize_t elemId) const +{ + // If its either zero or beyond our current id, its an error + if (!elemId || (elemId > fIdCounter)) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); + + return fIdPtrs[elemId]; +} + +// --------------------------------------------------------------------------- +// DOMDeepNodeListPool: Putters +// --------------------------------------------------------------------------- +template +XMLSize_t +DOMDeepNodeListPool::put(void* key1, XMLCh* key2, XMLCh* key3, TVal* const valueToAdopt) +{ + // First see if the key exists already + XMLSize_t hashVal; + DOMDeepNodeListPoolTableBucketElem* newBucket = findBucketElem(key1, key2, key3, hashVal); + + // + // If so,then update its value. If not, then we need to add it to + // the right bucket + // + if (newBucket) + { + if (fAdoptedElems) + delete newBucket->fData; + + fMemoryManager->deallocate(newBucket->fKey2);//delete[] newBucket->fKey2; + fMemoryManager->deallocate(newBucket->fKey3);//delete[] newBucket->fKey3; + + newBucket->fData = valueToAdopt; + newBucket->fKey1 = key1; + newBucket->fKey2 = XMLString::replicate(key2, fMemoryManager); + newBucket->fKey3 = XMLString::replicate(key3, fMemoryManager); + } + else + { + // Revisit: the gcc compiler 2.95.x is generating an + // internal compiler error message. So we use the default + // memory manager for now. +#if defined (XML_GCC_VERSION) && (XML_GCC_VERSION < 29600) + newBucket = new DOMDeepNodeListPoolTableBucketElem + ( + key1 + , key2 + , key3 + , valueToAdopt + , fBucketList[hashVal] + , fMemoryManager + ); +#else + newBucket = new (fMemoryManager) DOMDeepNodeListPoolTableBucketElem + ( + key1 + , key2 + , key3 + , valueToAdopt + , fBucketList[hashVal] + , fMemoryManager + ); +#endif + fBucketList[hashVal] = newBucket; + } + + // + // Give this new one the next available id and add to the pointer list. + // Expand the list if that is now required. + // + if (fIdCounter + 1 == fIdPtrsCount) + { + // Create a new count 1.5 times larger and allocate a new array + XMLSize_t newCount = (XMLSize_t)(fIdPtrsCount * 1.5); + TVal** newArray = (TVal**) fMemoryManager->allocate + ( + newCount * sizeof(TVal*) + );//new TVal*[newCount]; + + // Copy over the old contents to the new array + memcpy(newArray, fIdPtrs, fIdPtrsCount * sizeof(TVal*)); + + // Ok, toss the old array and store the new data + fMemoryManager->deallocate(fIdPtrs); //delete [] fIdPtrs; + fIdPtrs = newArray; + fIdPtrsCount = newCount; + } + const XMLSize_t retId = ++fIdCounter; + fIdPtrs[retId] = valueToAdopt; + + // Return the id that we gave to this element + return retId; +} + +// --------------------------------------------------------------------------- +// DOMDeepNodeListPool: Private methods +// --------------------------------------------------------------------------- +template +DOMDeepNodeListPoolTableBucketElem* DOMDeepNodeListPool:: +findBucketElem(const void* const key1, const XMLCh* const key2, const XMLCh* const key3, XMLSize_t& hashVal) +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + DOMDeepNodeListPoolTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + //key2 and key3 are XMLCh*, compareString takes null pointer vs zero len string the same + //but we need them to be treated as different keys in this case + if (fHasher.equals(key1, curElem->fKey1) && (XMLString::equals(key2, curElem->fKey2)) && (XMLString::equals(key3, curElem->fKey3))) { + if (!key2 || !curElem->fKey2) { + if (key2 || curElem->fKey2) { + curElem = curElem->fNext; + continue; + } + } + if (!key3 || !curElem->fKey3) { + if (key3 || curElem->fKey3) { + curElem = curElem->fNext; + continue; + } + } + + return curElem; + } + + curElem = curElem->fNext; + } + return 0; +} + +template +const DOMDeepNodeListPoolTableBucketElem* DOMDeepNodeListPool:: +findBucketElem(const void* const key1, const XMLCh* const key2, const XMLCh* const key3, XMLSize_t& hashVal) const +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + const DOMDeepNodeListPoolTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + //key2 and key3 are XMLCh*, compareString takes null pointer vs zero len string the same + //but we need them to be treated as different keys in this case + if (fHasher.equals(key1, curElem->fKey1) && (XMLString::equals(key2, curElem->fKey2)) && (XMLString::equals(key3, curElem->fKey3))) { + if (!key2 || !curElem->fKey2) { + if (key2 || curElem->fKey2) { + curElem = curElem->fNext; + continue; + } + } + if (!key3 || !curElem->fKey3) { + if (key3 || curElem->fKey3) { + curElem = curElem->fNext; + continue; + } + } + return curElem; + } + + curElem = curElem->fNext; + } + return 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDeepNodeListPool.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDeepNodeListPool.hpp new file mode 100644 index 000000000000..5eecc36e13b3 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDeepNodeListPool.hpp @@ -0,0 +1,200 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDEEPNODELISTPOOL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDEEPNODELISTPOOL_HPP + + +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This should really be a nested class, but some of the compilers we +// have to support cannot deal with that! +// +template +struct DOMDeepNodeListPoolTableBucketElem : public XMemory +{ + DOMDeepNodeListPoolTableBucketElem + ( + void* key1 + , XMLCh* key2 + , XMLCh* key3 + , TVal* const value + , DOMDeepNodeListPoolTableBucketElem* next + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) : + fData(value) + , fNext(next) + , fKey1(key1) + , fKey2(0) + , fKey3(0) + { + if (key2) + fKey2 = XMLString::replicate(key2, manager); + + if (key3) + fKey3 = XMLString::replicate(key3, manager); + } + + TVal* fData; + DOMDeepNodeListPoolTableBucketElem* fNext; + void* fKey1; + XMLCh* fKey2; + XMLCh* fKey3; + + ~DOMDeepNodeListPoolTableBucketElem() {}; +}; + + +template +class DOMDeepNodeListPool +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DOMDeepNodeListPool + ( + const XMLSize_t modulus + , const XMLSize_t initSize = 128 + ); + + DOMDeepNodeListPool + ( + const XMLSize_t modulus + , const bool adoptElems + , const XMLSize_t initSize = 128 + ); + + DOMDeepNodeListPool + ( + const XMLSize_t modulus + , const bool adoptElems + , const THasher& hasher + , const XMLSize_t initSize = 128 + ); + + ~DOMDeepNodeListPool(); + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + bool isEmpty() const; + bool containsKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3) const; + void removeAll(); + void cleanup(); + + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + TVal* getByKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3); + const TVal* getByKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3) const; + + TVal* getById(const XMLSize_t elemId); + const TVal* getById(const XMLSize_t elemId) const; + + // ----------------------------------------------------------------------- + // Putters + // ----------------------------------------------------------------------- + XMLSize_t put(void* key1, XMLCh* key2, XMLCh* key3, TVal* const valueToAdopt); + +private: + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + DOMDeepNodeListPoolTableBucketElem* findBucketElem(const void* const key1, const XMLCh* const key2, const XMLCh* const key3, XMLSize_t& hashVal); + const DOMDeepNodeListPoolTableBucketElem* findBucketElem(const void* const key1, const XMLCh* const key2, const XMLCh* const key3, XMLSize_t& hashVal) const; + void initialize(const XMLSize_t modulus); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMDeepNodeListPool(const DOMDeepNodeListPool &); + DOMDeepNodeListPool & operator = (const DOMDeepNodeListPool &); + + // ----------------------------------------------------------------------- + // Data members + // + // fAdoptedElems + // Indicates whether the values added are adopted or just referenced. + // If adopted, then they are deleted when they are removed from the + // hash table. + // + // fBucketList + // This is the array that contains the heads of all of the list + // buckets, one for each possible hash value. + // + // fHashModulus + // The modulus used for this hash table, to hash the keys. This is + // also the number of elements in the bucket list. + // + // fHash + // The hasher for the key1 data type. + // + // fIdPtrs + // fIdPtrsCount + // This is the array of pointers to the bucket elements in order of + // their assigned ids. So taking id N and referencing this array + // gives you the element with that id. The count field indicates + // the current size of this list. When fIdCounter+1 reaches this + // value the list must be expanded. + // + // fIdCounter + // This is used to give out unique ids to added elements. It starts + // at zero (which means empty), and is bumped up for each newly added + // element. So the first element is 1, the next is 2, etc... This + // means that this value is set to the top index of the fIdPtrs array. + // ----------------------------------------------------------------------- + bool fAdoptedElems; + DOMDeepNodeListPoolTableBucketElem** fBucketList; + XMLSize_t fHashModulus; + TVal** fIdPtrs; + XMLSize_t fIdPtrsCount; + XMLSize_t fIdCounter; + MemoryManager* fMemoryManager; + THasher fHasher; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDocumentFragmentImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDocumentFragmentImpl.hpp new file mode 100644 index 000000000000..dfdd626efddb --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDocumentFragmentImpl.hpp @@ -0,0 +1,75 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTFRAGMENTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENTFRAGMENTIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include +#include "DOMNodeBase.hpp" +#include "DOMParentNode.hpp" +#include "DOMNodeImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMDocumentFragmentImpl: public DOMDocumentFragment, + public HasDOMNodeImpl, public HasDOMParentImpl { +protected: + DOMNodeImpl fNode; + DOMParentNode fParent; + +protected: + DOMDocumentFragmentImpl(DOMDocument *); + DOMDocumentFragmentImpl(const DOMDocumentFragmentImpl &other, bool deep); + friend class DOMDocumentImpl; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMDocumentFragmentImpl & operator = (const DOMDocumentFragmentImpl &); + +public: + virtual ~DOMDocumentFragmentImpl(); + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMPARENTIMPL_DECL; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDocumentImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDocumentImpl.hpp new file mode 100644 index 000000000000..c748e0ad0dad --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDocumentImpl.hpp @@ -0,0 +1,518 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENTIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "DOMNodeBase.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMStringPool.hpp" +#include "DOMParentNode.hpp" +#include "DOMDeepNodeListPool.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMAttrImpl; +class DOMCDATASectionImpl; +class DOMCommentImpl; +class DOMConfiguration; +class DOMDeepNodeListImpl; +class DOMDocumentFragmentImpl; +class DOMDocumentTypeImpl; +class DOMElementImpl; +class DOMEntityImpl; +class DOMEntityReferenceImpl; +class DOMNotationImpl; +class DOMProcessingInstructionImpl; +class DOMTextImpl; +class DOMNodeIteratorImpl; +class DOMNormalizer; +class DOMTreeWalkerImpl; +class DOMNodeFilter; +class DOMNodeFilterImpl; +class DOMImplementation; +class DOMNodeIDMap; +class DOMRangeImpl; +class DOMBuffer; +class MemoryManager; +class XPathNSResolver; +class XPathExpression; + +typedef RefVectorOf Ranges; +typedef RefVectorOf NodeIterators; +typedef KeyRefPair DOMUserDataRecord; +typedef RefStackOf DOMNodePtr; + +class CDOM_EXPORT DOMDocumentImpl: public XMemory, public DOMMemoryManager, public DOMDocument, + public HasDOMNodeImpl, public HasDOMParentImpl { +public: + // ----------------------------------------------------------------------- + // data + // ----------------------------------------------------------------------- + DOMNodeImpl fNode; // Implements common node functionality. + DOMParentNode fParent; // Implements common parent node functionality + DOMNodeIDMap* fNodeIDMap; // for use by GetElementsById(). + +public: + DOMDocumentImpl(DOMImplementation* domImpl, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + DOMDocumentImpl(const XMLCh* namespaceURI, //DOM Level 2 + const XMLCh* qualifiedName, + DOMDocumentType* doctype, + DOMImplementation* domImpl, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~DOMDocumentImpl(); + + void setDocumentType(DOMDocumentType *doctype); + +public: + // Add all functions that are pure virtual in DOMNODE + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMPARENTIMPL_DECL; + +public: + // Add all functions that are pure virtual in DOMDocument + virtual DOMAttr* createAttribute(const XMLCh *name); + virtual DOMCDATASection* createCDATASection(const XMLCh *data); + virtual DOMComment* createComment(const XMLCh *data); + virtual DOMDocumentFragment* createDocumentFragment(); + virtual DOMDocumentType* createDocumentType(const XMLCh *name); + virtual DOMDocumentType* createDocumentType(const XMLCh *qName, + const XMLCh *publicId, + const XMLCh *systemId); + virtual DOMElement* createElement(const XMLCh * tagName); + virtual DOMElement* createElementNoCheck(const XMLCh *tagName); + virtual DOMEntity* createEntity(const XMLCh * name); + virtual DOMEntityReference* createEntityReference(const XMLCh * name); + virtual DOMNotation* createNotation(const XMLCh * name); + virtual DOMProcessingInstruction* createProcessingInstruction(const XMLCh * target, const XMLCh * data); + virtual DOMText* createTextNode(const XMLCh * data); + virtual DOMDocumentType* getDoctype() const; + virtual DOMElement* getDocumentElement() const; + virtual DOMNodeList* getElementsByTagName(const XMLCh * tagname) const; + virtual DOMImplementation* getImplementation() const; + bool isXMLName(const XMLCh * s); + virtual DOMNodeIterator* createNodeIterator(DOMNode *root, + DOMNodeFilter::ShowType whatToShow, + DOMNodeFilter* filter, + bool entityReferenceExpansion); + virtual DOMTreeWalker* createTreeWalker(DOMNode *root, + DOMNodeFilter::ShowType whatToShow, + DOMNodeFilter* filter, + bool entityReferenceExpansion); + + + virtual DOMRange* createRange(); + virtual Ranges* getRanges() const; //non-standard api + virtual NodeIterators* getNodeIterators() const; //non-standard api + virtual void removeRange(DOMRangeImpl* range); //non-standard api + virtual void removeNodeIterator(DOMNodeIteratorImpl* nodeIterator); //non-standard api + + virtual DOMXPathExpression* createExpression(const XMLCh *expression, + const DOMXPathNSResolver *resolver); + virtual DOMXPathNSResolver* createNSResolver(const DOMNode *nodeResolver); + virtual DOMXPathResult* evaluate(const XMLCh *expression, + const DOMNode *contextNode, + const DOMXPathNSResolver *resolver, + DOMXPathResult::ResultType type, + DOMXPathResult* result); + + + // Extension to be called by the Parser + DOMEntityReference* createEntityReferenceByParser(const XMLCh * name); + + // Add all functions that are pure virtual in DOMMemoryManager + virtual XMLSize_t getMemoryAllocationBlockSize() const; + virtual void setMemoryAllocationBlockSize(XMLSize_t size); + virtual void* allocate(XMLSize_t amount); + virtual void* allocate(XMLSize_t amount, DOMMemoryManager::NodeObjectType type); + // try to remove the block from the list of allocated memory + virtual void release(void* oldBuffer); + virtual void release(DOMNode* object, DOMMemoryManager::NodeObjectType type); + virtual XMLCh* cloneString(const XMLCh *src); + + // + // Functions to keep track of document mutations, so that node list chached + // information can be invalidated. One global changes counter per document. + // + virtual void changed(); + virtual int changes() const; + + /** + * Sets whether the DOM implementation performs error checking + * upon operations. Turning off error checking only affects + * the following DOM checks: + *

    + *
  • Checking strings to make sure that all characters are + * legal XML characters + *
  • Hierarchy checking such as allowed children, checks for + * cycles, etc. + *
+ *

+ * Turning off error checking does not turn off the + * following checks: + *

    + *
  • Read only checks + *
  • Checks related to DOM events + *
+ */ + inline void setErrorChecking(bool check) { + errorChecking = check; + } + + /** + * Returns true if the DOM implementation performs error checking. + */ + inline bool getErrorChecking() const { + return errorChecking; + } + + //Introduced in DOM Level 2 + virtual DOMNode* importNode(const DOMNode *source, bool deep); + virtual DOMElement* createElementNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName); + virtual DOMElement* createElementNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName, + const XMLFileLoc lineNo, + const XMLFileLoc columnNo); + virtual DOMAttr* createAttributeNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName); + virtual DOMNodeList* getElementsByTagNameNS(const XMLCh *namespaceURI, + const XMLCh *localName) const; + virtual DOMElement* getElementById(const XMLCh *elementId) const; + + //Introduced in DOM Level 3 + virtual const XMLCh* getInputEncoding() const; + virtual const XMLCh* getXmlEncoding() const; + virtual bool getXmlStandalone() const; + virtual void setXmlStandalone(bool standalone); + virtual const XMLCh* getXmlVersion() const; + virtual void setXmlVersion(const XMLCh* version); + virtual const XMLCh* getDocumentURI() const; + virtual void setDocumentURI(const XMLCh* documentURI); + virtual bool getStrictErrorChecking() const; + virtual void setStrictErrorChecking(bool strictErrorChecking); + virtual DOMNode* adoptNode(DOMNode* source); + virtual void normalizeDocument(); + virtual DOMConfiguration* getDOMConfig() const; + + void setInputEncoding(const XMLCh* actualEncoding); + void setXmlEncoding(const XMLCh* encoding); + // helper functions to prevent storing userdata pointers on every node. + void* setUserData(DOMNodeImpl* n, + const XMLCh* key, + void* data, + DOMUserDataHandler* handler); + void* getUserData(const DOMNodeImpl* n, + const XMLCh* key) const; + void callUserDataHandlers(const DOMNodeImpl* n, + DOMUserDataHandler::DOMOperationType operation, + const DOMNode* src, + DOMNode* dst) const; + void transferUserData(DOMNodeImpl* n1, DOMNodeImpl* n2); + + DOMNode* renameNode(DOMNode* n, + const XMLCh* namespaceURI, + const XMLCh* name); + + //Return the index > 0 of ':' in the given qualified name qName="prefix:localName". + //Return 0 if there is no ':', or -1 if qName is malformed such as ":abcd". + static int indexofQualifiedName(const XMLCh * qName); + static bool isKidOK(const DOMNode *parent, const DOMNode *child); + + inline DOMNodeIDMap* getNodeIDMap() {return fNodeIDMap;}; + + + // + // Memory Management Functions. All memory is allocated by and owned by + // a document, and is not recovered until the + // document itself is deleted. + // + const XMLCh* getPooledString(const XMLCh*); + const XMLCh* getPooledNString(const XMLCh*, XMLSize_t); + void deleteHeap(); + void releaseDocNotifyUserData(DOMNode* object); + void releaseBuffer(DOMBuffer* buffer); + DOMBuffer* popBuffer(XMLSize_t nMinSize); + MemoryManager* getMemoryManager() const; + + // Factory methods for getting/creating node lists. + // Because nothing is ever deleted, the implementation caches and recycles + // previously used instances of DOMDeepNodeList + // + DOMNodeList* getDeepNodeList(const DOMNode *rootNode, const XMLCh *tagName); + DOMNodeList* getDeepNodeList(const DOMNode *rootNode, //DOM Level 2 + const XMLCh *namespaceURI, + const XMLCh *localName); + +protected: + //Internal helper functions + virtual DOMNode* importNode(const DOMNode *source, bool deep, bool cloningNode); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMDocumentImpl(const DOMDocumentImpl &); + DOMDocumentImpl & operator = (const DOMDocumentImpl &); + +protected: + // ----------------------------------------------------------------------- + // data + // ----------------------------------------------------------------------- + // New data introduced in DOM Level 3 + const XMLCh* fInputEncoding; + const XMLCh* fXmlEncoding; + bool fXmlStandalone; + const XMLCh* fXmlVersion; + const XMLCh* fDocumentURI; + DOMConfiguration* fDOMConfiguration; + + XMLStringPool fUserDataTableKeys; + RefHash2KeysTableOf* fUserDataTable; + + + // Per-Document heap Variables. + // The heap consists of one or more biggish blocks which are + // sub-allocated for individual allocations of nodes, strings, etc. + // The big blocks form a linked list, allowing them to be located for deletion. + // + // There is no provision for deleting suballocated blocks, other than + // deleting the entire heap when the document is deleted. + // + // There is no header on individual sub-allocated blocks. + // The header on big blocks consists only of a single back pointer to + // the previously allocated big block (our linked list of big blocks) + // + // + // revisit - this heap should be encapsulated into its own + // class, rather than hanging naked on Document. + // + void* fCurrentBlock; + void* fCurrentSingletonBlock; + char* fFreePtr; + XMLSize_t fFreeBytesRemaining, + fHeapAllocSize; + + // To recycle the DOMNode pointer + RefArrayOf* fRecycleNodePtr; + + // To recycle DOMBuffer pointer + RefStackOf* fRecycleBufferPtr; + + // Pool of DOMNodeList for getElementsByTagName + DOMDeepNodeListPool* fNodeListPool; + + // Other data + DOMDocumentType* fDocType; + DOMElement* fDocElement; + + DOMStringPoolEntry** fNameTable; + XMLSize_t fNameTableSize; + + DOMNormalizer* fNormalizer; + Ranges* fRanges; + NodeIterators* fNodeIterators; + MemoryManager* fMemoryManager; // configurable memory manager + DOMImplementation* fDOMImplementation; + + int fChanges; + bool errorChecking; // Bypass error checking. + +}; + +inline MemoryManager* DOMDocumentImpl::getMemoryManager() const +{ + return fMemoryManager; +} + +inline const XMLCh* DOMDocumentImpl::getPooledString(const XMLCh *in) +{ + if (in == 0) + return 0; + XMLSize_t n = XMLString::stringLen(in); + + DOMStringPoolEntry **pspe; + DOMStringPoolEntry *spe; + + XMLSize_t inHash = XMLString::hash(in, fNameTableSize); + pspe = &fNameTable[inHash]; + while (*pspe != 0) + { + if ((*pspe)->fLength == n && XMLString::equals((*pspe)->fString, in)) + return (*pspe)->fString; + pspe = &((*pspe)->fNext); + } + + // This string hasn't been seen before. Add it to the pool. + // + + // Compute size to allocate. Note that there's 1 char of string + // declared in the struct, so we don't need to add one again to + // account for the trailing null. + // + XMLSize_t sizeToAllocate = sizeof(DOMStringPoolEntry) + n*sizeof(XMLCh); + *pspe = spe = (DOMStringPoolEntry *)allocate(sizeToAllocate); + spe->fLength = n; + spe->fNext = 0; + XMLString::copyString((XMLCh*)spe->fString, in); + + return spe->fString; +} + +inline const XMLCh* DOMDocumentImpl::getPooledNString(const XMLCh *in, XMLSize_t n) +{ + if (in == 0) + return 0; + + DOMStringPoolEntry **pspe; + DOMStringPoolEntry *spe; + + XMLSize_t inHash = XMLString::hashN(in, n, fNameTableSize); + pspe = &fNameTable[inHash]; + while (*pspe != 0) + { + if ((*pspe)->fLength == n && XMLString::equalsN((*pspe)->fString, in, n)) + return (*pspe)->fString; + pspe = &((*pspe)->fNext); + } + + // This string hasn't been seen before. Add it to the pool. + // + + // Compute size to allocate. Note that there's 1 char of string + // declared in the struct, so we don't need to add one again to + // account for the trailing null. + // + XMLSize_t sizeToAllocate = sizeof(DOMStringPoolEntry) + n*sizeof(XMLCh); + *pspe = spe = (DOMStringPoolEntry *)allocate(sizeToAllocate); + spe->fLength = n; + spe->fNext = 0; + XMLString::copyNString((XMLCh*)spe->fString, in, n); + + return spe->fString; +} + +inline int DOMDocumentImpl::indexofQualifiedName(const XMLCh* name) +{ + int i = 0; + int colon = -1; + int colon_count = 0; + for (; *name != 0; ++i, ++name) + { + if (*name == chColon) + { + ++colon_count; + colon = i; + } + } + + if (i == 0 || colon == 0 || colon == (i - 1) || colon_count > 1) + return -1; + + return colon != -1 ? colon : 0; +} + +XERCES_CPP_NAMESPACE_END + +// --------------------------------------------------------------------------- +// +// Operator new. Global overloaded version, lets any object be allocated on +// the heap owned by a document. +// +// --------------------------------------------------------------------------- +inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl *doc, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType type) +{ + void *p = doc->allocate(amt, type); + return p; +} + +inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType type) +{ + XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager* mgr=(XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager*)doc->getFeature(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercescInterfaceDOMMemoryManager,0); + void* p=0; + if(mgr) + p = mgr->allocate(amt, type); + return p; +} + +inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl *doc) +{ + void* p = doc->allocate(amt); + return p; +} + +inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc) +{ + XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager* mgr=(XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager*)doc->getFeature(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercescInterfaceDOMMemoryManager,0); + void* p=0; + if(mgr) + p = mgr->allocate(amt); + return p; +} + +// --------------------------------------------------------------------------- +// For DOM: +// Bypass compiler warning: +// no matching operator delete found; memory will not be freed if initialization throws an exception +// --------------------------------------------------------------------------- +#if !defined(XERCES_NO_MATCHING_DELETE_OPERATOR) +inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl * /*doc*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType /*type*/) +{ + return; +} +inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * /*doc*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType /*type*/) +{ + return; +} + +inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl * /*doc*/) +{ + return; +} +inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * /*doc*/) +{ + return; +} +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDocumentTypeImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDocumentTypeImpl.hpp new file mode 100644 index 000000000000..3c3ba497605e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMDocumentTypeImpl.hpp @@ -0,0 +1,114 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTTYPEIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMDOCUMENTTYPEIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + + +#include +#include +#include "DOMNodeBase.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMChildNode.hpp" +#include "DOMParentNode.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNamedNodeMapImpl; + +class CDOM_EXPORT DOMDocumentTypeImpl: public DOMDocumentType, + public HasDOMNodeImpl, public HasDOMParentImpl, public HasDOMChildImpl { +protected: + DOMNodeImpl fNode; + DOMParentNode fParent; + DOMChildNode fChild; + + const XMLCh * fName; + DOMNamedNodeMapImpl* fEntities; + DOMNamedNodeMapImpl* fNotations; + DOMNamedNodeMapImpl* fElements; + const XMLCh * fPublicId; + const XMLCh * fSystemId; + const XMLCh * fInternalSubset; + + bool fIntSubsetReading; + bool fIsCreatedFromHeap; + + virtual void setPublicId(const XMLCh * value); + virtual void setSystemId(const XMLCh * value); + virtual void setInternalSubset(const XMLCh *value); + bool isIntSubsetReading() const; + + friend class AbstractDOMParser; + friend class DOMDocumentImpl; + +public: + DOMDocumentTypeImpl(DOMDocument *, const XMLCh *, bool); + DOMDocumentTypeImpl(DOMDocument *, + const XMLCh *qualifiedName, //DOM Level 2 + const XMLCh *publicId, const XMLCh *systemId, bool); + DOMDocumentTypeImpl(const DOMDocumentTypeImpl &other, bool heap, bool deep=false); + virtual ~DOMDocumentTypeImpl(); + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMPARENTIMPL_DECL; + DOMCHILDIMPL_DECL; + +public: + virtual void setOwnerDocument(DOMDocument *doc); + virtual DOMNamedNodeMap * getEntities() const; + virtual const XMLCh * getName() const; + virtual DOMNamedNodeMap * getNotations() const; + virtual DOMNamedNodeMap * getElements() const; + virtual void setReadOnly(bool readOnly, bool deep); + + //Introduced in DOM Level 2 + + virtual const XMLCh * getPublicId() const; + virtual const XMLCh * getSystemId() const; + virtual const XMLCh * getInternalSubset() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMDocumentTypeImpl & operator = (const DOMDocumentTypeImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMElementImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMElementImpl.hpp new file mode 100644 index 000000000000..e4eb193ec06e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMElementImpl.hpp @@ -0,0 +1,150 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMELEMENTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMELEMENTIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#include +#include +#include + +#include "DOMNodeBase.hpp" +#include "DOMChildNode.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMParentNode.hpp" + +#include "DOMAttrMapImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMTypeInfo; +class DOMNodeList; +class DOMAttrMapImpl; +class DOMDocument; + + + + +class CDOM_EXPORT DOMElementImpl: public DOMElement, + public HasDOMNodeImpl, public HasDOMParentImpl, public HasDOMChildImpl { +public: + DOMNodeImpl fNode; + DOMParentNode fParent; + DOMChildNode fChild; + DOMAttrMapImpl *fAttributes; + DOMAttrMapImpl *fDefaultAttributes; + const XMLCh *fName; + +public: + DOMElementImpl(DOMDocument *ownerDoc, const XMLCh *name); + + DOMElementImpl(const DOMElementImpl &other, bool deep=false); + virtual ~DOMElementImpl(); + +public: + // Declare functions from DOMNode. They all must be implemented by this class + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMPARENTIMPL_DECL; + DOMCHILDIMPL_DECL; + +public: + // Functions introduced on Element... + virtual const XMLCh* getAttribute(const XMLCh *name) const; + virtual DOMAttr* getAttributeNode(const XMLCh *name) const; + virtual DOMNodeList* getElementsByTagName(const XMLCh *tagname) const; + virtual const XMLCh* getTagName() const; + virtual void removeAttribute(const XMLCh *name); + virtual DOMAttr* removeAttributeNode(DOMAttr * oldAttr); + virtual void setAttribute(const XMLCh *name, const XMLCh *value); + virtual DOMAttr* setAttributeNode(DOMAttr *newAttr); + virtual void setReadOnly(bool readOnly, bool deep); + + //Introduced in DOM Level 2 + virtual const XMLCh* getAttributeNS(const XMLCh *namespaceURI, + const XMLCh *localName) const; + virtual void setAttributeNS(const XMLCh *namespaceURI, + const XMLCh *qualifiedName, + const XMLCh *value); + virtual void removeAttributeNS(const XMLCh *namespaceURI, + const XMLCh *localName); + virtual DOMAttr* getAttributeNodeNS(const XMLCh *namespaceURI, + const XMLCh *localName) const; + virtual DOMAttr* setAttributeNodeNS(DOMAttr *newAttr); + virtual DOMNodeList* getElementsByTagNameNS(const XMLCh *namespaceURI, + const XMLCh *localName) const; + virtual bool hasAttribute(const XMLCh *name) const; + virtual bool hasAttributeNS(const XMLCh *namespaceURI, + const XMLCh *localName) const; + + //Introduced in DOM level 3 + virtual void setIdAttribute(const XMLCh* name, bool isId); + virtual void setIdAttributeNS(const XMLCh* namespaceURI, const XMLCh* localName, bool isId); + virtual void setIdAttributeNode(const DOMAttr *idAttr, bool isId); + virtual const DOMTypeInfo * getSchemaTypeInfo() const; + + // for handling of default attribute + virtual DOMAttr* setDefaultAttributeNode(DOMAttr *newAttr); + virtual DOMAttr* setDefaultAttributeNodeNS(DOMAttr *newAttr); + virtual DOMAttrMapImpl* getDefaultAttributes() const; + + // helper function for DOM Level 3 renameNode + virtual DOMNode* rename(const XMLCh* namespaceURI, const XMLCh* name); + + // DOMElementTraversal + virtual DOMElement * getFirstElementChild() const; + virtual DOMElement * getLastElementChild() const; + virtual DOMElement * getPreviousElementSibling() const; + virtual DOMElement * getNextElementSibling() const; + virtual XMLSize_t getChildElementCount() const; + +protected: + // default attribute helper functions + virtual void setupDefaultAttributes(); + + // helper function for DOMElementTraversal methods + DOMElement* getFirstElementChild(const DOMNode* n) const; + DOMElement* getLastElementChild(const DOMNode* n) const; + DOMNode* getNextLogicalSibling(const DOMNode* n) const; + DOMNode* getPreviousLogicalSibling(const DOMNode* n) const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMElementImpl & operator = (const DOMElementImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMElementNSImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMElementNSImpl.hpp new file mode 100644 index 000000000000..8e552880f499 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMElementNSImpl.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMELEMENTNSIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMELEMENTNSIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#include "DOMElementImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMTypeInfoImpl; + +class CDOM_EXPORT DOMElementNSImpl: public DOMElementImpl { +protected: + //Introduced in DOM Level 2 + const XMLCh * fNamespaceURI; //namespace URI of this node + const XMLCh * fLocalName; //local part of qualified name + const XMLCh * fPrefix; + const DOMTypeInfoImpl *fSchemaType; + +public: + DOMElementNSImpl(DOMDocument *ownerDoc, const XMLCh *name); + DOMElementNSImpl(DOMDocument *ownerDoc, //DOM Level 2 + const XMLCh *namespaceURI, + const XMLCh *qualifiedName); + DOMElementNSImpl(const DOMElementNSImpl &other, bool deep=false); + + // Fast construction without any checks for name validity. Used in + // parsing. + // + DOMElementNSImpl(DOMDocument *ownerDoc, + const XMLCh *namespaceURI, + const XMLCh *prefix, // Null or empty - no prefix. + const XMLCh *localName, + const XMLCh *qualifiedName); + + virtual DOMNode * cloneNode(bool deep) const; + virtual bool isSupported(const XMLCh *feature, const XMLCh *version) const; + virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const; + + //Introduced in DOM Level 2 + virtual const XMLCh *getNamespaceURI() const; + virtual const XMLCh *getPrefix() const; + virtual const XMLCh *getLocalName() const; + virtual void setPrefix(const XMLCh *prefix); + virtual void release(); + + //Introduced in DOM Level 3 + virtual const DOMTypeInfo * getSchemaTypeInfo() const; + + // helper function for DOM Level 3 renameNode + virtual DOMNode* rename(const XMLCh* namespaceURI, const XMLCh* name); + void setName(const XMLCh* namespaceURI, const XMLCh* name); + + //helper function for DOM Level 3 TypeInfo + virtual void setSchemaTypeInfo(const DOMTypeInfoImpl* typeInfo); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMElementNSImpl & operator = (const DOMElementNSImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMEntityImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMEntityImpl.hpp new file mode 100644 index 000000000000..0c50ecbc4c7d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMEntityImpl.hpp @@ -0,0 +1,112 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMENTITYIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMENTITYIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include "DOMNodeBase.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMParentNode.hpp" +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMEntityReference; + +class CDOM_EXPORT DOMEntityImpl: public DOMEntity, public HasDOMNodeImpl, public HasDOMParentImpl { +protected: + DOMNodeImpl fNode; + DOMParentNode fParent; + + const XMLCh * fName; + const XMLCh * fPublicId; + const XMLCh * fSystemId; + const XMLCh * fNotationName; + DOMEntityReference* fRefEntity; + + // New data introduced in DOM Level 3 + const XMLCh* fInputEncoding; + const XMLCh* fXmlEncoding; + const XMLCh* fXmlVersion; + const XMLCh* fBaseURI; + bool fEntityRefNodeCloned; + + // helper function + void cloneEntityRefTree() const; + + friend class XercesDOMParser; + +public: + DOMEntityImpl(DOMDocument *doc, const XMLCh *eName); + DOMEntityImpl(const DOMEntityImpl &other, bool deep=false); + virtual ~DOMEntityImpl(); + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMPARENTIMPL_DECL; + +public: + virtual const XMLCh * getPublicId() const; + virtual const XMLCh * getSystemId() const; + virtual const XMLCh * getNotationName() const; + virtual void setNotationName(const XMLCh *arg); + virtual void setPublicId(const XMLCh *arg); + virtual void setSystemId(const XMLCh *arg); + + //DOM Level 2 additions. Non standard functions + virtual void setEntityRef(DOMEntityReference *); + virtual DOMEntityReference* getEntityRef() const; + + //Introduced in DOM Level 3 + virtual const XMLCh* getInputEncoding() const; + virtual const XMLCh* getXmlEncoding() const; + virtual const XMLCh* getXmlVersion() const; + virtual void setBaseURI(const XMLCh *arg); + + void setInputEncoding(const XMLCh* actualEncoding); + void setXmlEncoding(const XMLCh* encoding); + void setXmlVersion(const XMLCh* version); +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMEntityImpl & operator = (const DOMEntityImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMEntityReferenceImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMEntityReferenceImpl.hpp new file mode 100644 index 000000000000..4afc436c67ea --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMEntityReferenceImpl.hpp @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMENTITYREFERENCEIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMENTITYREFERENCEIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include +#include "DOMNodeBase.hpp" +#include "DOMParentNode.hpp" +#include "DOMChildNode.hpp" +#include "DOMNodeImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMEntityReferenceImpl: public DOMEntityReference, + public HasDOMNodeImpl, public HasDOMParentImpl, public HasDOMChildImpl +{ +protected: + DOMNodeImpl fNode; + DOMParentNode fParent; + DOMChildNode fChild; + + const XMLCh *fName; + const XMLCh *fBaseURI; + + friend class XercesDOMParser; + +public: + DOMEntityReferenceImpl(DOMDocument *ownerDoc, const XMLCh *entityName); + DOMEntityReferenceImpl(DOMDocument *ownerDoc, const XMLCh *entityName, bool cloneChild); + DOMEntityReferenceImpl(const DOMEntityReferenceImpl &other, bool deep=false); + virtual ~DOMEntityReferenceImpl(); + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMPARENTIMPL_DECL; + DOMCHILDIMPL_DECL; + +public: + virtual void setReadOnly(bool readOnly,bool deep); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMEntityReferenceImpl & operator = (const DOMEntityReferenceImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMErrorImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMErrorImpl.hpp new file mode 100644 index 000000000000..1a83a4c7a013 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMErrorImpl.hpp @@ -0,0 +1,188 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMERRORIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMERRORIMPL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * Introduced in DOM Level 3 + * Implementation of a DOMError interface. + * + * @see DOMError#DOMError + */ + +class CDOM_EXPORT DOMErrorImpl : public DOMError +{ +public: + /** @name Constructors and Destructor */ + //@{ + + /** Constructors */ + DOMErrorImpl(const ErrorSeverity severity); + + DOMErrorImpl + ( + const ErrorSeverity severity + , const XMLCh* const message + , DOMLocator* const location + ); + + DOMErrorImpl + ( + const ErrorSeverity severity + , const XMLCh* type + , const XMLCh* message + , void* relatedData + ); + + /** Desctructor */ + virtual ~DOMErrorImpl(); + + //@} + + // DOMError interface + virtual ErrorSeverity getSeverity() const; + virtual const XMLCh* getMessage() const; + virtual DOMLocator* getLocation() const; + virtual void* getRelatedException() const; + virtual const XMLCh* getType() const; + virtual void* getRelatedData() const; + + // Setters + void setSeverity(const ErrorSeverity severity); + void setMessage(const XMLCh* const message); + void setLocation(DOMLocator* const location); + void setAdoptLocation(const bool value); + void setRelatedException(void* exc) const; + void setType(const XMLCh* type); + void setRelatedData(void* relatedData); + +private: + /* Unimplemented constructors and operators */ + + /* Copy constructor */ + DOMErrorImpl(const DOMErrorImpl&); + + /* Assignment operator */ + DOMErrorImpl& operator=(const DOMErrorImpl&); + +protected: + // ----------------------------------------------------------------------- + // Private data members + // + // fAdoptLocation + // Indicates whether we own the DOMLocator object or not. + // + // fSeverity + // The type of the error. + // + // fMessage + // The error message. + // + // fLocation + // The location info of the error. + // + // fType + // The type of the error. + // + // fRelatedData + // The data related to this error. + // + // ----------------------------------------------------------------------- + bool fAdoptLocation; + ErrorSeverity fSeverity; + const XMLCh* fMessage; + DOMLocator* fLocation; + const XMLCh* fType; + void* fRelatedData; +}; + +// --------------------------------------------------------------------------- +// DOMErrorImpl: Getter methods +// --------------------------------------------------------------------------- +inline DOMError::ErrorSeverity DOMErrorImpl::getSeverity() const +{ + return fSeverity; +} + +inline const XMLCh* DOMErrorImpl::getMessage() const +{ + return fMessage; +} + +inline DOMLocator* DOMErrorImpl::getLocation() const +{ + return fLocation; +} + +inline void* DOMErrorImpl::getRelatedException() const +{ + return 0; +} + +inline const XMLCh* DOMErrorImpl::getType() const +{ + return fType; +} + +inline void* DOMErrorImpl::getRelatedData() const +{ + return fRelatedData; +} + +// --------------------------------------------------------------------------- +// DOMErrorImpl: Setter methods +// --------------------------------------------------------------------------- +inline void DOMErrorImpl::setSeverity(const ErrorSeverity severity) +{ + fSeverity = severity; +} + +inline void DOMErrorImpl::setMessage(const XMLCh* const message) +{ + fMessage = message; +} + +inline void DOMErrorImpl::setAdoptLocation(const bool value) +{ + fAdoptLocation = value; +} + +inline void DOMErrorImpl::setType(const XMLCh* type) +{ + fType = type; +} + +inline void DOMErrorImpl::setRelatedData(void* relatedData) +{ + fRelatedData = relatedData; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMImplementationImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMImplementationImpl.hpp new file mode 100644 index 000000000000..f1ae178ff434 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMImplementationImpl.hpp @@ -0,0 +1,102 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLMsgLoader; + +class CDOM_EXPORT DOMImplementationImpl: public XMemory, + public DOMImplementation, + public DOMImplementationSource +{ +private: + DOMImplementationImpl(const DOMImplementationImpl &); + DOMImplementationImpl & operator = (const DOMImplementationImpl &); + friend class XMLInitializer; + +protected: + DOMImplementationImpl() {}; + +public: + virtual ~DOMImplementationImpl() {}; + static DOMImplementationImpl* getDOMImplementationImpl(); + static XMLMsgLoader* getMsgLoader4DOM(); + + // ------------------------------------------------------------ + // DOMImplementation Virtual interface + // ------------------------------------------------------------ + virtual bool hasFeature(const XMLCh * feature, const XMLCh * version) const; + + // Introduced in DOM Level 2 + virtual DOMDocumentType* createDocumentType(const XMLCh *qualifiedName, + const XMLCh * publicId, + const XMLCh *systemId); + virtual DOMDocument* createDocument(const XMLCh *namespaceURI, + const XMLCh *qualifiedName, + DOMDocumentType *doctype, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // DOM Level 3 + virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const; + + // Non-standard extension + virtual DOMDocument* createDocument(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ------------------------------------------------------------ + // DOMImplementationLS Virtual interface + // ------------------------------------------------------------ + // Introduced in DOM Level 3 + virtual DOMLSParser* createLSParser(const DOMImplementationLSMode mode, + const XMLCh* const schemaType, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager, + XMLGrammarPool* const gramPool = 0); + virtual DOMLSSerializer* createLSSerializer(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual DOMLSInput* createLSInput(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual DOMLSOutput* createLSOutput(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ------------------------------------------------------------ + // DOMImplementationSource Virtual interface + // ------------------------------------------------------------ + virtual DOMImplementation* getDOMImplementation(const XMLCh* features) const; + virtual DOMImplementationList* getDOMImplementationList(const XMLCh* features) const; + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMImplementationListImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMImplementationListImpl.hpp new file mode 100644 index 000000000000..5142a2a6fa88 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMImplementationListImpl.hpp @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLISTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLISTIMPL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMImplementation; + +class CDOM_EXPORT DOMImplementationListImpl: public DOMImplementationList +{ +protected: + RefVectorOf *fList; + +private: + // Unused, and unimplemented constructors, operators, etc. + DOMImplementationListImpl(const DOMImplementationListImpl & other); + DOMImplementationListImpl & operator = (const DOMImplementationListImpl & other); + +public: + DOMImplementationListImpl(); + void add(DOMImplementation* impl); + + virtual ~DOMImplementationListImpl(); + virtual DOMImplementation * item(XMLSize_t index) const; + virtual XMLSize_t getLength() const; + virtual void release(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMLSInputImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMLSInputImpl.hpp new file mode 100644 index 000000000000..759480942dcb --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMLSInputImpl.hpp @@ -0,0 +1,134 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSINPUTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSINPUTIMPL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class CDOM_EXPORT DOMLSInputImpl : public XMemory, public DOMLSInput +{ + +public: + + DOMLSInputImpl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~DOMLSInputImpl(); + + virtual const XMLCh* getStringData() const; + virtual InputSource* getByteStream() const; + virtual const XMLCh* getEncoding() const; + virtual const XMLCh* getPublicId() const; + virtual const XMLCh* getSystemId() const; + virtual const XMLCh* getBaseURI() const; + + virtual void setStringData(const XMLCh* data); + virtual void setByteStream(InputSource* stream); + virtual void setEncoding(const XMLCh* const encodingStr); + virtual void setPublicId(const XMLCh* const publicId); + virtual void setSystemId(const XMLCh* const systemId); + virtual void setBaseURI(const XMLCh* const baseURI); + + virtual void setIssueFatalErrorIfNotFound(bool flag); + virtual bool getIssueFatalErrorIfNotFound() const; + virtual void release(); + + +private: + /** unimplemented copy ctor and assignment operator */ + DOMLSInputImpl(const DOMLSInputImpl&); + DOMLSInputImpl & operator = (const DOMLSInputImpl&); + +protected: + // ----------------------------------------------------------------------- + // Private data members + // + // fStringData + // We don't own it + // + // fByteStream + // We don't own it + // + // fEncoding + // We own it + // + // fPublicId + // We own it + // + // fSystemId + // We own it + // + // fBaseURI + // We own it + // + // ----------------------------------------------------------------------- + + const XMLCh *fStringData; + InputSource *fByteStream; + XMLCh *fEncoding; + XMLCh *fPublicId; + XMLCh *fSystemId; + XMLCh *fBaseURI; + bool fIssueFatalErrorIfNotFound; + MemoryManager* fMemoryManager; +}; + +inline const XMLCh* DOMLSInputImpl::getStringData() const +{ + return fStringData; +} + +inline InputSource* DOMLSInputImpl::getByteStream() const +{ + return fByteStream; +} + +inline const XMLCh* DOMLSInputImpl::getEncoding() const +{ + return fEncoding; +} + +inline const XMLCh* DOMLSInputImpl::getPublicId() const +{ + return fPublicId; +} + +inline const XMLCh* DOMLSInputImpl::getSystemId() const +{ + return fSystemId; +} + +inline const XMLCh* DOMLSInputImpl::getBaseURI() const +{ + return fBaseURI; +} + +inline bool DOMLSInputImpl::getIssueFatalErrorIfNotFound() const +{ + return fIssueFatalErrorIfNotFound; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMLSOutputImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMLSOutputImpl.hpp new file mode 100644 index 000000000000..523e90c0b356 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMLSOutputImpl.hpp @@ -0,0 +1,92 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSOUTPUTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSOUTPUTIMPL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class CDOM_EXPORT DOMLSOutputImpl : public XMemory, public DOMLSOutput +{ + +public: + + DOMLSOutputImpl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~DOMLSOutputImpl(); + + virtual XMLFormatTarget* getByteStream() const; + virtual const XMLCh* getEncoding() const; + virtual const XMLCh* getSystemId() const; + + virtual void setByteStream(XMLFormatTarget* stream); + virtual void setEncoding(const XMLCh* const encodingStr); + virtual void setSystemId(const XMLCh* const systemId); + + virtual void release(); + +private: + + /** unimplemented copy ctor and assignment operator */ + DOMLSOutputImpl(const DOMLSOutputImpl&); + DOMLSOutputImpl & operator = (const DOMLSOutputImpl&); + +protected: + // ----------------------------------------------------------------------- + // Private data members + // + // fByteStream + // We don't own it + // + // fEncoding + // We own it + // + // fSystemId + // We own it + // + // ----------------------------------------------------------------------- + + XMLFormatTarget *fByteStream; + XMLCh *fEncoding; + XMLCh *fSystemId; + MemoryManager* fMemoryManager; +}; + +inline XMLFormatTarget* DOMLSOutputImpl::getByteStream() const +{ + return fByteStream; +} + +inline const XMLCh* DOMLSOutputImpl::getEncoding() const +{ + return fEncoding; +} + +inline const XMLCh* DOMLSOutputImpl::getSystemId() const +{ + return fSystemId; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMLSSerializerImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMLSSerializerImpl.hpp new file mode 100644 index 000000000000..af115fda5937 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMLSSerializerImpl.hpp @@ -0,0 +1,234 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLSSERIALIZERMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLSSERIALIZERMPL_HPP + +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMStringListImpl; + +class CDOM_EXPORT DOMLSSerializerImpl : public XMemory, + public DOMLSSerializer, + public DOMConfiguration +{ + +public: + + /** @name Constructor and Destructor */ + //@{ + + /** + * Constructor. + */ + DOMLSSerializerImpl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Destructor. + */ + ~DOMLSSerializerImpl(); + //@} + + /** @name Implementation of DOMLSSerializer interface */ + //@{ + + virtual DOMConfiguration* getDomConfig(); + + virtual void setNewLine(const XMLCh* const newLine); + virtual const XMLCh* getNewLine() const; + + virtual void setFilter(DOMLSSerializerFilter *filter); + virtual DOMLSSerializerFilter* getFilter() const; + + virtual bool write(const DOMNode* nodeToWrite, + DOMLSOutput* const destination); + virtual bool writeToURI(const DOMNode* nodeToWrite, + const XMLCh* uri); + /** + * The caller is responsible for the release of the returned string + */ + virtual XMLCh* writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL); + virtual void release(); + + //@} + + /** @name Implementation of DOMConfiguration interface */ + //@{ + virtual void setParameter(const XMLCh* name, const void* value); + virtual void setParameter(const XMLCh* name, bool value); + virtual const void* getParameter(const XMLCh* name) const; + virtual bool canSetParameter(const XMLCh* name, const void* value) const; + virtual bool canSetParameter(const XMLCh* name, bool value) const; + virtual const DOMStringList* getParameterNames() const; + //@} + +private: + + /** unimplemented copy ctor and assignment operator */ + DOMLSSerializerImpl(const DOMLSSerializerImpl&); + DOMLSSerializerImpl & operator = (const DOMLSSerializerImpl&); + +protected: + /** helper **/ + void processNode(const DOMNode* const); + + void procCdataSection(const XMLCh* const nodeValue + , const DOMNode* const nodeToWrite); + + void procUnrepCharInCdataSection(const XMLCh* const nodeValue + , const DOMNode* const nodeToWrite); + +protected: + /** + * Overidden by derived classes to extend the abilities of the standard writer + * always returns false in the default implementation + * @return true if the method deals with nodeToWrite + */ + virtual bool customNodeSerialize(const DOMNode* const nodeToWrite, int level); + + DOMNodeFilter::FilterAction checkFilter(const DOMNode* const) const; + + bool checkFeature(const XMLCh* const featName + , bool state + , int& featureId) const; + + bool reportError(const DOMNode* const errorNode + , DOMError::ErrorSeverity errorType + , const XMLCh* const errorMsg); + bool reportError(const DOMNode* const errorNode + , DOMError::ErrorSeverity errorType + , XMLDOMMsg::Codes toEmit); + + bool canSetFeature(const int featureId + , bool val) const; + void setFeature(const int featureId + , bool val); + bool getFeature(const int featureId) const; + + void printNewLine(); + void setURCharRef(); + bool isDefaultNamespacePrefixDeclared() const; + bool isNamespaceBindingActive(const XMLCh* prefix, const XMLCh* uri) const; + void ensureValidString(const DOMNode* nodeToWrite, const XMLCh* string); + + + void printIndent(unsigned int level); + //does the actual work for processNode while keeping track of the level + void processNode(const DOMNode* const nodeToWrite, int level); + + void processBOM(); + + // ----------------------------------------------------------------------- + // Private data members + // + // fFeatures + // + // fNewLine + // own it + // + // fErrorHandler + // don't own it + // + // fFilter + // don't own it + // + // fDocumentVersion + // The XML Version of the document to be serialized. + // + // fSupportedParameters + // A list of the parameters that can be set, including the ones + // specific of Xerces + // + // fEncodingUsed (session var) + // the actual encoding used in write(), + // it does not own any data(memory). + // + // fNewLineUsed (session var) + // the actual "end of line" sequence used in write(), + // it does not own any data(memory). + // + // fFormatter (session var) + // the formatter used in write() + // + // fErrorCount + // the count of error encountered in the serialization, + // which neither the error handler, nor the serializer itself, + // treat as fatal. And the serializer will return true/false + // based on this value. + // + // fCurrentLine + // the current line. Used to track the line number the current + // node begins on + // + // ----------------------------------------------------------------------- + + int fFeatures; + XMLCh *fNewLine; + DOMErrorHandler *fErrorHandler; + DOMLSSerializerFilter *fFilter; + const XMLCh *fDocumentVersion; + DOMStringListImpl *fSupportedParameters; + + //session vars + const XMLCh *fEncodingUsed; + const XMLCh *fNewLineUsed; + XMLFormatter *fFormatter; + int fErrorCount; + int fCurrentLine; + bool fLineFeedInTextNodePrinted; + unsigned int fLastWhiteSpaceInTextNode; + bool fIsXml11; + + RefVectorOf< RefHashTableOf >* fNamespaceStack; + MemoryManager* fMemoryManager; +}; + +inline DOMConfiguration* DOMLSSerializerImpl::getDomConfig() +{ + return this; +} + +inline void DOMLSSerializerImpl::setFeature(const int featureId + , bool val) +{ + (val)? fFeatures |= (1<setUnRepFlags(XMLFormatter::UnRep_CharRef); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMLocatorImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMLocatorImpl.hpp new file mode 100644 index 000000000000..235bab5cf933 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMLocatorImpl.hpp @@ -0,0 +1,187 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMLOCATORIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMLOCATORIMPL_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Introduced in DOM Level 3 + * + * Implementation of a DOMLocator interface. + * + * @see DOMLocator#DOMLocator + */ + +class CDOM_EXPORT DOMLocatorImpl : public DOMLocator +{ +public: + /** @name Constructors and Destructor */ + //@{ + + /** Constructor */ + DOMLocatorImpl(); + + DOMLocatorImpl + ( + const XMLFileLoc lineNum + , const XMLFileLoc columnNum + , DOMNode* const errorNode + , const XMLCh* const uri + , const XMLFilePos offset = ~(XMLFilePos(0)) + , const XMLFilePos utf16Offset = ~(XMLFilePos(0)) + ); + + /** Desctructor */ + virtual ~DOMLocatorImpl(); + + //@} + + // DOMLocator interface + virtual XMLFileLoc getLineNumber() const; + virtual XMLFileLoc getColumnNumber() const; + virtual XMLFilePos getByteOffset() const; + virtual XMLFilePos getUtf16Offset() const; + virtual DOMNode* getRelatedNode() const; + virtual const XMLCh* getURI() const; + + // Setter functions + void setLineNumber(const XMLFileLoc lineNumber); + void setColumnNumber(const XMLFileLoc columnNumber); + void setByteOffset(const XMLFilePos offset); + void setUtf16Offset(const XMLFilePos offset); + void setRelatedNode(DOMNode* const errorNode); + void setURI(const XMLCh* const uri); + + +private : + /* Unimplemented constructors and operators */ + + /* Copy constructor */ + DOMLocatorImpl(const DOMLocatorImpl&); + + /* Assignment operator */ + DOMLocatorImpl& operator=(const DOMLocatorImpl&); + +protected: + // ----------------------------------------------------------------------- + // Private data members + // + // fLineNum + // fColumnNum + // Track line/column number of where the error occured + // + // fByteOffset + // Track byte offset in the input source where the error + // occured + // + // fUtf16Offset + // Track character offset in the input source where the error + // occured + // + // fRelatedNode + // Current node where the error occured + // + // fURI + // The uri where the error occured + // ----------------------------------------------------------------------- + XMLFileLoc fLineNum; + XMLFileLoc fColumnNum; + XMLFilePos fByteOffset; + XMLFilePos fUtf16Offset; + DOMNode* fRelatedNode; + const XMLCh* fURI; +}; + + +// --------------------------------------------------------------------------- +// DOMLocatorImpl: Getter methods +// --------------------------------------------------------------------------- +inline XMLFileLoc DOMLocatorImpl::getLineNumber() const +{ + return fLineNum; +} + +inline XMLFileLoc DOMLocatorImpl::getColumnNumber() const +{ + return fColumnNum; +} + +inline XMLFilePos DOMLocatorImpl::getByteOffset() const +{ + return fByteOffset; +} + +inline XMLFilePos DOMLocatorImpl::getUtf16Offset() const +{ + return fUtf16Offset; +} + +inline DOMNode* DOMLocatorImpl::getRelatedNode() const +{ + return fRelatedNode; +} + +inline const XMLCh* DOMLocatorImpl::getURI() const +{ + return fURI; +} + + +// --------------------------------------------------------------------------- +// DOMLocatorImpl: Setter methods +// --------------------------------------------------------------------------- +inline void DOMLocatorImpl::setLineNumber(const XMLFileLoc lineNumber) +{ + fLineNum = lineNumber; +} + +inline void DOMLocatorImpl::setColumnNumber(const XMLFileLoc columnNumber) +{ + fColumnNum = columnNumber; +} + +inline void DOMLocatorImpl::setByteOffset(const XMLFilePos offset) +{ + fByteOffset = offset; +} + +inline void DOMLocatorImpl::setUtf16Offset(const XMLFilePos offset) +{ + fUtf16Offset = offset; +} + +inline void DOMLocatorImpl::setRelatedNode(DOMNode* const errorNode) +{ + fRelatedNode = errorNode; +} + +inline void DOMLocatorImpl::setURI(const XMLCh* const uri) +{ + fURI = uri; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNamedNodeMapImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNamedNodeMapImpl.hpp new file mode 100644 index 000000000000..b8c334e3f898 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNamedNodeMapImpl.hpp @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNAMEDNODEMAPIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNAMEDNODEMAPIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNodeVector; +class DOMNode; + +#define MAP_SIZE 193 + +class CDOM_EXPORT DOMNamedNodeMapImpl: public DOMNamedNodeMap { +protected: + DOMNodeVector* fBuckets[MAP_SIZE]; + DOMNode* fOwnerNode; // the node this map belongs to + //bool fReadOnly; // revisit - flag on owner node instead? + + bool readOnly(); // revisit. Look at owner node read-only. + +public: + DOMNamedNodeMapImpl(DOMNode *ownerNode); + + virtual ~DOMNamedNodeMapImpl(); + virtual DOMNamedNodeMapImpl *cloneMap(DOMNode *ownerNode); + virtual void setReadOnly(bool readOnly, bool deep); + + virtual XMLSize_t getLength() const; + virtual DOMNode* item(XMLSize_t index) const; + virtual DOMNode* getNamedItem(const XMLCh *name) const; + virtual DOMNode* setNamedItem(DOMNode *arg); + virtual DOMNode* removeNamedItem(const XMLCh *name); + + //Introduced in DOM Level 2 + virtual DOMNode* getNamedItemNS(const XMLCh *namespaceURI, + const XMLCh *localName) const; + virtual DOMNode* setNamedItemNS(DOMNode *arg); + virtual DOMNode* removeNamedItemNS(const XMLCh *namespaceURI, + const XMLCh *localName); +private: + // unimplemented + DOMNamedNodeMapImpl(const DOMNamedNodeMapImpl &); + DOMNamedNodeMapImpl & operator = (const DOMNamedNodeMapImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeBase.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeBase.hpp new file mode 100644 index 000000000000..443e2ddee017 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeBase.hpp @@ -0,0 +1,244 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id:$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODEBASE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODEBASE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNodeImpl; +class DOMParentNode; +class DOMChildNode; + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +/** + * Virtual base class with accessors for shared characteristics of DOM implementation + * types, this is a workaround for the current class design that allows the various + * implementation classes to punch into the internals of each others members without + * using unsafe casts that depend on object layout. + */ +class CDOM_EXPORT HasDOMNodeImpl { +protected: + // ----------------------------------------------------------------------- + // Hidden constructor + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + HasDOMNodeImpl() {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + HasDOMNodeImpl & operator= (const HasDOMNodeImpl &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~HasDOMNodeImpl() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual HasDOMNodeImpl interface + // ----------------------------------------------------------------------- + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** + * Gets the embedded DOMNodeImpl member. + */ + virtual DOMNodeImpl *getNodeImpl() = 0; + + /** + * Gets the embedded DOMNodeImpl member. + */ + virtual const DOMNodeImpl *getNodeImpl() const = 0; + //@} +}; + +/** + * Virtual base class with accessors for shared characteristics of DOM implementation + * types, this is a workaround for the current class design that allows the various + * implementation classes to punch into the internals of each others members without + * using unsafe casts that depend on object layout. + */ +class CDOM_EXPORT HasDOMParentImpl { +protected: + // ----------------------------------------------------------------------- + // Hidden constructor + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + HasDOMParentImpl() {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + HasDOMParentImpl & operator= (const HasDOMParentImpl &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~HasDOMParentImpl() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual HasDOMParentImpl interface + // ----------------------------------------------------------------------- + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** + * Gets the embedded DOMParentNode member. + */ + virtual DOMParentNode *getParentNodeImpl() = 0; + + /** + * Gets the embedded DOMParentNode member. + */ + virtual const DOMParentNode *getParentNodeImpl() const = 0; + //@} +}; + +/** + * Virtual base class with accessors for shared characteristics of DOM implementation + * types, this is a workaround for the current class design that allows the various + * implementation classes to punch into the internals of each others members without + * using unsafe casts that depend on object layout. + */ +class CDOM_EXPORT HasDOMChildImpl { +protected: + // ----------------------------------------------------------------------- + // Hidden constructor + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + HasDOMChildImpl() {} + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + /** @name Unimplemented operators */ + //@{ + HasDOMChildImpl & operator= (const HasDOMChildImpl &); + //@} + +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~HasDOMChildImpl() {}; + //@} + + // ----------------------------------------------------------------------- + // Virtual HasDOMChildImpl interface + // ----------------------------------------------------------------------- + //@{ + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** + * Gets the embedded DOMChildNode member. + */ + virtual DOMChildNode *getChildNodeImpl() = 0; + + /** + * Gets the embedded DOMChildNode member. + */ + virtual const DOMChildNode *getChildNodeImpl() const = 0; + //@} +}; + +#define DOMNODEIMPL_DECL \ + virtual DOMNodeImpl* getNodeImpl(); \ + virtual const DOMNodeImpl* getNodeImpl() const; + +#define DOMNODEIMPL_IMPL(classname) \ + DOMNodeImpl* classname::getNodeImpl() {return &fNode;} \ + const DOMNodeImpl* classname::getNodeImpl() const {return &fNode;} + +#define DOMPARENTIMPL_DECL \ + virtual DOMParentNode* getParentNodeImpl(); \ + virtual const DOMParentNode* getParentNodeImpl() const; + +#define DOMPARENTIMPL_IMPL(classname) \ + DOMParentNode* classname::getParentNodeImpl() {return &fParent;} \ + const DOMParentNode* classname::getParentNodeImpl() const {return &fParent;} + +#define DOMCHILDIMPL_DECL \ + virtual DOMChildNode* getChildNodeImpl(); \ + virtual const DOMChildNode* getChildNodeImpl() const; + +#define DOMCHILDIMPL_IMPL(classname) \ + DOMChildNode* classname::getChildNodeImpl() {return &fChild;} \ + const DOMChildNode* classname::getChildNodeImpl() const {return &fChild;} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeIDMap.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeIDMap.hpp new file mode 100644 index 000000000000..faf12ad6e706 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeIDMap.hpp @@ -0,0 +1,86 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODEIDMAP_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODEIDMAP_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +XERCES_CPP_NAMESPACE_BEGIN + + +// +// Class DOMNodeIDMap is a hash table that is used in the implementation of +// of DOM_Document::getElementsByID(). +// +// Why Yet Another HashTable implementation? Becuase it can be significantly +// smaller when tuned for this exact usage, and the generic RefHashTableOf +// from the xerces utils project is not a paricularly good fit. +// +class DOMAttr; +class DOMDocument; + + +class DOMNodeIDMap { +public: + + DOMNodeIDMap(XMLSize_t initialSize, DOMDocument *doc); // Create a new hash table, sized to hold "initialSize" + // Entries. It will automatically grow if need be. + + ~DOMNodeIDMap(); + +private: + DOMNodeIDMap(const DOMNodeIDMap &other); // No copy, assignement, comparison. + DOMNodeIDMap &operator = (const DOMNodeIDMap &other); + bool operator == (const DOMNodeIDMap &other); + +public: + void add(DOMAttr *attr); // Add the specified attribute to the table. + void remove(DOMAttr *other); // Remove the specified attribute. + // Does nothing if the node is not in the table. + DOMAttr *find(const XMLCh *ID); // Find the attribute node in the table with this ID + +private: + void growTable(); + +private: + DOMAttr **fTable; + XMLSize_t fSizeIndex; // Index of the current table size in the + // array of possible table sizes. + XMLSize_t fSize; // The current size of the table array + // (number of slots, not bytes.) + XMLSize_t fNumEntries; // The number of entries used. + XMLSize_t fMaxEntries; // The max number of entries to use before + // growing the table. + DOMDocument *fDoc; // The owning document. +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeImpl.hpp new file mode 100644 index 000000000000..5f82e5a4b30a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeImpl.hpp @@ -0,0 +1,391 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODEIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODEIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +/** + * A DOMNodeImpl doesn't have any children, and can therefore only be directly + * inherited by classes of nodes that never have any, such as Text nodes. For + * other types, such as Element, classes must inherit from ParentNode. + *

+ * All nodes in a single document must originate + * in that document. (Note that this is much tighter than "must be + * same implementation") Nodes are all aware of their ownerDocument, + * and attempts to mismatch will throw WRONG_DOCUMENT_ERR. + *

+ * However, to save memory not all nodes always have a direct reference + * to their ownerDocument. When a node is owned by another node it relies + * on its owner to store its ownerDocument. Parent nodes always store it + * though, so there is never more than one level of indirection. + * And when a node doesn't have an owner, ownerNode refers to its + * ownerDocument. + **/ + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNamedNodeMap; +class DOMNodeList; +class DOMNode; +class DOMDocument; +class DOMElement; + +class CDOM_EXPORT DOMNodeImpl { +public: + + // data + DOMNode *fContainingNode; // the impl object that we're contained by + DOMNode *fOwnerNode; // typically the parent but not always! + + unsigned short flags; + + static const unsigned short READONLY; + static const unsigned short SYNCDATA; + static const unsigned short SYNCCHILDREN; + static const unsigned short OWNED; + static const unsigned short FIRSTCHILD; + static const unsigned short SPECIFIED; + static const unsigned short IGNORABLEWS; + static const unsigned short SETVALUE; + static const unsigned short ID_ATTR; + static const unsigned short USERDATA; + static const unsigned short LEAFNODETYPE; + static const unsigned short CHILDNODE; + static const unsigned short TOBERELEASED; + + +public: + DOMNodeImpl(DOMNode* containingNode, DOMNode *ownerDocument); + DOMNodeImpl(DOMNode* containingNode, const DOMNodeImpl &other); + ~DOMNodeImpl(); + +private: + // Make sure this can't be called to corrupt the containing node ptr. + DOMNodeImpl(const DOMNodeImpl &other); + + DOMNode* getContainingNode(); + const DOMNode* getContainingNode() const; + +public: + DOMNode * appendChild(DOMNode *newChild); + DOMNamedNodeMap * getAttributes() const; + DOMNodeList * getChildNodes() const; + DOMNode * getFirstChild() const; + DOMNode * getLastChild() const; + const XMLCh * getLocalName() const; + const XMLCh * getNamespaceURI() const; + DOMNode * getNextSibling() const; + const XMLCh * getNodeValue() const; + DOMDocument * getOwnerDocument() const; + DOMNode * getParentNode() const; + const XMLCh * getPrefix() const; + DOMNode * getPreviousSibling() const; + bool hasChildNodes() const; + DOMNode * insertBefore(DOMNode *newChild, DOMNode *refChild); + void normalize(); + DOMNode * removeChild(DOMNode *oldChild); + DOMNode * replaceChild(DOMNode *newChild, DOMNode *oldChild); + void setNodeValue(const XMLCh *value); + void setPrefix(const XMLCh *fPrefix); + void setReadOnly(bool readOnly, bool deep); + bool isSupported(const XMLCh *feature, const XMLCh *version) const; + bool hasAttributes() const; + + // Introduced in DOM Level 3 + void* setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler); + void* getUserData(const XMLCh* key) const; + bool isSameNode(const DOMNode* other) const; + bool isEqualNode(const DOMNode* arg) const; + const XMLCh* getBaseURI() const ; + short compareDocumentPosition(const DOMNode* other) const; + const XMLCh* getTextContent() const ; + const XMLCh* getTextContent(XMLCh* pzBuffer, XMLSize_t& rnBufferLength) const; + void setTextContent(const XMLCh* textContent) ; + const XMLCh* lookupPrefix(const XMLCh* namespaceURI) const ; + bool isDefaultNamespace(const XMLCh* namespaceURI) const ; + const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const ; + void* getFeature(const XMLCh* feature, const XMLCh* version) const; + + + // Helper functions for DOM Level 3 + void release(); + void callUserDataHandlers(DOMUserDataHandler::DOMOperationType operation, + const DOMNode* src, + DOMNode* dst) const; + //reverses the bit pattern given by compareDocumentPosition + short reverseTreeOrderBitPattern(short pattern) const; + const DOMNode* getTreeParentNode(const DOMNode* node) const; + + + //Utility, not part of DOM Level 2 API + static bool isKidOK(DOMNode *parent, DOMNode *child); + static const XMLCh *mapPrefix(const XMLCh *prefix, + const XMLCh *namespaceURI, short nType); + + static const XMLCh *getXmlnsString(); + static const XMLCh *getXmlnsURIString(); + static const XMLCh *getXmlString(); + static const XMLCh *getXmlURIString(); + +public: // should really be protected - ALH + + DOMNode* getElementAncestor (const DOMNode* currentNode) const; + const XMLCh* lookupPrefix(const XMLCh* const namespaceURI, DOMElement *el) const ; + void setOwnerDocument(DOMDocument *doc); + + /* + * Flags setters and getters + */ + + inline bool isReadOnly() const { + return (flags & READONLY) != 0; + } + + inline void isReadOnly(bool value) { + flags = (value ? flags | READONLY : flags & ~READONLY); + } + + inline bool needsSyncData() const { + return (flags & SYNCDATA) != 0; + } + + inline void needsSyncData(bool value) { + flags = (value ? flags | SYNCDATA : flags & ~SYNCDATA); + } + + inline bool needsSyncChildren() const { + return (flags & SYNCCHILDREN) != 0; + } + + inline void needsSyncChildren(bool value) { + flags = (value ? flags | SYNCCHILDREN : flags & ~SYNCCHILDREN); + } + + // For Attributes, true if the attr node is attached to an element. + // For all other node types, true if the node has a parent node. + inline bool isOwned() const { + return (flags & OWNED) != 0; + } + + inline void isOwned(bool value) { + flags = (value ? flags | OWNED : flags & ~OWNED); + } + + inline bool isFirstChild() const { + return (flags & FIRSTCHILD) != 0; + } + + inline void isFirstChild(bool value) { + flags = (value ? flags | FIRSTCHILD : flags & ~FIRSTCHILD); + } + + inline bool isSpecified() const { + return (flags & SPECIFIED) != 0; + } + + inline void isSpecified(bool value) { + flags = (value ? flags | SPECIFIED : flags & ~SPECIFIED); + } + + inline bool ignorableWhitespace() const { + return (flags & IGNORABLEWS) != 0; + } + + inline void ignorableWhitespace(bool value) { + flags = (value ? flags | IGNORABLEWS : flags & ~IGNORABLEWS); + } + + inline bool setValue() const { + return (flags & SETVALUE) != 0; + } + + inline void setValue(bool value) { + flags = (value ? flags | SETVALUE : flags & ~SETVALUE); + } + + inline bool isIdAttr() const { + return (flags & ID_ATTR) != 0; + } + + inline void isIdAttr(bool value) { + flags = (value ? flags | ID_ATTR : flags & ~ID_ATTR); + } + + inline bool hasUserData() const { + return (flags & USERDATA) != 0; + } + + inline void hasUserData(bool value) { + flags = (value ? flags | USERDATA : flags & ~USERDATA); + } + + // + // LeafNode is set true for node types that can not be ParentNodes (can't have children) + // This knowledge is used to allow casting from any unknown node type to the + // IDParentImpl or IDChildImpl parts of the node. + // + inline bool isLeafNode() const { + return (flags & LEAFNODETYPE) != 0; + } + + inline void setIsLeafNode(bool value) { + flags = (value ? flags | LEAFNODETYPE : flags & ~LEAFNODETYPE); + } + + + // + // ChildNode is set true for node types that can be children of other nodes, and + // therefore include a DOMChildNode data member. Note that all of the leaf + // node types (above flag) are also ChildNodes, but not all ChildNodes are + // leaf nodes. + inline bool isChildNode() const { + return (flags & CHILDNODE) != 0; + } + + inline void setIsChildNode(bool value) { + flags = (value ? flags | CHILDNODE : flags & ~CHILDNODE); + } + + // True if this node has to be released regardless if it has a owner or not + // This is true if called from fParent->release() + inline bool isToBeReleased() const { + return (flags & TOBERELEASED) != 0; + } + + inline void isToBeReleased(bool value) { + flags = (value ? flags | TOBERELEASED : flags & ~TOBERELEASED); + } + +}; + + +// This macro lists all of the pure virtual functions declared in DOMNode that must +// be implemented by all node types. Since there is no inheritance of implementation, +// using this macro in the class declaration of the node types make it easier to +// accurately get all of the functions declared. +// +#define DOMNODE_FUNCTIONS \ + virtual DOMNode* appendChild(DOMNode *newChild) ;\ + virtual DOMNode* cloneNode(bool deep) const ;\ + virtual DOMNamedNodeMap* getAttributes() const ;\ + virtual DOMNodeList* getChildNodes() const ;\ + virtual DOMNode* getFirstChild() const ;\ + virtual DOMNode* getLastChild() const ;\ + virtual const XMLCh* getLocalName() const ;\ + virtual const XMLCh* getNamespaceURI() const ;\ + virtual DOMNode* getNextSibling() const ;\ + virtual const XMLCh* getNodeName() const ;\ + virtual NodeType getNodeType() const ;\ + virtual const XMLCh* getNodeValue() const ;\ + virtual DOMDocument* getOwnerDocument() const ;\ + virtual const XMLCh* getPrefix() const ;\ + virtual DOMNode* getParentNode() const ;\ + virtual DOMNode* getPreviousSibling() const ;\ + virtual bool hasChildNodes() const ;\ + virtual DOMNode* insertBefore(DOMNode *newChild, DOMNode *refChild) ;\ + virtual void normalize() ;\ + virtual DOMNode* removeChild(DOMNode *oldChild) ;\ + virtual DOMNode* replaceChild(DOMNode *newChild, DOMNode *oldChild) ;\ + virtual void setNodeValue(const XMLCh *nodeValue) ;\ + virtual bool isSupported(const XMLCh *feature, const XMLCh *version) const ;\ + virtual bool hasAttributes() const ;\ + virtual void setPrefix(const XMLCh * prefix) ;\ + virtual void* setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) ;\ + virtual void* getUserData(const XMLCh* key) const ;\ + virtual bool isSameNode(const DOMNode* other) const;\ + virtual bool isEqualNode(const DOMNode* arg) const;\ + virtual const XMLCh* getBaseURI() const ;\ + virtual short compareDocumentPosition(const DOMNode* other) const ;\ + virtual const XMLCh* getTextContent() const ;\ + const XMLCh* getTextContent(XMLCh* pzBuffer, unsigned int& rnBufferLength) const;\ + virtual void setTextContent(const XMLCh* textContent) ;\ + virtual const XMLCh* lookupPrefix(const XMLCh* namespaceURI) const ;\ + virtual bool isDefaultNamespace(const XMLCh* namespaceURI) const;\ + virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const ;\ + virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const ;\ + virtual void release() + + +/* + * Here are dummy stubs for most of the functions introduced by DOMNode. + * Each subclass of DOMNode will have something like this that delegates each + * function to the appropriate implementation. + * Functions that must be supplied by every node class are omitted. + * + DOMNode* xxx::appendChild(DOMNode *newChild) {return fParent.appendChild (newChild); }; + DOMNamedNodeMap* xxx::getAttributes() const {return fNode.getAttributes (); }; + DOMNodeList* xxx::getChildNodes() const {return fParent.getChildNodes (); }; + DOMNode* xxx::getFirstChild() const {return fParent.getFirstChild (); }; + DOMNode* xxx::getLastChild() const {return fParent.getLastChild (); }; + const XMLCh* xxx::getLocalName() const {return fNode.getLocalName (); }; + const XMLCh* xxx::getNamespaceURI() const {return fNode.getNamespaceURI (); }; + DOMNode* xxx::getNextSibling() const {return fChild.getNextSibling (); }; + const XMLCh* xxx::getNodeValue() const {return fNode.getNodeValue (); }; + DOMDocument* xxx::getOwnerDocument() const {return fNode.getOwnerDocument (); }; + const XMLCh* xxx::getPrefix() const {return fNode.getPrefix (); }; + DOMNode* xxx::getParentNode() const {return fChild.getParentNode (this); }; + DOMNode* xxx::getPreviousSibling() const {return fChild.getPreviousSibling (this); }; + bool xxx::hasChildNodes() const {return fParent.hasChildNodes (); }; + DOMNode* xxx::insertBefore(DOMNode *newChild, DOMNode *refChild) + {return fParent.insertBefore (newChild, refChild); }; + void xxx::normalize() {fParent.normalize(); }; + DOMNode* xxx::removeChild(DOMNode *oldChild) {return fParent.removeChild (oldChild); }; + DOMNode* xxx::replaceChild(DOMNode *newChild, DOMNode *oldChild) + {return fParent.replaceChild (newChild, oldChild); }; + bool xxx::isSupported(const XMLCh *feature, const XMLCh *version) const + {return fNode.isSupported (feature, version); }; + void xxx::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); }; + bool xxx::hasAttributes() const {return fNode.hasAttributes(); }; + bool xxx::isSameNode(const DOMNode* other) const {return fNode.isSameNode(other); }; + bool xxx::isEqualNode(const DOMNode* arg) const {return fNode.isEqualNode(arg); }; + void* xxx::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) + {return fNode.setUserData(key, data, handler); }; + void* xxx::getUserData(const XMLCh* key) const {return fNode.getUserData(key); }; + const XMLCh* xxx::getBaseURI() const {return fNode.getBaseURI(); }; + short xxx::compareDocumentPosition(const DOMNode* other) const {return fNode.compareDocumentPosition(other); }; + const XMLCh* xxx::getTextContent() const {return fNode.getTextContent(); }; + void xxx::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); }; + const XMLCh* xxx::lookupPrefix(const XMLCh* namespaceURI) const {return fNode.lookupPrefix(namespaceURI); }; + bool xxx::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); }; + const XMLCh* xxx::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); }; + void* xxx::getFeature(const XMLCh* feature, const XMLCh* version) const {return fNode.getFeature(feature, version); }; + + +*/ + + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeIteratorImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeIteratorImpl.hpp new file mode 100644 index 000000000000..e6cb537d77e1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeIteratorImpl.hpp @@ -0,0 +1,122 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODEITERATORIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODEITERATORIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +////////////////////////////////////////////////////////////////////// +// DOMNodeIteratorImpl.hpp: interface for the DOMNodeIteratorImpl class. +// +////////////////////////////////////////////////////////////////////// + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class CDOM_EXPORT DOMNodeIteratorImpl : public DOMNodeIterator { + protected: + // + // Data + // + // The root. + DOMNode* fRoot; + + // The Document used to create this iterator + DOMDocument* fDocument; + + // The whatToShow mask. + DOMNodeFilter::ShowType fWhatToShow; + + // The NodeFilter reference. + DOMNodeFilter* fNodeFilter; + + + // The expandEntity reference flag. + bool fExpandEntityReferences; + bool fDetached; + + + // + // Iterator state - current node and direction. + // + // Note: The current node and direction are sufficient to implement + // the desired behaviour of the current pointer being _between_ + // two nodes. The fCurrentNode is actually the last node returned, + // and the + // direction is whether the pointer is in front or behind this node. + // (usually akin to whether the node was returned via nextNode()) + // (eg fForward = true) or previousNode() (eg fForward = false). + // The last Node returned. + DOMNode* fCurrentNode; + + // The direction of the iterator on the fCurrentNode. + // + // nextNode() == fForward = true;
+ // previousNode() == fForward = false;
+ //
+ bool fForward; + + public: + virtual ~DOMNodeIteratorImpl (); + DOMNodeIteratorImpl ( + DOMDocument* fDocument, + DOMNode* root, + DOMNodeFilter::ShowType whatToShow, + DOMNodeFilter* nodeFilter, + bool expandEntityRef); + + DOMNodeIteratorImpl ( const DOMNodeIteratorImpl& toCopy); + DOMNodeIteratorImpl& operator= (const DOMNodeIteratorImpl& other); + + virtual DOMNode* getRoot (); + virtual DOMNodeFilter::ShowType getWhatToShow (); + virtual DOMNodeFilter* getFilter (); + // Get the expandEntity reference flag. + virtual bool getExpandEntityReferences(); + + virtual DOMNode* nextNode (); + virtual DOMNode* previousNode (); + virtual void detach (); + + virtual void release(); + void removeNode (DOMNode* node); + + protected: + DOMNode* matchNodeOrParent (DOMNode* node); + DOMNode* nextNode (DOMNode* node, bool visitChildren); + DOMNode* previousNode (DOMNode* node); + bool acceptNode (DOMNode* node); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeListImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeListImpl.hpp new file mode 100644 index 000000000000..e7a79c88a360 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeListImpl.hpp @@ -0,0 +1,73 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODELISTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODELISTIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +// NodeList implementation class - +// This is for NodeLists returned by GetChildNodes only, not for +// node lists returned by GetElementsByTagName +// +// Every node type capable of having children has (as an embedded member) +// an instance of this class. To hold down the size overhead on each node, a +// cache of extended data for active node lists is maintained +// separately. +// + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMParentNode; +class DOMNode; + +class CDOM_EXPORT DOMNodeListImpl: public DOMNodeList +{ +protected: + DOMParentNode *fNode; + +private: + // Unused, and unimplemented constructors, operators, etc. + DOMNodeListImpl(); + DOMNodeListImpl(const DOMNodeListImpl & other); + DOMNodeListImpl & operator = (const DOMNodeListImpl & other); + +public: + DOMNodeListImpl(DOMParentNode *node); + virtual ~DOMNodeListImpl(); + virtual DOMNode * item(XMLSize_t index) const; + virtual XMLSize_t getLength() const; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeVector.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeVector.hpp new file mode 100644 index 000000000000..d3e5e028d854 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNodeVector.hpp @@ -0,0 +1,88 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNODEVECTOR_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNODEVECTOR_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMNode; +class DOMDocument; + + +class DOMNodeVector { +private: + DOMNode **data; + XMLSize_t allocatedSize; + XMLSize_t nextFreeSlot; + void init(DOMDocument *doc, XMLSize_t size); + void checkSpace(); + + // unimplemented + DOMNodeVector ( const DOMNodeVector& toCopy); + DOMNodeVector& operator= (const DOMNodeVector& other); + +public: + DOMNodeVector(DOMDocument *doc); + DOMNodeVector(DOMDocument *doc, XMLSize_t size); + ~DOMNodeVector(); + + XMLSize_t size(); + DOMNode* elementAt(XMLSize_t index); + DOMNode* lastElement(); + void addElement(DOMNode *); + void insertElementAt(DOMNode *, XMLSize_t index); + void setElementAt(DOMNode *val, XMLSize_t index); + void removeElementAt(XMLSize_t index); + void reset(); +}; + +inline DOMNode *DOMNodeVector::elementAt(XMLSize_t index) { + if (index >= nextFreeSlot) + return 0; + return data[index]; +} + +inline DOMNode *DOMNodeVector::lastElement() { + if (nextFreeSlot == 0) + return 0; + return data[nextFreeSlot-1]; +} + +inline XMLSize_t DOMNodeVector::size() { + return nextFreeSlot; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNormalizer.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNormalizer.hpp new file mode 100644 index 000000000000..e37604f9157b --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNormalizer.hpp @@ -0,0 +1,166 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNORMALIZER_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNORMALIZER_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include +#include +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMConfigurationImpl; +class DOMErrorHandler; +class DOMDocumentImpl; +class DOMNode; +class DOMElementImpl; +class DOMAttr; +class DOMNamedNodeMap; + +class DOMNormalizer : public XMemory { + + //the following are the data structures maintain the stack of namespace information + class InScopeNamespaces : public XMemory { + class Scope : public XMemory { + public: + Scope(Scope *baseScopeWithBindings); + ~Scope(); + void addOrChangeBinding(const XMLCh *prefix, const XMLCh *uri, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + const XMLCh* getUri(const XMLCh *prefix) const; + const XMLCh* getPrefix(const XMLCh* uri) const; + Scope *fBaseScopeWithBindings; + + private: + RefHashTableOf *fPrefixHash; + RefHashTableOf *fUriHash; + // unimplemented + Scope ( const Scope& toCopy); + Scope& operator= (const Scope& other); + }; + + public: + InScopeNamespaces(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~InScopeNamespaces(); + void addOrChangeBinding(const XMLCh *prefix, const XMLCh *uri, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + void addScope(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + void removeScope(); + bool isValidBinding(const XMLCh* prefix, const XMLCh* uri) const; + const XMLCh* getOrDeclarePrefix(const XMLCh* uri); + const XMLCh* getPrefix(const XMLCh* uri) const; + const XMLCh* getUri(const XMLCh* prefix) const; + XMLSize_t size(); + + private: + RefVectorOf *fScopes; + Scope *lastScopeWithBindings; + // unimplemented + InScopeNamespaces ( const InScopeNamespaces& toCopy); + InScopeNamespaces& operator= (const InScopeNamespaces& other); + }; + +public: + DOMNormalizer(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~DOMNormalizer(); + + /** + * Main entry method to normalize a document + */ + void normalizeDocument(DOMDocumentImpl *doc); + +private: + // unimplemented + DOMNormalizer ( const DOMNormalizer& toCopy); + DOMNormalizer& operator= (const DOMNormalizer& other); + +protected: + /** + * Recursively normalizes a node + */ + DOMNode * normalizeNode(DOMNode *node) const; + + /** + * Helper method that fixes up the namespace declarations according to the + * DOM Level 3 psydocode + */ + void namespaceFixUp(DOMElementImpl *ele) const; + + /** + * Converts an integer to an XMLCh - max 15 digits long. + */ + const XMLCh * integerToXMLCh(unsigned int i) const; + + /** + * Adds a namespace attribute or replaces the value of existing namespace + * attribute with the given prefix and value for URI. + * In case prefix is empty will add/update default namespace declaration. + */ + void addOrChangeNamespaceDecl(const XMLCh* prefix, const XMLCh* uri, DOMElementImpl *element) const; + + /** + * Adds a custom namespace in the form "NSx" where x is an integer that + * has not yet used in the document + */ + const XMLCh* addCustomNamespaceDecl(const XMLCh* uri, DOMElementImpl *element) const; + + + /** + * Report an error + */ + void error(const XMLErrs::Codes code, const DOMNode *node) const; + + // + // fDocument - the document we are operating on + // + // fDOMConfiguration - the configuration from the document + // + // fErrorHandler - the errorhandler to be used when reporting errors during normalization + // + // fNSScope - the data stucture that holds the prefix-uri information + // + // fNewNamespaceCount - the number of custom namespace declarations we have created + // + DOMDocumentImpl *fDocument; + DOMConfigurationImpl *fConfiguration; + DOMErrorHandler *fErrorHandler; + InScopeNamespaces *fNSScope; + unsigned int fNewNamespaceCount; + MemoryManager* fMemoryManager; +}; + + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNotationImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNotationImpl.hpp new file mode 100644 index 000000000000..23ff6217729d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMNotationImpl.hpp @@ -0,0 +1,96 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMNOTATIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMNOTATIONIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +#include "DOMNodeBase.hpp" +#include "DOMNodeImpl.hpp" + +class DOMDocument; + + +class CDOM_EXPORT DOMNotationImpl: public DOMNotation, public HasDOMNodeImpl { +public: + DOMNodeImpl fNode; + + const XMLCh * fName; + const XMLCh * fPublicId; + const XMLCh * fSystemId; + const XMLCh * fBaseURI; + +public: + DOMNotationImpl(DOMDocument *ownerDoc, const XMLCh *); + DOMNotationImpl(const DOMNotationImpl &other, bool deep=false); + + virtual ~DOMNotationImpl(); + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + +public: + // + // The Public Identifier for this Notation. If no public identifier + // was specified, this will be null. + virtual const XMLCh * getPublicId() const; + + // The System Identifier for this Notation. If no system identifier + // was specified, this will be null. + virtual const XMLCh * getSystemId() const; + + // NON-DOM: The Public Identifier for this Notation. If no public + // identifier was specified, this will be null. + virtual void setPublicId(const XMLCh *arg); + + + // NON-DOM: The System Identifier for this Notation. If no system + // identifier was specified, this will be null. + virtual void setSystemId(const XMLCh *arg); + + // NON-DOM: set base uri + virtual void setBaseURI(const XMLCh *arg); + +private: + // unimplemented + DOMNotationImpl& operator= (const DOMNotationImpl& other); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMParentNode.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMParentNode.hpp new file mode 100644 index 000000000000..72b9794c6159 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMParentNode.hpp @@ -0,0 +1,125 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMPARENTNODE_HPP) +#define XERCESC_INCLUDE_GUARD_DOMPARENTNODE_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +/** + * ParentNode provides the capability of having child + * nodes. Not every node in the DOM can have children, so only nodes that can + * should include this class and pay the price for it. + *

+ * While we have a direct reference to the first child, the last child is + * stored as the previous sibling of the first child. First child nodes are + * marked as being so, and getNextSibling hides this fact. + * + **/ + +#include +#include "DOMNodeListImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class DOMChildNode; +class DOMDocument; +class DOMNode; +class DOMNodeList; + +class CDOM_EXPORT DOMParentNode { +public: + DOMNode *fContainingNode; // the impl object that we're contained by + DOMDocument *fOwnerDocument; // Document this node belongs to + DOMNode *fFirstChild; + DOMNodeListImpl fChildNodeList; // for GetChildNodes() + +public: + DOMParentNode(DOMNode* containingNode, DOMDocument *ownerDocument); + DOMParentNode(DOMNode* containingNode, const DOMParentNode &other); + ~DOMParentNode(); + +private: + // Make sure this can't be called to corrupt the containing node ptr. + DOMParentNode(const DOMParentNode &other); + + DOMNode* getContainingNode(); + const DOMNode* getContainingNode() const; + const DOMNodeImpl* getContainingNodeImpl() const; + +public: + DOMDocument * getOwnerDocument() const; + void setOwnerDocument(DOMDocument* doc); + + // Track changes to the node tree structure under this node. An optimization + // for NodeLists. + int changes() const; + void changed(); + + DOMNode* appendChild(DOMNode *newChild); + DOMNodeList* getChildNodes() const; + DOMNode* getFirstChild() const; + DOMNode* getLastChild() const; + bool hasChildNodes() const; + DOMNode* insertBefore(DOMNode *newChild, DOMNode *refChild); + DOMNode* item(unsigned int index) const; + DOMNode* removeChild(DOMNode *oldChild); + DOMNode* replaceChild(DOMNode *newChild, DOMNode *oldChild); + + // Append certain types of nodes fast. Used to speed up XML to DOM + // parsing. See the function implementation for detail. + virtual DOMNode* appendChildFast(DOMNode *newChild); + + //Introduced in DOM Level 2 + void normalize(); + + //Introduced in DOM Level 3 + bool isEqualNode(const DOMNode* arg) const; + + // NON-DOM + // unlike getOwnerDocument this never returns null, even for Document nodes + DOMDocument * getDocument() const; + void release(); + + +public: + void cloneChildren(const DOMNode *other); + DOMNode * lastChild() const; + void lastChild(DOMNode *); + +private: + // unimplemented + DOMParentNode& operator= (const DOMParentNode& other); +}; + +#define GetDOMParentNodeMemoryManager GET_DIRECT_MM(fOwnerDocument) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp new file mode 100644 index 000000000000..c336b674661d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp @@ -0,0 +1,98 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMPROCESSINGINSTRUCTIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMPROCESSINGINSTRUCTIONIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#include +#include +#include "DOMNodeBase.hpp" +#include "DOMCharacterDataImpl.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMChildNode.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class DocumentImpl; + + +class CDOM_EXPORT DOMProcessingInstructionImpl: public DOMProcessingInstruction, + public HasDOMNodeImpl, public HasDOMChildImpl { +protected: + DOMNodeImpl fNode; + DOMChildNode fChild; + // use fCharacterData to store its data so that those character utitlites can be used + DOMCharacterDataImpl fCharacterData; + + XMLCh *fTarget; + const XMLCh *fBaseURI; + +public: + DOMProcessingInstructionImpl(DOMDocument *ownerDoc, + const XMLCh * target, + const XMLCh *data); + DOMProcessingInstructionImpl(const DOMProcessingInstructionImpl &other, + bool deep=false); + virtual ~DOMProcessingInstructionImpl(); + +public: + // Declare all of the functions from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMCHILDIMPL_DECL; + +public: + virtual const XMLCh *getData() const; + virtual const XMLCh *getTarget() const; + virtual void setData(const XMLCh *arg); + + // NON-DOM: set base uri + virtual void setBaseURI(const XMLCh* baseURI); + + // Non standard extension for the range to work + void deleteData(XMLSize_t offset, XMLSize_t count); + const XMLCh* substringData(XMLSize_t offset, XMLSize_t count) const; + DOMProcessingInstruction* splitText(XMLSize_t offset); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMProcessingInstructionImpl & operator = (const DOMProcessingInstructionImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMRangeImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMRangeImpl.hpp new file mode 100644 index 000000000000..9f3b606117e6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMRangeImpl.hpp @@ -0,0 +1,176 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMRANGEIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMRANGEIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + + +class DOMNode; +class DOMDocumentFragment; +class DOMDocument; +class DOMText; +class MemoryManager; + +class CDOM_EXPORT DOMRangeImpl: public DOMRange { +protected: + enum TraversalType { + EXTRACT_CONTENTS = 1, + CLONE_CONTENTS = 2, + DELETE_CONTENTS = 3 + }; + + enum TraversePoint { + BEFORE = -1, + START = 0, + AFTER = 1 + }; + + //private data + + DOMNode* fStartContainer; + XMLSize_t fStartOffset; + DOMNode* fEndContainer; + XMLSize_t fEndOffset; + bool fCollapsed; + DOMDocument* fDocument; + bool fDetached; + + DOMNode* fRemoveChild; + MemoryManager* fMemoryManager; + +public: + //c'tor + DOMRangeImpl(DOMDocument* doc, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + DOMRangeImpl(const DOMRangeImpl& other); + + //d'tor + ~DOMRangeImpl(); + + //getter functions + virtual DOMNode* getStartContainer() const; + virtual XMLSize_t getStartOffset() const; + virtual DOMNode* getEndContainer() const; + virtual XMLSize_t getEndOffset() const; + virtual bool getCollapsed() const; + virtual const DOMNode* getCommonAncestorContainer() const; + + //setter functions + virtual void setStart(const DOMNode *parent, XMLSize_t offset); + virtual void setEnd(const DOMNode *parent, XMLSize_t offset); + + virtual void setStartBefore(const DOMNode *refNode); + virtual void setStartAfter(const DOMNode *refNode); + virtual void setEndBefore(const DOMNode *refNode); + virtual void setEndAfter(const DOMNode *refNode); + + //misc functions + virtual void collapse(bool toStart); + virtual void selectNode(const DOMNode *node); + virtual void selectNodeContents(const DOMNode *node); + + //Functions related to comparing range Boundrary-Points + virtual short compareBoundaryPoints(CompareHow how, const DOMRange* range) const; + virtual void deleteContents(); + virtual DOMDocumentFragment* extractContents(); + virtual DOMDocumentFragment* cloneContents() const; + virtual void insertNode(DOMNode* node); + + //Misc functions + virtual void surroundContents(DOMNode *node); + virtual DOMRange* cloneRange() const; + virtual const XMLCh* toString() const; + virtual void detach(); + virtual void release(); + + //getter functions + DOMDocument* getDocument(); + + // functions to inform all existing valid ranges about a change + void updateSplitInfo(DOMNode* oldNode, DOMNode* startNode, XMLSize_t offset); + void updateRangeForInsertedNode(DOMNode* node); + void receiveReplacedText(DOMNode* node); + void updateRangeForDeletedText(DOMNode* node, XMLSize_t offset, XMLSize_t count); + void updateRangeForInsertedText(DOMNode* node, XMLSize_t offset, XMLSize_t count); + void updateRangeForDeletedNode(DOMNode* node); + +protected: + //setter functions + void setStartContainer(const DOMNode* node); + void setStartOffset(XMLSize_t offset) ; + void setEndContainer(const DOMNode* node); + void setEndOffset(XMLSize_t offset) ; + + //misc functions + void validateNode(const DOMNode* node) const; + bool isValidAncestorType(const DOMNode* node) const; + bool hasLegalRootContainer(const DOMNode* node) const; + bool isLegalContainedNode(const DOMNode* node ) const; + void checkIndex(const DOMNode* node, XMLSize_t offset) const; + static bool isAncestorOf(const DOMNode* a, const DOMNode* b); + + XMLSize_t indexOf(const DOMNode* child, const DOMNode* parent) const; + + const DOMNode* commonAncestorOf(const DOMNode* pointA, const DOMNode* pointB) const; + DOMNode* nextNode(const DOMNode* node, bool visitChildren) const; + DOMDocumentFragment* traverseContents(TraversalType type); + void checkReadOnly(DOMNode* start, DOMNode* end, + XMLSize_t starOffset, XMLSize_t endOffset); + void recurseTreeAndCheck(DOMNode* start, DOMNode* end); + DOMNode* removeChild(DOMNode* parent, DOMNode* child); + + DOMDocumentFragment* traverseSameContainer( int how ); + DOMDocumentFragment* traverseCommonStartContainer( DOMNode *endAncestor, int how ); + DOMDocumentFragment* traverseCommonEndContainer( DOMNode *startAncestor, int how ); + DOMDocumentFragment* traverseCommonAncestors( DOMNode *startAncestor, DOMNode *endAncestor, int how ); + DOMNode* traverseRightBoundary( DOMNode *root, int how ); + DOMNode* traverseLeftBoundary( DOMNode *root, int how ); + DOMNode* traverseNode( DOMNode *n, bool isFullySelected, bool isLeft, int how ); + DOMNode* traverseFullySelected( DOMNode *n, int how ); + DOMNode* traversePartiallySelected( DOMNode *n, int how ); + DOMNode* traverseTextNode( DOMNode *n, bool isLeft, int how ); + DOMNode* getSelectedNode( DOMNode *container, int offset ); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMRangeImpl & operator = (const DOMRangeImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMStringListImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMStringListImpl.hpp new file mode 100644 index 000000000000..b6c5c07ac361 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMStringListImpl.hpp @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMSTRINGLISTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMSTRINGLISTIMPL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMStringListImpl: public XMemory, + public DOMStringList +{ +protected: + RefVectorOf *fList; + +private: + // Unused, and unimplemented constructors, operators, etc. + DOMStringListImpl(const DOMStringListImpl & other); + DOMStringListImpl & operator = (const DOMStringListImpl & other); + +public: + DOMStringListImpl(int nInitialSize, MemoryManager* manager); + void add(const XMLCh* impl); + + virtual ~DOMStringListImpl(); + virtual const XMLCh* item(XMLSize_t index) const; + virtual XMLSize_t getLength() const; + virtual bool contains(const XMLCh* str) const; + virtual void release(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMStringPool.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMStringPool.hpp new file mode 100644 index 000000000000..f26e611bcdfb --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMStringPool.hpp @@ -0,0 +1,226 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMSTRINGPOOL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMSTRINGPOOL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMDocumentImpl; + +// +// DStringPoolEntry - one of these structs is allocated for each +// XMLCh String in the pool. Each slot in the +// hash table array itself is a pointer to the head +// of a singly-linked list of these structs. +// +// Although this struct is declared with a string length of one, +// the factory method allocates enough storage to hold the full +// string length. +// +struct DOMStringPoolEntry +{ + DOMStringPoolEntry *fNext; + XMLSize_t fLength; + XMLCh fString[1]; +}; + +// +// DOMBuffer is a lightweight text buffer +// The buffer is not nul terminated until some asks to see the raw buffer +// contents. This also avoids overhead during append operations. +class DOMBuffer +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DOMBuffer(DOMDocumentImpl *doc, XMLSize_t capacity = 31); + + ~DOMBuffer() + { + } + + // ----------------------------------------------------------------------- + // Buffer Management + // ----------------------------------------------------------------------- + void append (const XMLCh* const chars); + void append (const XMLCh* const chars, const XMLSize_t count); + void appendInPlace (const XMLCh* const chars, const XMLSize_t count); + + void set (const XMLCh* const chars); + void set (const XMLCh* const chars, const XMLSize_t count); + + const XMLCh* getRawBuffer() const + { + fBuffer[fIndex] = 0; + return fBuffer; + } + + void reset() + { + fIndex = 0; + fBuffer[0] = 0; + } + + void chop + ( + const XMLSize_t count + ) + { + fBuffer[count] = 0; + fIndex = count; + } + + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + XMLSize_t getLen() const + { + return fIndex; + } + + XMLSize_t getCapacity() const + { + return fCapacity; + } + + // ----------------------------------------------------------------------- + // Private helpers + // ----------------------------------------------------------------------- + void expandCapacity(const XMLSize_t extraNeeded, bool releasePrevious = false); + + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fBuffer + // The pointer to the buffer data. Its grown as needed. Its always + // one larger than fCapacity, to leave room for the null terminator. + // + // fIndex + // The current index into the buffer, as characters are appended + // to it. If its zero, then the buffer is empty. + // + // fCapacity + // The current capacity of the buffer. Its actually always one + // larger, to leave room for the null terminator. + // + // fDoc + // For allocating memory + // ----------------------------------------------------------------------- + XMLCh* fBuffer; + XMLSize_t fIndex; + XMLSize_t fCapacity; + DOMDocumentImpl* fDoc; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMBuffer(const DOMBuffer &); + DOMBuffer & operator = (const DOMBuffer &); +}; + +inline void DOMBuffer:: +append (const XMLCh* const chars) +{ + XMLSize_t count = XMLString::stringLen(chars); + if (fIndex + count >= fCapacity) + expandCapacity(count); + + memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh)); + fIndex += count; + + // Keep it null terminated + fBuffer[fIndex] = 0; +} + +inline void DOMBuffer:: +append (const XMLCh* const chars, const XMLSize_t count) +{ + if (fIndex + count >= fCapacity) + expandCapacity(count); + + memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh)); + fIndex += count; + + // Keep it null terminated + fBuffer[fIndex] = 0; +} + +inline void DOMBuffer:: +appendInPlace (const XMLCh* const chars, const XMLSize_t count) +{ + if (fIndex + count >= fCapacity) + expandCapacity(count, true); + + memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh)); + fIndex += count; + + // Keep it null terminated + fBuffer[fIndex] = 0; +} + +inline void DOMBuffer:: +set (const XMLCh* const chars) +{ + XMLSize_t count = XMLString::stringLen(chars); + fIndex = 0; + if (count >= fCapacity) + expandCapacity(count); + + memcpy(fBuffer, chars, count * sizeof(XMLCh)); + fIndex = count; + + // Keep it null terminated + fBuffer[fIndex] = 0; +} + +inline void DOMBuffer:: +set (const XMLCh* const chars, const XMLSize_t count) +{ + fIndex = 0; + if (count >= fCapacity) + expandCapacity(count); + + memcpy(fBuffer, chars, count * sizeof(XMLCh)); + fIndex = count; + + // Keep it null terminated + fBuffer[fIndex] = 0; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMTextImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMTextImpl.hpp new file mode 100644 index 000000000000..ecd3b980bfe4 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMTextImpl.hpp @@ -0,0 +1,108 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMTEXTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMTEXTIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + + +#include +#include +#include "DOMNodeBase.hpp" +#include "DOMChildNode.hpp" +#include "DOMNodeImpl.hpp" +#include "DOMCharacterDataImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMTextImpl: public DOMText, public HasDOMNodeImpl, public HasDOMChildImpl { +public: + DOMNodeImpl fNode; + DOMChildNode fChild; + DOMCharacterDataImpl fCharacterData; + +public: + DOMTextImpl(DOMDocument* ownerDoc, const XMLCh* data); + DOMTextImpl(DOMDocument *ownerDoc, const XMLCh* data, XMLSize_t n); + DOMTextImpl(const DOMTextImpl& other, bool deep=false); + + virtual ~DOMTextImpl(); + virtual DOMText* splitText(XMLSize_t offset); + // DOM Level 3 + virtual bool getIsElementContentWhitespace() const; + virtual const XMLCh* getWholeText() const; + virtual DOMText* replaceWholeText(const XMLCh* content); + + // non-standard extension + virtual bool isIgnorableWhitespace() const; + +public: + // Declare the functions coming from DOMNode. + DOMNODE_FUNCTIONS; + + // Add accessors for implementation bits. + DOMNODEIMPL_DECL; + DOMCHILDIMPL_DECL; + +public: + // All of the functions coming from DOMCharacterData + virtual const XMLCh* getData() const; + virtual XMLSize_t getLength() const; + virtual const XMLCh* substringData(XMLSize_t offset, + XMLSize_t count) const; + virtual void appendData(const XMLCh *arg); + virtual void insertData(XMLSize_t offset, const XMLCh *arg); + virtual void deleteData(XMLSize_t offset, + XMLSize_t count); + virtual void replaceData(XMLSize_t offset, + XMLSize_t count, + const XMLCh *arg); + virtual void setData(const XMLCh *data); + + // Non-standard extension. + // + virtual void appendData(const XMLCh *arg, XMLSize_t n); + void appendDataFast(const XMLCh *arg, XMLSize_t n); + +protected: + virtual void setIgnorableWhitespace(bool ignorable); + friend class AbstractDOMParser; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMTextImpl & operator = (const DOMTextImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMTreeWalkerImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMTreeWalkerImpl.hpp new file mode 100644 index 000000000000..4ecbbb424b3b --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMTreeWalkerImpl.hpp @@ -0,0 +1,168 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMTREEWALKERIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMTREEWALKERIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class CDOM_EXPORT DOMTreeWalkerImpl : public DOMTreeWalker { +protected: + // The whatToShow mask. + DOMNodeFilter::ShowType fWhatToShow; + + // The NodeFilter reference. + DOMNodeFilter* fNodeFilter; + + // The current Node. + DOMNode* fCurrentNode; + + // The root Node. + DOMNode* fRoot; + + // The expandEntity reference flag. + bool fExpandEntityReferences; + +public: + // Implementation Note: No state is kept except the data above + // (fWhatToShow, fNodeFilter, fCurrentNode, fRoot) such that + // setters could be created for these data values and the + // implementation will still work. + + /** Public constructor */ + DOMTreeWalkerImpl ( + DOMNode* root, + DOMNodeFilter::ShowType whatToShow, + DOMNodeFilter* nodeFilter, + bool expandEntityRef); + DOMTreeWalkerImpl (const DOMTreeWalkerImpl& twi); + DOMTreeWalkerImpl& operator= (const DOMTreeWalkerImpl& twi); + + // Return the root node. + virtual DOMNode* getRoot (); + + // Return the whatToShow value. + virtual DOMNodeFilter::ShowType getWhatToShow (); + + // Return the NodeFilter. + virtual DOMNodeFilter* getFilter (); + + + // Return the current DOMNode. + virtual DOMNode* getCurrentNode (); + + // Return the current Node. + virtual void setCurrentNode (DOMNode* node); + + // Return the parent Node from the current node, + // after applying filter, whatToshow. + // If result is not null, set the current Node. + virtual DOMNode* parentNode (); + + // Return the first child Node from the current node, + // after applying filter, whatToshow. + // If result is not null, set the current Node. + virtual DOMNode* firstChild (); + + // Return the last child Node from the current node, + // after applying filter, whatToshow. + // If result is not null, set the current Node. + virtual DOMNode* lastChild (); + + // Return the previous sibling Node from the current node, + // after applying filter, whatToshow. + // If result is not null, set the current Node. + virtual DOMNode* previousSibling (); + + // Return the next sibling Node from the current node, + // after applying filter, whatToshow. + // If result is not null, set the current Node. + + virtual DOMNode* nextSibling (); + // Return the previous Node from the current node, + // after applying filter, whatToshow. + // If result is not null, set the current Node. + virtual DOMNode* previousNode (); + + // Return the next Node from the current node, + // after applying filter, whatToshow. + // If result is not null, set the current Node. + virtual DOMNode* nextNode (); + + // Get the expandEntity reference flag. + virtual bool getExpandEntityReferences(); + + // release the resource + virtual void release(); + +protected: + + // Internal function. + // Return the parent Node, from the input node + // after applying filter, whatToshow. + // The current node is not consulted or set. + DOMNode* getParentNode (DOMNode* node); + + // Internal function. + // Return the nextSibling Node, from the input node + // after applying filter, whatToshow. + // The current node is not consulted or set. + DOMNode* getNextSibling (DOMNode* node); + + // Internal function. + // Return the previous sibling Node, from the input node + // after applying filter, whatToshow. + // The current node is not consulted or set. + DOMNode* getPreviousSibling (DOMNode* node); + + // Internal function. + // Return the first child Node, from the input node + // after applying filter, whatToshow. + // The current node is not consulted or set. + DOMNode* getFirstChild (DOMNode* node); + + // Internal function. + // Return the last child Node, from the input node + // after applying filter, whatToshow. + // The current node is not consulted or set. + DOMNode* getLastChild (DOMNode* node); + + // The node is accepted if it passes the whatToShow and the filter. + short acceptNode (DOMNode* node); + + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMTypeInfoImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMTypeInfoImpl.hpp new file mode 100644 index 000000000000..f290fe1fe229 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMTypeInfoImpl.hpp @@ -0,0 +1,106 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#if !defined(XERCESC_INCLUDE_GUARD_DOMTYPEINFOIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMTYPEINFOIMPL_HPP + +//------------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------------ +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMDocumentImpl; + +class CDOM_EXPORT DOMTypeInfoImpl : public DOMTypeInfo, public DOMPSVITypeInfo +{ +public: + + //----------------------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------------------- + DOMTypeInfoImpl(const XMLCh* namespaceUri=0, const XMLCh* name=0); + DOMTypeInfoImpl(DOMDocumentImpl* ownerDoc, const DOMPSVITypeInfo* sourcePSVI); + + static DOMTypeInfoImpl g_DtdValidatedElement; + static DOMTypeInfoImpl g_DtdNotValidatedAttribute; + static DOMTypeInfoImpl g_DtdValidatedCDATAAttribute; + static DOMTypeInfoImpl g_DtdValidatedIDAttribute; + static DOMTypeInfoImpl g_DtdValidatedIDREFAttribute; + static DOMTypeInfoImpl g_DtdValidatedIDREFSAttribute; + static DOMTypeInfoImpl g_DtdValidatedENTITYAttribute; + static DOMTypeInfoImpl g_DtdValidatedENTITIESAttribute; + static DOMTypeInfoImpl g_DtdValidatedNMTOKENAttribute; + static DOMTypeInfoImpl g_DtdValidatedNMTOKENSAttribute; + static DOMTypeInfoImpl g_DtdValidatedNOTATIONAttribute; + static DOMTypeInfoImpl g_DtdValidatedENUMERATIONAttribute; + + // ----------------------------------------------------------------------- + // DOMTypeInfo interface + // ----------------------------------------------------------------------- + virtual const XMLCh* getTypeName() const; + virtual const XMLCh* getTypeNamespace() const; + virtual bool isDerivedFrom(const XMLCh* typeNamespaceArg, const XMLCh* typeNameArg, DerivationMethods derivationMethod) const; + + // ----------------------------------------------------------------------- + // DOMPSVITypeInfo interface + // ----------------------------------------------------------------------- + virtual const XMLCh* getStringProperty(PSVIProperty prop) const; + virtual int getNumericProperty(PSVIProperty prop) const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + virtual void setStringProperty(PSVIProperty prop, const XMLCh* value); + virtual void setNumericProperty(PSVIProperty prop, int value); + +protected: + int fBitFields; + const XMLCh* fTypeName; + const XMLCh* fTypeNamespace; + const XMLCh* fMemberTypeName; + const XMLCh* fMemberTypeNamespace; + const XMLCh* fDefaultValue; + const XMLCh* fNormalizedValue; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMTypeInfoImpl (const DOMTypeInfoImpl&); + DOMTypeInfoImpl & operator = (const DOMTypeInfoImpl &); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DOMTypeInfo.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMXPathExpressionImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMXPathExpressionImpl.hpp new file mode 100644 index 000000000000..1065fb6d8c53 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMXPathExpressionImpl.hpp @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHEXPRESSIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHEXPRESSIONIMPL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMElement; +class XercesXPath; +class XPathMatcher; +class DOMXPathResultImpl; +class DOMXPathNSResolver; +class XMLStringPool; + +class CDOM_EXPORT DOMXPathExpressionImpl : public XMemory, + public DOMXPathExpression +{ +public: + DOMXPathExpressionImpl(const XMLCh *expression, + const DOMXPathNSResolver *resolver, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~DOMXPathExpressionImpl(); + + virtual DOMXPathResult* evaluate(const DOMNode *contextNode, + DOMXPathResult::ResultType type, + DOMXPathResult* result) const; + + virtual void release(); + +protected: + bool testNode(XPathMatcher* matcher, + DOMXPathResultImpl* result, + DOMElement *node) const; + void cleanUp(); + + XMLStringPool* fStringPool; + XercesXPath* fParsedExpression; + XMLCh* fExpression; + bool fMoveToRoot; + + MemoryManager* const fMemoryManager; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMXPathNSResolverImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMXPathNSResolverImpl.hpp new file mode 100644 index 000000000000..0435200edbac --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMXPathNSResolverImpl.hpp @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHNSRESOLVERIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHNSRESOLVERIMPL_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMNode; + +class CDOM_EXPORT DOMXPathNSResolverImpl : public XMemory, + public DOMXPathNSResolver +{ +public: + DOMXPathNSResolverImpl(const DOMNode* nodeResolver = 0, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~DOMXPathNSResolverImpl(); + + virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const; + virtual const XMLCh* lookupPrefix(const XMLCh* URI) const; + virtual void addNamespaceBinding(const XMLCh* prefix, const XMLCh* uri); + + virtual void release(); + +protected: + RefHashTableOf* fNamespaceBindings; + const DOMNode* fResolverNode; + MemoryManager* fManager; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + + diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMXPathResultImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMXPathResultImpl.hpp new file mode 100644 index 000000000000..ae0aa62d531c --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/DOMXPathResultImpl.hpp @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHRESULTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMXPATHRESULTIMPL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class CDOM_EXPORT DOMXPathResultImpl : public XMemory, + public DOMXPathResult +{ +public: + DOMXPathResultImpl(ResultType type, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~DOMXPathResultImpl(); + + virtual ResultType getResultType() const; + virtual const DOMTypeInfo *getTypeInfo() const; + virtual bool isNode() const; + virtual bool getBooleanValue() const; + virtual int getIntegerValue() const; + virtual double getNumberValue() const; + virtual const XMLCh* getStringValue() const; + virtual DOMNode* getNodeValue() const; + virtual bool iterateNext(); + virtual bool getInvalidIteratorState() const; + virtual bool snapshotItem(XMLSize_t); + virtual XMLSize_t getSnapshotLength() const; + + virtual void release(); + +public: + void reset(ResultType type); + void addResult(DOMNode* node); + +protected: + ResultType fType; + MemoryManager* const fMemoryManager; + RefVectorOf* fSnapshot; + XMLSize_t fIndex; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/dom/impl/XSDElementNSImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/XSDElementNSImpl.hpp new file mode 100644 index 000000000000..fd7877229e35 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/dom/impl/XSDElementNSImpl.hpp @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSDELEMENTNSIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_XSDELEMENTNSIMPL_HPP + +// +// This file is part of the internal implementation of the C++ XML DOM. +// It is used by TraverseSchema to store line/column information. +// It should NOT be included or used directly by application programs. +// +// Applications should include the file for the entire +// DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class +// name is substituded for the *. +// + + +#include "DOMElementNSImpl.hpp" + +XERCES_CPP_NAMESPACE_BEGIN + + + +class CDOM_EXPORT XSDElementNSImpl: public DOMElementNSImpl { +protected: + XMLFileLoc fLineNo; //Line number + XMLFileLoc fColumnNo; //Column number + + +public: + XSDElementNSImpl(DOMDocument *ownerDoc, const XMLCh *name); + XSDElementNSImpl(DOMDocument *ownerDoc, //DOM Level 2 + const XMLCh *namespaceURI, + const XMLCh *qualifiedName, + const XMLFileLoc lineNo, + const XMLFileLoc columnNo); + XSDElementNSImpl(const XSDElementNSImpl &other, bool deep=false); + + virtual DOMNode * cloneNode(bool deep) const; + + XMLFileLoc getLineNo() const { return fLineNo; } + XMLFileLoc getColumnNo() const { return fColumnNo; } + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSDElementNSImpl& operator=(const XSDElementNSImpl&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/BinOutputStream.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/BinOutputStream.hpp new file mode 100644 index 000000000000..b750862a22a5 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/BinOutputStream.hpp @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BIN_OUTPUT_STREAM_HPP) +#define XERCESC_INCLUDE_GUARD_BIN_OUTPUT_STREAM_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BinOutputStream : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Virtual destructor for derived classes + // ----------------------------------------------------------------------- + virtual ~BinOutputStream(); + + // ----------------------------------------------------------------------- + // The virtual output stream interface + // ----------------------------------------------------------------------- + virtual XMLFilePos curPos() const = 0; + + virtual void writeBytes + ( + const XMLByte* const toGo + , const XMLSize_t maxToWrite + ) = 0; + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + BinOutputStream(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented Constructors + // ----------------------------------------------------------------------- + BinOutputStream(const BinOutputStream&); + BinOutputStream& operator=(const BinOutputStream&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/LocalFileFormatTarget.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/LocalFileFormatTarget.hpp new file mode 100644 index 000000000000..9cae3d9bf7d6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/LocalFileFormatTarget.hpp @@ -0,0 +1,99 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_LOCALFILEFORMATTARGET_HPP) +#define XERCESC_INCLUDE_GUARD_LOCALFILEFORMATTARGET_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT LocalFileFormatTarget : public XMLFormatTarget { +public: + + /** @name constructors and destructor */ + //@{ + LocalFileFormatTarget + ( + const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + LocalFileFormatTarget + ( + const char* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~LocalFileFormatTarget(); + //@} + + // ----------------------------------------------------------------------- + // Implementations of the format target interface + // ----------------------------------------------------------------------- + virtual void writeChars(const XMLByte* const toWrite + , const XMLSize_t count + , XMLFormatter* const formatter); + + virtual void flush(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented methods. + // ----------------------------------------------------------------------- + LocalFileFormatTarget(const LocalFileFormatTarget&); + LocalFileFormatTarget& operator=(const LocalFileFormatTarget&); + + // ----------------------------------------------------------------------- + // Private helpers + // ----------------------------------------------------------------------- + void ensureCapacity(const XMLSize_t extraNeeded); + + // ----------------------------------------------------------------------- + // Private data members + // + // fSource + // The source file that we represent. The FileHandle type is defined + // per platform. + // + // fDataBuf + // The pointer to the buffer data. Its always + // one larger than fCapacity, to leave room for the null terminator. + // + // fIndex + // The current index into the buffer, as characters are appended + // to it. If its zero, then the buffer is empty. + // + // fCapacity + // The current capacity of the buffer. Its actually always one + // larger, to leave room for the null terminator. + // ----------------------------------------------------------------------- + FileHandle fSource; + XMLByte* fDataBuf; + XMLSize_t fIndex; + XMLSize_t fCapacity; + MemoryManager* fMemoryManager; +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/LocalFileInputSource.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/LocalFileInputSource.hpp new file mode 100644 index 000000000000..acbd9224f483 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/LocalFileInputSource.hpp @@ -0,0 +1,152 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +#if !defined(XERCESC_INCLUDE_GUARD_LOCALFILEINPUTSOURCE_HPP) +#define XERCESC_INCLUDE_GUARD_LOCALFILEINPUTSOURCE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class BinInputStream; + +/** + * This class is a derivative of the standard InputSource class. It provides + * for the parser access to data which is referenced via a local file path, + * as apposed to remote file or URL. This is the most efficacious mechanism + * by which local files can be parsed, since the parse knows that it refers + * to a local file and will make no other attempts to interpret the passed + * path. + * + * The path provided can either be a fully qualified path or a relative path. + * If relative, it will be completed either relative to a passed base path + * or relative to the current working directory of the process. + * + * As with all InputSource derivatives. The primary objective of an input + * source is to create an input stream via which the parser can spool in + * data from the referenced source. + */ +class XMLPARSER_EXPORT LocalFileInputSource : public InputSource +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors */ + //@{ + + /** + * A local file input source requires a path to the file to load. This + * can be provided either as a fully qualified path, a path relative to + * the current working directly, or a path relative to a provided base + * path. + * + * The completed path will become the system id of this input source. + * The constructors don't take any public id for local files, but you + * still set them via the parent class' setPublicId() method of course. + * + * This constructor takes an explicit base path and a possibly relative + * path. If the relative path is seen to be fully qualified, it is used + * as is. Otherwise, it is made relative to the passed base path. + * + * @param basePath The base path from which the passed relative path + * will be based, if the relative part is indeed + * relative. + * + * @param relativePath The relative part of the path. It can actually + * be fully qualified, in which case it is taken + * as is. + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * + * @exception XMLException If the path is relative and doesn't properly + * resolve to a file. + */ + LocalFileInputSource + ( + const XMLCh* const basePath + , const XMLCh* const relativePath + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * This constructor takes a single parameter which is the fully qualified + * or relative path. If it is fully qualified, it is taken as is. If it is + * relative, then it is completed relative to the current working directory + * (or the equivalent on the local host machine.) + * + * The completed path will become the system id of this input source. + * The constructors don't take any public id for local files, but you + * still set them via the parent class' setPublicId() method of course. + * + * @param filePath The relative or fully qualified path. + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * + * @exception XMLException If the path is relative and doesn't properly + * resolve to a file. + */ + LocalFileInputSource + ( + const XMLCh* const filePath + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Destructor */ + //@{ + ~LocalFileInputSource(); + //@} + + + // ----------------------------------------------------------------------- + // Virtual input source interface + // ----------------------------------------------------------------------- + + /** @name Virtual methods */ + //@{ + + /** + * This method will return a binary input stream derivative that will + * parse from the local file indicatedby the system id. + * + * @return A dynamically allocated binary input stream derivative that + * can parse from the file indicated by the system id. + */ + virtual BinInputStream* makeStream() const; + + //@} +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + LocalFileInputSource(const LocalFileInputSource&); + LocalFileInputSource& operator=(const LocalFileInputSource&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/MemBufFormatTarget.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/MemBufFormatTarget.hpp new file mode 100644 index 000000000000..e6ac33f84e93 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/MemBufFormatTarget.hpp @@ -0,0 +1,136 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_MEMBUFFORMATTARGET_HPP) +#define XERCESC_INCLUDE_GUARD_MEMBUFFORMATTARGET_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/* + * The MemBufFormatTarget is a derivative from XMLFormatTarget, which user code + * may plug into DOMLSSerializer to retrieve the serialized XML stream (from DOM Tree) + * in a memory buffer. + * + * The MemBufFormatTarget is initialized to have a memory buffer of 1023 upon + * construction, which grows as needed. The buffer will be deleted when + * MemBufFormatTarget is destructed; or will be reset when the reset() function + * is called. + * + * The MemBufFormatTarget returns a NULL terminated XMLByte stream upon request, + * through the method getRawBuffer(), and user should make its own copy of the + * returned buffer if it intends to keep it independent on the state of the + * MemBufFormatTarget. + */ + +class XMLPARSER_EXPORT MemBufFormatTarget : public XMLFormatTarget { +public: + + /** @name constructors and destructor */ + //@{ + MemBufFormatTarget + ( + XMLSize_t initCapacity = 1023 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) ; + ~MemBufFormatTarget(); + //@} + + // ----------------------------------------------------------------------- + // Implementations of the format target interface + // ----------------------------------------------------------------------- + virtual void writeChars(const XMLByte* const toWrite + , const XMLSize_t count + , XMLFormatter* const formatter); + + // ----------------------------------------------------------------------- + // Getter + // ----------------------------------------------------------------------- + /** @name getRawBuffer */ + //@{ + /** + * Returned the internal raw buffer. + * + */ + //@} + const XMLByte* getRawBuffer() const; + + /** @name getLen */ + //@{ + /** + * Returned the length of the raw buffer. + * + */ + //@} + XMLSize_t getLen() const + { + return fIndex; + } + + /** @name reset */ + //@{ + /** + * Reset the internal string buffer. + * + */ + void reset(); + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented methods. + // ----------------------------------------------------------------------- + MemBufFormatTarget(const MemBufFormatTarget&); + MemBufFormatTarget& operator=(const MemBufFormatTarget&); + + // ----------------------------------------------------------------------- + // Private helpers + // ----------------------------------------------------------------------- + void ensureCapacity(const XMLSize_t extraNeeded); + + // ----------------------------------------------------------------------- + // Private data members + // + // fDataBuf + // The pointer to the buffer data. Its grown as needed. Its always + // one larger than fCapacity, to leave room for the null terminator. + // + // fIndex + // The current index into the buffer, as characters are appended + // to it. If its zero, then the buffer is empty. + // + // fCapacity + // The current capacity of the buffer. Its actually always one + // larger, to leave room for the null terminator. + // + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + XMLByte* fDataBuf; + XMLSize_t fIndex; + XMLSize_t fCapacity; + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/MemBufInputSource.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/MemBufInputSource.hpp new file mode 100644 index 000000000000..a35132eda672 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/MemBufInputSource.hpp @@ -0,0 +1,232 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +#if !defined(XERCESC_INCLUDE_GUARD_MEMBUFINPUTSOURCE_HPP) +#define XERCESC_INCLUDE_GUARD_MEMBUFINPUTSOURCE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class BinInputStream; + + +/** + * This class is a derivative of the standard InputSource class. It provides + * for the parser access to data stored in a memory buffer. The type of + * buffer and its host specific attributes are of little concern here. The + * only real requirement is that the memory be readable by the current + * process. + * + * Note that the memory buffer size is expressed in bytes, not in + * characters. If you pass it text data, you must account for the bytes + * per character when indicating the buffer size. + * + * As with all InputSource derivatives. The primary objective of an input + * source is to create an input stream via which the parser can spool in + * data from the referenced source. In this case, there are two options + * available. + * + * The passed buffer can be adopted or merely referenced. If it is adopted, + * then it must be dynamically allocated and will be destroyed when the + * input source is destroyed (no reference counting!.) Note that the + * deallocation assumes that array deletion should be performed, so do + * not pass a non-array-allocated buffer if asking for adoption. + * If not adopted, the caller must insure that it remains valid until the + * input source object is destroyed. + * + * The other option indicates whether each stream created for this input + * source should get its own copy of the data, or whether it should just + * stream the data directly from this object's copy of the data. The same + * rules apply here, in that the buffer must either be copied by the + * stream or it must remain valid until the stream is destroyed. + */ +class XMLPARSER_EXPORT MemBufInputSource : public InputSource +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors */ + //@{ + + /** + * A memory buffer input source is constructed from a buffer of byte + * data, and the count of bytes in that buffer. The parser will parse + * from this memory buffer until it has eaten the indicated number of + * bytes. + * + * Note that the system id provided serves two purposes. Firstly it is + * going to be displayed in error messages as the source of the error. + * And secondly, any entities which are referred to from this entity + * via relative paths/URLs will be relative to this fake system id. + * + * @param srcDocBytes The actual data buffer to be parsed from. + * @param byteCount The count of bytes (not characters, bytes!) + * in the buffer. + * @param bufId A fake system id for the buffer. + * @param adoptBuffer Indicates whether this object should adopt + * the buffer (i.e. become responsible for + * deletion) or just + * use it in place. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + MemBufInputSource + ( + const XMLByte* const srcDocBytes + , const XMLSize_t byteCount + , const XMLCh* const bufId + , const bool adoptBuffer = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * This constructor is identical to the previous one, except that it takes + * the fake system id in local code page form and transcodes it internally. + */ + MemBufInputSource + ( + const XMLByte* const srcDocBytes + , const XMLSize_t byteCount + , const char* const bufId + , const bool adoptBuffer = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Destructor */ + //@{ + /** + * If the buffer was adopted, the copy made during construction is deleted + * at this point. + */ + ~MemBufInputSource(); + //@} + + + // ----------------------------------------------------------------------- + // Virtual input source interface + // ----------------------------------------------------------------------- + + /** @name Virtual methods */ + //@{ + + /** + * This method will return a binary input stream derivative that will + * parse from the memory buffer. If setCopyBufToStream() has been set, + * then the stream will make its own copy. Otherwise, it will use the + * buffer as is (in which case it must remain valid until the stream + * is no longer in use, i.e. the parse completes.) + * + * @return A dynamically allocated binary input stream derivative that + * can parse from the memory buffer. + */ + BinInputStream* makeStream() const; + + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + + //@{ + + /** + * By default, for safety's sake, each newly created stream from this + * input source will make its own copy of the buffer to stream from. This + * avoids having to deal with aliasing of the buffer for simple work. But, + * for higher performance applications or for large buffers, this is + * obviously not optimal. + * + * In such cases, you can call this method to turn off that default + * action. Once turned off, the streams will just get a pointer to the + * buffer and parse directly from that. In this case, you must insure that + * the buffer remains valid for as long as any parse events are still + * using it. + * + * @param newState The new boolean flag state to set. + */ + void setCopyBufToStream(const bool newState); + + /** + * This methods allows the MemBufInputSource to be used for more than + * one input source, instead of destructing/constructing another + * MemBufInputSource. + * + * @param srcDocBytes The actual data buffer to be parsed from. + * @param byteCount The count of bytes (not characters, bytes!) + * in the buffer. + */ + void resetMemBufInputSource(const XMLByte* const srcDocBytes + , const XMLSize_t byteCount); + //@} + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + MemBufInputSource(const MemBufInputSource&); + MemBufInputSource& operator=(const MemBufInputSource&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fAdopted + // Indicates whether the buffer is adopted or not. If so, then it + // is destroyed when the input source is destroyed. + // + // fByteCount + // The size of the source document. + // + // fCopyBufToStream + // This defaults to true (the safe option), which causes it to + // give a copy of the buffer to any streams it creates. If you set + // it to false, it will allow the streams to just reference the + // buffer (in which case this input source must stay alive as long + // as the buffer is in use by the stream.) + // + // fSrcBytes + // The source memory buffer that is being spooled from. Whether it + // belongs to the this input source or not is controlled by the + // fAdopted flag. + // ----------------------------------------------------------------------- + bool fAdopted; + XMLSize_t fByteCount; + bool fCopyBufToStream; + const XMLByte* fSrcBytes; +}; + + +inline void MemBufInputSource::setCopyBufToStream(const bool newState) +{ + fCopyBufToStream = newState; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/MemoryManager.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/MemoryManager.hpp new file mode 100644 index 000000000000..564eea9f13e6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/MemoryManager.hpp @@ -0,0 +1,125 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * $Id$ + */ + + +#if !defined(XERCESC_INCLUDE_GUARD_MEMORYMANAGER_HPP) +#define XERCESC_INCLUDE_GUARD_MEMORYMANAGER_HPP + +#include +#include + + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * Configurable memory manager + * + *

This interface allows outside applications to plug in their own memory + * manager to be used by Xerces for memory allocation/deallocation.

+ */ +class XMLPARSER_EXPORT MemoryManager +{ +public: + // ----------------------------------------------------------------------- + // Constructors are hidden, only the virtual destructor is exposed + // ----------------------------------------------------------------------- + + /** @name Destructor */ + //@{ + + /** + * Default destructor + */ + virtual ~MemoryManager() + { + } + //@} + + + /** + * This method is called to obtain the memory manager that should be + * used to allocate memory used in exceptions. If the same memory + * manager can be used, simply return 'this' from this function. + * Note, however, that if there is a possibility that an exception + * thrown can outlive the memory manager (for example, because the + * memory manager object is allocated on the stack or is managed by + * a stack-bound object), it is recommended that you return + * XMLPlatformUtils::fgMemoryManager. + * + * @return A pointer to the memory manager + */ + virtual MemoryManager* getExceptionMemoryManager() = 0; + + + // ----------------------------------------------------------------------- + // The virtual memory manager interface + // ----------------------------------------------------------------------- + /** @name The pure virtual methods in this interface. */ + //@{ + + /** + * This method allocates requested memory. + * + * @param size The requested memory size + * + * @return A pointer to the allocated memory + */ + virtual void* allocate(XMLSize_t size) = 0; + + /** + * This method deallocates memory + * + * @param p The pointer to the allocated memory to be deleted + */ + virtual void deallocate(void* p) = 0; + + //@} + + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + /** @name Constructor */ + //@{ + + /** + * Protected default constructor + */ + MemoryManager() + { + } + //@} + + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + MemoryManager(const MemoryManager&); + MemoryManager& operator=(const MemoryManager&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/StdInInputSource.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/StdInInputSource.hpp new file mode 100644 index 000000000000..e90dc3109ce8 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/StdInInputSource.hpp @@ -0,0 +1,108 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +#if !defined(XERCESC_INCLUDE_GUARD_STDININPUTSOURCE_HPP) +#define XERCESC_INCLUDE_GUARD_STDININPUTSOURCE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class BinInputStream; + + +/** + * This class is a derivative of the standard InputSource class. It provides + * for the parser access to data via the standard input. This input source + * is not commonly used, but can be useful when implementing such things + * as pipe based tools which exchange XML data. + * + * As with all InputSource derivatives. The primary objective of an input + * source is to create an input stream via which the parser can spool in + * data from the referenced source. + */ +class XMLPARSER_EXPORT StdInInputSource : public InputSource +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructor */ + //@{ + + /** + * Since the standard input is a canned source, the constructor is very + * simple. It just uses local platform services to open up the standard + * input source as file, a new handleof which it gives to each new stream + * it creates. + */ + StdInInputSource(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + //@} + + /** @name Destructor */ + //@{ + ~StdInInputSource(); + //@} + + + // ----------------------------------------------------------------------- + // Virtual input source interface + // ----------------------------------------------------------------------- + + + /** @name Virtual methods */ + //@{ + + /** + * This method will return a binary input stream derivative that will + * parse from the standard input of the local host. + * + * @return A dynamically allocated binary input stream derivative that + * can parse from the standardinput. + */ + BinInputStream* makeStream() const; + + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + StdInInputSource(const StdInInputSource&); + StdInInputSource& operator=(const StdInInputSource&); + +}; + +inline StdInInputSource::StdInInputSource(MemoryManager* const manager) : + + InputSource("stdin", manager) +{ +} + +inline StdInInputSource::~StdInInputSource() +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/StdOutFormatTarget.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/StdOutFormatTarget.hpp new file mode 100644 index 000000000000..c58502cc6752 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/StdOutFormatTarget.hpp @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_STDOUTFORMATTARGET_HPP) +#define XERCESC_INCLUDE_GUARD_STDOUTFORMATTARGET_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT StdOutFormatTarget : public XMLFormatTarget { +public: + + /** @name constructors and destructor */ + //@{ + StdOutFormatTarget() ; + ~StdOutFormatTarget(); + //@} + + // ----------------------------------------------------------------------- + // Implementations of the format target interface + // ----------------------------------------------------------------------- + virtual void writeChars(const XMLByte* const toWrite + , const XMLSize_t count + , XMLFormatter* const formatter); + + virtual void flush(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented methods. + // ----------------------------------------------------------------------- + StdOutFormatTarget(const StdOutFormatTarget&); + StdOutFormatTarget& operator=(const StdOutFormatTarget&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/URLInputSource.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/URLInputSource.hpp new file mode 100644 index 000000000000..0cdcfe2c4d62 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/URLInputSource.hpp @@ -0,0 +1,236 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_URLINPUTSOURCE_HPP) +#define XERCESC_INCLUDE_GUARD_URLINPUTSOURCE_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class BinInputStream; + +/** + * This class is a derivative of the standard InputSource class. It provides + * for the parser access to data which is referenced via a URL, as apposed to + * a local file name. The URL can be provided via an XMLURL class, as a fully + * qualified system id, or a base system id and a system id which may be + * fully qualified or may be relative to the base. + * + * As with all InputSource derivatives. The primary objective of an input + * source is to create an input stream via which the parser can spool in + * data from the referenced source. + * + * Note that the parse system does not necessarily support URL based XML + * entities out of the box. Support for socket based access is optional and + * controlled by the per-platform support. + */ +class XMLPARSER_EXPORT URLInputSource : public InputSource +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors */ + //@{ + + /** + * This constructor accepts an already built URL. It is assumed that + * it is correct and it will be used as is. In this case, no public id + * accepted, but it can still be set via the parent class' setPublicId() + * method. + * + * @param urlId The URL which holds the system id of the entity + * to parse. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + URLInputSource + ( + const XMLURL& urlId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + + /** + * This constructor takes a base system id URL and a possibly relative + * system id. The relative part is parsed and, if it is indeed relative, + * it will be made relative to the passed base id. Otherwise, it will be + * taken as is. + * + * @param baseId The base system id URL which provides the base + * for any relative id part. + * + * @param systemId The possibly relative system id URL. If its relative + * its based on baseId, else its taken as is. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + URLInputSource + ( + const XMLCh* const baseId + , const XMLCh* const systemId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * This constructor is identical to the previous one, except that it also + * allows you to set a public id if you want to. + * + * @param baseId The base system id URL which provides the base + * for any relative id part. + * + * @param systemId The possibly relative system id URL. If its relative + * its based on baseId, else its taken as is. + * + * @param publicId The optional public id to set. This is just passed + * on to the parent class for storage. + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + URLInputSource + ( + const XMLCh* const baseId + , const XMLCh* const systemId + , const XMLCh* const publicId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + + /** + * This constructor is identical to the second constructor above, except that + * it accepts the relative system id part as a local code page string and + * just transcodes it internally, as a convenience. + * + * @param baseId The base system id URL which provides the base + * for any relative id part. + * + * @param systemId The possibly relative system id URL. If its relative + * its based on baseId, else its taken as is. + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + URLInputSource + ( + const XMLCh* const baseId + , const char* const systemId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * This constructor is identical to the third constructor above, except that + * it accepts the relative and public ids as local code page strings and just + * transcodes them internally, as a convenience. + * + * @param baseId The base system id URL which provides the base + * for any relative id part. + * + * @param systemId The possibly relative system id URL. If its relative + * its based on baseId, else its taken as is. + * + * @param publicId The optional public id to set. This is just passed + * on to the parent class for storage. + * on to the parent class for storage. + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + URLInputSource + ( + const XMLCh* const baseId + , const char* const systemId + , const char* const publicId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** @name Destructor */ + //@{ + ~URLInputSource(); + //@} + + + // ----------------------------------------------------------------------- + // Virtual input source interface + // ----------------------------------------------------------------------- + + /** @name Virtual methods */ + //@{ + + /** + * This method will return a binary input stream derivative that will + * parse from the source referred to by the URL system id. + */ + BinInputStream* makeStream() const; + + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** + * This method will return a const reference to the URL member which + * contains the system id in pre-parsed URL form. If you just want the + * string format, call getSystemId() on the parent class. + * + * @return A const reference to a URL object that contains the current + * system id set for this input source. + */ + const XMLURL& urlSrc() const; + + //@} + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + URLInputSource(const URLInputSource&); + URLInputSource& operator=(const URLInputSource&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fURL + // This is the URL created from the passed ids. + // ----------------------------------------------------------------------- + XMLURL fURL; +}; + + +inline const XMLURL& URLInputSource::urlSrc() const +{ + return fURL; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/ValidationContext.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/ValidationContext.hpp new file mode 100644 index 000000000000..edb32316a778 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/ValidationContext.hpp @@ -0,0 +1,139 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALIDATION_CONTEXT_HPP) +#define XERCESC_INCLUDE_GUARD_VALIDATION_CONTEXT_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLRefInfo; +class DTDEntityDecl; +class DatatypeValidator; +class ElemStack; +class NamespaceScope; +class XMLScanner; + +class XMLPARSER_EXPORT ValidationContext : public XMemory +{ +public : + // ----------------------------------------------------------------------- + /** @name Virtual destructor for derived classes */ + // ----------------------------------------------------------------------- + //@{ + + /** + * virtual destructor + * + */ + virtual ~ValidationContext(){}; + //@} + + // ----------------------------------------------------------------------- + /** @name The ValidationContext Interface */ + // ----------------------------------------------------------------------- + //@{ + + /** + * IDRefList + * + */ + virtual RefHashTableOf* getIdRefList() const = 0; + + virtual void setIdRefList(RefHashTableOf* const) = 0; + + virtual void clearIdRefList() = 0; + + virtual void addId(const XMLCh * const ) = 0; + + virtual void addIdRef(const XMLCh * const ) = 0; + + virtual void toCheckIdRefList(bool) = 0; + + /** + * EntityDeclPool + * + */ + virtual const NameIdPool* getEntityDeclPool() const = 0; + + virtual const NameIdPool* setEntityDeclPool(const NameIdPool* const) = 0; + + virtual void checkEntity(const XMLCh * const ) const = 0 ; + + /** + * Union datatype handling + * + */ + + virtual DatatypeValidator * getValidatingMemberType() const = 0 ; + virtual void setValidatingMemberType(DatatypeValidator * validatingMemberType) = 0 ; + + /** + * QName datatype handling + * Create default implementations for source code compatibility + */ + virtual bool isPrefixUnknown(XMLCh* /* prefix */) { return true; }; + virtual void setElemStack(ElemStack* /* elemStack */) {}; + virtual const XMLCh* getURIForPrefix(XMLCh* /*prefix */) { return 0; }; + virtual void setScanner(XMLScanner* /* scanner */) { }; + virtual void setNamespaceScope(NamespaceScope* /* nsStack */) { }; + + //@} + + +protected : + // ----------------------------------------------------------------------- + /** Hidden Constructors */ + // ----------------------------------------------------------------------- + //@{ + ValidationContext(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager) + :fMemoryManager(memMgr) + { + }; + //@} + + // ----------------------------------------------------------------------- + // Data members + // + // fMemoryManager + // Pluggable memory manager for dynamic allocation/deallocation. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + +private : + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + ValidationContext(const ValidationContext& ); + ValidationContext& operator=(const ValidationContext& ); + //@} + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/Wrapper4DOMLSInput.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/Wrapper4DOMLSInput.hpp new file mode 100644 index 000000000000..aaa518725cdf --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/Wrapper4DOMLSInput.hpp @@ -0,0 +1,230 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_WRAPPER4DOMLSINPUT_HPP) +#define XERCESC_INCLUDE_GUARD_WRAPPER4DOMLSINPUT_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMLSInput; +class DOMLSResourceResolver; + +/** + * Wrap a DOMLSInput object and make it behave like a SAX InputSource. + */ +class XMLPARSER_EXPORT Wrapper4DOMLSInput: public InputSource +{ +public: + /** @name Constructors and Destructor */ + //@{ + + /** + * Constructor + * + * Wrap a DOMLSInput and make it behave like a SAX InputSource. + * By default, the wrapper will adopt the DOMLSInput that is wrapped. + * + * @param inputSource The DOMLSInput to be wrapped + * @param entityResolver The DOMLSResourceResolver to be used when resolving publicID entries + * @param adoptFlag Indicates if the wrapper should adopt the wrapped + * DOMLSInput. Default is true. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + Wrapper4DOMLSInput + ( + DOMLSInput* const inputSource + , DOMLSResourceResolver* entityResolver = 0 + , const bool adoptFlag = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Destructor + * + */ + virtual ~Wrapper4DOMLSInput(); + //@} + + + // ----------------------------------------------------------------------- + /** @name Virtual input source interface */ + //@{ + /** + * + * Makes the byte stream for this input source. + * + *

The function will call the makeStream of the wrapped input source. + * The returned stream becomes the parser's property.

+ * + * @see BinInputStream + */ + BinInputStream* makeStream() const; + + //@} + + // ----------------------------------------------------------------------- + /** @name Getter methods */ + //@{ + /** + * + * An input source can be set to force the parser to assume a particular + * encoding for the data that input source reprsents, via the setEncoding() + * method. This method will delegate to the wrapped input source to return + * name of the encoding that is to be forced. If the encoding has never + * been forced, it returns a null pointer. + * + * @return The forced encoding, or null if none was supplied. + * @see #setEncoding + */ + const XMLCh* getEncoding() const; + + + /** + * + * Get the public identifier for this input source. Delegated to the + * wrapped input source object. + * + * @return The public identifier, or null if none was supplied. + * @see #setPublicId + */ + const XMLCh* getPublicId() const; + + + /** + * + * Get the system identifier for this input source. Delegated to the + * wrapped input source object. + * + *

If the system ID is a URL, it will be fully resolved.

+ * + * @return The system identifier. + * @see #setSystemId + */ + const XMLCh* getSystemId() const; + + /** + * + * Get the flag that indicates if the parser should issue fatal error if + * this input source is not found. Delegated to the wrapped input source + * object. + * + * @return True if the parser should issue fatal error if this input source + * is not found. + * False if the parser issue warning message instead. + * @see #setIssueFatalErrorIfNotFound + */ + bool getIssueFatalErrorIfNotFound() const; + + //@} + + + // ----------------------------------------------------------------------- + /** @name Setter methods */ + //@{ + + /** + * + * Set the encoding which will be required for use with the XML text read + * via a stream opened by this input source. This will update the wrapped + * input source object. + * + *

This is usually not set, allowing the encoding to be sensed in the + * usual XML way. However, in some cases, the encoding in the file is known + * to be incorrect because of intermediate transcoding, for instance + * encapsulation within a MIME document. + * + * @param encodingStr The name of the encoding to force. + */ + void setEncoding(const XMLCh* const encodingStr); + + + /** + * + * Set the public identifier for this input source. This will update the + * wrapped input source object. + * + *

The public identifier is always optional: if the application writer + * includes one, it will be provided as part of the location information.

+ * + * @param publicId The public identifier as a string. + * @see Locator#getPublicId + * @see SAXParseException#getPublicId + * @see #getPublicId + */ + void setPublicId(const XMLCh* const publicId); + + /** + * + * Set the system identifier for this input source. This will update the + * wrapped input source object. + * + *

The system id is always required. The public id may be used to map + * to another system id, but the system id must always be present as a fall + * back.

+ * + *

If the system ID is a URL, it must be fully resolved.

+ * + * @param systemId The system identifier as a string. + * @see #getSystemId + * @see Locator#getSystemId + * @see SAXParseException#getSystemId + */ + void setSystemId(const XMLCh* const systemId); + + /** + * + * Indicates if the parser should issue fatal error if this input source + * is not found. If set to false, the parser issue warning message instead. + * This will update the wrapped input source object. + * + * @param flag True if the parser should issue fatal error if this input source is not found. + * If set to false, the parser issue warning message instead. (Default: true) + * + * @see #getIssueFatalErrorIfNotFound + */ + void setIssueFatalErrorIfNotFound(const bool flag); + + //@} + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Wrapper4DOMLSInput(const Wrapper4DOMLSInput&); + Wrapper4DOMLSInput& operator=(const Wrapper4DOMLSInput&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fAdoptInputSource, + fForceXMLChEncoding; + DOMLSInput* fInputSource; + DOMLSResourceResolver* fEntityResolver; +}; + +XERCES_CPP_NAMESPACE_END + + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/Wrapper4InputSource.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/Wrapper4InputSource.hpp new file mode 100644 index 000000000000..9c88699142f6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/Wrapper4InputSource.hpp @@ -0,0 +1,290 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_WRAPPER4INPUTSOURCE_HPP) +#define XERCESC_INCLUDE_GUARD_WRAPPER4INPUTSOURCE_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class InputSource; + + +/** + * Wrap a SAX InputSource object and make it behave like DOMLSInput. + */ +class XMLPARSER_EXPORT Wrapper4InputSource: public DOMLSInput +{ +public: + /** @name Constructors and Destructor */ + //@{ + + /** + * Constructor + * + * Wrap a SAX InputSource and make it behave like a DOMLSInput. + * By default, the wrapper will adopt the SAX InputSource that is wrapped. + * + * @param inputSource The SAX InputSource to be wrapped + * @param adoptFlag Indicates if the wrapper should adopt the wrapped + * SAX InputSource. Default is true. + * @param manager The MemoryManager to use to allocate objects + */ + Wrapper4InputSource(InputSource* const inputSource + , const bool adoptFlag = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Destructor + * + */ + virtual ~Wrapper4InputSource(); + //@} + + + // ----------------------------------------------------------------------- + /** @name Virtual input source interface */ + //@{ + /** + * This wrapper doesn't support string data + * + */ + virtual const XMLCh* getStringData() const; + + /** + * Makes the byte stream for this input source. + * + *

The function will call the makeStream of the wrapped input source. + * The returned stream becomes the parser's property.

+ * + * @see InputSource + */ + virtual InputSource* getByteStream() const; + //@} + + // ----------------------------------------------------------------------- + /** @name Getter methods */ + //@{ + /** + * An input source can be set to force the parser to assume a particular + * encoding for the data that input source represents, via the setEncoding() + * method. This method will delegate to the wrapped input source to return + * name of the encoding that is to be forced. If the encoding has never + * been forced, it returns a null pointer. + * + * @return The forced encoding, or null if none was supplied. + * @see #setEncoding + */ + virtual const XMLCh* getEncoding() const; + + + /** + * Get the public identifier for this input source. Delegated to the + * wrapped input source object. + * + * @return The public identifier, or null if none was supplied. + * @see #setPublicId + */ + const XMLCh* getPublicId() const; + + + /** + * Get the system identifier for this input source. Delegated to the + * wrapped input source object. + * + *

If the system ID is a URL, it will be fully resolved.

+ * + * @return The system identifier. + * @see #setSystemId + */ + const XMLCh* getSystemId() const; + + /** + * Get the base URI to be used for resolving relative URIs to absolute + * URIs. If the baseURI is itself a relative URI, the behavior is + * implementation dependent. Delegated to the wrapped intput source + * object. + * + * @return The base URI. + * @see #setBaseURI + * @since DOM Level 3 + */ + const XMLCh* getBaseURI() const; + + /** + * Get the flag that indicates if the parser should issue fatal error if this input source + * is not found. Delegated to the wrapped input source object. + * + * @return True if the parser should issue fatal error if this input source is not found. + * False if the parser issue warning message instead. + * @see #setIssueFatalErrorIfNotFound + */ + bool getIssueFatalErrorIfNotFound() const; + + //@} + + + // ----------------------------------------------------------------------- + /** @name Setter methods */ + //@{ + /** + * This wrapper only exposes the given InputSource, no setting allowed + * + */ + virtual void setStringData(const XMLCh* data); + + /** + * This wrapper only exposes the given InputSource, no setting allowed + * + */ + virtual void setByteStream(InputSource* stream); + + /** + * Set the encoding which will be required for use with the XML text read + * via a stream opened by this input source. This will update the wrapped + * input source object. + * + *

This is usually not set, allowing the encoding to be sensed in the + * usual XML way. However, in some cases, the encoding in the file is known + * to be incorrect because of intermediate transcoding, for instance + * encapsulation within a MIME document. + * + * @param encodingStr The name of the encoding to force. + */ + void setEncoding(const XMLCh* const encodingStr); + + + /** + * Set the public identifier for this input source. This will update the + * wrapped input source object. + * + *

The public identifier is always optional: if the application writer + * includes one, it will be provided as part of the location information.

+ * + * @param publicId The public identifier as a string. + * @see Locator#getPublicId + * @see SAXParseException#getPublicId + * @see #getPublicId + */ + void setPublicId(const XMLCh* const publicId); + + /** + * Set the system identifier for this input source. This will update the + * wrapped input source object. + * + *

The system id is always required. The public id may be used to map + * to another system id, but the system id must always be present as a fall + * back.

+ * + *

If the system ID is a URL, it must be fully resolved.

+ * + * @param systemId The system identifier as a string. + * @see #getSystemId + * @see Locator#getSystemId + * @see SAXParseException#getSystemId + */ + void setSystemId(const XMLCh* const systemId); + + /** + * Set the base URI to be used for resolving relative URIs to absolute + * URIs. If the baseURI is itself a relative URI, the behavior is + * implementation dependent. This will update the wrapped input source + * object. + * + * @param baseURI The base URI. + * @see #getBaseURI + * @since DOM Level 3 + */ + void setBaseURI(const XMLCh* const baseURI); + + /** + * Indicates if the parser should issue fatal error if this input source + * is not found. If set to false, the parser issue warning message + * instead. This will update the wrapped input source object. + * + * @param flag True if the parser should issue fatal error if this input + * source is not found. + * If set to false, the parser issue warning message instead. + * (Default: true) + * + * @see #getIssueFatalErrorIfNotFound + */ + void setIssueFatalErrorIfNotFound(bool flag); + + /** + * Called to indicate that this DOMInputSource is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + * Access to a released object will lead to unexpected result. + */ + void release(); + + //@} + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Wrapper4InputSource(const Wrapper4InputSource&); + Wrapper4InputSource& operator=(const Wrapper4InputSource&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fAdoptInputSource; + InputSource* fInputSource; +}; + + +// --------------------------------------------------------------------------- +// Wrapper4InputSource: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh* Wrapper4InputSource::getBaseURI() const +{ + return 0; // REVISIT - should we return an empty string? +} + +inline const XMLCh* Wrapper4InputSource::getStringData() const +{ + return 0; +} + +// --------------------------------------------------------------------------- +// Wrapper4InputSource: Setter methods +// --------------------------------------------------------------------------- +inline void Wrapper4InputSource::setBaseURI(const XMLCh* const) +{ +} + +inline void Wrapper4InputSource::setStringData(const XMLCh*) +{ +} + +inline void Wrapper4InputSource::setByteStream(InputSource*) +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLAttDef.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLAttDef.hpp new file mode 100644 index 000000000000..f5e479d8f9d7 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLAttDef.hpp @@ -0,0 +1,539 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLATTDEF_HPP) +#define XERCESC_INCLUDE_GUARD_XMLATTDEF_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLAttr; + +/** Represents the core information of an attribute definition + * + * This class defines the basic characteristics of an attribute, no matter + * what type of validator is used. If a particular schema associates more + * information with an attribute it will create a derivative of this class. + * So this class provides an abstract way to get basic information on + * attributes from any type of validator. + * + * This class supports keyed collection semantics on the fully qualified + * attribute name, by providing a getKey() method to extract the key string. + * getKey(), in this case, just calls the virtual method getFullName() to + * get the fully qualified name, as defined by the derived class. + * + * Note that the 'value' of an attribute type definition is the default or + * of fixed value given to it in its definition. If the attribute is of the + * enumerated or notation type, it will have an 'enumeration value' as well + * which is a space separated list of its possible vlaues. + */ +class XMLPARSER_EXPORT XMLAttDef : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Class specific types + // + // AttTypes + // The list of possible types that an attribute can have, according + // to the XML 1.0 spec and schema. + // + // DefAttTypes + // The modifiers that an attribute decl can have, which indicates + // whether instances of that attributes are required, implied, etc.. + // + // CreateReasons + // This type is used to store how an attribute declaration got into + // the elementdecl's attribute pool. + // + // ----------------------------------------------------------------------- + enum AttTypes + { + CData = 0 + , ID = 1 + , IDRef = 2 + , IDRefs = 3 + , Entity = 4 + , Entities = 5 + , NmToken = 6 + , NmTokens = 7 + , Notation = 8 + , Enumeration = 9 + , Simple = 10 + , Any_Any = 11 + , Any_Other = 12 + , Any_List = 13 + + , AttTypes_Count + , AttTypes_Min = 0 + , AttTypes_Max = 13 + , AttTypes_Unknown = -1 + }; + + enum DefAttTypes + { + Default = 0 + , Fixed = 1 + , Required = 2 + , Required_And_Fixed = 3 + , Implied = 4 + , ProcessContents_Skip = 5 + , ProcessContents_Lax = 6 + , ProcessContents_Strict = 7 + , Prohibited = 8 + + , DefAttTypes_Count + , DefAttTypes_Min = 0 + , DefAttTypes_Max = 8 + , DefAttTypes_Unknown = -1 + }; + + enum CreateReasons + { + NoReason + , JustFaultIn + }; + + // ----------------------------------------------------------------------- + // Public static data members + // ----------------------------------------------------------------------- + static const unsigned int fgInvalidAttrId; + + + // ----------------------------------------------------------------------- + // Public, static methods + // ----------------------------------------------------------------------- + + /** @name Public, static methods */ + //@{ + + /** Get a string representation of the passed attribute type enum + * + * This method allows you to get a textual representation of an attribute + * type, mostly for debug or display. + * + * @param attrType The attribute type value to get the string for. + * @param manager The MemoryManager to use to allocate objects + * @return A const pointer to the static string that holds the text + * description of the passed type. + */ + static const XMLCh* getAttTypeString(const AttTypes attrType + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Get a string representation of the passed def attribute type enum + * + * This method allows you to get a textual representation of an default + * attributetype, mostly for debug or display. + * + * @param attrType The default attribute type value to get the string for. + * @param manager The MemoryManager to use to allocate objects + * @return A const pointer to the static string that holds the text + * description of the passed default type. + */ + static const XMLCh* getDefAttTypeString(const DefAttTypes attrType + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + + // ----------------------------------------------------------------------- + // Destructor + // ----------------------------------------------------------------------- + + /** @name Destructor */ + //@{ + + /** + * Destructor + */ + virtual ~XMLAttDef(); + //@} + + + // ----------------------------------------------------------------------- + // The virtual attribute def interface + // ----------------------------------------------------------------------- + + /** @name Virtual interface */ + //@{ + + /** Get the full name of this attribute type + * + * The derived class should return a const pointer to the full name of + * this attribute. This will vary depending on the type of validator in + * use. + * + * @return A const pointer to the full name of this attribute type. + */ + virtual const XMLCh* getFullName() const = 0; + + /** + * The derived class should implement any cleaning up required between + * each use of an instance of this class for validation + */ + virtual void reset() = 0; + + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** Get the default type of this attribute type + * + * This method returns the 'default type' of the attribute. Default + * type in this case refers to the XML concept of a default type for + * an attribute, i.e. \#FIXED, \#IMPLIED, etc... + * + * @return The default type enum for this attribute type. + */ + DefAttTypes getDefaultType() const; + + /** Get the enumeration value (if any) of this attribute type + * + * If the attribute is of an enumeration or notation type, then this + * method will return a const reference to a string that contains the + * space separated values that can the attribute can have. + * + * @return A const pointer to a string that contains the space separated + * legal values for this attribute. + */ + const XMLCh* getEnumeration() const; + + /** Get the pool id of this attribute type + * + * This method will return the id of this attribute in the validator's + * attribute pool. It was set by the validator when this attribute was + * created. + * + * @return The pool id of this attribute type. + */ + XMLSize_t getId() const; + + /** Get the type of this attribute + * + * Gets the type of this attribute. This type is represented by an enum + * that converts the types of attributes allowed by XML, e.g. CDATA, NMTOKEN, + * NOTATION, etc... + * + * @return The attribute type enumeration value for this type of + * attribute. + */ + AttTypes getType() const; + + /** Get the default/fixed value of this attribute (if any.) + * + * If the attribute defined a default/fixed value, then it is stored + * and this method will retrieve it. If it has non, then a null pointer + * is returned. + * + * @return A const pointer to the default/fixed value for this attribute + * type. + */ + const XMLCh* getValue() const; + + /** Get the create reason for this attribute + * + * This method returns an enumeration which indicates why this attribute + * declaration exists. + * + * @return An enumerated value that indicates the reason why this attribute + * was added to the attribute table. + */ + CreateReasons getCreateReason() const; + + /** Indicate whether this attribute has been declared externally + * + * This method returns a boolean that indicates whether this attribute + * has been declared externally. + * + * @return true if this attribute has been declared externally, else false. + */ + bool isExternal() const; + + /** Get the plugged-in memory manager + * + * This method returns the plugged-in memory manager user for dynamic + * memory allocation/deallocation. + * + * @return the plugged-in memory manager + */ + MemoryManager* getMemoryManager() const; + + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + + /** Set the default attribute type + * + * This method sets the default attribute type for this attribute. + * This setting controls whether the attribute is required, fixed, + * implied, etc... + * + * @param newValue The new default attribute to set + */ + void setDefaultType(const XMLAttDef::DefAttTypes newValue); + + /** Set the pool id for this attribute type. + * + * This method sets the pool id of this attribute type. This is usually + * called by the validator that creates the actual instance (which is of + * a derived type known only by the validator.) + * + * @param newId The new pool id to set. + */ + void setId(const XMLSize_t newId); + + /** Set the type of this attribute type. + * + * This method will set the type of the attribute. The type of an attribute + * controls how it is normalized and what kinds of characters it can hold. + * + * @param newValue The new attribute type to set + */ + void setType(const XMLAttDef::AttTypes newValue); + + /** Set the default/fixed value of this attribute type. + * + * This method set the fixed/default value for the attribute. This value + * will be used when instances of this attribute type are faulted in. It + * must be a valid value for the type set by setType(). If the + * type is enumeration or notation, this must be one of the valid values + * set in the setEnumeration() call. + * + * @param newValue The new fixed/default value to set. + */ + void setValue(const XMLCh* const newValue); + + /** Set the enumerated value of this attribute type. + * + * This method sets the enumerated/notation value list for this attribute + * type. It is a space separated set of possible values. These values must + * meet the constrains of the XML spec for such values of this type of + * attribute. This should only be set if the setType() method is used to + * set the type to the enumeration or notation types. + * + * @param newValue The new enumerated/notation value list to set. + */ + void setEnumeration(const XMLCh* const newValue); + + /** Update the create reason for this attribute type. + * + * This method will update the 'create reason' field for this attribute + * decl object. + * + * @param newReason The new create reason. + */ + void setCreateReason(const CreateReasons newReason); + + /** + * Set the attribute decl to indicate external declaration + * + * @param aValue The new value to indicate external declaration. + */ + void setExternalAttDeclaration(const bool aValue); + + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLAttDef) + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XMLAttDef + ( + const AttTypes type = CData + , const DefAttTypes defType= Implied + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + XMLAttDef + ( + const XMLCh* const attValue + , const AttTypes type + , const DefAttTypes defType + , const XMLCh* const enumValues = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLAttDef(const XMLAttDef&); + XMLAttDef& operator=(const XMLAttDef&); + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fDefaultType + // Indicates what, if any, default stuff this attribute has. + // + // fEnumeration + // If its an enumeration, this is the list of values as space + // separated values. + // + // fId + // This is the unique id of this attribute, given to it when its put + // into the validator's attribute decl pool. It defaults to the + // special value XMLAttrDef::fgInvalidAttrId. + // + // fType + // The type of attribute, which is one of the AttTypes values. + // + // fValue + // This is the value of the attribute, which is the default value + // given in the attribute declaration. + // + // fCreateReason + // This flag tells us how this attribute got created. Sometimes even + // the attribute was not declared for the element, we want to fault + // fault it into the pool to avoid lots of redundant errors. + // + // fExternalAttribute + // This flag indicates whether or not the attribute was declared externally. + // ----------------------------------------------------------------------- + DefAttTypes fDefaultType; + AttTypes fType; + CreateReasons fCreateReason; + bool fExternalAttribute; + XMLSize_t fId; + XMLCh* fValue; + XMLCh* fEnumeration; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// Getter methods +// --------------------------------------------------------------------------- +inline XMLAttDef::DefAttTypes XMLAttDef::getDefaultType() const +{ + return fDefaultType; +} + +inline const XMLCh* XMLAttDef::getEnumeration() const +{ + return fEnumeration; +} + +inline XMLSize_t XMLAttDef::getId() const +{ + return fId; +} + +inline XMLAttDef::AttTypes XMLAttDef::getType() const +{ + return fType; +} + +inline const XMLCh* XMLAttDef::getValue() const +{ + return fValue; +} + +inline XMLAttDef::CreateReasons XMLAttDef::getCreateReason() const +{ + return fCreateReason; +} + +inline bool XMLAttDef::isExternal() const +{ + return fExternalAttribute; +} + +inline MemoryManager* XMLAttDef::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// XMLAttDef: Setter methods +// --------------------------------------------------------------------------- +inline void XMLAttDef::setDefaultType(const XMLAttDef::DefAttTypes newValue) +{ + fDefaultType = newValue; +} + +inline void XMLAttDef::setEnumeration(const XMLCh* const newValue) +{ + if (fEnumeration) + fMemoryManager->deallocate(fEnumeration); + + fEnumeration = XMLString::replicate(newValue, fMemoryManager); +} + +inline void XMLAttDef::setId(const XMLSize_t newId) +{ + fId = newId; +} + +inline void XMLAttDef::setType(const XMLAttDef::AttTypes newValue) +{ + fType = newValue; +} + +inline void XMLAttDef::setValue(const XMLCh* const newValue) +{ + if (fValue) + fMemoryManager->deallocate(fValue); + + fValue = XMLString::replicate(newValue, fMemoryManager); +} + +inline void +XMLAttDef::setCreateReason(const XMLAttDef::CreateReasons newReason) +{ + fCreateReason = newReason; +} + +inline void XMLAttDef::setExternalAttDeclaration(const bool aValue) +{ + fExternalAttribute = aValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLAttDefList.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLAttDefList.hpp new file mode 100644 index 000000000000..f0353a9379c8 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLAttDefList.hpp @@ -0,0 +1,171 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLATTDEFLIST_HPP) +#define XERCESC_INCLUDE_GUARD_XMLATTDEFLIST_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLAttDef; + +/** + * This class defines an abstract interface that all validators must support. + * When the scanner scans the attributes in a start tag, it must have a list + * of the defined attributes for that element. This is used to fault in + * defaulted and fixed attributes, to know which ones are required, and to + * know the their types in order to do the correct normalization. + * + * Since each validator will have its own derivatives of XMLAttDef and will + * have its own specialized storage mechanisms for elements and the att + * defs that they own, there must be an abstracted way for the scanner to + * deal with this list. + * + * It does not derive from the generic Enumerator template class, because + * there are portability issues with deriving from a template class in a + * DLL. It does though provide a similar enumerator interface. + */ + +class XMLPARSER_EXPORT XMLAttDefList : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Destructor */ + //@{ + virtual ~XMLAttDefList(); + //@} + + + // ----------------------------------------------------------------------- + // The virtual interface + // ----------------------------------------------------------------------- + + virtual bool isEmpty() const = 0; + virtual XMLAttDef* findAttDef + ( + const unsigned int uriID + , const XMLCh* const attName + ) = 0; + virtual const XMLAttDef* findAttDef + ( + const unsigned int uriID + , const XMLCh* const attName + ) const = 0; + virtual XMLAttDef* findAttDef + ( + const XMLCh* const attURI + , const XMLCh* const attName + ) = 0; + virtual const XMLAttDef* findAttDef + ( + const XMLCh* const attURI + , const XMLCh* const attName + ) const = 0; + + /** + * return total number of attributes in this list + */ + virtual XMLSize_t getAttDefCount() const = 0; + + /** + * return attribute at the index-th position in the list. + */ + virtual XMLAttDef &getAttDef(XMLSize_t index) = 0; + + /** + * return attribute at the index-th position in the list. + */ + virtual const XMLAttDef &getAttDef(XMLSize_t index) const = 0; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLAttDefList) + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** Get the memory manager + * + * This method returns the configurable memory manager used by the + * element declaration for dynamic allocation/deallocation. + * + * @return the memory manager + */ + MemoryManager* getMemoryManager() const; + + //@} + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors and operators + // ----------------------------------------------------------------------- + XMLAttDefList(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // unimplemented + XMLAttDefList(const XMLAttDefList&); + XMLAttDefList& operator=(const XMLAttDefList&); + + MemoryManager* fMemoryManager; +}; + + + +// --------------------------------------------------------------------------- +// XMLAttDefList: Getter methods +// --------------------------------------------------------------------------- + +inline MemoryManager* XMLAttDefList::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// XMLAttDefList: Constructors and Destructor +// --------------------------------------------------------------------------- +inline XMLAttDefList::~XMLAttDefList() +{ +} + + +// --------------------------------------------------------------------------- +// XMLAttDefList: Protected Constructor +// --------------------------------------------------------------------------- +inline XMLAttDefList::XMLAttDefList(MemoryManager* const manager): +fMemoryManager(manager) +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLAttr.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLAttr.hpp new file mode 100644 index 000000000000..27a1ecb8e045 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLAttr.hpp @@ -0,0 +1,501 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLATTR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLATTR_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class defines the information about an attribute that will come out + * of the scanner during parsing. This information does not depend upon the + * type of validator because it is not tied to any scheme/DTD type info. Its + * just the raw XML 1.0 information that will be reported about an attribute + * in the startElement() callback method of the XMLDocumentHandler class. + * Hence it is not intended to be extended or derived from. Its designed to + * be used as is. + * + * The 'specified' field of this class indicates whether the attribute was + * actually present or whether it was faulted in because it had a fixed or + * default value. + * + * The code receiving this information can ask its validator for more info + * about the attribute, i.e. get its declaration from the DTD/Schema info. + * + * Because of the heavy use (and reuse) of instances of this class, and the + * number of string members it has, this class takes pains to not reallocate + * string members unless it has to. It keeps up with how long each buffer + * is and only reallocates if the new value won't fit. + */ +class XMLPARSER_EXPORT XMLAttr : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor just setsup an empty attribute to be filled + * in the later. Though the initial state is a reasonable one, it is + * not documented because it should not be depended on. + * + * @param manager The configurable memory manager + */ + XMLAttr(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * This is the primary constructor which takes all of the information + * required to construct a complete attribute object. + * + * @param uriId The id into the validator's URI pool of the URI + * that the prefix mapped to. Only used if namespaces + * are enabled/supported. + * + * @param attrName The base name of the attribute, i.e. the part + * after any prefix. + * + * @param attrPrefix The prefix, if any, of this attribute's name. If + * this is empty, then uriID is meaningless as well. + * + * @param attrValue The value string of the attribute, which should + * be fully normalized by XML rules! + * + * @param type The type of the attribute. This will indicate + * the type of normalization done and constrains + * the value content. Make sure that the value + * set meets the constraints! + * + * @param specified Indicates whether the attribute was explicitly + * specified or not. If not, then it was faulted + * in from a FIXED or DEFAULT value. + * + * @param manager The configurable memory manager + * @param datatypeValidator type used to validate the attribute, + * if it was validated by an XML Schema + * @param isSchema true if and only if this attribute was validated + * by an XML Schema + */ + XMLAttr + ( + const unsigned int uriId + , const XMLCh* const attrName + , const XMLCh* const attrPrefix + , const XMLCh* const attrValue + , const XMLAttDef::AttTypes type = XMLAttDef::CData + , const bool specified = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , DatatypeValidator * datatypeValidator = 0 + , const bool isSchema = false + ); + + /** + * This is the primary constructor which takes all of the information + * required to construct a complete attribute object. + * + * @param uriId The id into the validator's URI pool of the URI + * that the prefix mapped to. Only used if namespaces + * are enabled/supported. + * + * @param rawName The raw name of the attribute. + * + * @param attrValue The value string of the attribute, which should + * be fully normalized by XML rules! + * + * @param type The type of the attribute. This will indicate + * the type of normalization done and constrains + * the value content. Make sure that the value + * set meets the constraints! + * + * @param specified Indicates whether the attribute was explicitly + * specified or not. If not, then it was faulted + * in from a FIXED or DEFAULT value. + * + * @param manager The configurable memory manager + * @param datatypeValidator type used to validate the attribute, + * if it was validated by an XML Schema + * @param isSchema true if and only if this attribute was validated + * by an XML Schema + */ + XMLAttr + ( + const unsigned int uriId + , const XMLCh* const rawName + , const XMLCh* const attrValue + , const XMLAttDef::AttTypes type = XMLAttDef::CData + , const bool specified = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , DatatypeValidator * datatypeValidator = 0 + , const bool isSchema = false + ); + + //@} + + /** @name Destructor */ + //@{ + ~XMLAttr(); + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** + * This method returns the attribute name in a QName format. + */ + QName* getAttName() const; + + /** + * This method gets a const pointer to the name of the attribute. The + * form of this name is defined by the validator in use. + */ + const XMLCh* getName() const; + + /** + * This method will get a const pointer to the prefix string of this + * attribute. Since prefixes are optional, it may be zero. + */ + const XMLCh* getPrefix() const; + + /** + * This method will get the QName of this attribute, which will be the + * prefix if any, then a colon, then the base name. If there was no + * prefix, its the same as the getName() method. + */ + const XMLCh* getQName() const; + + /** + * This method will get the specified flag, which indicates whether + * the attribute was explicitly specified or just faulted in. + */ + bool getSpecified() const; + + /** + * This method will get the type of the attribute. The available types + * are defined by the XML specification. + */ + XMLAttDef::AttTypes getType() const; + + /** + * This method will get the value of the attribute. The value can be + * be an empty string, but never null if the object is correctly + * set up. + */ + const XMLCh* getValue() const; + + /** + * This method will get the id of the URI that this attribute's prefix + * mapped to. If namespaces are not on, then its value is meaningless. + */ + unsigned int getURIId() const; + + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + + /** + * This method is called to set up a default constructed object after + * the fact, or to reuse a previously used object. + * + * @param uriId The id into the validator's URI pool of the URI + * that the prefix mapped to. Only used if namespaces + * are enabled/supported. + * + * @param attrName The base name of the attribute, i.e. the part + * after any prefix. + * + * @param attrPrefix The prefix, if any, of this attribute's name. If + * this is empty, then uriID is meaningless as well. + * + * @param attrValue The value string of the attribute, which should + * be fully normalized by XML rules according to the + * attribute type. + * + * @param type The type of the attribute. This will indicate + * the type of normalization done and constrains + * the value content. Make sure that the value + * set meets the constraints! + * @param datatypeValidator type used to validate the attribute, + * if it was validated by an XML Schema + * @param isSchema true if and only if this attribute was validated + * by an XML Schema + * + */ + void set + ( + const unsigned int uriId + , const XMLCh* const attrName + , const XMLCh* const attrPrefix + , const XMLCh* const attrValue + , const XMLAttDef::AttTypes type = XMLAttDef::CData + , DatatypeValidator * datatypeValidator = 0 + , const bool isSchema = false + ); + + /** + * This method is called to set up a default constructed object after + * the fact, or to reuse a previously used object. + * + * @param uriId The id into the validator's URI pool of the URI + * that the prefix mapped to. Only used if namespaces + * are enabled/supported. + * + * @param attrRawName The raw name of the attribute. + * + * @param attrValue The value string of the attribute, which should + * be fully normalized by XML rules according to the + * attribute type. + * + * @param type The type of the attribute. This will indicate + * the type of normalization done and constrains + * the value content. Make sure that the value + * set meets the constraints! + * @param datatypeValidator type used to validate the attribute, + * if it was validated by an XML Schema + * @param isSchema true if and only if this attribute was validated + * by an XML Schema + */ + void set + ( + const unsigned int uriId + , const XMLCh* const attrRawName + , const XMLCh* const attrValue + , const XMLAttDef::AttTypes type = XMLAttDef::CData + , DatatypeValidator * datatypeValidator = 0 + , const bool isSchema = false + ); + + /** + * This method will update just the name related fields of the + * attribute object. The other fields are left as is. + * + * @param uriId The id into the validator's URI pool of the URI + * that the prefix mapped to. Only used if namespaces + * are enabled/supported. + * + * @param attrName The base name of the attribute, i.e. the part + * after any prefix. + * + * @param attrPrefix The prefix, if any, of this attribute's name. If + * this is empty, then uriID is meaningless as well. + */ + void setName + ( + const unsigned int uriId + , const XMLCh* const attrName + , const XMLCh* const attrPrefix + ); + + /** + * This method will update the specified state of the object. + * + * @param newValue Indicates whether the attribute was explicitly + * specified or not. If not, then it was faulted + * in from a FIXED or DEFAULT value. + */ + void setSpecified(const bool newValue); + + /** + * This method will update the attribute type of the object. + * + * @param newType The type of the attribute. This will indicate + * the type of normalization done and constrains + * the value content. Make sure that the value + * set meets the constraints! + */ + void setType(const XMLAttDef::AttTypes newType); + + /** + * This method will update the value field of the attribute. + * + * @param newValue The value string of the attribute, which should + * be fully normalized by XML rules according to the + * attribute type. + */ + void setValue(const XMLCh* const newValue); + + /** + * This method will set the URI id field of this attribute. This is + * generally only ever called internally by the parser itself during + * the parsing process. + * + * @param uriId The uriId of the attribute. + */ + void setURIId(const unsigned int uriId); + + //@} + + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLAttr(const XMLAttr&); + XMLAttr& operator=(const XMLAttr&); + + + // ----------------------------------------------------------------------- + // Private, helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + + + // ----------------------------------------------------------------------- + // Private instance variables + // + // fAttName + // The Attribute Name; + // + // fSpecified + // True if this attribute appeared in the element; else, false if + // it was defaulted from an AttDef. + // + // fType + // The attribute type enum value for this attribute. Indicates what + // type of attribute it was. + // + // fValue + // fValueBufSz + // The attribute value that was given in the attribute instance, and + // its current buffer size (minus one, where the null is.) + // + // fMemoryManager + // The memory manager used for dynamic memory allocation/deallocation + // ----------------------------------------------------------------------- + bool fSpecified; + XMLAttDef::AttTypes fType; + XMLSize_t fValueBufSz; + XMLCh* fValue; + QName* fAttName; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// XMLAttr: Constructors and Destructor +// --------------------------------------------------------------------------- +inline XMLAttr::~XMLAttr() +{ + cleanUp(); +} + + +// --------------------------------------------------------------------------- +// XMLAttr: Getter methods +// --------------------------------------------------------------------------- +inline QName* XMLAttr::getAttName() const +{ + return fAttName; +} + +inline const XMLCh* XMLAttr::getName() const +{ + return fAttName->getLocalPart(); +} + +inline const XMLCh* XMLAttr::getPrefix() const +{ + return fAttName->getPrefix(); +} + +inline bool XMLAttr::getSpecified() const +{ + return fSpecified; +} + +inline XMLAttDef::AttTypes XMLAttr::getType() const +{ + return fType; +} + +inline const XMLCh* XMLAttr::getValue() const +{ + return fValue; +} + +inline unsigned int XMLAttr::getURIId() const +{ + return fAttName->getURI(); +} + +// --------------------------------------------------------------------------- +// XMLAttr: Setter methods +// --------------------------------------------------------------------------- +inline void XMLAttr::set(const unsigned int uriId + , const XMLCh* const attrName + , const XMLCh* const attrPrefix + , const XMLCh* const attrValue + , const XMLAttDef::AttTypes type + , DatatypeValidator * /*datatypeValidator */ + , const bool /*isSchema*/ ) +{ + // Set the name info and the value via their respective calls + fAttName->setName(attrPrefix, attrName, uriId); + setValue(attrValue); + + // And store the type + fType = type; +} + +inline void XMLAttr::set(const unsigned int uriId + , const XMLCh* const attrRawName + , const XMLCh* const attrValue + , const XMLAttDef::AttTypes type + , DatatypeValidator * /*datatypeValidator */ + , const bool /*isSchema*/ ) +{ + // Set the name info and the value via their respective calls + fAttName->setName(attrRawName, uriId); + setValue(attrValue); + + // And store the type + fType = type; +} + +inline void XMLAttr::setType(const XMLAttDef::AttTypes newValue) +{ + fType = newValue; +} + +inline void XMLAttr::setSpecified(const bool newValue) +{ + fSpecified = newValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLBuffer.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLBuffer.hpp new file mode 100644 index 000000000000..1062f6d5d2d6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLBuffer.hpp @@ -0,0 +1,281 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLBUFFER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLBUFFER_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLBufferFullHandler; + +/** + * XMLBuffer is a lightweight, expandable Unicode text buffer. Since XML is + * inherently theoretically unbounded in terms of the sizes of things, we + * very often need to have expandable buffers. The primary concern here is + * that appends of characters and other buffers or strings be very fast, so + * it always maintains the current buffer size. + * + * The buffer is not null terminated until some asks to see the raw buffer + * contents. This also avoids overhead during append operations. + */ +class XMLPARSER_EXPORT XMLBuffer : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructor */ + //@{ + XMLBuffer(const XMLSize_t capacity = 1023 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) : + + fIndex(0) + , fCapacity(capacity) + , fFullSize(0) + , fUsed(false) + , fMemoryManager(manager) + , fFullHandler(0) + , fBuffer(0) + { + // Buffer is one larger than capacity, to allow for zero term + fBuffer = (XMLCh*) manager->allocate((capacity+1) * sizeof(XMLCh)); //new XMLCh[fCapacity+1]; + + // Keep it null terminated + fBuffer[0] = XMLCh(0); + } + //@} + + /** @name Destructor */ + //@{ + ~XMLBuffer() + { + fMemoryManager->deallocate(fBuffer); //delete [] fBuffer; + } + //@} + + // ----------------------------------------------------------------------- + // Buffer Full Handler Management + // ----------------------------------------------------------------------- + void setFullHandler(XMLBufferFullHandler* handler, const XMLSize_t fullSize) + { + if (handler && fullSize) { + fFullHandler = handler; + fFullSize = fullSize; + + // Need to consider the case that the fullsize is less than the current capacity. + // For example, say fullSize = 100 and fCapacity is 1023 (the default). + // If the fIndex is less than the fullSize, then no problem. We can just carry + // on by resetting fCapacity to fullsize and proceed business as usual. + // If the fIndex is already bigger than the fullSize then we call ensureCapacity + // to see if it can handle emptying the current buffer (it will throw an + // exception if it can't). + if (fullSize < fCapacity) { + fCapacity = fullSize; + if (fIndex >= fullSize) { + ensureCapacity(0); + } + } + } + else { + // reset fFullHandler to zero because setFullHandler had bad input + fFullHandler = 0; + } + } + + // ----------------------------------------------------------------------- + // Buffer Management + // ----------------------------------------------------------------------- + void append(const XMLCh toAppend) + { + // Put in char and bump the index + if (fIndex == fCapacity) + ensureCapacity(1); + fBuffer[fIndex++] = toAppend; + } + + void append (const XMLCh* const chars, const XMLSize_t count) + { + if (count) { + if (fIndex + count >= fCapacity) { + ensureCapacity(count); + } + memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh)); + fIndex += count; + } + else { + append(chars); + } + } + + void append (const XMLCh* const chars) + { + if (chars != 0 && *chars != 0) { + // get length of chars + XMLSize_t count = 0; + for (; *(chars+count); count++ ) /*noop*/; + + if (fIndex + count >= fCapacity) { + ensureCapacity(count); + } + memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh)); + fIndex += count; + } + } + + void set (const XMLCh* const chars, const XMLSize_t count) + { + fIndex = 0; + append(chars, count); + } + + void set (const XMLCh* const chars) + { + fIndex = 0; + if (chars != 0 && *chars != 0) + append(chars); + } + + const XMLCh* getRawBuffer() const + { + fBuffer[fIndex] = 0; + return fBuffer; + } + + XMLCh* getRawBuffer() + { + fBuffer[fIndex] = 0; + return fBuffer; + } + + void reset() + { + fIndex = 0; + } + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + bool getInUse() const + { + return fUsed; + } + + XMLSize_t getLen() const + { + return fIndex; + } + + bool isEmpty() const + { + return (fIndex == 0); + } + + // ----------------------------------------------------------------------- + // Setters + // ----------------------------------------------------------------------- + void setInUse(const bool newValue) + { + fUsed = newValue; + } + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLBuffer(const XMLBuffer&); + XMLBuffer& operator=(const XMLBuffer&); + + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class XMLBufBid; + + // ----------------------------------------------------------------------- + // Private helpers + // ----------------------------------------------------------------------- + void ensureCapacity(const XMLSize_t extraNeeded); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fBuffer + // The pointer to the buffer data. Its grown as needed. Its always + // one larger than fCapacity, to leave room for the null terminator. + // + // fIndex + // The current index into the buffer, as characters are appended + // to it. If its zero, then the buffer is empty. + // + // fCapacity + // The current capacity of the buffer. Its actually always one + // larger, to leave room for the null terminator. + // + // fUsed + // Indicates whether this buffer is in use or not. + // + // fFullHandler, fFullSize + // If fFullHandler is non-null, the buffer has a maximum size + // indicated by fFullSize. If writing to the buffer would exceed the + // buffer's maximum size, fFullHandler's bufferFull callback is + // invoked, to empty the buffer. + // ----------------------------------------------------------------------- + XMLSize_t fIndex; + XMLSize_t fCapacity; + XMLSize_t fFullSize; + bool fUsed; + MemoryManager* const fMemoryManager; + XMLBufferFullHandler* fFullHandler; + XMLCh* fBuffer; +}; + +/** + * XMLBufferFullHandler is a callback interface for clients of + * XMLBuffers that impose a size restriction (e.g. XMLScanner). + * Note that this is intended solely as a mix-in for internal + * use, and therefore does not derive from XMemory (to avoid + * the ambiguous base class problem). + */ +class XMLPARSER_EXPORT XMLBufferFullHandler +{ +public : + + virtual ~XMLBufferFullHandler() {} + + /** + * Callback method, intended to allow clients of an XMLBuffer which has + * become full to empty it appropriately. + * @return true if the handler was able to empty the buffer (either + * partially or completely), otherwise false to indicate an error. + */ + virtual bool bufferFull(XMLBuffer&) = 0; + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLBufferMgr.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLBufferMgr.hpp new file mode 100644 index 000000000000..a77405f8f1ab --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLBufferMgr.hpp @@ -0,0 +1,212 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLBUFFERMGR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLBUFFERMGR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLBufBid; + +/** + * There are many places where XMLBuffer objects are needed. In order to + * avoid either constantly creating and destroying them or maintaining a + * fixed set and worrying about accidental reuse, a buffer manager can + * provide a pool of buffers which can be temporarily used and then put + * back into the pool. This provides a good compromise between performance + * and easier maintenance. + */ +class XMLPARSER_EXPORT XMLBufferMgr : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructor */ + //@{ + XMLBufferMgr(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + //@} + + /** @name Destructor */ + //@{ + ~XMLBufferMgr(); + //@} + + + // ----------------------------------------------------------------------- + // Buffer management + // ----------------------------------------------------------------------- + XMLBuffer& bidOnBuffer(); + void releaseBuffer(XMLBuffer& toRelease); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t getBufferCount() const; + XMLSize_t getAvailableBufferCount() const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLBufferMgr(const XMLBufferMgr&); + XMLBufferMgr& operator=(const XMLBufferMgr&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fBufCount + // The count of buffers that have been allocated so far. + // + // fBufList; + // The list of pointers to buffers that are loaned out. There will + // never be a lot of them, so a flat list is good enough. + // ----------------------------------------------------------------------- + XMLSize_t fBufCount; + MemoryManager* fMemoryManager; + XMLBuffer** fBufList; +}; + +inline XMLSize_t XMLBufferMgr::getBufferCount() const +{ + return fBufCount; +} + +inline XMLSize_t XMLBufferMgr::getAvailableBufferCount() const +{ + XMLSize_t available = fBufCount; + for (XMLSize_t index = 0; index < fBufCount && fBufList[index]; index++) + { + if (fBufList[index]->getInUse()) + --available; + } + return available; +} + + +/** + * XMLBufBid is a scoped based janitor that allows the scanner code to ask + * for a buffer on a scoped basis and then insure that it gets freed back + * into the pool no matter how the scope is exited (exception or normal exit.) + */ +class XMLBufBid : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLBufBid(XMLBufferMgr* const srcMgr) : + + fBuffer(srcMgr->bidOnBuffer()) + , fMgr(srcMgr) + { + } + + ~XMLBufBid() + { + fMgr->releaseBuffer(fBuffer); + } + + + + // ----------------------------------------------------------------------- + // Buffer access + // ----------------------------------------------------------------------- + void append(const XMLCh toAppend) + { + fBuffer.append(toAppend); + } + + void append(const XMLCh* const toAppend, const XMLSize_t count = 0) + { + fBuffer.append(toAppend, count); + } + + const XMLBuffer& getBuffer() const + { + return fBuffer; + } + + XMLBuffer& getBuffer() + { + return fBuffer; + } + + const XMLCh* getRawBuffer() const + { + fBuffer.fBuffer[fBuffer.fIndex] = 0; + return fBuffer.fBuffer; + } + + XMLCh* getRawBuffer() + { + fBuffer.fBuffer[fBuffer.fIndex] = 0; + return fBuffer.fBuffer; + } + + XMLSize_t getLen() const + { + return fBuffer.fIndex; + } + + bool isEmpty() const + { + return (fBuffer.fIndex == 0); + } + + void reset() + { + fBuffer.reset(); + } + + void set(const XMLCh* const chars, const XMLSize_t count = 0) + { + fBuffer.set(chars, count); + } + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLBufBid(const XMLBufBid&); + XMLBufBid& operator=(const XMLBufBid&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fBuffer + // This is the buffer we got, and which we will release. + // + // fMgr + // This is the buffer manager we got the buffer from. This is needed + // to release the buffer later. + // ----------------------------------------------------------------------- + XMLBuffer& fBuffer; + XMLBufferMgr* const fMgr; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLContentModel.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLContentModel.hpp new file mode 100644 index 000000000000..24d23ac4070a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLContentModel.hpp @@ -0,0 +1,145 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLCONTENTMODEL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLCONTENTMODEL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentLeafNameTypeVector; +class GrammarResolver; +class XMLStringPool; +class XMLValidator; +class SchemaGrammar; +class SubstitutionGroupComparator; + +/** + * This class defines the abstract interface for all content models. All + * elements have a content model against which (if validating) its content + * is checked. Each type of validator (DTD, Schema, etc...) can have + * different types of content models, and even with each type of validator + * there can be specialized content models. So this simple class provides + * the abstract API via which all the types of contents models are dealt + * with generically. Its pretty simple. + */ +class XMLPARSER_EXPORT XMLContentModel : public XMemory +{ +public: + // --------------------------------------------------------------------------- + // Public static data + // + // gInvalidTrans + // This value represents an invalid transition in each line of the + // transition table. + // + // gEOCFakeId + // gEpsilonFakeId + // We have to put in a couple of special CMLeaf nodes to represent + // special values, using fake element ids that we know won't conflict + // with real element ids. + // + // + // --------------------------------------------------------------------------- + static const unsigned int gInvalidTrans; + static const unsigned int gEOCFakeId; + static const unsigned int gEpsilonFakeId; + + // ----------------------------------------------------------------------- + // Constructors are hidden, only the virtual Destructor is exposed + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + virtual ~XMLContentModel() + { + } + //@} + + + // ----------------------------------------------------------------------- + // The virtual content model interface provided by derived classes + // ----------------------------------------------------------------------- + virtual bool validateContent + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const = 0; + + virtual bool validateContentSpecial + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const =0; + + virtual void checkUniqueParticleAttribution + ( + SchemaGrammar* const pGrammar + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLValidator* const pValidator + , unsigned int* const pContentSpecOrgURI + , const XMLCh* pComplexTypeName = 0 + ) =0; + + virtual ContentLeafNameTypeVector* getContentLeafNameTypeVector() + const = 0; + + virtual unsigned int getNextState(unsigned int currentState, + XMLSize_t elementIndex) const = 0; + + virtual bool handleRepetitions( const QName* const curElem, + unsigned int curState, + unsigned int currentLoop, + unsigned int& nextState, + unsigned int& nextLoop, + XMLSize_t elementIndex, + SubstitutionGroupComparator * comparator) const = 0; + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + XMLContentModel() + { + } + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLContentModel(const XMLContentModel&); + XMLContentModel& operator=(const XMLContentModel&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLDTDDescription.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLDTDDescription.hpp new file mode 100644 index 000000000000..e4a5455f2a13 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLDTDDescription.hpp @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLDTDDESCRIPTION_HPP) +#define XERCESC_INCLUDE_GUARD_XMLDTDDESCRIPTION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT XMLDTDDescription : public XMLGrammarDescription +{ +public : + // ----------------------------------------------------------------------- + /** @name Virtual destructor for derived classes */ + // ----------------------------------------------------------------------- + //@{ + /** + * virtual destructor + * + */ + virtual ~XMLDTDDescription(); + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of Grammar Description Interface */ + // ----------------------------------------------------------------------- + //@{ + /** + * getGrammarType + * + */ + virtual Grammar::GrammarType getGrammarType() const + { + return Grammar::DTDGrammarType; + } + //@} + + // ----------------------------------------------------------------------- + /** @name The DTDDescription Interface */ + // ----------------------------------------------------------------------- + //@{ + /** + * Getter + * + */ + virtual const XMLCh* getRootName() const = 0; + virtual const XMLCh* getSystemId() const {return 0;}; + + /** + * Setter + * + */ + virtual void setRootName(const XMLCh* const) = 0; + virtual void setSystemId(const XMLCh* const) {}; + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLDTDDescription) + +protected : + // ----------------------------------------------------------------------- + /** Hidden Constructors */ + // ----------------------------------------------------------------------- + //@{ + XMLDTDDescription(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); + //@} + +private : + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + XMLDTDDescription(const XMLDTDDescription& ); + XMLDTDDescription& operator=(const XMLDTDDescription& ); + //@} + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLDocumentHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLDocumentHandler.hpp new file mode 100644 index 000000000000..29d10ab57513 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLDocumentHandler.hpp @@ -0,0 +1,283 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLDOCUMENTHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLDOCUMENTHANDLER_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLElementDecl; +class XMLEntityDecl; + +/** + * This abstract class provides the interface for the scanner to return + * XML document information up to the parser as it scans through the + * document. + * + * The interface is very similar to org.sax.DocumentHandler, but + * has some extra methods required to get all the data out. + */ +class XMLPARSER_EXPORT XMLDocumentHandler +{ +public: + // ----------------------------------------------------------------------- + // Constructors are hidden, just the virtual destructor is exposed + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + virtual ~XMLDocumentHandler() + { + } + //@} + + /** @name The document handler interface */ + //@{ + /** Receive notification of character data. + * + *

The scanner will call this method to report each chunk of + * character data. The scanner may return all contiguous character + * data in a single chunk, or they may split it into several + * chunks; however, all of the characters in any single event + * will come from the same external entity, so that the Locator + * provides useful information.

+ * + *

The parser must not attempt to read from the array + * outside of the specified range.

+ * + * @param chars The content (characters) between markup from the XML + * document. + * @param length The number of characters to read from the array. + * @param cdataSection Indicates that this data is inside a CDATA + * section. + * @see #ignorableWhitespace + * @see Locator + */ + virtual void docCharacters + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ) = 0; + + /** Receive notification of comments in the XML content being parsed. + * + * This scanner will call this method for any comments found in the + * content of the document. + * + * @param comment The text of the comment. + */ + virtual void docComment + ( + const XMLCh* const comment + ) = 0; + + /** Receive notification of PI's parsed in the XML content. + * + * The scanner will call this method for any PIs it finds within the + * content of the document. + * + * @param target The name of the PI. + * @param data The body of the PI. This may be an empty string since + * the body is optional. + */ + virtual void docPI + ( + const XMLCh* const target + , const XMLCh* const data + ) = 0; + + /** Receive notification after the scanner has parsed the end of the + * document. + * + * The scanner will call this method when the current document has been + * fully parsed. The handler may use this opportunity to do something with + * the data, clean up temporary data, etc... + */ + virtual void endDocument() = 0; + + /** Receive notification of the end of an element. + * + * This method is called when scanner encounters the end of element tag. + * There will be a corresponding startElement() event for every + * endElement() event, but not necessarily the other way around. For + * empty tags, there is only a startElement() call. + * + * @param elemDecl The name of the element whose end tag was just + * parsed. + * @param uriId The ID of the URI in the URI pool (only valid if + * name spaces is enabled) + * @param isRoot Indicates if this is the root element. + * @param prefixName The string representing the prefix name + */ + virtual void endElement + ( + const XMLElementDecl& elemDecl + , const unsigned int uriId + , const bool isRoot + , const XMLCh* const prefixName = 0 + ) = 0; + + /** Receive notification when a referenced entity's content ends + * + * This method is called when scanner encounters the end of an entity + * reference. + * + * @param entDecl The name of the entity reference just scanned. + */ + virtual void endEntityReference + ( + const XMLEntityDecl& entDecl + ) = 0; + + /** Receive notification of ignorable whitespace in element content. + * + *

Validating Parsers must use this method to report each chunk + * of ignorable whitespace (see the W3C XML 1.0 recommendation, + * section 2.10): non-validating parsers may also use this method + * if they are capable of parsing and using content models.

+ * + *

The scanner may return all contiguous whitespace in a single + * chunk, or it may split it into several chunks; however, all of + * the characters in any single event will come from the same + * external entity, so that the Locator provides useful + * information.

+ * + *

The parser must not attempt to read from the array + * outside of the specified range.

+ * + * @param chars The whitespace characters from the XML document. + * @param length The number of characters to read from the array. + * @param cdataSection Indicates that this data is inside a CDATA + * section. + * @see #docCharacters + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ) = 0; + + /** Reset the document handler's state, if required + * + * This method is used to give the registered document handler a + * chance to reset itself. Its called by the scanner at the start of + * every parse. + */ + virtual void resetDocument() = 0; + + /** Receive notification of the start of a new document + * + * This method is the first callback called the scanner at the + * start of every parse. This is before any content is parsed. + */ + virtual void startDocument() = 0; + + /** Receive notification of a new start tag + * + * This method is called when scanner encounters the start of an element tag. + * All elements must always have a startElement() tag. Empty tags will + * only have the startElement() tag and no endElement() tag. + * + * @param elemDecl The name of the element whose start tag was just + * parsed. + * @param uriId The ID of the URI in the URI pool (only valid if + * name spaces is enabled) + * @param prefixName The string representing the prefix name + * @param attrList List of attributes in the element + * @param attrCount Count of the attributes in the element + * @param isEmpty Indicates if the element is empty, in which case + * you should not expect an endElement() event. + * @param isRoot Indicates if this is the root element. + */ + virtual void startElement + ( + const XMLElementDecl& elemDecl + , const unsigned int uriId + , const XMLCh* const prefixName + , const RefVectorOf& attrList + , const XMLSize_t attrCount + , const bool isEmpty + , const bool isRoot + ) = 0; + + /** Receive notification when the scanner hits an entity reference. + * + * This is currently useful only to DOM parser configurations as SAX + * does not provide any api to return this information. + * + * @param entDecl The name of the entity that was referenced. + */ + virtual void startEntityReference(const XMLEntityDecl& entDecl) = 0; + + /** Receive notification of an XML declaration + * + * Currently neither DOM nor SAX provide API's to return back this + * information. + * + * @param versionStr The value of the version pseudoattribute + * of the XML decl. + * @param encodingStr The value of the encoding pseudoattribute + * of the XML decl. + * @param standaloneStr The value of the standalone + * pseudoattribute of the XML decl. + * @param autoEncodingStr The encoding string auto-detected by the + * scanner. In absence of any 'encoding' attribute in the + * XML decl, the XML standard specifies how a parser can + * auto-detect. If there is no encodingStr + * this is what will be used to try to decode the file. + */ + virtual void XMLDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + , const XMLCh* const standaloneStr + , const XMLCh* const autoEncodingStr + ) = 0; + + //@} + + + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + XMLDocumentHandler() + { + } + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLDocumentHandler(const XMLDocumentHandler&); + XMLDocumentHandler& operator=(const XMLDocumentHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLElementDecl.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLElementDecl.hpp new file mode 100644 index 000000000000..450136236f82 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLElementDecl.hpp @@ -0,0 +1,552 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLELEMENTDECL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLELEMENTDECL_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentSpecNode; +class XMLContentModel; + +/** + * This class defines the core information of an element declaration. Each + * validator (DTD, Schema, etc...) will have its own information that it + * associations with the declaration of an element, but they must all share + * at least this core information, i.e. they must all derive from this + * class. The set of info enforced at this level is driven by the needs of + * XML 1.0 spec validation and well formedness checks. + * + * This class defines some special element id values for invalid elements + * and PCDATA elements, as well as a string for the special PCDATA element + * name. All validators must honor these special values in order to allow + * content models to work generically (i.e. to let code know when its dealing + * with invalid or PCDATA element ids without having to know what type of + * validator its messing with.) + */ +class XMLPARSER_EXPORT XMLElementDecl : public XSerializable, public XMemory +{ + public: + // ----------------------------------------------------------------------- + // Class specific types + // + // CreateReasons + // This type is used to store how an element declaration got into + // the grammar's element pool. They are faulted in for various + // reasons. + // + // LookupOpts + // These are the values used by the attribute lookup methods. + // + // CharDataOpts + // This is used to indicate how this type of element reacts to + // character data as content. + // ----------------------------------------------------------------------- + enum CreateReasons + { + NoReason + , Declared + , AttList + , InContentModel + , AsRootElem + , JustFaultIn + }; + + enum CharDataOpts + { + NoCharData + , SpacesOk + , AllCharData + }; + + + // ----------------------------------------------------------------------- + // Public static data + // + // fgInvalidElemId + // A value to represent an invalid element node id. + // + // fgPCDataElemId + // This is the value to use to represent a PCDATA node when an + // element id is required. + // + // fgPCDataElemName + // This is the value to use to represent a PCDATA node when an + // element name is required. + // ----------------------------------------------------------------------- + static const unsigned int fgInvalidElemId; + static const unsigned int fgPCDataElemId; + static const XMLCh fgPCDataElemName[]; + + + + // ----------------------------------------------------------------------- + // Destructor + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + virtual ~XMLElementDecl(); + //@} + + + // ----------------------------------------------------------------------- + // The virtual element decl interface + // ----------------------------------------------------------------------- + + /** @name Virual ElementDecl interface */ + //@{ + + /** Get a list of attributes defined for this element. + * + * The derived class should return a reference to some member object which + * implements the XMLAttDefList interface. This object gives the scanner the + * ability to look through the attributes defined for this element. + * + * It is done this way for efficiency, though of course this is not thread + * safe. The scanner guarantees that it won't ever call this method in any + * nested way, but the outside world must be careful about when it calls + * this method, and optimally never would. + */ + virtual XMLAttDefList& getAttDefList() const = 0; + + /** The character data options for this element type + * + * The derived class should return an appropriate character data opts value + * which correctly represents its tolerance towards whitespace or character + * data inside of its instances. This allows the scanner to do all of the + * validation of character data. + */ + virtual CharDataOpts getCharDataOpts() const = 0; + + /** Indicate whether this element type defined any attributes + * + * The derived class should return a boolean that indicates whether this + * element has any attributes defined for it or not. This is an optimization + * that allows the scanner to skip some work if no attributes exist. + */ + virtual bool hasAttDefs() const = 0; + + /** Get a pointer to the content spec node + * + * This method will return a const pointer to the content spec node object + * of this element. + * + * @return A const pointer to the element's content spec node + */ + virtual const ContentSpecNode* getContentSpec() const = 0; + + /** Get a pointer to the content spec node + * + * This method is identical to the previous one, except that it is non + * const. + */ + virtual ContentSpecNode* getContentSpec() = 0; + + /** Set the content spec node object for this element type + * + * This method will adopt the based content spec node object. This is called + * by the actual validator which is parsing its DTD or Schema or whatever + * and store it on the element decl object via this method. + * + * @param toAdopt This method will adopt the passed content node spec + * object. Any previous object is destroyed. + */ + virtual void setContentSpec(ContentSpecNode* toAdopt) = 0; + + /** Get a pointer to the abstract content model + * + * This method will return a const pointer to the content model object + * of this element. This class is a simple abstraction that allows an + * element to define and use multiple, specialized content model types + * internally but still allow the outside world to do simple stuff with + * them. + * + * @return A pointer to the element's content model, via the basic + * abstract content model type. + */ + virtual XMLContentModel* getContentModel() = 0; + + /** Set the content model object for this element type + * + * This method will adopt the based content model object. This is called + * by the actual validator which is parsing its DTD or Schema or whatever + * a creating an element decl. It will build what it feels is the correct + * content model type object and store it on the element decl object via + * this method. + * + * @param newModelToAdopt This method will adopt the passed content model + * object. Any previous object is destroyed. + */ + virtual void setContentModel(XMLContentModel* const newModelToAdopt) = 0; + + /** Geta formatted string of the content model + * + * This method is a convenience method which will create a formatted + * representation of the content model of the element. It will not always + * exactly recreate the original model, since some normalization or + * or reformatting may occur. But, it will be a technically accurate + * representation of the original content model. + * + * @return A pointer to an internal buffer which contains the formatted + * content model. The caller does not own this buffer and should + * copy it if it needs to be kept around. + */ + virtual const XMLCh* getFormattedContentModel () const = 0; + + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** Get the base name of this element type. + * + * Return the base name part of the element's name. This is the + * same regardless of whether namespaces are enabled or not. + * + * @return A const pointer to the base name of the element decl. + */ + const XMLCh* getBaseName() const; + XMLCh* getBaseName(); + + /** Get the URI id of this element type. + * + * Return the URI Id of this element. + * + * @return The URI Id of the element decl, or the emptyNamespaceId if not applicable. + */ + unsigned int getURI() const; + + /** Get the QName of this element type. + * + * Return the QName part of the element's name. This is the + * same regardless of whether namespaces are enabled or not. + * + * @return A const pointer to the QName of the element decl. + */ + const QName* getElementName() const; + QName* getElementName(); + + /** Get the full name of this element type. + * + * Return the full name of the element. If namespaces + * are not enabled, then this is the qName. Else it is the {uri}baseName + * form. For those validators that always require namespace processing, it + * will always be in the latter form because namespace processing will always + * be on. + */ + const XMLCh* getFullName() const; + + /** Get the create reason for this element type + * + * This method returns an enumeration which indicates why this element + * declaration exists. Elements can be used before they are actually + * declared, so they will often be faulted into the pool and marked as + * to why they are there. + * + * @return An enumerated value that indicates the reason why this element + * was added to the element decl pool. + */ + + CreateReasons getCreateReason() const; + + /** Get the element decl pool id for this element type + * + * This method will return the element decl pool id of this element + * declaration. This uniquely identifies this element type within the + * parse event that it is declared within. This value is assigned by the + * grammar whose decl pool this object belongs to. + * + * @return The element decl id of this element declaration. + */ + XMLSize_t getId() const; + + /** Indicate whether this element type has been declared yet + * + * This method returns a boolean that indicates whether this element + * has been declared yet. There are a number of reasons why an element + * declaration can be faulted in, but eventually it must be declared or + * its an error. See the CreateReasons enumeration. + * + * @return true if this element has been declared, else false. + */ + bool isDeclared() const; + + /** Indicate whether this element type has been declared externally + * + * This method returns a boolean that indicates whether this element + * has been declared externally. + * + * @return true if this element has been declared externally, else false. + */ + + bool isExternal() const; + + /** Get the memory manager + * + * This method returns the configurable memory manager used by the + * element declaration for dynamic allocation/deallocation. + * + * @return the memory manager + */ + MemoryManager* getMemoryManager() const; + + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + + /** Set the element name object for this element type + * + * This method will adopt the based content spec node object. This is called + * by the actual validator which is parsing its DTD or Schema or whatever + * and store it on the element decl object via this method. + * + * @param prefix Prefix of the element + * @param localPart Base Name of the element + * @param uriId The uriId of the element + */ + void setElementName(const XMLCh* const prefix + , const XMLCh* const localPart + , const int uriId ); + + /** Set the element name object for this element type + * + * This method will adopt the based content spec node object. This is called + * by the actual validator which is parsing its DTD or Schema or whatever + * and store it on the element decl object via this method. + * + * @param rawName Full Name of the element + * @param uriId The uriId of the element + */ + void setElementName(const XMLCh* const rawName + , const int uriId ); + + /** Set the element name object for this element type + * + * This method will adopt the based content spec node object. This is called + * by the actual validator which is parsing its DTD or Schema or whatever + * and store it on the element decl object via this method. + * + * @param elementName QName of the element + */ + void setElementName(const QName* const elementName); + + /** Update the create reason for this element type. + * + * This method will update the 'create reason' field for this element + * decl object. As the validator parses its DTD, Schema, etc... it will + * encounter various references to an element declaration, which will + * cause the element declaration to either be declared or to be faulted + * into the pool in preparation for some future declaration. As it does + * so,it will update this field to indicate the current status of the + * decl object. + */ + void setCreateReason(const CreateReasons newReason); + + /** Set the element decl pool id for this element type + * + * This method will set the pool id of this element decl. This is called + * by the grammar which created this object, and will provide this + * decl object with a unique id within the parse event that created it. + */ + void setId(const XMLSize_t newId); + + + /** Set the element decl to indicate external declaration + * + */ + void setExternalElemDeclaration(const bool aValue); + + //@} + + + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + + /** @name Miscellaneous methods */ + //@{ + + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLElementDecl) + + enum objectType + { + Schema + , DTD + , UnKnown + }; + + virtual XMLElementDecl::objectType getObjectType() const = 0; + + static void storeElementDecl(XSerializeEngine& serEng + , XMLElementDecl* const element); + + static XMLElementDecl* loadElementDecl(XSerializeEngine& serEng); + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XMLElementDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLElementDecl(const XMLElementDecl&); + XMLElementDecl& operator=(const XMLElementDecl&); + + + // ----------------------------------------------------------------------- + // Data members + // + // fElementName + // This is the name of the element decl. + // + // fCreateReason + // We sometimes have to put an element decl object into the elem + // decl pool before the element's declaration is seen, such as when + // its used in another element's content model or an att list is + // seen for it. This flag tells us whether its been declared, and + // if not why it had to be created. + // + // fId + // The unique id of this element. This is created by the derived + // class, or more accurately the grammar that owns the objects + // of the derived types. But, since they all have to have them, we + // let them all store the id here. It is defaulted to have the + // value fgInvalidElem until explicitly set. + // + // fExternalElement + // This flag indicates whether or the element was declared externally. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + QName* fElementName; + CreateReasons fCreateReason; + XMLSize_t fId; + bool fExternalElement; +}; + + +// --------------------------------------------------------------------------- +// XMLElementDecl: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh* XMLElementDecl::getBaseName() const +{ + return fElementName->getLocalPart(); +} + +inline XMLCh* XMLElementDecl::getBaseName() +{ + return fElementName->getLocalPart(); +} + +inline unsigned int XMLElementDecl::getURI() const +{ + return fElementName->getURI(); +} + +inline const QName* XMLElementDecl::getElementName() const +{ + return fElementName; +} + +inline QName* XMLElementDecl::getElementName() +{ + return fElementName; +} + +inline const XMLCh* XMLElementDecl::getFullName() const +{ + return fElementName->getRawName(); +} + +inline XMLElementDecl::CreateReasons XMLElementDecl::getCreateReason() const +{ + return fCreateReason; +} + +inline XMLSize_t XMLElementDecl::getId() const +{ + return fId; +} + +inline bool XMLElementDecl::isDeclared() const +{ + return (fCreateReason == Declared); +} + + +inline bool XMLElementDecl::isExternal() const +{ + return fExternalElement; +} + +inline MemoryManager* XMLElementDecl::getMemoryManager() const +{ + return fMemoryManager; +} + + +// --------------------------------------------------------------------------- +// XMLElementDecl: Setter methods +// --------------------------------------------------------------------------- +inline void +XMLElementDecl::setCreateReason(const XMLElementDecl::CreateReasons newReason) +{ + fCreateReason = newReason; +} + +inline void XMLElementDecl::setId(const XMLSize_t newId) +{ + fId = newId; +} + + +inline void XMLElementDecl::setExternalElemDeclaration(const bool aValue) +{ + fExternalElement = aValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLEntityDecl.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLEntityDecl.hpp new file mode 100644 index 000000000000..25c604908123 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLEntityDecl.hpp @@ -0,0 +1,512 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLENTITYDECL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLENTITYDECL_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class defines that core information that defines an XML entity, no + * matter what validator is used. Each validator will create a derivative + * of this class which adds any extra information it requires. + * + * This class supports keyed collection semantics via the getKey() method + * which extracts the key field, the entity name in this case. The name will + * have whatever form is deemed appropriate for the type of validator in + * use. + * + * When setting the fields of this class, you must make sure that you do + * not set conflicting values. For instance, an internal entity cannot have + * a notation name. And an external entity cannot have a value string. + * These rules are defined by the XML specification. In most cases, these + * objects are created by validator objects as they parse a DTD or Schema + * or whatever, at which time they confirm the correctness of the data before + * creating the entity decl object. + */ +class XMLPARSER_EXPORT XMLEntityDecl : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors */ + //@{ + + /** + * Default Constructor + */ + XMLEntityDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Constructor with a const entity name + * + * @param entName The new name to give to this entity. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + XMLEntityDecl + ( + const XMLCh* const entName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Constructor with a const entity name and value + * + * @param entName The new name to give to this entity. + * @param value The new value to give to this entity name. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + XMLEntityDecl + ( + const XMLCh* const entName + , const XMLCh* const value + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Constructor with a const entity name and single XMLCh value + * + * @param entName The new name to give to this entity. + * @param value The new value to give to this entity name. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + XMLEntityDecl + ( + const XMLCh* const entName + , const XMLCh value + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Destructor */ + //@{ + + /** + * Default destructor + */ + virtual ~XMLEntityDecl(); + + //@} + + + // ----------------------------------------------------------------------- + // Virtual entity decl interface + // ----------------------------------------------------------------------- + + /** @name The pure virtual methods in this interface. */ + //@{ + + /** Get the 'declared in internal subset' flag + * + * Gets the state of the flag which indicates whether the entity was + * declared in the internal or external subset. Some structural + * description languages might not have an internal subset concept, in + * which case this will always return false. + */ + virtual bool getDeclaredInIntSubset() const = 0; + + /** Get the 'is parameter entity' flag + * + * Gets the state of the flag which indicates whether this entity is + * a parameter entity. If not, then its a general entity. + */ + virtual bool getIsParameter() const = 0; + + /** Get the 'is special char entity' flag + * + * Gets the state of the flag that indicates whether this entity is + * one of the special, intrinsically supported character entities. + */ + virtual bool getIsSpecialChar() const = 0; + + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** + * Gets the pool id of this entity. Validators maintain all decls in + * pools, from which they can be quickly extracted via id. + */ + XMLSize_t getId() const; + + /** + * Returns a const pointer to the name of this entity decl. This name + * will be in whatever format is appropriate for the type of validator + * in use. + */ + const XMLCh* getName() const; + + /** + * Gets the notation name, if any, declared for this entity. If this + * entity is not a notation type entity, it will be a null pointer. + */ + const XMLCh* getNotationName() const; + + /** + * Gets the public id declared for this entity. Public ids are optional + * so it can be a null pointer. + */ + const XMLCh* getPublicId() const; + + /** + * Gets the system id declared for this entity. The system id is required + * so this method should never return a null pointers. + */ + const XMLCh* getSystemId() const; + + /** + * Gets the base URI for this entity. + */ + const XMLCh* getBaseURI() const; + + /** + * This method returns the value of an internal entity. If this is not + * an internal entity (i.e. its external), then this will be a null + * pointer. + */ + const XMLCh* getValue() const; + + /** + * This method returns the number of characters in the value returned + * by getValue(). If this entity is external, this will be zero since + * an external entity has no internal value. + */ + XMLSize_t getValueLen() const; + + /** + * Indicates that this entity is an external entity. If not, then it is + * assumed to be an internal entity, surprise. + */ + bool isExternal() const; + + /** + * Indicates whether this entity is unparsed. This is meaningless for + * internal entities. Some external entities are unparsed in that they + * refer to something other than XML source. + */ + bool isUnparsed() const; + + /** Get the plugged-in memory manager + * + * This method returns the plugged-in memory manager user for dynamic + * memory allocation/deallocation. + * + * @return the plugged-in memory manager + */ + MemoryManager* getMemoryManager() const; + + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + + /** + * This method will set the entity name. The format of this name is + * defined by the particular validator in use, since it will be the + * one who creates entity definitions as it parses the DTD, Schema, + * ect... + * + * @param entName The new name to give to this entity. + */ + void setName + ( + const XMLCh* const entName + ); + + /** + * This method will mark whether the entity is external. + * + * @param value The new value for the 'is external' flag. + */ + void setIsExternal(bool value); + + /** + * This method will set the notation name for this entity. By setting + * this, you are indicating that this is an unparsed external entity. + * + * @param newName The new notation name to give to this entity. + */ + void setNotationName(const XMLCh* const newName); + + /** + * This method will set a new public id on this entity. The public id + * has no particular form and is purely for client consumption. + * + * @param newId The new public id to give to this entity. + */ + void setPublicId(const XMLCh* const newId); + + /** + * This method will set a new sysetm id on this entity. This will + * then control where the source for this entity lives. If it is + * an internal entity, then the system id is only for bookkeeping + * purposes, and to allow any external entities referenced from + * within the entity to be correctly resolved. + * + * @param newId The new system id to give to the entity. + */ + void setSystemId(const XMLCh* const newId); + + /** + * This method will set a new baseURI on this entity. This will + * then control the URI used to resolve the relative system Id. + * + * @param newId The new base URI to give to the entity. + */ + void setBaseURI(const XMLCh* const newId); + + /** + * This method will set a new value for this entity. This is only + * valid if the entity is to be an internal entity. By setting this + * field, you are indicating that the entity is internal. + * + * @param newValue The new value to give to this entity. + */ + void setValue(const XMLCh* const newValue); + + //@} + + /* For internal use only */ + void setId(const XMLSize_t newId); + + + // ----------------------------------------------------------------------- + // Support named pool syntax + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + + /** + * This method allows objects of this class to be used within a standard + * keyed collection used commonly within the parser system. The collection + * calls this method to get the key (usually to hash it) by which the + * object is to be stored. + */ + const XMLCh* getKey() const; + + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLEntityDecl) + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLEntityDecl(const XMLEntityDecl&); + XMLEntityDecl& operator=(XMLEntityDecl&); + + + // ----------------------------------------------------------------------- + // XMLEntityDecl: Private helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fId + // This is the unique id given to this entity decl. + // + // fName + // The name of the entity. Entity names are never namespace based. + // + // fNotationName + // The optional notation of the entity. If there was none, then its + // empty. + // + // fPublicId + // The public id of the entity, which can be empty. + // + // fSystemId + // The system id of the entity. + // + // fValue + // fValueLen + // The entity's value and length, which is only valid if its an + // internal style entity. + // + // fBaseURI + // The base URI of the entity. According to XML InfoSet, such value + // is the URI where it is declared (NOT referenced). + // ----------------------------------------------------------------------- + XMLSize_t fId; + XMLSize_t fValueLen; + XMLCh* fValue; + XMLCh* fName; + XMLCh* fNotationName; + XMLCh* fPublicId; + XMLCh* fSystemId; + XMLCh* fBaseURI; + bool fIsExternal; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// XMLEntityDecl: Getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t XMLEntityDecl::getId() const +{ + return fId; +} + +inline const XMLCh* XMLEntityDecl::getName() const +{ + return fName; +} + +inline const XMLCh* XMLEntityDecl::getNotationName() const +{ + return fNotationName; +} + +inline const XMLCh* XMLEntityDecl::getPublicId() const +{ + return fPublicId; +} + +inline const XMLCh* XMLEntityDecl::getSystemId() const +{ + return fSystemId; +} + +inline const XMLCh* XMLEntityDecl::getBaseURI() const +{ + return fBaseURI; +} + +inline const XMLCh* XMLEntityDecl::getValue() const +{ + return fValue; +} + +inline XMLSize_t XMLEntityDecl::getValueLen() const +{ + return fValueLen; +} + +inline bool XMLEntityDecl::isExternal() const +{ + return fIsExternal; +} + +inline bool XMLEntityDecl::isUnparsed() const +{ + // If it has a notation, its unparsed + return (fNotationName != 0); +} + +inline MemoryManager* XMLEntityDecl::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// XMLEntityDecl: Setter methods +// --------------------------------------------------------------------------- +inline void XMLEntityDecl::setId(const XMLSize_t newId) +{ + fId = newId; +} + +inline void XMLEntityDecl::setIsExternal(bool value) +{ + fIsExternal = value; +} + +inline void XMLEntityDecl::setNotationName(const XMLCh* const newName) +{ + if (fNotationName) + fMemoryManager->deallocate(fNotationName); + + fNotationName = XMLString::replicate(newName, fMemoryManager); +} + +inline void XMLEntityDecl::setPublicId(const XMLCh* const newId) +{ + if (fPublicId) + fMemoryManager->deallocate(fPublicId); + + fPublicId = XMLString::replicate(newId, fMemoryManager); +} + +inline void XMLEntityDecl::setSystemId(const XMLCh* const newId) +{ + if (fSystemId) + fMemoryManager->deallocate(fSystemId); + + fSystemId = XMLString::replicate(newId, fMemoryManager); +} + +inline void XMLEntityDecl::setBaseURI(const XMLCh* const newId) +{ + if (fBaseURI) + fMemoryManager->deallocate(fBaseURI); + + fBaseURI = XMLString::replicate(newId, fMemoryManager); +} + +inline void XMLEntityDecl::setValue(const XMLCh* const newValue) +{ + if (fValue) + fMemoryManager->deallocate(fValue); + + fValue = XMLString::replicate(newValue, fMemoryManager); + fValueLen = XMLString::stringLen(newValue); +} + + +// --------------------------------------------------------------------------- +// XMLEntityDecl: Support named pool syntax +// --------------------------------------------------------------------------- +inline const XMLCh* XMLEntityDecl::getKey() const +{ + return fName; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLEntityHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLEntityHandler.hpp new file mode 100644 index 000000000000..67e1ec771c18 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLEntityHandler.hpp @@ -0,0 +1,157 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLENTITYHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLENTITYHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class InputSource; +class XMLBuffer; +class XMLResourceIdentifier; + +/** + * This abstract class is a callback mechanism for the scanner. By creating + * a derivative of this class and plugging into the scanner, the scanner + * will call back on the object's methods to entity events. + * + * This class is primarily for use by those writing their own parser classes. + * If you use the standard parser classes, DOMParser and SAXParser, you won't + * use this API. You will instead use a similar mechanism defined by the SAX + * API, called EntityResolver. + */ +class XMLPARSER_EXPORT XMLEntityHandler +{ +public: + // ----------------------------------------------------------------------- + // Constructors are hidden, only the virtual destructor is exposed + // ----------------------------------------------------------------------- + + /** @name Destructor */ + //@{ + + /** + * Default destructor + */ + virtual ~XMLEntityHandler() + { + } + //@} + + + // ----------------------------------------------------------------------- + // The virtual entity handler interface + // ----------------------------------------------------------------------- + /** @name The pure virtual methods in this interface. */ + //@{ + + /** + * This method get called after the scanner has finished reading from + * the given input source while processing external entity references. + * + * @param inputSource The input source for the entity + */ + virtual void endInputSource(const InputSource& inputSource) = 0; + + /** + * This method allows the passes the scanned systemId to the entity + * handler, thereby giving it a chance to provide any customized + * handling like resolving relative path names. The scanner first + * calls this method before calling resolveEntity. + * + * @param systemId The system id extracted by the scanner from the + * input source. + * @param toFill The buffer in which the fully expanded system id needs + * to be stored. + */ + virtual bool expandSystemId + ( + const XMLCh* const systemId + , XMLBuffer& toFill + ) = 0; + + /** + * This method allows the entity handler to reset itself, so that + * it can be used again. It is called prior to a new document parse + * operation. + */ + virtual void resetEntities() = 0; + + /** + * This method allows the entity handler to provide customized + * application specific entity resolution. + * + * Only one resolveEntity method will be used. If both setEntityResolver and + * setXMLEntityResolver are called, then the last one is used. + * + * @param resourceIdentifier An object containing the type of + * resource to be resolved and the associated data members + * corresponding to this type. + * @return The value returned by the resolveEntity method or + * NULL otherwise to indicate no processing was done. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + */ + virtual InputSource* resolveEntity + ( + XMLResourceIdentifier* resourceIdentifier + ) = 0; + + /** + * This method will be called before the scanner starts reading + * from an input source while processing external entity references. + * + * @param inputSource The external input source. + */ + virtual void startInputSource(const InputSource& inputSource) = 0; + //@} + + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + /** @name Constructor */ + //@{ + + /** + * Protected default constructor + */ + XMLEntityHandler() + { + } + //@} + + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and destructor + // ----------------------------------------------------------------------- + XMLEntityHandler(const XMLEntityHandler&); + XMLEntityHandler& operator=(const XMLEntityHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLErrorCodes.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLErrorCodes.hpp new file mode 100644 index 000000000000..ea3a6294dbc0 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLErrorCodes.hpp @@ -0,0 +1,351 @@ +// This file is generated, don't edit it!! + +#if !defined(XERCESC_INCLUDE_GUARD_ERRHEADER_XMLErrs) +#define XERCESC_INCLUDE_GUARD_ERRHEADER_XMLErrs + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLErrs +{ +public : + enum Codes + { + NoError = 0 + , W_LowBounds = 1 + , NotationAlreadyExists = 2 + , AttListAlreadyExists = 3 + , ContradictoryEncoding = 4 + , UndeclaredElemInCM = 5 + , UndeclaredElemInAttList = 6 + , XMLException_Warning = 7 + , XIncludeResourceErrorWarning = 8 + , XIncludeCannotOpenFile = 9 + , XIncludeIncludeFailedResourceError = 10 + , W_HighBounds = 11 + , E_LowBounds = 12 + , FeatureUnsupported = 13 + , TopLevelNoNameComplexType = 14 + , TopLevelNoNameAttribute = 15 + , NoNameRefAttribute = 16 + , NoNameRefElement = 17 + , NoNameRefGroup = 18 + , NoNameRefAttGroup = 19 + , AnonComplexTypeWithName = 20 + , AnonSimpleTypeWithName = 21 + , InvalidElementContent = 22 + , SimpleTypeContentError = 23 + , ExpectedSimpleTypeInList = 24 + , ListUnionRestrictionError = 25 + , SimpleTypeDerivationByListError = 26 + , ExpectedSimpleTypeInRestriction = 27 + , DuplicateFacet = 28 + , ExpectedSimpleTypeInUnion = 29 + , EmptySimpleTypeContent = 30 + , InvalidSimpleContent = 31 + , UnspecifiedBase = 32 + , InvalidComplexContent = 33 + , SchemaElementContentError = 34 + , ContentError = 35 + , UnknownSimpleType = 36 + , UnknownComplexType = 37 + , UnresolvedPrefix = 38 + , RefElementNotFound = 39 + , TypeNotFound = 40 + , TopLevelAttributeNotFound = 41 + , InvalidChildInComplexType = 42 + , BaseTypeNotFound = 43 + , DatatypeValidatorCreationError = 44 + , InvalidChildFollowingSimpleContent = 45 + , InvalidChildFollowingConplexContent = 46 + , AttributeDefaultFixedValue = 47 + , NotOptionalDefaultAttValue = 48 + , DuplicateAttribute = 49 + , AttributeWithTypeAndSimpleType = 50 + , AttributeSimpleTypeNotFound = 51 + , ElementWithFixedAndDefault = 52 + , InvalidDeclarationName = 53 + , ElementWithTypeAndAnonType = 54 + , NotSimpleOrMixedElement = 55 + , DisallowedSimpleTypeExtension = 56 + , InvalidSimpleContentBase = 57 + , InvalidComplexTypeBase = 58 + , InvalidChildInSimpleContent = 59 + , InvalidChildInComplexContent = 60 + , AnnotationError = 61 + , DisallowedBaseDerivation = 62 + , InvalidBlockValue = 63 + , InvalidFinalValue = 64 + , InvalidSubstitutionGroupElement = 65 + , SubstitutionGroupTypeMismatch = 66 + , DuplicateElementDeclaration = 67 + , InvalidAttValue = 68 + , AttributeRefContentError = 69 + , DuplicateRefAttribute = 70 + , ForbiddenDerivationByRestriction = 71 + , ForbiddenDerivationByExtension = 72 + , BaseNotComplexType = 73 + , ImportNamespaceDifference = 74 + , DeclarationNoSchemaLocation = 75 + , IncludeNamespaceDifference = 76 + , OnlyAnnotationExpected = 77 + , InvalidAttributeContent = 78 + , AttributeRequiredGlobal = 79 + , AttributeRequiredLocal = 80 + , AttributeDisallowedGlobal = 81 + , AttributeDisallowedLocal = 82 + , InvalidMin2MaxOccurs = 83 + , AnyAttributeContentError = 84 + , NoNameGlobalElement = 85 + , NoCircularDefinition = 86 + , DuplicateGlobalType = 87 + , DuplicateGlobalDeclaration = 88 + , WS_CollapseExpected = 89 + , Import_1_1 = 90 + , Import_1_2 = 91 + , ElemIDValueConstraint = 92 + , NoNotationType = 93 + , EmptiableMixedContent = 94 + , EmptyComplexRestrictionDerivation = 95 + , MixedOrElementOnly = 96 + , InvalidContentRestriction = 97 + , ForbiddenDerivation = 98 + , AtomicItemType = 99 + , GroupContentError = 100 + , AttGroupContentError = 101 + , MinMaxOnGroupChild = 102 + , DeclarationNotFound = 103 + , AllContentLimited = 104 + , BadMinMaxAllCT = 105 + , BadMinMaxAllElem = 106 + , DuplicateAttInDerivation = 107 + , NotExpressibleWildCardIntersection = 108 + , BadAttDerivation_1 = 109 + , BadAttDerivation_2 = 110 + , BadAttDerivation_3 = 111 + , BadAttDerivation_4 = 112 + , BadAttDerivation_5 = 113 + , BadAttDerivation_6 = 114 + , BadAttDerivation_7 = 115 + , BadAttDerivation_8 = 116 + , BadAttDerivation_9 = 117 + , AllContentError = 118 + , RedefineNamespaceDifference = 119 + , Redefine_InvalidSimpleType = 120 + , Redefine_InvalidSimpleTypeBase = 121 + , Redefine_InvalidComplexType = 122 + , Redefine_InvalidComplexTypeBase = 123 + , Redefine_InvalidGroupMinMax = 124 + , Redefine_DeclarationNotFound = 125 + , Redefine_GroupRefCount = 126 + , Redefine_AttGroupRefCount = 127 + , Redefine_InvalidChild = 128 + , Notation_DeclNotFound = 129 + , IC_DuplicateDecl = 130 + , IC_BadContent = 131 + , IC_KeyRefReferNotFound = 132 + , IC_KeyRefCardinality = 133 + , IC_XPathExprMissing = 134 + , AttUseCorrect = 135 + , AttDeclPropCorrect3 = 136 + , AttDeclPropCorrect5 = 137 + , AttGrpPropCorrect3 = 138 + , InvalidTargetNSValue = 139 + , XMLException_Error = 140 + , InvalidRedefine = 141 + , InvalidNSReference = 142 + , NotAllContent = 143 + , InvalidAnnotationContent = 144 + , InvalidFacetName = 145 + , InvalidXMLSchemaRoot = 146 + , CircularSubsGroup = 147 + , ELTSchemaNS = 148 + , InvalidAttTNS = 149 + , NSDeclInvalid = 150 + , DOMLevel1Node = 151 + , DuplicateAnyAttribute = 152 + , AnyAttributeBeforeAttribute = 153 + , E_HighBounds = 154 + , F_LowBounds = 155 + , EntityExpansionLimitExceeded = 156 + , ExpectedCommentOrCDATA = 157 + , ExpectedAttrName = 158 + , ExpectedNotationName = 159 + , NoRepInMixed = 160 + , ExpectedDefAttrDecl = 161 + , ExpectedEqSign = 162 + , ExpectedElementName = 163 + , CommentsMustStartWith = 164 + , InvalidDocumentStructure = 165 + , ExpectedDeclString = 166 + , BadXMLVersion = 167 + , UnsupportedXMLVersion = 168 + , UnterminatedXMLDecl = 169 + , BadXMLEncoding = 170 + , BadStandalone = 171 + , UnterminatedComment = 172 + , PINameExpected = 173 + , UnterminatedPI = 174 + , InvalidCharacter = 175 + , UnterminatedStartTag = 176 + , ExpectedAttrValue = 177 + , UnterminatedEndTag = 178 + , ExpectedAttributeType = 179 + , ExpectedEndOfTagX = 180 + , ExpectedMarkup = 181 + , NotValidAfterContent = 182 + , ExpectedComment = 183 + , ExpectedCommentOrPI = 184 + , ExpectedWhitespace = 185 + , NoRootElemInDOCTYPE = 186 + , ExpectedQuotedString = 187 + , ExpectedPublicId = 188 + , InvalidPublicIdChar = 189 + , UnterminatedDOCTYPE = 190 + , InvalidCharacterInIntSubset = 191 + , UnexpectedWhitespace = 192 + , InvalidCharacterInAttrValue = 193 + , ExpectedMarkupDecl = 194 + , TextDeclNotLegalHere = 195 + , ConditionalSectInIntSubset = 196 + , ExpectedPEName = 197 + , UnterminatedEntityDecl = 198 + , InvalidCharacterRef = 199 + , UnterminatedCharRef = 200 + , ExpectedEntityRefName = 201 + , EntityNotFound = 202 + , NoUnparsedEntityRefs = 203 + , UnterminatedEntityRef = 204 + , RecursiveEntity = 205 + , PartialMarkupInEntity = 206 + , UnterminatedElementDecl = 207 + , ExpectedContentSpecExpr = 208 + , ExpectedAsterisk = 209 + , UnterminatedContentModel = 210 + , ExpectedSystemOrPublicId = 211 + , UnterminatedNotationDecl = 212 + , ExpectedSeqChoiceLeaf = 213 + , ExpectedChoiceOrCloseParen = 214 + , ExpectedSeqOrCloseParen = 215 + , ExpectedEnumValue = 216 + , ExpectedEnumSepOrParen = 217 + , UnterminatedEntityLiteral = 218 + , MoreEndThanStartTags = 219 + , ExpectedOpenParen = 220 + , AttrAlreadyUsedInSTag = 221 + , BracketInAttrValue = 222 + , Expected2ndSurrogateChar = 223 + , ExpectedEndOfConditional = 224 + , ExpectedIncOrIgn = 225 + , ExpectedINCLUDEBracket = 226 + , UnexpectedEOE = 227 + , PEPropogated = 228 + , ExtraCloseSquare = 229 + , PERefInMarkupInIntSubset = 230 + , EntityPropogated = 231 + , ExpectedNumericalCharRef = 232 + , ExpectedOpenSquareBracket = 233 + , BadSequenceInCharData = 234 + , IllegalSequenceInComment = 235 + , UnterminatedCDATASection = 236 + , ExpectedNDATA = 237 + , NDATANotValidForPE = 238 + , HexRadixMustBeLowerCase = 239 + , DeclStringRep = 240 + , DeclStringsInWrongOrder = 241 + , NoExtRefsInAttValue = 242 + , XMLDeclMustBeLowerCase = 243 + , ExpectedEntityValue = 244 + , BadDigitForRadix = 245 + , EndedWithTagsOnStack = 246 + , NestedCDATA = 247 + , UnknownPrefix = 248 + , PartialTagMarkupError = 249 + , EmptyMainEntity = 250 + , CDATAOutsideOfContent = 251 + , Unexpected2ndSurrogateChar = 252 + , NoPIStartsWithXML = 253 + , XMLDeclMustBeFirst = 254 + , XMLVersionRequired = 255 + , StandaloneNotLegal = 256 + , EncodingRequired = 257 + , ColonNotLegalWithNS = 258 + , XMLException_Fatal = 259 + , BadSchemaLocation = 260 + , SchemaScanFatalError = 261 + , IllegalRefInStandalone = 262 + , PEBetweenDecl = 263 + , NoEmptyStrNamespace = 264 + , NoUseOfxmlnsAsPrefix = 265 + , NoUseOfxmlnsURI = 266 + , PrefixXMLNotMatchXMLURI = 267 + , XMLURINotMatchXMLPrefix = 268 + , NoXMLNSAsElementPrefix = 269 + , CT_SimpleTypeChildRequired = 270 + , InvalidRootElemInDOCTYPE = 271 + , InvalidElementName = 272 + , InvalidAttrName = 273 + , InvalidEntityRefName = 274 + , DuplicateDocTypeDecl = 275 + , XIncludeOrphanFallback = 276 + , XIncludeNoHref = 277 + , XIncludeXPointerNotSupported = 278 + , XIncludeInvalidParseVal = 279 + , XIncludeMultipleFallbackElems = 280 + , XIncludeIncludeFailedNoFallback = 281 + , XIncludeCircularInclusionLoop = 282 + , XIncludeCircularInclusionDocIncludesSelf = 283 + , XIncludeDisallowedChild = 284 + , XIncludeConflictingNotation = 285 + , XIncludeConflictingEntity = 286 + , F_HighBounds = 287 + }; + + static bool isFatal(const XMLErrs::Codes toCheck) + { + return ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)); + } + + static bool isWarning(const XMLErrs::Codes toCheck) + { + return ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)); + } + + static bool isError(const XMLErrs::Codes toCheck) + { + return ((toCheck >= E_LowBounds) && (toCheck <= E_HighBounds)); + } + + static XMLErrorReporter::ErrTypes errorType(const XMLErrs::Codes toCheck) + { + if ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)) + return XMLErrorReporter::ErrType_Warning; + else if ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)) + return XMLErrorReporter::ErrType_Fatal; + else if ((toCheck >= E_LowBounds) && (toCheck <= E_HighBounds)) + return XMLErrorReporter::ErrType_Error; + return XMLErrorReporter::ErrTypes_Unknown; + } + static DOMError::ErrorSeverity DOMErrorType(const XMLErrs::Codes toCheck) + { + if ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)) + return DOMError::DOM_SEVERITY_WARNING; + else if ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)) + return DOMError::DOM_SEVERITY_FATAL_ERROR; + else return DOMError::DOM_SEVERITY_ERROR; + } + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLErrs(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLErrorReporter.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLErrorReporter.hpp new file mode 100644 index 000000000000..e49cf65a51a2 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLErrorReporter.hpp @@ -0,0 +1,162 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLERRORREPORTER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLERRORREPORTER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * This abstract class defines a callback mechanism for the scanner. By + * creating a class that implements this interface and plugging an instance + * of that class into the scanner, the scanner will call back on the object's + * virtual methods to report error events. This class is also used with the + * validator, to allow it to report errors. + * + * This class is primarily for use by those writing their own parser classes. + * If you use the standard parser classes, DOMParser and SAXParser, you won't + * use this API. You will instead use a similar mechanism defined by the SAX + * API, called ErrorHandler. + */ +class XMLPARSER_EXPORT XMLErrorReporter +{ +public: + // ----------------------------------------------------------------------- + // The types of errors we can issue + // ----------------------------------------------------------------------- + enum ErrTypes + { + ErrType_Warning + , ErrType_Error + , ErrType_Fatal + + , ErrTypes_Unknown + }; + + + // ----------------------------------------------------------------------- + // Constructors are hidden, only the virtual destructor is exposed + // ----------------------------------------------------------------------- + + /** @name Destructor */ + //@{ + + /** + * Default destructor + */ + virtual ~XMLErrorReporter() + { + } + //@} + + + // ----------------------------------------------------------------------- + // The error handler interface + // ----------------------------------------------------------------------- + + /** @name Error Handler interface */ + //@{ + + /** Called to report errors from the scanner or validator + * + * This method is called back on by the scanner or validator (or any other + * internal parser component which might need to report an error in the + * future.) It contains all the information that the client code might + * need to report or log the error. + * + * @param errCode The error code of the error being reported. What + * this means is dependent on the domain it is from. + * + * @param errDomain The domain from which the error occured. The domain + * is a means of providing a hierarchical layering to + * the error system, so that a single set of error id + * numbers don't have to be split up. + * + * @param type The error type, which is defined mostly by XML which + * categorizes errors into warning, errors and validity + * constraints. + * + * @param errorText The actual text of the error. This is translatable, + * so can possibly be in the local language if a + * translation has been provided. + * + * @param systemId The system id of the entity where the error occured, + * fully qualified. + * + * @param publicId The optional public id of the entity were the error + * occured. It can be an empty string if non was provided. + * + * @param lineNum The line number within the source XML of the error. + * + * @param colNum The column number within the source XML of the error. + * Because of the parsing style, this is usually just + * after the actual offending text. + */ + virtual void error + ( + const unsigned int errCode + , const XMLCh* const errDomain + , const ErrTypes type + , const XMLCh* const errorText + , const XMLCh* const systemId + , const XMLCh* const publicId + , const XMLFileLoc lineNum + , const XMLFileLoc colNum + ) = 0; + + /** Called before a new parse event to allow the handler to reset + * + * This method is called by the scanner before a new parse event is + * about to start. It gives the error handler a chance to reset its + * internal state. + */ + virtual void resetErrors() = 0; + + //@} + + +protected : + + /** @name Constructor */ + //@{ + + /** + * Default constructor + */ + XMLErrorReporter() + { + } + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and destructor + // ----------------------------------------------------------------------- + XMLErrorReporter(const XMLErrorReporter&); + XMLErrorReporter& operator=(const XMLErrorReporter&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLFormatter.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLFormatter.hpp new file mode 100644 index 000000000000..af3845ce94d6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLFormatter.hpp @@ -0,0 +1,538 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLFORMATTER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLFORMATTER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLFormatTarget; +class XMLTranscoder; + +/** + * This class provides the basic formatting capabilities that are required + * to turn the Unicode based XML data from the parsers into a form that can + * be used on non-Unicode based systems, that is, into local or generic text + * encodings. + * + * A number of flags are provided to control whether various optional + * formatting operations are performed. + */ +class XMLPARSER_EXPORT XMLFormatter : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Class types + // ----------------------------------------------------------------------- + /** @name Public Constants */ + //@{ + /** + * EscapeFlags - Different styles of escape flags to control various formatting. + * + *

NoEscapes: + * No character needs to be escaped. Just write them out as is.

+ *

StdEscapes: + * The following characters need to be escaped:

+ * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
charactershould be escaped and written as
&&amp;
>&gt;
"&quot;
<&lt;
'&apos;
+ *

AttrEscapes: + * The following characters need to be escaped:

+ * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
charactershould be escaped and written as
&&amp;
>&gt;
"&quot;
+ *

CharEscapes: + * The following characters need to be escaped:

+ * + * + * + * + * + * + * + * + * + * + * + * + * + *
charactershould be escaped and written as
&&amp;
>&gt;
+ *

EscapeFlags_Count: + * Special value, do not use directly.

+ *

DefaultEscape: + * Special value, do not use directly.

+ * + */ + enum EscapeFlags + { + NoEscapes + , StdEscapes + , AttrEscapes + , CharEscapes + + // Special values, don't use directly + , EscapeFlags_Count + , DefaultEscape = 999 + }; + + /** + * UnRepFlags + * + * The unrepresentable flags that indicate how to react when a + * character cannot be represented in the target encoding. + * + *

UnRep_Fail: + * Fail the operation.

+ *

UnRep_CharRef: + * Display the unrepresented character as reference.

+ *

UnRep_Replace: + * Replace the unrepresented character with the replacement character.

+ *

DefaultUnRep: + * Special value, do not use directly.

+ * + */ + enum UnRepFlags + { + UnRep_Fail + , UnRep_CharRef + , UnRep_Replace + + , DefaultUnRep = 999 + }; + //@} + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructor and Destructor */ + //@{ + /** + * @param outEncoding the encoding for the formatted content. + * @param docVersion the document version. + * @param target the formatTarget where the formatted content is written to. + * @param escapeFlags the escape style for certain character. + * @param unrepFlags the reaction to unrepresentable character. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + XMLFormatter + ( + const XMLCh* const outEncoding + , const XMLCh* const docVersion + , XMLFormatTarget* const target + , const EscapeFlags escapeFlags = NoEscapes + , const UnRepFlags unrepFlags = UnRep_Fail + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XMLFormatter + ( + const char* const outEncoding + , const char* const docVersion + , XMLFormatTarget* const target + , const EscapeFlags escapeFlags = NoEscapes + , const UnRepFlags unrepFlags = UnRep_Fail + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XMLFormatter + ( + const XMLCh* const outEncoding + , XMLFormatTarget* const target + , const EscapeFlags escapeFlags = NoEscapes + , const UnRepFlags unrepFlags = UnRep_Fail + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XMLFormatter + ( + const char* const outEncoding + , XMLFormatTarget* const target + , const EscapeFlags escapeFlags = NoEscapes + , const UnRepFlags unrepFlags = UnRep_Fail + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~XMLFormatter(); + //@} + + + // ----------------------------------------------------------------------- + // Formatting methods + // ----------------------------------------------------------------------- + /** @name Formatting methods */ + //@{ + /** + * @param toFormat the string to be formatted + * @param count length of the string + * @param escapeFlags the escape style for formatting toFormat + * @param unrepFlags the reaction for any unrepresentable character in toFormat + * + */ + void formatBuf + ( + const XMLCh* const toFormat + , const XMLSize_t count + , const EscapeFlags escapeFlags = DefaultEscape + , const UnRepFlags unrepFlags = DefaultUnRep + ); + + /** + * @see formatBuf + */ + XMLFormatter& operator<< + ( + const XMLCh* const toFormat + ); + + XMLFormatter& operator<< + ( + const XMLCh toFormat + ); + + void writeBOM(const XMLByte* const toFormat + , const XMLSize_t count); + + //@} + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Getter methods */ + //@{ + /** + * @return return the encoding set for the formatted content + */ + + const XMLCh* getEncodingName() const; + + /** + * @return return constant transcoder used internally for transcoding the formatter conent + */ + inline const XMLTranscoder* getTranscoder() const; + + /** + * @return return the transcoder used internally for transcoding the formatter content + */ + inline XMLTranscoder* getTranscoder(); + + //@} + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + /** @name Setter methods */ + //@{ + /** + * @param newFlags set the escape style for the follow-on formatted content + */ + void setEscapeFlags + ( + const EscapeFlags newFlags + ); + + /** + * @param newFlags set the reaction for unrepresentable character + */ + void setUnRepFlags + ( + const UnRepFlags newFlags + ); + + /** + * @param newFlags set the escape style for the follow-on formatted content + * @see setEscapeFlags + */ + XMLFormatter& operator<< + ( + const EscapeFlags newFlags + ); + + /** + * @param newFlags set the reaction for unrepresentable character + * @see setUnRepFlags + */ + XMLFormatter& operator<< + ( + const UnRepFlags newFlags + ); + //@} + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Setter methods */ + //@{ + /** + * @return return the escape style for the formatted content + */ + EscapeFlags getEscapeFlags() const; + + /** + * @return return the reaction for unrepresentable character + */ + UnRepFlags getUnRepFlags() const; + //@} + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLFormatter(); + XMLFormatter(const XMLFormatter&); + XMLFormatter& operator=(const XMLFormatter&); + + + // ----------------------------------------------------------------------- + // Private class constants + // ----------------------------------------------------------------------- + enum Constants + { + kTmpBufSize = 16 * 1024 + }; + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + const XMLByte* getCharRef(XMLSize_t &count, + XMLByte* &ref, + const XMLCh * stdRef); + + void writeCharRef(const XMLCh &toWrite); + void writeCharRef(XMLSize_t toWrite); + + bool inEscapeList(const XMLFormatter::EscapeFlags escStyle + , const XMLCh toCheck); + + + XMLSize_t handleUnEscapedChars(const XMLCh * srcPtr, + const XMLSize_t count, + const UnRepFlags unrepFlags); + + void specialFormat + ( + const XMLCh* const toFormat + , const XMLSize_t count + , const EscapeFlags escapeFlags + ); + + + // ----------------------------------------------------------------------- + // Private, non-virtual methods + // + // fEscapeFlags + // The escape flags we were told to use in formatting. These are + // defaults set in the ctor, which can be overridden on a particular + // call. + // + // fOutEncoding + // This the name of the output encoding. Saved mainly for meaningful + // error messages. + // + // fTarget + // This is the target object for the formatting operation. + // + // fUnRepFlags + // The unrepresentable flags that indicate how to react when a + // character cannot be represented in the target encoding. + // + // fXCoder + // This the transcoder that we will use. It is created using the + // encoding name we were told to use. + // + // fTmpBuf + // An output buffer that we use to transcode chars into before we + // send them off to be output. + // + // fAposRef + // fAmpRef + // fGTRef + // fLTRef + // fQuoteRef + // These are character refs for the standard char refs, in the + // output encoding. They are faulted in as required, by transcoding + // them from fixed Unicode versions. + // + // fIsXML11 + // for performance reason, we do not store the actual version string + // and do the string comparison again and again. + // + // ----------------------------------------------------------------------- + EscapeFlags fEscapeFlags; + XMLCh* fOutEncoding; + XMLFormatTarget* fTarget; + UnRepFlags fUnRepFlags; + XMLTranscoder* fXCoder; + XMLByte fTmpBuf[kTmpBufSize + 4]; + XMLByte* fAposRef; + XMLSize_t fAposLen; + XMLByte* fAmpRef; + XMLSize_t fAmpLen; + XMLByte* fGTRef; + XMLSize_t fGTLen; + XMLByte* fLTRef; + XMLSize_t fLTLen; + XMLByte* fQuoteRef; + XMLSize_t fQuoteLen; + bool fIsXML11; + MemoryManager* fMemoryManager; +}; + + +class XMLPARSER_EXPORT XMLFormatTarget : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + virtual ~XMLFormatTarget() {} + + + // ----------------------------------------------------------------------- + // Virtual interface + // ----------------------------------------------------------------------- + virtual void writeChars + ( + const XMLByte* const toWrite + , const XMLSize_t count + , XMLFormatter* const formatter + ) = 0; + + virtual void flush() {}; + + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors and operators + // ----------------------------------------------------------------------- + XMLFormatTarget() {}; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLFormatTarget(const XMLFormatTarget&); + XMLFormatTarget& operator=(const XMLFormatTarget&); +}; + + +// --------------------------------------------------------------------------- +// XMLFormatter: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh* XMLFormatter::getEncodingName() const +{ + return fOutEncoding; +} + +inline const XMLTranscoder* XMLFormatter::getTranscoder() const +{ + return fXCoder; +} + +inline XMLTranscoder* XMLFormatter::getTranscoder() +{ + return fXCoder; +} + +// --------------------------------------------------------------------------- +// XMLFormatter: Setter methods +// --------------------------------------------------------------------------- +inline void XMLFormatter::setEscapeFlags(const EscapeFlags newFlags) +{ + fEscapeFlags = newFlags; +} + +inline void XMLFormatter::setUnRepFlags(const UnRepFlags newFlags) +{ + fUnRepFlags = newFlags; +} + + +inline XMLFormatter& XMLFormatter::operator<<(const EscapeFlags newFlags) +{ + fEscapeFlags = newFlags; + return *this; +} + +inline XMLFormatter& XMLFormatter::operator<<(const UnRepFlags newFlags) +{ + fUnRepFlags = newFlags; + return *this; +} + +// --------------------------------------------------------------------------- +// XMLFormatter: Getter methods +// --------------------------------------------------------------------------- +inline XMLFormatter::EscapeFlags XMLFormatter::getEscapeFlags() const +{ + return fEscapeFlags; +} + +inline XMLFormatter::UnRepFlags XMLFormatter::getUnRepFlags() const +{ + return fUnRepFlags; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLGrammarDescription.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLGrammarDescription.hpp new file mode 100644 index 000000000000..12e309d47d2b --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLGrammarDescription.hpp @@ -0,0 +1,105 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLGRAMMARDESCRIPTION_HPP) +#define XERCESC_INCLUDE_GUARD_XMLGRAMMARDESCRIPTION_HPP + +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT XMLGrammarDescription : public XSerializable, public XMemory +{ +public : + // ----------------------------------------------------------------------- + /** @name Virtual destructor for derived classes */ + // ----------------------------------------------------------------------- + //@{ + /** + * virtual destructor + * + */ + virtual ~XMLGrammarDescription(); + //@} + + // ----------------------------------------------------------------------- + /** @name The Grammar Description Interface */ + // ----------------------------------------------------------------------- + //@{ + /** + * getGrammarType + * + */ + virtual Grammar::GrammarType getGrammarType() const = 0; + + /** + * getGrammarKey + * + */ + virtual const XMLCh* getGrammarKey() const = 0; + //@} + + inline MemoryManager* getMemoryManager() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLGrammarDescription) + +protected : + // ----------------------------------------------------------------------- + /** Hidden Constructors */ + // ----------------------------------------------------------------------- + //@{ + XMLGrammarDescription(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); + //@} + +private : + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + XMLGrammarDescription(const XMLGrammarDescription& ); + XMLGrammarDescription& operator=(const XMLGrammarDescription& ); + //@} + + // ----------------------------------------------------------------------- + // + // fMemMgr: plugged-in (or defaulted-in) memory manager, + // not owned + // no reset after initialization + // allow derivatives to access directly + // + // ----------------------------------------------------------------------- + MemoryManager* const fMemMgr; +}; + +inline MemoryManager* XMLGrammarDescription::getMemoryManager() const +{ + return fMemMgr; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLGrammarPool.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLGrammarPool.hpp new file mode 100644 index 000000000000..ae9d654afae8 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLGrammarPool.hpp @@ -0,0 +1,322 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLGRAMMARPOOL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLGRAMMARPOOL_HPP + +#include +#include +#include +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +class Grammar; +class XMLGrammarDescription; +class DTDGrammar; +class SchemaGrammar; +class XMLDTDDescription; +class XMLSchemaDescription; +class XMLStringPool; +class BinInputStream; +class BinOutputStream; + +class XMLPARSER_EXPORT XMLGrammarPool : public XMemory +{ +public : + // ----------------------------------------------------------------------- + /** @name Virtual destructor for derived classes */ + // ----------------------------------------------------------------------- + //@{ + + /** + * virtual destructor + * + */ + virtual ~XMLGrammarPool(){}; + //@} + + // ----------------------------------------------------------------------- + /** @name The Grammar Pool Interface */ + // ----------------------------------------------------------------------- + //@{ + + /** + * cacheGrammar + * + * Provide the grammar pool with an opportunity + * to cache the given grammar. If the pool does not choose to do so, + * it should return false; otherwise, it should return true, so that + * the caller knows whether the grammar has been adopted. + * + * @param gramToCache the Grammar to be cached in the grammar pool + * @return true if the grammar pool has elected to cache the grammar (in which case + * it is assumed to have adopted it); false if it does not cache it + * + */ + virtual bool cacheGrammar(Grammar* const gramToCache) = 0; + + /** + * retrieveGrammar + * + * @param gramDesc the Grammar Description used to search for grammar + * cached in the grammar pool + * + */ + virtual Grammar* retrieveGrammar(XMLGrammarDescription* const gramDesc) = 0; + + + /** + * orphanGrammar + * + * grammar removed from the grammar pool and owned by the caller + * + * @param nameSpaceKey Key used to search for grammar in the grammar pool + * @return the grammar that was removed from the pool (0 if none) + */ + virtual Grammar* orphanGrammar(const XMLCh* const nameSpaceKey) = 0; + + + /** + * Get an enumeration of the cached Grammars in the Grammar pool + * + * @return enumeration of the cached Grammars in Grammar pool + */ + virtual RefHashTableOfEnumerator getGrammarEnumerator() const = 0; + + /** + * clear + * + * all grammars are removed from the grammar pool and deleted. + * @return true if the grammar pool was cleared. false if it did not. + */ + virtual bool clear() = 0; + + /** + * lockPool + * + * When this method is called by the application, the + * grammar pool should stop adding new grammars to the cache. + * This should result in the grammar pool being sharable + * among parsers operating in different threads. + * + */ + virtual void lockPool() = 0; + + /** + * unlockPool + * + * After this method has been called, the grammar pool implementation + * should return to its default behaviour when cacheGrammars(...) is called. + * One effect, depending on the underlying implementation, is that the grammar pool + * may no longer be thread-safe (even on read operations). + * + * For PSVI support any previous XSModel that was produced will be deleted. + */ + virtual void unlockPool() = 0; + + //@} + + // ----------------------------------------------------------------------- + /** @name Factory interface */ + // ----------------------------------------------------------------------- + //@{ + + /** + * createDTDGrammar + * + */ + virtual DTDGrammar* createDTDGrammar() = 0; + + /** + * createSchemaGrammar + * + */ + virtual SchemaGrammar* createSchemaGrammar() = 0; + + /** + * createDTDDescription + * + */ + virtual XMLDTDDescription* createDTDDescription(const XMLCh* const systemId) = 0; + /** + * createSchemaDescription + * + */ + virtual XMLSchemaDescription* createSchemaDescription(const XMLCh* const targetNamespace) = 0; + + //@} + + // ----------------------------------------------------------------------- + /** @name schema component model support */ + // ----------------------------------------------------------------------- + //@{ + + /*** + * Return an XSModel derived from the components of all SchemaGrammars + * in the grammar pool. If the pool is locked, this should + * be a thread-safe operation. + * + * NOTE: The function should NEVER return NULL. If there are no grammars in + * the pool it should return an XSModel containing the Schema for Schema. + * + * Calling getXSModel() on an unlocked grammar pool may result in the + * creation of a new XSModel with the old XSModel being deleted. + * The bool parameter will indicate if the XSModel was changed. + * + */ + virtual XSModel *getXSModel(bool& XSModelWasChanged) = 0; + + // @} + + // ----------------------------------------------------------------------- + /** @name Getter */ + // ----------------------------------------------------------------------- + //@{ + + /** + * getMemoryManager + * + */ + inline MemoryManager* getMemoryManager() + { + return fMemMgr; + } + + /** + * Return an XMLStringPool for use by validation routines. + * Implementations should not create a string pool on each call to this + * method, but should maintain one string pool for all grammars + * for which this pool is responsible. + */ + virtual XMLStringPool *getURIStringPool() = 0; + //@} + + // ----------------------------------------------------------------------- + /** serialization and deserialization support */ + // ----------------------------------------------------------------------- + + /*** + * + * 1. Context: Serialize/Deserialize All Grammars In One Session + * + * Since it is common that a declaration in one grammar may reference + * to definitions in other grammars, it is required to serialize those + * related (or interdependent) grammars in to one persistent data store + * in one serialization session (storing), and deserialize them from the + * persistent data store in one deserialization session (loading) back + * to the grammar pool. + * + * 2. Multiple serializations + * + * It is acceptable that client application requests more than one + * grammar serialization on a particular grammar pool, to track the + * different grammars cached, or for whatever reasons that client + * application is interested in. + * + * 3. Multiple deserializations + * + * Request for grammar deserialization either after the grammar pool has + * its own cached grammars, or request for more than one grammar + * deserialization, may cause undesired and unpredictable consequence + * and therefore client application shall be aware that individual + * implementationis may NOT support this. + * + * However it is strongly recommended that the client application requests + * no more than one grammar deserialization even a particular implementation + * may allow multiple deserializations. + * + * 4. Locking + * + * Both serialization and deserialization requires to lock the grammar pool + * before operation and unlock after operation. In the case the grammar pool + * is locked by a third party, the request for serialization/deserialization + * will NOT be entertained. + * + * 5. Versioning + * + * The Persistent data store has a version tag to be verified during + * deserialization, thus a grammar pool may decide if it supports + * a binary data created by a different release of Xerces. + * + * 6. Clean up + * + * The client application shall be aware that in the event of an exception + * thrown due to a corrupted data store during deserialization, implementation + * may not be able to clean up all resources allocated, and therefore it is + * client application's responsibility to clean up those unreleased resources. + * + * + */ + virtual void serializeGrammars(BinOutputStream* const) = 0; + virtual void deserializeGrammars(BinInputStream* const) = 0; + + /* + * Set/get a flag to not create XSAnnotations when deserializing the grammar. + * Defaults to false (create XSAnnotations when deserializing the grammar). + */ + inline void setIgnoreSerializedAnnotations(const bool flag) + { + fIgnoreSerializedAnnotations = flag; + }; + inline bool getIgnoreSerializedAnnotations() const + { + return fIgnoreSerializedAnnotations; + }; + +protected : + // ----------------------------------------------------------------------- + /** Hidden Constructors */ + // ----------------------------------------------------------------------- + //@{ + XMLGrammarPool(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager) + :fMemMgr(memMgr) + ,fIgnoreSerializedAnnotations(false) + { + }; + //@} + +private : + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + XMLGrammarPool(const XMLGrammarPool& ); + XMLGrammarPool& operator=(const XMLGrammarPool& ); + //@} + + // ----------------------------------------------------------------------- + // + // fMemMgr: plugged-in (or defaulted-in) memory manager + // not owned + // no reset after initialization + // + // ----------------------------------------------------------------------- + + MemoryManager* const fMemMgr; + bool fIgnoreSerializedAnnotations; + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLGrammarPoolImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLGrammarPoolImpl.hpp new file mode 100644 index 000000000000..877a1706ddb9 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLGrammarPoolImpl.hpp @@ -0,0 +1,279 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLGRAMMARPOOLIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLGRAMMARPOOLIMPL_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLSynchronizedStringPool; + +class XMLUTIL_EXPORT XMLGrammarPoolImpl : public XMLGrammarPool +{ +public : + // ----------------------------------------------------------------------- + /** @name constructor and destructor */ + // ----------------------------------------------------------------------- + //@{ + + XMLGrammarPoolImpl(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); + + ~XMLGrammarPoolImpl(); + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of Grammar Pool Interface */ + // ----------------------------------------------------------------------- + //@{ + + /** + * cacheGrammar + * + * Provide the grammar pool with an opportunity + * to cache the given grammar. If the pool does not choose to do so, + * it should return false; otherwise, it should return true, so that + * the caller knows whether the grammar has been adopted. + * + * @param gramToCache: the Grammar to be cached in the grammar pool + * @return true if the grammar pool has elected to cache the grammar (in which case + * it is assumed to have adopted it); false if it does not cache it + * + */ + virtual bool cacheGrammar(Grammar* const gramToCache); + + + /** + * retrieveGrammar + * + * @param gramDesc: the Grammar Description used to search for grammar + * cached in the grammar pool + * + */ + virtual Grammar* retrieveGrammar(XMLGrammarDescription* const gramDesc); + + + /** + * orphanGrammar + * + * grammar removed from the grammar pool and owned by the caller + * + * @param nameSpaceKey: Key used to search for grammar in the grammar pool + * + */ + virtual Grammar* orphanGrammar(const XMLCh* const nameSpaceKey); + + + /** + * Get an enumeration of the cached Grammars in the Grammar pool + * + * @return enumeration of the cached Grammars in Grammar pool + */ + virtual RefHashTableOfEnumerator getGrammarEnumerator() const; + + /** + * clear + * + * all grammars are removed from the grammar pool and deleted. + * @return true if the grammar pool was cleared. false if it did not. + */ + virtual bool clear(); + + /** + * lockPool + * + * When this method is called by the application, the + * grammar pool should stop adding new grammars to the cache. + */ + virtual void lockPool(); + + /** + * unlockPool + * + * After this method has been called, the grammar pool implementation + * should return to its default behaviour when cacheGrammars(...) is called. + * + * For PSVI support any previous XSModel that was produced will be deleted. + */ + virtual void unlockPool(); + + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of Factory interface */ + // ----------------------------------------------------------------------- + //@{ + + /** + * createDTDGrammar + * + */ + virtual DTDGrammar* createDTDGrammar(); + + /** + * createSchemaGrammar + * + */ + virtual SchemaGrammar* createSchemaGrammar(); + + /** + * createDTDDescription + * + */ + virtual XMLDTDDescription* createDTDDescription(const XMLCh* const systemId); + /** + * createSchemaDescription + * + */ + virtual XMLSchemaDescription* createSchemaDescription(const XMLCh* const targetNamespace); + //@} + + // ----------------------------------------------------------------------- + /** @name schema component model support */ + // ----------------------------------------------------------------------- + //@{ + + /*** + * Return an XSModel derived from the components of all SchemaGrammars + * in the grammar pool. If the pool is locked, this should + * be a thread-safe operation. + * + * NOTE: The function should NEVER return NULL. If there are no grammars in + * the pool it should return an XSModel containing the Schema for Schema. + * + * Calling getXSModel() on an unlocked grammar pool may result in the + * creation of a new XSModel with the old XSModel being deleted. + * The bool parameter will indicate if the XSModel was changed. + * + * In this implementation, when the pool is not locked a new XSModel will be + * computed each this time the pool is called if the pool has changed (and the + * previous one will be destroyed at that time). When the lockPool() + * method is called, an XSModel will be generated and returned whenever this method is called + * while the pool is in the locked state. This will be destroyed if the unlockPool() + * operation is called. The XSModel will not be serialized, + * but will be recreated if a deserialized pool is in the + * locked state. + * + */ + virtual XSModel *getXSModel(bool& XSModelWasChanged); + + // @} + // ----------------------------------------------------------------------- + /** @name Getter */ + // ----------------------------------------------------------------------- + //@{ + + /** + * Return an XMLStringPool for use by validation routines. + * Implementations should not create a string pool on each call to this + * method, but should maintain one string pool for all grammars + * for which this pool is responsible. + */ + virtual XMLStringPool *getURIStringPool(); + + // @} + + // ----------------------------------------------------------------------- + // serialization and deserialization support + // ----------------------------------------------------------------------- + + /*** + * + * Multiple serializations + * + * For multiple serializations, if the same file name is given, then the + * last result will be in the file (overwriting mode), if different file + * names are given, then there are multiple data stores for each serialization. + * + * Multiple deserializations + * + * Not supported + * + * Versioning + * + * Only binary data serialized with the current XercesC Version and + * SerializationLevel is supported. + * + * Clean up + * + * In the event of an exception thrown due to a corrupted data store during + * deserialization, this implementation may not be able to clean up all resources + * allocated, and therefore it is the client application's responsibility to + * clean up those unreleased resources. + * + * Coupling of Grammars and StringPool + * + * This implementation assumes that StringPool shall always be + * serialized/deserialized together with the grammars. In the case that such a + * coupling is not desired, client application can modify this behaviour by + * either derivate from this imlementation and overwrite the serializeGrammars() + * and/or deserializeGrammars() to decouple grammars and string pool, or + * Once deserializeGrammars() is done, insert another StringPool through + * setStringPool(). + * + * Client application shall be aware of the unpredicatable/undefined consequence + * of this decoupling. + */ + + virtual void serializeGrammars(BinOutputStream* const); + virtual void deserializeGrammars(BinInputStream* const); + +private: + + virtual void createXSModel(); + + void + cleanUp(); + + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + XMLGrammarPoolImpl(const XMLGrammarPoolImpl& ); + XMLGrammarPoolImpl& operator=(const XMLGrammarPoolImpl& ); + //@} + + // ----------------------------------------------------------------------- + // + // fGrammarRegistry: + // + // container + // fStringPool + // grammars need a string pool for URI -> int mappings + // fSynchronizedStringPool + // When the grammar pool is locked, provide a string pool + // that can be updated in a thread-safe manner. + // fLocked + // whether the pool has been locked + // + // ----------------------------------------------------------------------- + RefHashTableOf* fGrammarRegistry; + XMLStringPool* fStringPool; + XMLSynchronizedStringPool* fSynchronizedStringPool; + XSModel* fXSModel; + bool fLocked; + bool fXSModelIsValid; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLNotationDecl.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLNotationDecl.hpp new file mode 100644 index 000000000000..5f1e4acec6b2 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLNotationDecl.hpp @@ -0,0 +1,231 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLNOTATIONDECL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLNOTATIONDECL_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class represents the core information about a notation declaration + * that all validators must at least support. Each validator will create a + * derivative of this class which adds any information it requires for its + * own extra needs. + * + * At this common level, the information supported is the notation name + * and the public and sysetm ids indicated in the notation declaration. + */ +class XMLPARSER_EXPORT XMLNotationDecl : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors */ + //@{ + XMLNotationDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + XMLNotationDecl + ( + const XMLCh* const notName + , const XMLCh* const pubId + , const XMLCh* const sysId + , const XMLCh* const baseURI = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Destructor */ + //@{ + ~XMLNotationDecl(); + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t getId() const; + const XMLCh* getName() const; + const XMLCh* getPublicId() const; + const XMLCh* getSystemId() const; + const XMLCh* getBaseURI() const; + unsigned int getNameSpaceId() const; + MemoryManager* getMemoryManager() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setId(const XMLSize_t newId); + void setName + ( + const XMLCh* const notName + ); + void setPublicId(const XMLCh* const newId); + void setSystemId(const XMLCh* const newId); + void setBaseURI(const XMLCh* const newId); + void setNameSpaceId(const unsigned int newId); + + // ----------------------------------------------------------------------- + // Support named collection element semantics + // ----------------------------------------------------------------------- + const XMLCh* getKey() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLNotationDecl) + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLNotationDecl(const XMLNotationDecl&); + XMLNotationDecl& operator=(const XMLNotationDecl&); + + + // ----------------------------------------------------------------------- + // XMLNotationDecl: Private helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fId + // This is the unique id given to this notation decl. + // + // fName + // The notation's name, which identifies the type of notation it + // applies to. + // + // fPublicId + // The text of the notation's public id, if any. + // + // fSystemId + // The text of the notation's system id, if any. + // + // fBaseURI + // The text of the notation's base URI + // ----------------------------------------------------------------------- + XMLSize_t fId; + unsigned int fNameSpaceId; + XMLCh* fName; + XMLCh* fPublicId; + XMLCh* fSystemId; + XMLCh* fBaseURI; + MemoryManager* fMemoryManager; +}; + + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- +inline XMLSize_t XMLNotationDecl::getId() const +{ + return fId; +} + +inline const XMLCh* XMLNotationDecl::getName() const +{ + return fName; +} + +inline unsigned int XMLNotationDecl::getNameSpaceId() const +{ + return fNameSpaceId; +} + +inline const XMLCh* XMLNotationDecl::getPublicId() const +{ + return fPublicId; +} + +inline const XMLCh* XMLNotationDecl::getSystemId() const +{ + return fSystemId; +} + +inline const XMLCh* XMLNotationDecl::getBaseURI() const +{ + return fBaseURI; +} + +inline MemoryManager* XMLNotationDecl::getMemoryManager() const +{ + return fMemoryManager; +} + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- +inline void XMLNotationDecl::setId(const XMLSize_t newId) +{ + fId = newId; +} + +inline void XMLNotationDecl::setNameSpaceId(const unsigned int newId) +{ + fNameSpaceId = newId; +} + +inline void XMLNotationDecl::setPublicId(const XMLCh* const newId) +{ + if (fPublicId) + fMemoryManager->deallocate(fPublicId); + + fPublicId = XMLString::replicate(newId, fMemoryManager); +} + +inline void XMLNotationDecl::setSystemId(const XMLCh* const newId) +{ + if (fSystemId) + fMemoryManager->deallocate(fSystemId); + + fSystemId = XMLString::replicate(newId, fMemoryManager); +} + +inline void XMLNotationDecl::setBaseURI(const XMLCh* const newId) +{ + if (fBaseURI) + fMemoryManager->deallocate(fBaseURI); + + fBaseURI = XMLString::replicate(newId, fMemoryManager); +} + + +// --------------------------------------------------------------------------- +// XMLNotationDecl: Support named pool element semantics +// --------------------------------------------------------------------------- +inline const XMLCh* XMLNotationDecl::getKey() const +{ + return fName; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLPScanToken.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLPScanToken.hpp new file mode 100644 index 000000000000..f81639668bcc --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLPScanToken.hpp @@ -0,0 +1,151 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLPSCANTOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_XMLPSCANTOKEN_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLScanner; + +/** + * This simple class is used as a sanity check when the scanner is used to + * do progressive parsing. It insures that things are not done out of + * sequence and that sequences of scan calls are made correctly to the + * right scanner instances. + * + * To client code, it is just a magic cookie which is obtained when a + * progressive parse is begun, and which is passed back in on each subsequent + * call of the progressive parse. + */ +class XMLPARSER_EXPORT XMLPScanToken : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructor */ + //@{ + XMLPScanToken(); + XMLPScanToken(const XMLPScanToken& toCopy); + //@} + + /** @name Destructor */ + //@{ + ~XMLPScanToken(); + //@} + + + // ----------------------------------------------------------------------- + // Public operators + // ----------------------------------------------------------------------- + XMLPScanToken& operator=(const XMLPScanToken& toCopy); + + +protected : + // ----------------------------------------------------------------------- + // XMLScanner is our friend, can you say friend? Sure... + // ----------------------------------------------------------------------- + friend class XMLScanner; + + + // ----------------------------------------------------------------------- + // Hidden methods for use by XMLScanner + // ----------------------------------------------------------------------- + void set + ( + const XMLUInt32 scannerId + , const XMLUInt32 sequenceId + ); + + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fScannerId + // This field is set to the id of the scanner, to catch problems + // where a token is gotten from one scanner and passed to another. + // Each scanner is assigned an incrementing id. + // + // fSequenceId + // In order to avoid problems such as calling scanNext() without + // a call to scanFirst() and such, this value is set when scanFirst() + // is called and matches this token to the current sequence id of + // the scanner. + // ----------------------------------------------------------------------- + XMLUInt32 fScannerId; + XMLUInt32 fSequenceId; +}; + + +// --------------------------------------------------------------------------- +// XMLPScanToken: Constructors and Operators +// --------------------------------------------------------------------------- +inline XMLPScanToken::XMLPScanToken() : + + fScannerId(0) + , fSequenceId(0) +{ +} + +inline XMLPScanToken::XMLPScanToken(const XMLPScanToken& toCopy) : + XMemory(toCopy) + , fScannerId(toCopy.fScannerId) + , fSequenceId(toCopy.fSequenceId) +{ +} + +inline XMLPScanToken::~XMLPScanToken() +{ +} + + +// --------------------------------------------------------------------------- +// XMLPScanToken: Public operators +// --------------------------------------------------------------------------- +inline XMLPScanToken& XMLPScanToken::operator=(const XMLPScanToken& toCopy) +{ + if (this == &toCopy) + return *this; + + fScannerId = toCopy.fScannerId; + fSequenceId = toCopy.fSequenceId; + + return *this; +} + + +// --------------------------------------------------------------------------- +// XMLPScanToken: Hidden methods +// --------------------------------------------------------------------------- +inline void XMLPScanToken::set( const XMLUInt32 scannerId + , const XMLUInt32 sequenceId) +{ + fScannerId = scannerId; + fSequenceId = sequenceId; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLRecognizer.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLRecognizer.hpp new file mode 100644 index 000000000000..255e5b2bb9b8 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLRecognizer.hpp @@ -0,0 +1,138 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLRECOGNIZER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLRECOGNIZER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class provides some simple code to recognize the encodings of + * XML files. This recognition only does very basic sensing of the encoding + * in a broad sense. Basically its just enough to let us get started and + * read the XMLDecl line. The scanner, once it reads the XMLDecl, will + * tell the reader any actual encoding string it found and the reader can + * update itself to be more specific at that point. + */ +class XMLPARSER_EXPORT XMLRecognizer +{ +public : + // ----------------------------------------------------------------------- + // Class types + // + // This enum represents the various encoding families that we have to + // deal with individually at the scanner level. This does not indicate + // the exact encoding, just the rough family that would let us scan + // the XML/TextDecl to find the encoding string. + // + // The 'L's and 'B's stand for little or big endian. + // + // OtherEncoding means that its some transcoder based encoding, i.e. not + // one of the ones that we do internally. Its a special case and should + // never be used directly outside of the reader. + // + // NOTE: Keep this in sync with the name map array in the Cpp file!! + // ----------------------------------------------------------------------- + enum Encodings + { + EBCDIC = 0 + , UCS_4B = 1 + , UCS_4L = 2 + , US_ASCII = 3 + , UTF_8 = 4 + , UTF_16B = 5 + , UTF_16L = 6 + , XERCES_XMLCH = 7 + + , Encodings_Count + , Encodings_Min = EBCDIC + , Encodings_Max = XERCES_XMLCH + + , OtherEncoding = 999 + }; + + + // ----------------------------------------------------------------------- + // Public, const static data + // + // These are the byte sequences for each of the encodings that we can + // auto sense, and their lengths. + // ----------------------------------------------------------------------- + static const char fgASCIIPre[]; + static const XMLSize_t fgASCIIPreLen; + static const XMLByte fgEBCDICPre[]; + static const XMLSize_t fgEBCDICPreLen; + static const XMLByte fgUTF16BPre[]; + static const XMLByte fgUTF16LPre[]; + static const XMLSize_t fgUTF16PreLen; + static const XMLByte fgUCS4BPre[]; + static const XMLByte fgUCS4LPre[]; + static const XMLSize_t fgUCS4PreLen; + static const char fgUTF8BOM[]; + static const XMLSize_t fgUTF8BOMLen; + + + // ----------------------------------------------------------------------- + // Encoding recognition methods + // ----------------------------------------------------------------------- + static Encodings basicEncodingProbe + ( + const XMLByte* const rawBuffer + , const XMLSize_t rawByteCount + ); + + static Encodings encodingForName + ( + const XMLCh* const theEncName + ); + + static const XMLCh* nameForEncoding(const Encodings theEncoding + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + +protected : + // ----------------------------------------------------------------------- + // Unimplemented constructors, operators, and destructor + // + // This class is effectively being used as a namespace for some static + // methods. + // + // (these functions are protected rather than private only to get rid of + // some annoying compiler warnings.) + // + // ----------------------------------------------------------------------- + XMLRecognizer(); + ~XMLRecognizer(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLRecognizer(const XMLRecognizer&); + XMLRecognizer& operator=(const XMLRecognizer&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLRefInfo.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLRefInfo.hpp new file mode 100644 index 000000000000..f2c71371d47d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLRefInfo.hpp @@ -0,0 +1,181 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLREFINFO_HPP) +#define XERCESC_INCLUDE_GUARD_XMLREFINFO_HPP + +#include +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class provides a simple means to track ID Ref usage. Since id/idref + * semantics are part of XML 1.0, any validator will likely to be able to + * track them. Instances of this class represent a reference and two markers, + * one for its being declared and another for its being used. When the + * document is done, one can look at each instance and, if used but not + * declared, its an error. + * + * The getKey() method allows it to support keyed collection semantics. It + * returns the referenced name, so these objects will be stored via the hash + * of the name. This name will either be a standard QName if namespaces are + * not enabled/supported by the validator, or it will be in the form + * {url}name if namespace processing is enabled. + */ +class XMLPARSER_EXPORT XMLRefInfo : public XSerializable, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructor */ + //@{ + XMLRefInfo + ( + const XMLCh* const refName + , const bool fDeclared = false + , const bool fUsed = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Destructor */ + //@{ + ~XMLRefInfo(); + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getDeclared() const; + const XMLCh* getRefName() const; + bool getUsed() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setDeclared(const bool newValue); + void setUsed(const bool newValue); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLRefInfo) + + XMLRefInfo + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLRefInfo(const XMLRefInfo&); + XMLRefInfo& operator=(XMLRefInfo&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fDeclared + // The name was declared somewhere as an ID attribute. + // + // fRefName + // The name of the ref that this object represents. This is not a + // name of the attribute, but of the value of an ID or IDREF attr + // in content. + // + // fUsed + // The name was used somewhere in an IDREF/IDREFS attribute. If this + // is true, but fDeclared is false, then the ref does not refer to + // a declared ID. + // ----------------------------------------------------------------------- + bool fDeclared; + bool fUsed; + XMLCh* fRefName; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// XMLRefInfo: Constructors and Destructor +// --------------------------------------------------------------------------- +inline XMLRefInfo::XMLRefInfo( const XMLCh* const refName + , const bool declared + , const bool used + , MemoryManager* const manager) : + fDeclared(declared) + , fUsed(used) + , fRefName(0) + , fMemoryManager(manager) +{ + fRefName = XMLString::replicate(refName, fMemoryManager); +} + +inline XMLRefInfo::~XMLRefInfo() +{ + fMemoryManager->deallocate(fRefName); +} + + +// --------------------------------------------------------------------------- +// XMLRefInfo: Getter methods +// --------------------------------------------------------------------------- +inline bool XMLRefInfo::getDeclared() const +{ + return fDeclared; +} + +inline const XMLCh* XMLRefInfo::getRefName() const +{ + return fRefName; +} + +inline bool XMLRefInfo::getUsed() const +{ + return fUsed; +} + + +// --------------------------------------------------------------------------- +// XMLRefInfo: Setter methods +// --------------------------------------------------------------------------- +inline void XMLRefInfo::setDeclared(const bool newValue) +{ + fDeclared = newValue; +} + +inline void XMLRefInfo::setUsed(const bool newValue) +{ + fUsed = newValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLSchemaDescription.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLSchemaDescription.hpp new file mode 100644 index 000000000000..f0c2920888ce --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLSchemaDescription.hpp @@ -0,0 +1,178 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLSCHEMADESCRIPTION_HPP) +#define XERCESC_INCLUDE_GUARD_XMLSCHEMADESCRIPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +typedef const XMLCh* const LocationHint; + +class XMLPARSER_EXPORT XMLSchemaDescription : public XMLGrammarDescription +{ +public : + // ----------------------------------------------------------------------- + /** @name Virtual destructor for derived classes */ + // ----------------------------------------------------------------------- + //@{ + /** + * virtual destructor + * + */ + virtual ~XMLSchemaDescription(); + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of Grammar Description Interface */ + // ----------------------------------------------------------------------- + //@{ + /** + * getGrammarType + * + */ + virtual Grammar::GrammarType getGrammarType() const + { + return Grammar::SchemaGrammarType; + } + //@} + + // ----------------------------------------------------------------------- + /** @name The SchemaDescription Interface */ + // ----------------------------------------------------------------------- + //@{ + + enum ContextType + { + CONTEXT_INCLUDE, + CONTEXT_REDEFINE, + CONTEXT_IMPORT, + CONTEXT_PREPARSE, + CONTEXT_INSTANCE, + CONTEXT_ELEMENT, + CONTEXT_ATTRIBUTE, + CONTEXT_XSITYPE, + CONTEXT_UNKNOWN + }; + + /** + * getContextType + * + */ + virtual ContextType getContextType() const = 0; + + /** + * getTargetNamespace + * + */ + virtual const XMLCh* getTargetNamespace() const = 0; + + /** + * getLocationHints + * + */ + virtual const RefArrayVectorOf* getLocationHints() const = 0; + + /** + * getTriggeringComponent + * + */ + virtual const QName* getTriggeringComponent() const = 0; + + /** + * getenclosingElementName + * + */ + virtual const QName* getEnclosingElementName() const = 0; + + /** + * getAttributes + * + */ + virtual const XMLAttDef* getAttributes() const = 0; + + /** + * setContextType + * + */ + virtual void setContextType(ContextType) = 0; + + /** + * setTargetNamespace + * + */ + virtual void setTargetNamespace(const XMLCh* const) = 0; + + /** + * setLocationHints + * + */ + virtual void setLocationHints(const XMLCh* const) = 0; + + /** + * setTriggeringComponent + * + */ + virtual void setTriggeringComponent(QName* const) = 0; + + /** + * getenclosingElementName + * + */ + virtual void setEnclosingElementName(QName* const) = 0; + + /** + * setAttributes + * + */ + virtual void setAttributes(XMLAttDef* const) = 0; + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLSchemaDescription) + +protected : + // ----------------------------------------------------------------------- + /** Hidden Constructors */ + // ----------------------------------------------------------------------- + //@{ + XMLSchemaDescription(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); + //@} + +private : + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + XMLSchemaDescription(const XMLSchemaDescription& ); + XMLSchemaDescription& operator=(const XMLSchemaDescription& ); + //@} + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLValidator.hpp new file mode 100644 index 000000000000..959483ce1ad6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLValidator.hpp @@ -0,0 +1,426 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLVALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ReaderMgr; +class XMLBufferMgr; +class XMLElementDecl; +class XMLScanner; +class Grammar; + + +/** + * This abstract class provides the interface for all validators. This is + * the simple amount of API that all validators must honor, in order for + * the scanner to use them to do validation. All validators will actually + * contain much more functionality than is accessible via this common API, + * but that functionality requires that you know what type of validator you + * are dealing with. + * + * Basically, at this level, the primary concern is to be able to query + * core information about elements and attributes. Adding decls to the + * validator requires that you go through the derived interface because they + * all have their own decl types. At this level, we can return information + * via the base decl classes, from which each validator derives its own + * decl classes. + */ +class XMLPARSER_EXPORT XMLValidator : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors are hidden, just the virtual destructor is exposed + // ----------------------------------------------------------------------- + + /** @name Destructor */ + //@{ + + /** + * The derived class should clean up its allocated data, then this class + * will do the same for data allocated at this level. + */ + virtual ~XMLValidator() + { + } + //@} + + + // ----------------------------------------------------------------------- + // The virtual validator interface + // ----------------------------------------------------------------------- + + /** @name Virtual validator interface */ + //@{ + + /** + * The derived class should look up its declaration of the passed element + * from its element pool. It should then use the content model description + * contained in that element declaration to validate that the passed list + * of child elements are valid for that content model. The count can be + * zero, indicating no child elements. + * + * Note that whitespace and text content are not validated here. Those are + * handled by the scanner. So only element ids are provided here. + * + * @param elemDecl The element whose content is to be checked. + * + * @param children An array of element QName which represent the elements + * found within the parent element, i.e. the content + * to be validated. + * + * @param childCount The number of elements in the childIds array. It can + * be zero if the element had none. + * + * @param indexFailingChild On return, it will contain the index of the + * children failing validation, if the retun value + * is false + * + */ + virtual bool checkContent + ( + XMLElementDecl* const elemDecl + , QName** const children + , XMLSize_t childCount + , XMLSize_t* indexFailingChild + ) = 0; + + /** + * The derived class should fault in the passed XMLAttr value. It should + * use the passeed attribute definition (which is passed via the base + * type so it must often be downcast to the appropriate type for the + * derived validator class), to fill in the passed attribute. This is done + * as a performance enhancement since the derived class has more direct + * access to the information. + */ + virtual void faultInAttr + ( + XMLAttr& toFill + , const XMLAttDef& attDef + ) const = 0; + + /** + * This method is called by the scanner after a Grammar is scanned. + */ + virtual void preContentValidation(bool reuseGrammar, + bool validateDefAttr = false) = 0; + + /** + * This method is called by the scanner after the parse has completed. It + * gives the validator a chance to check certain things that can only be + * checked after the whole document has been parsed, such as referential + * integrity of ID/IDREF pairs and so forth. The validator should just + * issue errors for any problems it finds. + */ + virtual void postParseValidation() = 0; + + /** + * This method is called by the scanner before a new document is about + * to start. It gives the validator a change to reset itself in preparation + * for another validation pass. + */ + virtual void reset() = 0; + + /** + * The derived class should return a boolean that indicates whether it + * requires namespace processing or not. Some do and some allow it to be + * optional. This flag is used to control whether the client code's + * requests to disable namespace processing can be honored or not. + */ + virtual bool requiresNamespaces() const = 0; + + /** + * The derived class should apply any rules to the passed attribute value + * that are above and beyond those defined by XML 1.0. The scanner itself + * will impose XML 1.0 rules, based on the type of the attribute. This + * will generally be used to check things such as range checks and other + * datatype related validation. + * + * If the value breaks any rules as defined by the derived class, it + * should just issue errors as usual. + */ + virtual void validateAttrValue + ( + const XMLAttDef* attDef + , const XMLCh* const attrValue + , bool preValidation = false + , const XMLElementDecl* elemDecl = 0 + ) = 0; + + /** + * The derived class should apply any rules to the passed element decl + * that are above and beyond those defined by XML 1.0. + * + * If the value breaks any rules as defined by the derived class, it + * should just issue errors as usual. + */ + virtual void validateElement + ( + const XMLElementDecl* elemDef + ) = 0; + + /** + * Retrieve the Grammar used + */ + virtual Grammar* getGrammar() const =0; + + /** + * Set the Grammar + */ + virtual void setGrammar(Grammar* aGrammar) =0; + + + //@} + + // ----------------------------------------------------------------------- + // Virtual DTD handler interface. + // ----------------------------------------------------------------------- + + /** @name Virtual DTD handler interface */ + //@{ + + /** + * This method allows the scanner to ask the validator if it handles + * DTDs or not. + */ + virtual bool handlesDTD() const = 0; + + // ----------------------------------------------------------------------- + // Virtual Schema handler interface. + // ----------------------------------------------------------------------- + + /** @name Virtual Schema handler interface */ + + /** + * This method allows the scanner to ask the validator if it handles + * Schema or not. + */ + virtual bool handlesSchema() const = 0; + + //@} + + // ----------------------------------------------------------------------- + // Setter methods + // + // setScannerInfo() is called by the scanner to tell the validator + // about the stuff it needs to have access to. + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + + /** + * @param owningScanner This is a pointer to the scanner to which the + * validator belongs. The validator will often + * need to query state data from the scanner. + * + * @param readerMgr This is a pointer to the reader manager that is + * being used by the scanner. + * + * @param bufMgr This is the buffer manager of the scanner. This + * is provided as a convenience so that the validator + * doesn't have to create its own buffer manager + * during the parse process. + */ + void setScannerInfo + ( + XMLScanner* const owningScanner + , ReaderMgr* const readerMgr + , XMLBufferMgr* const bufMgr + ); + + /** + * This method is called to set an error reporter on the validator via + * which it will report any errors it sees during parsing or validation. + * This is generally called by the owning scanner. + * + * @param errorReporter A pointer to the error reporter to use. This + * is not adopted, just referenced so the caller + * remains responsible for its cleanup, if any. + */ + void setErrorReporter + ( + XMLErrorReporter* const errorReporter + ); + + //@} + + + // ----------------------------------------------------------------------- + // Error emitter methods + // ----------------------------------------------------------------------- + + /** @name Error emittor methods */ + //@{ + + /** + * This call is a convenience by which validators can emit errors. Most + * of the grunt work of loading the text, getting the current source + * location, ect... is handled here. + * + * If the loaded text has replacement parameters, then text strings can be + * passed. These will be used to replace the tokens {0}, {1}, {2}, and {3} + * in the order passed. So text1 will replace {0}, text2 will replace {1}, + * and so forth. + * + * textX Up to four replacement parameters. They can be provided + * as either XMLCh strings, or local code page strings which + * will be transcoded internally. + * + * @param toEmit The error code to emit. it must be one of the defined + * validator error codes. + * + */ + void emitError(const XMLValid::Codes toEmit); + void emitError + ( + const XMLValid::Codes toEmit + , const XMLCh* const text1 + , const XMLCh* const text2 = 0 + , const XMLCh* const text3 = 0 + , const XMLCh* const text4 = 0 + ); + void emitError + ( + const XMLValid::Codes toEmit + , const char* const text1 + , const char* const text2 = 0 + , const char* const text3 = 0 + , const char* const text4 = 0 + ); + void emitError + ( + const XMLValid::Codes toEmit + , const XMLExcepts::Codes originalErrorCode + , const XMLCh* const text1 = 0 + , const XMLCh* const text2 = 0 + , const XMLCh* const text3 = 0 + , const XMLCh* const text4 = 0 + + ); + + //@} + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XMLValidator + ( + XMLErrorReporter* const errReporter = 0 + ); + + + // ----------------------------------------------------------------------- + // Protected getters + // ----------------------------------------------------------------------- + const XMLBufferMgr* getBufMgr() const; + XMLBufferMgr* getBufMgr(); + const ReaderMgr* getReaderMgr() const; + ReaderMgr* getReaderMgr(); + const XMLScanner* getScanner() const; + XMLScanner* getScanner(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented Constructors and Operators + // ----------------------------------------------------------------------- + XMLValidator(const XMLValidator&); + XMLValidator& operator=(const XMLValidator&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fErrorReporter + // The error reporter we are to use, if any. + // + // ----------------------------------------------------------------------- + XMLBufferMgr* fBufMgr; + XMLErrorReporter* fErrorReporter; + ReaderMgr* fReaderMgr; + XMLScanner* fScanner; +}; + + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- +inline void +XMLValidator::setScannerInfo(XMLScanner* const owningScanner + , ReaderMgr* const readerMgr + , XMLBufferMgr* const bufMgr) +{ + // We don't own any of these, we just reference them + fScanner = owningScanner; + fReaderMgr = readerMgr; + fBufMgr = bufMgr; +} + +inline void +XMLValidator::setErrorReporter(XMLErrorReporter* const errorReporter) +{ + fErrorReporter = errorReporter; +} + + +// --------------------------------------------------------------------------- +// XMLValidator: Protected getter +// --------------------------------------------------------------------------- +inline const XMLBufferMgr* XMLValidator::getBufMgr() const +{ + return fBufMgr; +} + +inline XMLBufferMgr* XMLValidator::getBufMgr() +{ + return fBufMgr; +} + +inline const ReaderMgr* XMLValidator::getReaderMgr() const +{ + return fReaderMgr; +} + +inline ReaderMgr* XMLValidator::getReaderMgr() +{ + return fReaderMgr; +} + +inline const XMLScanner* XMLValidator::getScanner() const +{ + return fScanner; +} + +inline XMLScanner* XMLValidator::getScanner() +{ + return fScanner; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/XMLValidityCodes.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLValidityCodes.hpp new file mode 100644 index 000000000000..aed00fbee399 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/XMLValidityCodes.hpp @@ -0,0 +1,147 @@ +// This file is generated, don't edit it!! + +#if !defined(XERCESC_INCLUDE_GUARD_ERRHEADER_XMLValid) +#define XERCESC_INCLUDE_GUARD_ERRHEADER_XMLValid + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLValid +{ +public : + enum Codes + { + NoError = 0 + , E_LowBounds = 1 + , ElementNotDefined = 2 + , AttNotDefined = 3 + , NotationNotDeclared = 4 + , RootElemNotLikeDocType = 5 + , RequiredAttrNotProvided = 6 + , ElementNotValidForContent = 7 + , BadIDAttrDefType = 8 + , InvalidEmptyAttValue = 9 + , ElementAlreadyExists = 10 + , MultipleIdAttrs = 11 + , ReusedIDValue = 12 + , IDNotDeclared = 13 + , UnknownNotRefAttr = 14 + , UndeclaredElemInDocType = 15 + , EmptyNotValidForContent = 16 + , AttNotDefinedForElement = 17 + , BadEntityRefAttr = 18 + , UnknownEntityRefAttr = 19 + , ColonNotValidWithNS = 20 + , NotEnoughElemsForCM = 21 + , NoCharDataInCM = 22 + , DoesNotMatchEnumList = 23 + , AttrValNotName = 24 + , NoMultipleValues = 25 + , NotSameAsFixedValue = 26 + , RepElemInMixed = 27 + , FeatureUnsupported = 28 + , GroupContentRestricted = 29 + , UnknownBaseDatatype = 30 + , NoContentForRef = 31 + , DatatypeError = 32 + , ProhibitedAttributePresent = 33 + , IllegalXMLSpace = 34 + , WrongTargetNamespace = 35 + , SimpleTypeHasChild = 36 + , NoDatatypeValidatorForSimpleType = 37 + , GrammarNotFound = 38 + , DisplayErrorMessage = 39 + , NillNotAllowed = 40 + , NilAttrNotEmpty = 41 + , FixedDifferentFromActual = 42 + , NoDatatypeValidatorForAttribute = 43 + , GenericError = 44 + , ElementNotQualified = 45 + , ElementNotUnQualified = 46 + , VC_IllegalRefInStandalone = 47 + , NoDefAttForStandalone = 48 + , NoAttNormForStandalone = 49 + , NoWSForStandalone = 50 + , VC_EntityNotFound = 51 + , PartialMarkupInPE = 52 + , DatatypeValidationFailure = 53 + , UniqueParticleAttributionFail = 54 + , NoAbstractInXsiType = 55 + , NoDirectUseAbstractElement = 56 + , NoUseAbstractType = 57 + , BadXsiType = 58 + , NonDerivedXsiType = 59 + , ElemNoSubforBlock = 60 + , TypeNoSubforBlock = 61 + , AttributeNotQualified = 62 + , AttributeNotUnQualified = 63 + , IC_FieldMultipleMatch = 64 + , IC_UnknownField = 65 + , IC_AbsentKeyValue = 66 + , IC_KeyNotEnoughValues = 67 + , IC_KeyMatchesNillable = 68 + , IC_DuplicateUnique = 69 + , IC_DuplicateKey = 70 + , IC_KeyRefOutOfScope = 71 + , IC_KeyNotFound = 72 + , NonWSContent = 73 + , EmptyElemNotationAttr = 74 + , EmptyElemHasContent = 75 + , ElemOneNotationAttr = 76 + , AttrDupToken = 77 + , ElemChildrenHasInvalidWS = 78 + , E_HighBounds = 79 + , W_LowBounds = 80 + , W_HighBounds = 81 + , F_LowBounds = 82 + , F_HighBounds = 83 + }; + + static bool isFatal(const XMLValid::Codes toCheck) + { + return ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)); + } + + static bool isWarning(const XMLValid::Codes toCheck) + { + return ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)); + } + + static bool isError(const XMLValid::Codes toCheck) + { + return ((toCheck >= E_LowBounds) && (toCheck <= E_HighBounds)); + } + + static XMLErrorReporter::ErrTypes errorType(const XMLValid::Codes toCheck) + { + if ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)) + return XMLErrorReporter::ErrType_Warning; + else if ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)) + return XMLErrorReporter::ErrType_Fatal; + else if ((toCheck >= E_LowBounds) && (toCheck <= E_HighBounds)) + return XMLErrorReporter::ErrType_Error; + return XMLErrorReporter::ErrTypes_Unknown; + } + static DOMError::ErrorSeverity DOMErrorType(const XMLValid::Codes toCheck) + { + if ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)) + return DOMError::DOM_SEVERITY_WARNING; + else if ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)) + return DOMError::DOM_SEVERITY_FATAL_ERROR; + else return DOMError::DOM_SEVERITY_ERROR; + } + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLValid(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/PSVIAttribute.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/PSVIAttribute.hpp new file mode 100644 index 000000000000..ecc2100818b9 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/PSVIAttribute.hpp @@ -0,0 +1,179 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PSVIATTRIBUTE_HPP) +#define XERCESC_INCLUDE_GUARD_PSVIATTRIBUTE_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Represent the PSVI contributions for one attribute information item. + * This is *always* owned by the scanner/parser object from which + * it is obtained. The validator will specify + * under what conditions it may be relied upon to have meaningful contents. + */ + +// forward declarations +class XSAttributeDeclaration; + +class XMLPARSER_EXPORT PSVIAttribute : public PSVIItem +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param manager The configurable memory manager + */ + PSVIAttribute( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@}; + + /** @name Destructor */ + //@{ + ~PSVIAttribute(); + //@} + + //--------------------- + /** @name PSVIAttribute methods */ + + //@{ + + /** + * An item isomorphic to the attribute declaration used to validate + * this attribute. + * + * @return an attribute declaration + */ + XSAttributeDeclaration *getAttributeDeclaration(); + + /** + * An item isomorphic to the type definition used to validate this element. + * + * @return a type declaration + */ + XSTypeDefinition *getTypeDefinition(); + + /** + * If and only if that type definition is a simple type definition + * with {variety} union, or a complex type definition whose {content type} + * is a simple thype definition with {variety} union, then an item isomorphic + * to that member of the union's {member type definitions} which actually + * validated the element item's normalized value. + * + * @return a simple type declaration + */ + XSSimpleTypeDefinition *getMemberTypeDefinition(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + /** + * reset this object. Intended to be called by + * the implementation. + */ + void reset( + const XMLCh * const valContext + , PSVIItem::VALIDITY_STATE state + , PSVIItem::ASSESSMENT_TYPE assessmentType + , XSSimpleTypeDefinition * validatingType + , XSSimpleTypeDefinition * memberType + , const XMLCh * const defaultValue + , const bool isSpecified + , XSAttributeDeclaration * attrDecl + , DatatypeValidator * dv + ); + + /** + * set the schema normalized value (and + * implicitly the canonical value) of this object; intended to be used + * by the implementation. + */ + void setValue(const XMLCh * const normalizedValue); + + /** + * set VALIDITY_STATE to specified value; intended to be + * called by implementation. + */ + void updateValidity(VALIDITY_STATE newValue); + + //@} + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + PSVIAttribute(const PSVIAttribute&); + PSVIAttribute & operator=(const PSVIAttribute &); + + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fAttributeDecl + // attribute declaration component that validated this attribute + // fDV + // implementation-specific datatype validator used to validate this attribute + XSAttributeDeclaration * fAttributeDecl; + DatatypeValidator * fDV; +}; +inline PSVIAttribute::~PSVIAttribute() +{ + fMemoryManager->deallocate((void *)fCanonicalValue); +} + +inline XSAttributeDeclaration *PSVIAttribute::getAttributeDeclaration() +{ + return fAttributeDecl; +} + +inline XSTypeDefinition* PSVIAttribute::getTypeDefinition() +{ + return fType; +} + +inline XSSimpleTypeDefinition* PSVIAttribute::getMemberTypeDefinition() +{ + return fMemberType; +} + +inline void PSVIAttribute::updateValidity(VALIDITY_STATE newValue) +{ + fValidityState = newValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/PSVIAttributeList.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/PSVIAttributeList.hpp new file mode 100644 index 000000000000..2e0c59e87b47 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/PSVIAttributeList.hpp @@ -0,0 +1,215 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PSVIATTRIBUTE_LIST_HPP) +#define XERCESC_INCLUDE_GUARD_PSVIATTRIBUTE_LIST_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * A container for the PSVI contributions to attributes that occur + * on a particular element. + * This is always owned by the parser/validator from + * which it is obtained. The parser/validator will specify + * under what conditions it may be relied upon to have meaningful contents. + */ + +class XMLPARSER_EXPORT PSVIAttributeStorage : public XMemory +{ +public: + PSVIAttributeStorage() : + fPSVIAttribute(0) + , fAttributeName(0) + , fAttributeNamespace(0) + { + } + + ~PSVIAttributeStorage() + { + delete fPSVIAttribute; + } + + PSVIAttribute* fPSVIAttribute; + const XMLCh* fAttributeName; + const XMLCh* fAttributeNamespace; +}; + +class XMLPARSER_EXPORT PSVIAttributeList : public XMemory +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param manager The configurable memory manager + */ + PSVIAttributeList( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@}; + + /** @name Destructor */ + //@{ + ~PSVIAttributeList(); + //@} + + //--------------------- + /** @name PSVIAttributeList methods */ + + //@{ + + /* + * Get the number of attributes whose PSVI contributions + * are contained in this list. + */ + XMLSize_t getLength() const; + + /* + * Get the PSVI contribution of attribute at position i + * in this list. Indices start from 0. + * @param index index from which the attribute PSVI contribution + * is to come. + * @return PSVIAttribute containing the attributes PSVI contributions; + * null is returned if the index is out of range. + */ + PSVIAttribute *getAttributePSVIAtIndex(const XMLSize_t index); + + /* + * Get local part of attribute name at position index in the list. + * Indices start from 0. + * @param index index from which the attribute name + * is to come. + * @return local part of the attribute's name; null is returned if the index + * is out of range. + */ + const XMLCh *getAttributeNameAtIndex(const XMLSize_t index); + + /* + * Get namespace of attribute at position index in the list. + * Indices start from 0. + * @param index index from which the attribute namespace + * is to come. + * @return namespace of the attribute; + * null is returned if the index is out of range. + */ + const XMLCh *getAttributeNamespaceAtIndex(const XMLSize_t index); + + /* + * Get the PSVI contribution of attribute with given + * local name and namespace. + * @param attrName local part of the attribute's name + * @param attrNamespace namespace of the attribute + * @return null if the attribute PSVI does not exist + */ + PSVIAttribute *getAttributePSVIByName(const XMLCh *attrName + , const XMLCh * attrNamespace); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + /** + * returns a PSVI attribute of undetermined state and given name/namespace and + * makes that object part of the internal list. Intended to be called + * during validation of an element. + * @param attrName name of this attribute + * @param attrNS URI of the attribute + * @return new, uninitialized, PSVIAttribute object + */ + PSVIAttribute *getPSVIAttributeToFill( + const XMLCh * attrName + , const XMLCh * attrNS); + + /** + * reset the list + */ + void reset(); + + //@} + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + PSVIAttributeList(const PSVIAttributeList&); + PSVIAttributeList & operator=(const PSVIAttributeList &); + + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fMemoryManager + // handler to provide dynamically-need memory + // fAttrList + // list of PSVIAttributes contained by this object + // fAttrPos + // current number of initialized PSVIAttributes in fAttrList + MemoryManager* fMemoryManager; + RefVectorOf* fAttrList; + XMLSize_t fAttrPos; +}; + +inline PSVIAttributeList::~PSVIAttributeList() +{ + delete fAttrList; +} + +inline PSVIAttribute *PSVIAttributeList::getPSVIAttributeToFill( + const XMLCh *attrName + , const XMLCh * attrNS) +{ + PSVIAttributeStorage* storage = 0; + if(fAttrPos == fAttrList->size()) + { + storage = new (fMemoryManager) PSVIAttributeStorage(); + storage->fPSVIAttribute = new (fMemoryManager) PSVIAttribute(fMemoryManager); + fAttrList->addElement(storage); + } + else + { + storage = fAttrList->elementAt(fAttrPos); + } + storage->fAttributeName = attrName; + storage->fAttributeNamespace = attrNS; + fAttrPos++; + return storage->fPSVIAttribute; +} + +inline void PSVIAttributeList::reset() +{ + fAttrPos = 0; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/PSVIElement.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/PSVIElement.hpp new file mode 100644 index 000000000000..40a3991fcdd6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/PSVIElement.hpp @@ -0,0 +1,174 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PSVIELEMENT_HPP) +#define XERCESC_INCLUDE_GUARD_PSVIELEMENT_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Represent the PSVI contributions for one element information item. + * This is *always* owned by the scanner/parser object from which + * it is obtained. The validator will specify + * under what conditions it may be relied upon to have meaningful contents. + */ + +// forward declarations +class XSElementDeclaration; +class XSNotationDeclaration; +class XSModel; + +class XMLPARSER_EXPORT PSVIElement : public PSVIItem +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param manager The configurable memory manager + */ + PSVIElement( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@}; + + /** @name Destructor */ + //@{ + ~PSVIElement(); + //@} + + //--------------------- + /** @name PSVIElement methods */ + + //@{ + + /** + * An item isomorphic to the element declaration used to validate + * this element. + * + * @return an element declaration + */ + XSElementDeclaration *getElementDeclaration(); + + /** + * [notation] + * @see XML Schema Part 1: Structures [notation] + * @return The notation declaration. + */ + XSNotationDeclaration *getNotationDeclaration(); + + /** + * [schema information] + * @see XML Schema Part 1: Structures [schema information] + * @return The schema information property if it's the validation root, + * null otherwise. + */ + XSModel *getSchemaInformation(); + + /** + * An item isomorphic to the type definition used to validate this element. + * + * @return a type declaration + */ + XSTypeDefinition *getTypeDefinition(); + + /** + * If and only if that type definition is a simple type definition + * with {variety} union, or a complex type definition whose {content type} + * is a simple type definition with {variety} union, then an item isomorphic + * to that member of the union's {member type definitions} which actually + * validated the element item's normalized value. + * + * @return a simple type declaration + */ + XSSimpleTypeDefinition *getMemberTypeDefinition(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + void reset + ( + const VALIDITY_STATE validityState + , const ASSESSMENT_TYPE assessmentType + , const XMLCh* const validationContext + , bool isSpecified + , XSElementDeclaration* const elemDecl + , XSTypeDefinition* const typeDef + , XSSimpleTypeDefinition* const memberType + , XSModel* const schemaInfo + , const XMLCh* const defaultValue + , const XMLCh* const normalizedValue = 0 + , XMLCh* const canonicalValue = 0 + , XSNotationDeclaration* const notationDecl = 0 + ); + + //@} + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + PSVIElement(const PSVIElement&); + PSVIElement & operator=(const PSVIElement &); + + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fElementDecl + // element declaration component that validated this element + // fNotationDecl + // (optional) notation decl associated with this element + // fSchemaInfo + // Schema Information Item with which this validation episode is associated + XSElementDeclaration *fElementDecl; + XSNotationDeclaration *fNotationDecl; + XSModel *fSchemaInfo; +}; + +inline XSElementDeclaration *PSVIElement::getElementDeclaration() +{ + return fElementDecl; +} + +inline XSNotationDeclaration* PSVIElement::getNotationDeclaration() +{ + return fNotationDecl; +} + +inline XSModel* PSVIElement::getSchemaInformation() +{ + return fSchemaInfo; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/PSVIHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/PSVIHandler.hpp new file mode 100644 index 000000000000..07d4887d5048 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/PSVIHandler.hpp @@ -0,0 +1,148 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PSVIHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_PSVIHANDLER_HPP + + +XERCES_CPP_NAMESPACE_BEGIN + + +class PSVIElement; +class PSVIAttributeList; + + +/** + * This abstract class provides the interface for the scanner to return + * PSVI information to the application. + * + */ +class XMLPARSER_EXPORT PSVIHandler +{ +public: + // ----------------------------------------------------------------------- + // Constructors are hidden, just the virtual destructor is exposed + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + virtual ~PSVIHandler() + { + } + //@} + + /** @name The PSVI handler interface */ + //@{ + /** Receive notification of the PSVI properties of an element. + * The scanner will issue this call after the XMLDocumentHandler + * endElement call. Since the scanner will issue the psviAttributes + * call immediately after reading the start tag of an element, all element + * content will be effectively bracketed by these two calls. + * @param localName The name of the element whose end tag was just + * parsed. + * @param uri The namespace to which the element is bound + * @param elementInfo Object containing the element's PSVI properties + */ + virtual void handleElementPSVI + ( + const XMLCh* const localName + , const XMLCh* const uri + , PSVIElement * elementInfo + ) = 0; + + /** + * Receive notification of partial PSVI properties of an element. + * This callback is made right after the psviAttributes + * call for non-empty element. + * + * The PSVIElement passed in has all fields properly set and it + * can be safely accessed the same way as the one passed in handleElementPSVI. + * However, fields listed below always have default values. + * + * getValidity() PSVIItem::VALIDITY_NOTKNOWN + * getValidationAttemped() PSVIItem::VALIDATION_NONE + * getMemberTypeDefinition() 0 + * getSchemaNormalizedValue() 0 + * getCanonicalRepresentation() 0 + * getNotationDeclaration() 0 + * + * + * @param localName The name of the element upon which start tag + * these attributes were encountered. + * @param uri The namespace to which the element is bound + * @param elementInfo Object containing the element's partial PSVI properties + */ + virtual void handlePartialElementPSVI + ( + const XMLCh* const localName + , const XMLCh* const uri + , PSVIElement * elementInfo + ); + + /** + * Enables PSVI information about attributes to be passed back to the + * application. This callback will be made on *all* + * elements; on elements with no attributes, the final parameter will + * be null. + * @param localName The name of the element upon which start tag + * these attributes were encountered. + * @param uri The namespace to which the element is bound + * @param psviAttributes Object containing the attributes' PSVI properties + * with information to identify them. + */ + virtual void handleAttributesPSVI + ( + const XMLCh* const localName + , const XMLCh* const uri + , PSVIAttributeList * psviAttributes + ) = 0; + + + //@} + + + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + PSVIHandler() + { + } + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + PSVIHandler(const PSVIHandler&); + PSVIHandler& operator=(const PSVIHandler&); +}; + +inline void PSVIHandler::handlePartialElementPSVI(const XMLCh* const /*localName*/ + , const XMLCh* const /*uri*/ + , PSVIElement * /*elementInfo*/ + ) +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/PSVIItem.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/PSVIItem.hpp new file mode 100644 index 000000000000..ab8a13512613 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/PSVIItem.hpp @@ -0,0 +1,309 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PSVIITEM_HPP) +#define XERCESC_INCLUDE_GUARD_PSVIITEM_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Represent the PSVI contributions for one element or one attribute information item. + * This is *always* owned by the validator /parser object from which + * it is obtained. It is designed to be subclassed; subclasses will + * specify under what conditions it may be relied upon to have meaningful contents. + */ + +// forward declarations +class XSTypeDefinition; +class XSSimpleTypeDefinition; +class XSValue; + +class XMLPARSER_EXPORT PSVIItem : public XMemory +{ +public: + + enum VALIDITY_STATE { + /** Validity value indicating that validation has either not + been performed or that a strict assessment of validity could + not be performed + */ + VALIDITY_NOTKNOWN = 0, + + /** Validity value indicating that validation has been strictly + assessed and the element in question is invalid according to the + rules of schema validation. + */ + VALIDITY_INVALID = 1, + + /** Validity value indicating that validation has been strictly + assessed and the element in question is valid according to the rules + of schema validation. + */ + VALIDITY_VALID = 2 + }; + + enum ASSESSMENT_TYPE { + /** Validation status indicating that schema validation has been + performed and the element in question has specifically been skipped. + */ + VALIDATION_NONE = 0, + + /** Validation status indicating that schema validation has been + performed on the element in question under the rules of lax validation. + */ + VALIDATION_PARTIAL = 1, + + /** Validation status indicating that full schema validation has been + performed on the element. */ + VALIDATION_FULL = 2 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param manager The configurable memory manager + */ + PSVIItem(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@}; + + /** @name Destructor */ + //@{ + virtual ~PSVIItem(); + //@} + + //--------------------- + /** @name PSVIItem methods */ + + //@{ + + /** + * [validation context] + * + * @return A string identifying the nearest ancestor element + * information item with a [schema information] property + * (or this element item itself if it has such a property) + * (form to be determined) + * @see XML Schema Part 1: Structures [validation context] + */ + const XMLCh *getValidationContext(); + + /** + * Determine the validity of the node with respect + * to the validation being attempted + * + * @return return the [validity] property. Possible values are: + * VALIDITY_UNKNOWN, VALIDITY_INVALID, VALIDITY_VALID + */ + VALIDITY_STATE getValidity() const; + + /** + * Determines the extent to which the item has been validated + * + * @return return the [validation attempted] property. The possible values are + * VALIDATION_NONE, VALIDATION_ORDERED_PARTIAL and VALIDATION_FULL + */ + ASSESSMENT_TYPE getValidationAttempted() const; + + /** + * A list of error codes generated from validation attempts. + * Need to find all the possible sub-clause reports that need reporting + * + * @return list of error codes + */ + /*** + const XMLCh ** getErrorCodes(); + ****/ + + /** + * [schema normalized value] + * + * @see XML Schema Part 1: Structures [schema normalized value] + * @return the normalized value of this item after validation + */ + const XMLCh *getSchemaNormalizedValue(); + + /** + * An item isomorphic to the type definition used to validate this element. + * + * @return a type declaration + */ + virtual XSTypeDefinition *getTypeDefinition() = 0; + + /** + * If and only if that type definition is a simple type definition + * with {variety} union, or a complex type definition whose {content type} + * is a simple thype definition with {variety} union, then an item isomorphic + * to that member of the union's {member type definitions} which actually + * validated the element item's normalized value. + * + * @return a simple type declaration + */ + virtual XSSimpleTypeDefinition *getMemberTypeDefinition() = 0; + + /** + * [schema default] + * + * @return The canonical lexical representation of the declaration's {value constraint} value. + * @see XML Schema Part 1: Structures [schema default] + */ + const XMLCh *getSchemaDefault(); + + /** + * [schema specified] + * @see XML Schema Part 1: Structures [schema specified] + * @return true - value was specified in schema, false - value comes from the infoset + */ + bool getIsSchemaSpecified() const; + + /** + * Return the canonical representation of this value. + * Note that, formally, this is not a PSVI property. + * @return string representing the canonical representation, if this item + * was validated by a simple type definition for which canonical + * representations of values are defined. + */ + const XMLCh *getCanonicalRepresentation() const; + + //@} + + /** + * + * Get actual value in the form of XSValue, + * caller needs to delete the object returned. + * + * @return an XSValue + */ + virtual XSValue *getActualValue() const; + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + void setValidationAttempted(PSVIItem::ASSESSMENT_TYPE attemptType); + void setValidity(PSVIItem::VALIDITY_STATE validity); + + /** reset the object + * @param validationContext corresponds to schema validation context property + * @param normalizedValue corresponds to schema normalized value property + * @param validityState state of item's validity + * @param assessmentType type of assessment carried out on item + */ + void reset( + const XMLCh* const validationContext + , const XMLCh* const normalizedValue + , const VALIDITY_STATE validityState + , const ASSESSMENT_TYPE assessmentType + ); + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + PSVIItem(const PSVIItem&); + PSVIItem & operator=(const PSVIItem &); + + +protected: + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fMemoryManager: + // used for any memory allocations + // fValidationContext + // corresponds to the schema [validation context] property + // fNormalizedValue + // The schema normalized value (when present) + // fDefaultValue + // default value specified in the schema, if any + // fCanonicalValue + // canonicalized version of normalizedValue + // fValidityState + // Whether this item is valid or not + // fAssessmentType + // The kind of assessment that produced the given validity outcome + // fIsSpecified + // Whether this item exists because a default was specified in the schema + // fType + // type responsible for validating this item + // fMemberType + // If fType is a union type, the member type that validated this item + MemoryManager* const fMemoryManager; + const XMLCh* fValidationContext; + const XMLCh* fNormalizedValue; + const XMLCh* fDefaultValue; + XMLCh* fCanonicalValue; + VALIDITY_STATE fValidityState; + ASSESSMENT_TYPE fAssessmentType; + bool fIsSpecified; + XSTypeDefinition * fType; + XSSimpleTypeDefinition* fMemberType; +}; + +inline PSVIItem::~PSVIItem() {} + +inline const XMLCh *PSVIItem::getValidationContext() +{ + return fValidationContext; +} + +inline const XMLCh* PSVIItem::getSchemaNormalizedValue() +{ + return fNormalizedValue; +} + +inline const XMLCh* PSVIItem::getSchemaDefault() +{ + return fDefaultValue; +} + +inline const XMLCh* PSVIItem::getCanonicalRepresentation() const +{ + return fCanonicalValue; +} + +inline PSVIItem::VALIDITY_STATE PSVIItem::getValidity() const +{ + return fValidityState; +} + +inline bool PSVIItem::getIsSchemaSpecified() const +{ + return fIsSpecified; +} + +inline PSVIItem::ASSESSMENT_TYPE PSVIItem::getValidationAttempted() const +{ + return fAssessmentType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSAnnotation.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSAnnotation.hpp new file mode 100644 index 000000000000..f10755af7164 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSAnnotation.hpp @@ -0,0 +1,195 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSANNOTATION_HPP) +#define XERCESC_INCLUDE_GUARD_XSANNOTATION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Annotation + * component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class DOMNode; +class ContentHandler; + +class XMLPARSER_EXPORT XSAnnotation : public XSerializable, public XSObject +{ +public: + + // TargetType + enum ANNOTATION_TARGET { + /** + * The object type is org.w3c.dom.Element. + */ + W3C_DOM_ELEMENT = 1, + /** + * The object type is org.w3c.dom.Document. + */ + W3C_DOM_DOCUMENT = 2 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param contents The string that is to be the content of this XSAnnotation + * @param manager The configurable memory manager + */ + XSAnnotation + ( + const XMLCh* const contents + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSAnnotation(); + //@} + + //--------------------- + /** @name XSAnnotation methods */ + + //@{ + + /** + * Write contents of the annotation to the specified DOM object. In-scope + * namespace declarations for annotation element are added as + * attribute nodes of the serialized annotation. + * @param node A target pointer to the annotation target object, i.e. + * either DOMDocument or DOMElement cast as + * DOMNode. + * @param targetType A target type. + */ + + void writeAnnotation(DOMNode* node, ANNOTATION_TARGET targetType); + + /** + * Write contents of the annotation to the specified object. + * The corresponding events for all in-scope namespace declarations are + * sent via the specified document handler. + * @param handler A target pointer to the annotation target object, i.e. + * ContentHandler. + */ + void writeAnnotation(ContentHandler* handler); + + /** + * A text representation of annotation. + */ + const XMLCh *getAnnotationString() const; + XMLCh *getAnnotationString(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + //@{ + void setNext(XSAnnotation* const nextAnnotation); + XSAnnotation* getNext(); + //@} + + //----------------------------- + /** Getter */ + //@{ + inline void getLineCol(XMLFileLoc& line, XMLFileLoc& col) const; + inline const XMLCh* getSystemId() const; + //@} + + //----------------------------- + /** Setter */ + //@{ + inline void setLineCol(XMLFileLoc line, XMLFileLoc col); + void setSystemId(const XMLCh* const systemId); + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XSAnnotation) + XSAnnotation(MemoryManager* const manager); + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSAnnotation(const XSAnnotation&); + XSAnnotation & operator=(const XSAnnotation &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + XMLCh* fContents; + XSAnnotation* fNext; + +private: + + XMLCh* fSystemId; + XMLFileLoc fLine; + XMLFileLoc fCol; + +}; + +inline const XMLCh *XSAnnotation::getAnnotationString() const +{ + return fContents; +} + +inline XMLCh *XSAnnotation::getAnnotationString() +{ + return fContents; +} + +inline void XSAnnotation::getLineCol(XMLFileLoc& line, XMLFileLoc& col) const +{ + line = fLine; + col = fCol; +} + +inline const XMLCh* XSAnnotation::getSystemId() const +{ + return fSystemId; +} + +inline void XSAnnotation::setLineCol(XMLFileLoc line, XMLFileLoc col) +{ + fLine = line; + fCol = col; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSAttributeDeclaration.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSAttributeDeclaration.hpp new file mode 100644 index 000000000000..8a3fa6b70b8d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSAttributeDeclaration.hpp @@ -0,0 +1,210 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSATTRIBUTEDECLARATION_HPP) +#define XERCESC_INCLUDE_GUARD_XSATTRIBUTEDECLARATION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Attribute + * Declaration component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class XSComplexTypeDefinition; +class XSSimpleTypeDefinition; +class SchemaAttDef; + +class XMLPARSER_EXPORT XSAttributeDeclaration : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param attDef + * @param typeDef + * @param annot + * @param xsModel + * @param scope + * @param enclosingCTDefinition + * @param manager The configurable memory manager + */ + XSAttributeDeclaration + ( + SchemaAttDef* const attDef + , XSSimpleTypeDefinition* const typeDef + , XSAnnotation* const annot + , XSModel* const xsModel + , XSConstants::SCOPE scope + , XSComplexTypeDefinition* enclosingCTDefinition + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSAttributeDeclaration(); + //@} + + //--------------------- + /** @name overridden XSObject methods */ + + //@{ + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem* getNamespaceItem(); + + //@} + + /** @name XSAttributeDeclaration methods **/ + + //@{ + + /** + * [type definition]: A simple type definition + */ + XSSimpleTypeDefinition *getTypeDefinition() const; + + /** + * Optional. One of SCOPE_GLOBAL, SCOPE_LOCAL, + * or SCOPE_ABSENT. If the scope is local, then the + * enclosingCTDefinition is present. + */ + XSConstants::SCOPE getScope() const; + + /** + * The complex type definition for locally scoped declarations (see + * scope). + */ + XSComplexTypeDefinition *getEnclosingCTDefinition(); + + /** + * Value constraint: one of VC_NONE, VC_DEFAULT, VC_FIXED. + */ + XSConstants::VALUE_CONSTRAINT getConstraintType() const; + + /** + * Value constraint: The actual value with respect to the [type definition + * ]. + */ + const XMLCh *getConstraintValue(); + + /** + * Optional. Annotation. + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + bool getRequired() const; + //@} + +private: + + void setEnclosingCTDefinition(XSComplexTypeDefinition* const toSet); + friend class XSObjectFactory; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSAttributeDeclaration(const XSAttributeDeclaration&); + XSAttributeDeclaration & operator=(const XSAttributeDeclaration &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + SchemaAttDef* fAttDef; + XSSimpleTypeDefinition* fTypeDefinition; + XSAnnotation* fAnnotation; + XSConstants::SCOPE fScope; + XSComplexTypeDefinition* fEnclosingCTDefinition; +}; + +// --------------------------------------------------------------------------- +// XSAttributeDeclaration: inline methods +// --------------------------------------------------------------------------- +inline XSSimpleTypeDefinition* XSAttributeDeclaration::getTypeDefinition() const +{ + return fTypeDefinition; +} + +inline XSAnnotation *XSAttributeDeclaration::getAnnotation() const +{ + return fAnnotation; +} + +inline XSConstants::SCOPE XSAttributeDeclaration::getScope() const +{ + return fScope; +} + +inline XSComplexTypeDefinition *XSAttributeDeclaration::getEnclosingCTDefinition() +{ + return fEnclosingCTDefinition; +} + +inline void XSAttributeDeclaration::setEnclosingCTDefinition +( + XSComplexTypeDefinition* const toSet +) +{ + fEnclosingCTDefinition = toSet; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSAttributeGroupDefinition.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSAttributeGroupDefinition.hpp new file mode 100644 index 000000000000..fc610de6b6e9 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSAttributeGroupDefinition.hpp @@ -0,0 +1,167 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSATTRIBUTEGROUPDEFINITION_HPP) +#define XERCESC_INCLUDE_GUARD_XSATTRIBUTEGROUPDEFINITION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Attribute + * Group Definition component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class XSAttributeUse; +class XSWildcard; +class XercesAttGroupInfo; + +class XMLPARSER_EXPORT XSAttributeGroupDefinition : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param xercesAttGroupInfo + * @param xsAttList + * @param xsWildcard + * @param xsAnnot + * @param xsModel + * @param manager The configurable memory manager + */ + XSAttributeGroupDefinition + ( + XercesAttGroupInfo* const xercesAttGroupInfo + , XSAttributeUseList* const xsAttList + , XSWildcard* const xsWildcard + , XSAnnotation* const xsAnnot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSAttributeGroupDefinition(); + //@} + + //--------------------- + /** @name overridden XSObject methods */ + //@{ + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem* getNamespaceItem(); + + //@} + + //--------------------- + /** @name XSAttributeGroupDefinition methods */ + + //@{ + + /** + * A set of [attribute uses]. + */ + XSAttributeUseList *getAttributeUses(); + + /** + * Optional. A [wildcard]. + */ + XSWildcard *getAttributeWildcard() const; + + /** + * Optional. An [annotation]. + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSAttributeGroupDefinition(const XSAttributeGroupDefinition&); + XSAttributeGroupDefinition & operator=(const XSAttributeGroupDefinition &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + XercesAttGroupInfo* fXercesAttGroupInfo; + XSAttributeUseList* fXSAttributeUseList; + XSWildcard* fXSWildcard; + XSAnnotation* fAnnotation; +}; + +inline XSAttributeUseList* XSAttributeGroupDefinition::getAttributeUses() +{ + return fXSAttributeUseList; +} + +inline XSWildcard* XSAttributeGroupDefinition::getAttributeWildcard() const +{ + return fXSWildcard; +} + +inline XSAnnotation* XSAttributeGroupDefinition::getAnnotation() const +{ + return fAnnotation; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSAttributeUse.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSAttributeUse.hpp new file mode 100644 index 000000000000..a3b76291190f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSAttributeUse.hpp @@ -0,0 +1,156 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSATTRIBUTEUSE_HPP) +#define XERCESC_INCLUDE_GUARD_XSATTRIBUTEUSE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Attribute + * Use component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAttributeDeclaration; + +class XMLPARSER_EXPORT XSAttributeUse : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * @param xsAttDecl + * @param xsModel + * @param manager The configurable memory manager + */ + XSAttributeUse + ( + XSAttributeDeclaration* const xsAttDecl, + XSModel* const xsModel, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSAttributeUse(); + //@} + + //--------------------- + /** @name XSAttributeUse methods */ + + //@{ + + /** + * [required]: determines whether this use of an attribute declaration + * requires an appropriate attribute information item to be present, or + * merely allows it. + */ + bool getRequired() const; + + /** + * [attribute declaration]: provides the attribute declaration itself, + * which will in turn determine the simple type definition used. + */ + XSAttributeDeclaration *getAttrDeclaration() const; + + /** + * Value Constraint: one of default, fixed. + */ + XSConstants::VALUE_CONSTRAINT getConstraintType() const; + + /** + * Value Constraint: The actual value. + */ + const XMLCh *getConstraintValue(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} + +private: + + // set data + void set + ( + const bool isRequired + , XSConstants::VALUE_CONSTRAINT constraintType + , const XMLCh* const constraintValue + ); + + friend class XSObjectFactory; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSAttributeUse(const XSAttributeUse&); + XSAttributeUse & operator=(const XSAttributeUse &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + bool fRequired; + XSConstants::VALUE_CONSTRAINT fConstraintType; + const XMLCh* fConstraintValue; + XSAttributeDeclaration* fXSAttributeDeclaration; +}; + +inline XSAttributeDeclaration *XSAttributeUse::getAttrDeclaration() const +{ + return fXSAttributeDeclaration; +} + +inline bool XSAttributeUse::getRequired() const +{ + return fRequired; +} + +inline XSConstants::VALUE_CONSTRAINT XSAttributeUse::getConstraintType() const +{ + return fConstraintType; +} + +inline const XMLCh *XSAttributeUse::getConstraintValue() +{ + return fConstraintValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSComplexTypeDefinition.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSComplexTypeDefinition.hpp new file mode 100644 index 000000000000..8ee1a4f41927 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSComplexTypeDefinition.hpp @@ -0,0 +1,294 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSCOMPLEXTYPEDEFINITION_HPP) +#define XERCESC_INCLUDE_GUARD_XSCOMPLEXTYPEDEFINITION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class represents a complexType definition + * schema component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + * + */ + +// forward declarations +class XSAnnotation; +class XSAttributeUse; +class XSSimpleTypeDefinition; +class XSParticle; +class XSWildcard; +class ComplexTypeInfo; + +class XMLPARSER_EXPORT XSComplexTypeDefinition : public XSTypeDefinition +{ +public: + + // Content Model Types + enum CONTENT_TYPE { + /** + * Represents an empty content type. A content type with the distinguished + * value empty validates elements with no character or element + * information item children. + */ + CONTENTTYPE_EMPTY = 0, + /** + * Represents a simple content type. A content type which is a simple + * validates elements with character-only children. + */ + CONTENTTYPE_SIMPLE = 1, + /** + * Represents an element-only content type. An element-only content type + * validates elements with children that conform to the supplied content + * model. + */ + CONTENTTYPE_ELEMENT = 2, + /** + * Represents a mixed content type. + */ + CONTENTTYPE_MIXED = 3 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param complexTypeInfo + * @param xsWildcard + * @param xsSimpleType + * @param xsAttList + * @param xsBaseType + * @param xsParticle + * @param headAnnot + * @param xsModel + * @param manager The configurable memory manager + */ + XSComplexTypeDefinition + ( + ComplexTypeInfo* const complexTypeInfo + , XSWildcard* const xsWildcard + , XSSimpleTypeDefinition* const xsSimpleType + , XSAttributeUseList* const xsAttList + , XSTypeDefinition* const xsBaseType + , XSParticle* const xsParticle + , XSAnnotation* const headAnnot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSComplexTypeDefinition(); + //@} + + //--------------------- + /** @name XSComplexTypeDefinition methods */ + + //@{ + + /** + * [derivation method]: either DERIVATION_EXTENSION, + * DERIVATION_RESTRICTION, or DERIVATION_NONE + * (see XSObject). + */ + XSConstants::DERIVATION_TYPE getDerivationMethod() const; + + /** + * [abstract]: a boolean. Complex types for which abstract is + * true must not be used as the type definition for the validation of + * element information items. + */ + bool getAbstract() const; + + /** + * A set of attribute uses. + */ + XSAttributeUseList *getAttributeUses(); + + /** + * Optional.An attribute wildcard. + */ + XSWildcard *getAttributeWildcard() const; + + /** + * [content type]: one of empty (CONTENTTYPE_EMPTY), a simple + * type definition (CONTENTTYPE_SIMPLE), mixed ( + * CONTENTTYPE_MIXED), or element-only ( + * CONTENTTYPE_ELEMENT). + */ + CONTENT_TYPE getContentType() const; + + /** + * A simple type definition corresponding to simple content model, + * otherwise null + */ + XSSimpleTypeDefinition *getSimpleType() const; + + /** + * A particle for mixed or element-only content model, otherwise + * null + */ + XSParticle *getParticle() const; + + /** + * [prohibited substitutions]: a subset of {extension, restriction} + * @param toTest Extension or restriction constants (see + * XSObject). + * @return True if toTest is a prohibited substitution, otherwise + * false. + */ + bool isProhibitedSubstitution(XSConstants::DERIVATION_TYPE toTest); + + /** + * [prohibited substitutions]: A subset of {extension, restriction} or + * DERIVATION_NONE represented as a bit flag (see + * XSObject). + */ + short getProhibitedSubstitutions() const; + + /** + * A set of [annotations]. + */ + XSAnnotationList *getAnnotations(); + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem *getNamespaceItem(); + + /** + * A boolean that specifies if the type definition is + * anonymous. Convenience attribute. + */ + bool getAnonymous() const; + + /** + * {base type definition}: either a simple type definition or a complex + * type definition. + */ + XSTypeDefinition *getBaseType(); + + /** + * Convenience method: check if this type is derived from the given + * ancestorType. + * @param ancestorType An ancestor type definition. + * @return Return true if this type is derived from + * ancestorType. + */ + bool derivedFromType(const XSTypeDefinition* const ancestorType); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + + //@} + +private: + + /** + * Set the base type + */ + void setBaseType(XSTypeDefinition* const xsBaseType); + friend class XSObjectFactory; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSComplexTypeDefinition(const XSComplexTypeDefinition&); + XSComplexTypeDefinition & operator=(const XSComplexTypeDefinition &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + ComplexTypeInfo* fComplexTypeInfo; + XSWildcard* fXSWildcard; + XSAttributeUseList* fXSAttributeUseList; + XSSimpleTypeDefinition* fXSSimpleTypeDefinition; + XSAnnotationList* fXSAnnotationList; + XSParticle* fParticle; + short fProhibitedSubstitution; +}; + + +inline XSAttributeUseList* XSComplexTypeDefinition::getAttributeUses() +{ + return fXSAttributeUseList; +} + +inline XSWildcard* XSComplexTypeDefinition::getAttributeWildcard() const +{ + return fXSWildcard; +} + +inline XSSimpleTypeDefinition* XSComplexTypeDefinition::getSimpleType() const +{ + return fXSSimpleTypeDefinition; +} + +inline short XSComplexTypeDefinition::getProhibitedSubstitutions() const +{ + return fProhibitedSubstitution; +} + +inline XSParticle *XSComplexTypeDefinition::getParticle() const +{ + return fParticle; +} + +inline void +XSComplexTypeDefinition::setBaseType(XSTypeDefinition* const xsBaseType) +{ + fBaseType = xsBaseType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSConstants.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSConstants.hpp new file mode 100644 index 000000000000..897dea2f999f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSConstants.hpp @@ -0,0 +1,196 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSCONSTANTS_HPP) +#define XERCESC_INCLUDE_GUARD_XSCONSTANTS_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This contains constants needed in the schema component model. + */ + +// forward definitions for typedefs +class XSAnnotation; +class XSAttributeUse; +class XSFacet; +class XSMultiValueFacet; +class XSNamespaceItem; +class XSParticle; +class XSSimpleTypeDefinition; + +// these typedefs are intended to help hide dependence on utility +// classes, as well as to define more intuitive names for commonly +// used concepts. + +typedef RefVectorOf XSAnnotationList; +typedef RefVectorOf XSAttributeUseList; +typedef RefVectorOf XSFacetList; +typedef RefVectorOf XSMultiValueFacetList; +typedef RefVectorOf XSNamespaceItemList; +typedef RefVectorOf XSParticleList; +typedef RefVectorOf XSSimpleTypeDefinitionList; +typedef RefArrayVectorOf StringList; + +class XMLPARSER_EXPORT XSConstants +{ +public: + + // XML Schema Components + enum COMPONENT_TYPE { + /** + * The object describes an attribute declaration. + */ + ATTRIBUTE_DECLARATION = 1, + /** + * The object describes an element declaration. + */ + ELEMENT_DECLARATION = 2, + /** + * The object describes a complex type or simple type definition. + */ + TYPE_DEFINITION = 3, + /** + * The object describes an attribute use definition. + */ + ATTRIBUTE_USE = 4, + /** + * The object describes an attribute group definition. + */ + ATTRIBUTE_GROUP_DEFINITION= 5, + /** + * The object describes a model group definition. + */ + MODEL_GROUP_DEFINITION = 6, + /** + * A model group. + */ + MODEL_GROUP = 7, + /** + * The object describes a particle. + */ + PARTICLE = 8, + /** + * The object describes a wildcard. + */ + WILDCARD = 9, + /** + * The object describes an identity constraint definition. + */ + IDENTITY_CONSTRAINT = 10, + /** + * The object describes a notation declaration. + */ + NOTATION_DECLARATION = 11, + /** + * The object describes an annotation. + */ + ANNOTATION = 12, + /** + * The object describes a constraining facet. + */ + FACET = 13, + + /** + * The object describes enumeration/pattern facets. + */ + MULTIVALUE_FACET = 14 + }; + + // Derivation constants + enum DERIVATION_TYPE { + /** + * No constraint is available. + */ + DERIVATION_NONE = 0, + /** + * XSTypeDefinition final set or + * XSElementDeclaration disallowed substitution group. + */ + DERIVATION_EXTENSION = 1, + /** + * XSTypeDefinition final set or + * XSElementDeclaration disallowed substitution group. + */ + DERIVATION_RESTRICTION = 2, + /** + * XSTypeDefinition final set. + */ + DERIVATION_SUBSTITUTION = 4, + /** + * XSTypeDefinition final set. + */ + DERIVATION_UNION = 8, + /** + * XSTypeDefinition final set. + */ + DERIVATION_LIST = 16 + }; + + // Scope + enum SCOPE { + /** + * The scope of a declaration within named model groups or attribute + * groups is absent. The scope of such declaration is + * determined when it is used in the construction of complex type + * definitions. + */ + SCOPE_ABSENT = 0, + /** + * A scope of global identifies top-level declarations. + */ + SCOPE_GLOBAL = 1, + /** + * Locally scoped declarations are available for use only + * within the complex type. + */ + SCOPE_LOCAL = 2 + }; + + // Value Constraint + enum VALUE_CONSTRAINT { + /** + * Indicates that the component does not have any value constraint. + */ + VALUE_CONSTRAINT_NONE = 0, + /** + * Indicates that there is a default value constraint. + */ + VALUE_CONSTRAINT_DEFAULT = 1, + /** + * Indicates that there is a fixed value constraint for this attribute. + */ + VALUE_CONSTRAINT_FIXED = 2 + }; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSConstants(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSElementDeclaration.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSElementDeclaration.hpp new file mode 100644 index 000000000000..4bb100088d6a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSElementDeclaration.hpp @@ -0,0 +1,307 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSELEMENTDECLARATION_HPP) +#define XERCESC_INCLUDE_GUARD_XSELEMENTDECLARATION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Element Declaration + * component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class XSComplexTypeDefinition; +class XSIDCDefinition; +class XSTypeDefinition; +class SchemaElementDecl; + +class XMLPARSER_EXPORT XSElementDeclaration : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param schemaElementDecl + * @param typeDefinition + * @param substitutionGroupAffiliation + * @param annot + * @param identityConstraints + * @param xsModel + * @param elemScope + * @param enclosingTypeDefinition + * @param manager The configurable memory manager + */ + XSElementDeclaration + ( + SchemaElementDecl* const schemaElementDecl + , XSTypeDefinition* const typeDefinition + , XSElementDeclaration* const substitutionGroupAffiliation + , XSAnnotation* const annot + , XSNamedMap* const identityConstraints + , XSModel* const xsModel + , XSConstants::SCOPE elemScope = XSConstants::SCOPE_ABSENT + , XSComplexTypeDefinition* const enclosingTypeDefinition = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSElementDeclaration(); + //@} + + //--------------------- + /** @name overridden XSXSObject methods */ + + //@{ + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem *getNamespaceItem(); + + //@} + + //--------------------- + /** @name XSElementDeclaration methods */ + + //@{ + + /** + * [type definition]: either a simple type definition or a complex type + * definition. + */ + XSTypeDefinition *getTypeDefinition() const; + + /** + * Optional. One of SCOPE_GLOBAL, SCOPE_LOCAL, + * or SCOPE_ABSENT. If the scope is local, then the + * enclosingCTDefinition is present. + */ + XSConstants::SCOPE getScope() const; + + /** + * The complex type definition for locally scoped declarations (see + * scope). + */ + XSComplexTypeDefinition *getEnclosingCTDefinition() const; + + /** + * [Value constraint]: one of VC_NONE, VC_DEFAULT, VC_FIXED. + */ + XSConstants::VALUE_CONSTRAINT getConstraintType() const; + + /** + * [Value constraint]: the actual value with respect to the [type + * definition]. + */ + const XMLCh *getConstraintValue(); + + /** + * If nillable is true, then an element may also be valid if it carries + * the namespace qualified attribute with local name nil + * from namespace http://www.w3.org/2001/XMLSchema-instance + * and value true (xsi:nil) even if it has no text or + * element content despite a content type which would + * otherwise require content. + */ + bool getNillable() const; + + /** + * identity-constraint definitions: a set of constraint definitions. + */ + XSNamedMap *getIdentityConstraints(); + + /** + * [substitution group affiliation]: optional. A top-level element + * definition. + */ + XSElementDeclaration *getSubstitutionGroupAffiliation() const; + + /** + * Convenience method. Check if exclusion is a substitution + * group exclusion for this element declaration. + * @param exclusion + * DERIVATION_EXTENSION, DERIVATION_RESTRICTION or + * DERIVATION_NONE. Represents final set for the element. + * @return True if exclusion is a part of the substitution + * group exclusion subset. + */ + bool isSubstitutionGroupExclusion(XSConstants::DERIVATION_TYPE exclusion); + + /** + * [substitution group exclusions]: the returned value is a bit + * combination of the subset of { + * DERIVATION_EXTENSION, DERIVATION_RESTRICTION} or + * DERIVATION_NONE. + */ + short getSubstitutionGroupExclusions() const; + + /** + * Convenience method. Check if disallowed is a disallowed + * substitution for this element declaration. + * @param disallowed { + * DERIVATION_SUBSTITUTION, DERIVATION_EXTENSION, DERIVATION_RESTRICTION + * } or DERIVATION_NONE. Represents a block set for the + * element. + * @return True if disallowed is a part of the substitution + * group exclusion subset. + */ + bool isDisallowedSubstitution(XSConstants::DERIVATION_TYPE disallowed); + + /** + * [disallowed substitutions]: the returned value is a bit combination of + * the subset of { + * DERIVATION_SUBSTITUTION, DERIVATION_EXTENSION, DERIVATION_RESTRICTION + * } corresponding to substitutions disallowed by this + * XSElementDeclaration or DERIVATION_NONE. + */ + short getDisallowedSubstitutions() const; + + /** + * {abstract} A boolean. + */ + bool getAbstract() const; + + /** + * Optional. Annotation. + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + void setTypeDefinition(XSTypeDefinition* typeDefinition); + + //@} +private: + + void setEnclosingCTDefinition(XSComplexTypeDefinition* const toSet); + friend class XSObjectFactory; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSElementDeclaration(const XSElementDeclaration&); + XSElementDeclaration & operator=(const XSElementDeclaration &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + short fDisallowedSubstitutions; + short fSubstitutionGroupExclusions; + XSConstants::SCOPE fScope; + SchemaElementDecl* fSchemaElementDecl; + XSTypeDefinition* fTypeDefinition; + XSComplexTypeDefinition* fEnclosingTypeDefinition; + XSElementDeclaration* fSubstitutionGroupAffiliation; + XSAnnotation* fAnnotation; + XSNamedMap* fIdentityConstraints; +}; + +inline XSTypeDefinition* XSElementDeclaration::getTypeDefinition() const +{ + return fTypeDefinition; +} + +inline XSNamedMap* XSElementDeclaration::getIdentityConstraints() +{ + return fIdentityConstraints; +} + +inline XSElementDeclaration* XSElementDeclaration::getSubstitutionGroupAffiliation() const +{ + return fSubstitutionGroupAffiliation; +} + +inline short XSElementDeclaration::getSubstitutionGroupExclusions() const +{ + return fSubstitutionGroupExclusions; +} + +inline short XSElementDeclaration::getDisallowedSubstitutions() const +{ + return fDisallowedSubstitutions; +} + +inline XSAnnotation *XSElementDeclaration::getAnnotation() const +{ + return fAnnotation; +} + +inline XSConstants::SCOPE XSElementDeclaration::getScope() const +{ + return fScope; +} + +inline XSComplexTypeDefinition *XSElementDeclaration::getEnclosingCTDefinition() const +{ + return fEnclosingTypeDefinition; +} + +inline void XSElementDeclaration::setTypeDefinition(XSTypeDefinition* typeDefinition) +{ + fTypeDefinition = typeDefinition; +} + +inline void XSElementDeclaration::setEnclosingCTDefinition(XSComplexTypeDefinition* const toSet) +{ + fEnclosingTypeDefinition = toSet; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSFacet.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSFacet.hpp new file mode 100644 index 000000000000..51a618402659 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSFacet.hpp @@ -0,0 +1,151 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSFACET_HPP) +#define XERCESC_INCLUDE_GUARD_XSFACET_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This represents all Schema Facet components with the exception + * of Enumeration and Pattern Facets, which are represented by the + * XSMultiValueFacet interface. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; + +class XMLPARSER_EXPORT XSFacet : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param facetKind + * @param lexicalValue + * @param isFixed + * @param annot + * @param xsModel + * @param manager The configurable memory manager + */ + XSFacet + ( + XSSimpleTypeDefinition::FACET facetKind + , const XMLCh* const lexicalValue + , bool isFixed + , XSAnnotation* const annot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSFacet(); + //@} + + //--------------------- + /** @name XSFacet methods */ + + //@{ + + /** + * @return An indication as to the facet's type; see XSSimpleTypeDefinition::FACET + */ + XSSimpleTypeDefinition::FACET getFacetKind() const; + + /** + * @return Returns a value of a constraining facet. + */ + const XMLCh *getLexicalFacetValue() const; + + /** + * Check whether a facet value is fixed. + */ + bool isFixed() const; + + /** + * @return an annotation + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSFacet(const XSFacet&); + XSFacet & operator=(const XSFacet &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + XSSimpleTypeDefinition::FACET fFacetKind; + bool fIsFixed; + const XMLCh* fLexicalValue; + XSAnnotation* fAnnotation; +}; + +inline XSSimpleTypeDefinition::FACET XSFacet::getFacetKind() const +{ + return fFacetKind; +} + +inline const XMLCh* XSFacet::getLexicalFacetValue() const +{ + return fLexicalValue; +} + +inline bool XSFacet::isFixed() const +{ + return fIsFixed; +} + +inline XSAnnotation* XSFacet::getAnnotation() const +{ + return fAnnotation; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSIDCDefinition.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSIDCDefinition.hpp new file mode 100644 index 000000000000..ffeec1e09217 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSIDCDefinition.hpp @@ -0,0 +1,190 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSIDCDEFINITION_HPP) +#define XERCESC_INCLUDE_GUARD_XSIDCDEFINITION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Identity Constraint + * Definition component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class IdentityConstraint; + +class XMLPARSER_EXPORT XSIDCDefinition : public XSObject +{ +public: + + // Identity Constraints + enum IC_CATEGORY { + /** + * + */ + IC_KEY = 1, + /** + * + */ + IC_KEYREF = 2, + /** + * + */ + IC_UNIQUE = 3 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param identityConstraint + * @param keyIC + * @param headAnnot + * @param stringList + * @param xsModel + * @param manager The configurable memory manager + */ + XSIDCDefinition + ( + IdentityConstraint* const identityConstraint + , XSIDCDefinition* const keyIC + , XSAnnotation* const headAnnot + , StringList* const stringList + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSIDCDefinition(); + //@} + + //--------------------- + /** @name overridden XSXSObject methods */ + + //@{ + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem *getNamespaceItem(); + + //@} + + //--------------------- + /** @name XSIDCDefinition methods */ + + //@{ + + /** + * [identity-constraint category]: one of IC_KEY, IC_KEYREF or IC_UNIQUE. + */ + IC_CATEGORY getCategory() const; + + /** + * [selector]: a restricted XPath expression. + */ + const XMLCh *getSelectorStr(); + + /** + * [fields]: a non-empty list of restricted XPath ([XPath]) expressions. + */ + StringList *getFieldStrs(); + + /** + * [referenced key]: required if [identity-constraint category] is IC_KEYREF, + * forbidden otherwise (when an identity-constraint definition with [ + * identity-constraint category] equal to IC_KEY or IC_UNIQUE). + */ + XSIDCDefinition *getRefKey() const; + + /** + * A set of [annotations]. + */ + XSAnnotationList *getAnnotations(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSIDCDefinition(const XSIDCDefinition&); + XSIDCDefinition & operator=(const XSIDCDefinition &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + IdentityConstraint* fIdentityConstraint; + XSIDCDefinition* fKey; + StringList* fStringList; + XSAnnotationList* fXSAnnotationList; +}; + + +inline StringList* XSIDCDefinition::getFieldStrs() +{ + return fStringList; +} + +inline XSIDCDefinition* XSIDCDefinition::getRefKey() const +{ + return fKey; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSModel.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSModel.hpp new file mode 100644 index 000000000000..35b818a3d9ae --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSModel.hpp @@ -0,0 +1,338 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSMODEL_HPP) +#define XERCESC_INCLUDE_GUARD_XSMODEL_HPP + +#include +#include +#include + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class contains all properties of the Schema infoitem as determined + * after an entire validation episode. That is, it contains all the properties + * of all the Schema Namespace Information objects that went into + * the validation episode. + * Since it is not like other components, it does not + * inherit from the XSObject interface. + * This is *always* owned by the validator /parser object from which + * it is obtained. It is designed to be subclassed; subclasses will + * specify under what conditions it may be relied upon to have meaningful contents. + */ + +// forward declarations +class Grammar; +class XMLGrammarPool; +class XSAnnotation; +class XSAttributeDeclaration; +class XSAttributeGroupDefinition; +class XSElementDeclaration; +class XSModelGroupDefinition; +class XSNamespaceItem; +class XSNotationDeclaration; +class XSTypeDefinition; +class XSObjectFactory; + +class XMLPARSER_EXPORT XSModel : public XMemory +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The constructor to be used when a grammar pool contains all needed info + * @param grammarPool the grammar pool containing the underlying data structures + * @param manager The configurable memory manager + */ + XSModel( XMLGrammarPool *grammarPool + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * The constructor to be used when the XSModel must represent all + * components in the union of an existing XSModel and a newly-created + * Grammar(s) from the GrammarResolver + * + * @param baseModel the XSModel upon which this one is based + * @param grammarResolver the grammar(s) whose components are to be merged + * @param manager The configurable memory manager + */ + XSModel( XSModel *baseModel + , GrammarResolver *grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@}; + + /** @name Destructor */ + //@{ + ~XSModel(); + //@} + + //--------------------- + /** @name XSModel methods */ + + //@{ + + /** + * Convenience method. Returns a list of all namespaces that belong to + * this schema. The value null is not a valid namespace + * name, but if there are components that don't have a target namespace, + * null is included in this list. + */ + StringList *getNamespaces(); + + /** + * A set of namespace schema information information items ( of type + * XSNamespaceItem), one for each namespace name which + * appears as the target namespace of any schema component in the schema + * used for that assessment, and one for absent if any schema component + * in the schema had no target namespace. For more information see + * schema information. + */ + XSNamespaceItemList *getNamespaceItems(); + + /** + * [schema components]: a list of top-level components, i.e. element + * declarations, attribute declarations, etc. + * @param objectType The type of the declaration, i.e. + * ELEMENT_DECLARATION, + * TYPE_DEFINITION and any other component type that + * may be a property of a schema component. + * @return A list of top-level definition of the specified type in + * objectType or null. + */ + XSNamedMap *getComponents(XSConstants::COMPONENT_TYPE objectType); + + /** + * Convenience method. Returns a list of top-level component declarations + * that are defined within the specified namespace, i.e. element + * declarations, attribute declarations, etc. + * @param objectType The type of the declaration, i.e. + * ELEMENT_DECLARATION. + * @param compNamespace The namespace to which declaration belongs or + * null (for components with no target namespace). + * @return A list of top-level definitions of the specified type in + * objectType and defined in the specified + * namespace or null. + */ + XSNamedMap *getComponentsByNamespace(XSConstants::COMPONENT_TYPE objectType, + const XMLCh *compNamespace); + + /** + * [annotations]: a set of annotations. + */ + XSAnnotationList *getAnnotations(); + + /** + * Convenience method. Returns a top-level element declaration. + * @param name The name of the declaration. + * @param compNamespace The namespace of the declaration, null if absent. + * @return A top-level element declaration or null if such + * declaration does not exist. + */ + XSElementDeclaration *getElementDeclaration(const XMLCh *name + , const XMLCh *compNamespace); + + /** + * Convenience method. Returns a top-level attribute declaration. + * @param name The name of the declaration. + * @param compNamespace The namespace of the declaration, null if absent. + * @return A top-level attribute declaration or null if such + * declaration does not exist. + */ + XSAttributeDeclaration *getAttributeDeclaration(const XMLCh *name + , const XMLCh *compNamespace); + + /** + * Convenience method. Returns a top-level simple or complex type + * definition. + * @param name The name of the definition. + * @param compNamespace The namespace of the declaration, null if absent. + * @return An XSTypeDefinition or null if such + * definition does not exist. + */ + XSTypeDefinition *getTypeDefinition(const XMLCh *name + , const XMLCh *compNamespace); + + /** + * Convenience method. Returns a top-level attribute group definition. + * @param name The name of the definition. + * @param compNamespace The namespace of the declaration, null if absent. + * @return A top-level attribute group definition or null if + * such definition does not exist. + */ + XSAttributeGroupDefinition *getAttributeGroup(const XMLCh *name + , const XMLCh *compNamespace); + + /** + * Convenience method. Returns a top-level model group definition. + * @param name The name of the definition. + * @param compNamespace The namespace of the declaration, null if absent. + * @return A top-level model group definition definition or + * null if such definition does not exist. + */ + XSModelGroupDefinition *getModelGroupDefinition(const XMLCh *name + , const XMLCh *compNamespace); + + /** + * Convenience method. Returns a top-level notation declaration. + * @param name The name of the declaration. + * @param compNamespace The namespace of the declaration, null if absent. + * @return A top-level notation declaration or null if such + * declaration does not exist. + */ + XSNotationDeclaration *getNotationDeclaration(const XMLCh *name + , const XMLCh *compNamespace); + + /** + * Optional. Return a component given a component type and a unique Id. + * May not be supported for all component types. + * @param compId unique Id of the component within its type + * @param compType type of the component + * @return the component of the given type with the given Id, or 0 + * if no such component exists or this is unsupported for + * this type of component. + */ + XSObject *getXSObjectById(XMLSize_t compId, + XSConstants::COMPONENT_TYPE compType); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + XMLStringPool* getURIStringPool(); + + XSNamespaceItem* getNamespaceItem(const XMLCh* const key); + + /** + * Get the XSObject (i.e. XSElementDeclaration) that corresponds to + * to a schema grammar component (i.e. SchemaElementDecl) + * @param key schema component object + * + * @return the corresponding XSObject + */ + XSObject* getXSObject(void* key); + + //@} +private: + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void addGrammarToXSModel + ( + XSNamespaceItem* namespaceItem + ); + void addS4SToXSModel + ( + XSNamespaceItem* const namespaceItem + , RefHashTableOf* const builtInDV + ); + void addComponentToNamespace + ( + XSNamespaceItem* const namespaceItem + , XSObject* const component + , XMLSize_t componentIndex + , bool addToXSModel = true + ); + + void addComponentToIdVector + ( + XSObject* const component + , XMLSize_t componentIndex + ); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSModel(const XSModel&); + XSModel & operator=(const XSModel &); + +protected: + friend class XSObjectFactory; + friend class XSObject; + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fMemoryManager: + // used for any memory allocations + MemoryManager* const fMemoryManager; + + StringList* fNamespaceStringList; + XSNamespaceItemList* fXSNamespaceItemList; + + RefVectorOf* fIdVector[XSConstants::MULTIVALUE_FACET]; + + /* Need a XSNamedMap for each component top-level? + ATTRIBUTE_DECLARATION = 1, + ELEMENT_DECLARATION = 2, + TYPE_DEFINITION = 3, + ATTRIBUTE_USE = 4, no + ATTRIBUTE_GROUP_DEFINITION= 5, + MODEL_GROUP_DEFINITION = 6, + MODEL_GROUP = 7, no + PARTICLE = 8, no + WILDCARD = 9, no + IDENTITY_CONSTRAINT = 10, no + NOTATION_DECLARATION = 11, + ANNOTATION = 12, no + FACET = 13, no + MULTIVALUE_FACET = 14 no + */ + XSNamedMap* fComponentMap[XSConstants::MULTIVALUE_FACET]; + XMLStringPool* fURIStringPool; + XSAnnotationList* fXSAnnotationList; + RefHashTableOf* fHashNamespace; + XSObjectFactory* fObjFactory; + RefVectorOf* fDeleteNamespace; + XSModel* fParent; + bool fDeleteParent; + bool fAddedS4SGrammar; +}; + +inline XMLStringPool* XSModel::getURIStringPool() +{ + return fURIStringPool; +} + +inline StringList *XSModel::getNamespaces() +{ + return fNamespaceStringList; +} + +inline XSNamespaceItemList *XSModel::getNamespaceItems() +{ + return fXSNamespaceItemList; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSModelGroup.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSModelGroup.hpp new file mode 100644 index 000000000000..a7bce75ee4c9 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSModelGroup.hpp @@ -0,0 +1,156 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSMODELGROUP_HPP) +#define XERCESC_INCLUDE_GUARD_XSMODELGROUP_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Model Group + * component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class XSParticle; + +class XMLPARSER_EXPORT XSModelGroup : public XSObject +{ +public: + + // Content model compositors + enum COMPOSITOR_TYPE { + /** + * This constant value signifies a sequence operator. + */ + COMPOSITOR_SEQUENCE = 1, + /** + * This constant value signifies a choice operator. + */ + COMPOSITOR_CHOICE = 2, + /** + * This content model represents a simplified version of the SGML + * &-Connector and is limited to the top-level of any content model. + * No element in the all content model may appear more than once. + */ + COMPOSITOR_ALL = 3 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param compositorType + * @param particleList + * @param annot + * @param xsModel + * @param manager The configurable memory manager + */ + XSModelGroup + ( + COMPOSITOR_TYPE compositorType + , XSParticleList* const particleList + , XSAnnotation* const annot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSModelGroup(); + //@} + + //--------------------- + /** @name XSModelGroup methods */ + //@{ + + /** + * [compositor]: one of all, choice or sequence. The valid constants + * values are: + * COMPOSITOR_SEQUENCE, COMPOSITOR_CHOICE, COMPOSITOR_ALL. + */ + COMPOSITOR_TYPE getCompositor() const; + + /** + * A list of [particles]. + */ + XSParticleList *getParticles() const; + + /** + * Optional. An [annotation]. + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSModelGroup(const XSModelGroup&); + XSModelGroup & operator=(const XSModelGroup &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + COMPOSITOR_TYPE fCompositorType; + XSParticleList* fParticleList; + XSAnnotation* fAnnotation; +}; + +inline XSModelGroup::COMPOSITOR_TYPE XSModelGroup::getCompositor() const +{ + return fCompositorType; +} + +inline XSParticleList* XSModelGroup::getParticles() const +{ + return fParticleList; +} + +inline XSAnnotation* XSModelGroup::getAnnotation() const +{ + return fAnnotation; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSModelGroupDefinition.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSModelGroupDefinition.hpp new file mode 100644 index 000000000000..87b81b337c9f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSModelGroupDefinition.hpp @@ -0,0 +1,150 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSMODELGROUPDEFINITION_HPP) +#define XERCESC_INCLUDE_GUARD_XSMODELGROUPDEFINITION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Model Group + * Definition component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class XSModelGroup; +class XSParticle; +class XercesGroupInfo; + +class XMLPARSER_EXPORT XSModelGroupDefinition : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param groupInfo + * @param groupParticle + * @param annot + * @param xsModel + * @param manager The configurable memory manager + */ + XSModelGroupDefinition + ( + XercesGroupInfo* const groupInfo + , XSParticle* const groupParticle + , XSAnnotation* const annot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSModelGroupDefinition(); + //@} + + //--------------------- + /** @name overridden XSXSObject methods */ + //@{ + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem *getNamespaceItem(); + + //@} + + //--------------------- + /** @name XSModelGroupDefinition methods */ + + //@{ + + /** + * A model group. + */ + XSModelGroup *getModelGroup(); + + /** + * Optional. An [annotation]. + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSModelGroupDefinition(const XSModelGroupDefinition&); + XSModelGroupDefinition & operator=(const XSModelGroupDefinition &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + XercesGroupInfo* fGroupInfo; + XSParticle* fModelGroupParticle; + XSAnnotation* fAnnotation; +}; + +inline XSAnnotation* XSModelGroupDefinition::getAnnotation() const +{ + return fAnnotation; +} + + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSMultiValueFacet.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSMultiValueFacet.hpp new file mode 100644 index 000000000000..e22dc7ab0fc8 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSMultiValueFacet.hpp @@ -0,0 +1,152 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSMULTIVALUEFACET_HPP) +#define XERCESC_INCLUDE_GUARD_XSMULTIVALUEFACET_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class represents all Schema Facets which may possess multiple + * lexical values/annotations (i.e., Pattern and Enumeration facets). + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; + +class XMLPARSER_EXPORT XSMultiValueFacet : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param facetKind + * @param lexicalValues + * @param isFixed + * @param headAnnot + * @param xsModel + * @param manager The configurable memory manager + */ + XSMultiValueFacet + ( + XSSimpleTypeDefinition::FACET facetKind + , StringList* lexicalValues + , bool isFixed + , XSAnnotation* const headAnnot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSMultiValueFacet(); + //@} + + //--------------------- + /** @name XSMultiValueFacet methods */ + + //@{ + + /** + * @return An indication as to the facet's type; see XSSimpleTypeDefinition::FACET + */ + XSSimpleTypeDefinition::FACET getFacetKind() const; + + /** + * @return Returns the values of a constraining facet. + */ + StringList *getLexicalFacetValues(); + + /** + * Check whether a facet value is fixed. + */ + bool isFixed() const; + + /** + * @return the annotations belonging to this facet's values + */ + XSAnnotationList *getAnnotations(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSMultiValueFacet(const XSMultiValueFacet&); + XSMultiValueFacet & operator=(const XSMultiValueFacet &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + XSSimpleTypeDefinition::FACET fFacetKind; + bool fIsFixed; + StringList* fLexicalValues; // not owned by this class + XSAnnotationList* fXSAnnotationList; +}; + + +inline XSSimpleTypeDefinition::FACET XSMultiValueFacet::getFacetKind() const +{ + return fFacetKind; +} + +inline bool XSMultiValueFacet::isFixed() const +{ + return fIsFixed; +} + +inline StringList *XSMultiValueFacet::getLexicalFacetValues() +{ + return fLexicalValues; +} + +inline XSAnnotationList *XSMultiValueFacet::getAnnotations() +{ + return fXSAnnotationList; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSNamedMap.c b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSNamedMap.c new file mode 100644 index 000000000000..ad01e5910c64 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSNamedMap.c @@ -0,0 +1,124 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// XSNamedMap: Constructors and Destructor +// --------------------------------------------------------------------------- +template +XSNamedMap::XSNamedMap(const XMLSize_t maxElems, + const XMLSize_t modulus, + XMLStringPool* uriStringPool, + const bool adoptElems, + MemoryManager* const manager) + : fMemoryManager(manager) + , fURIStringPool(uriStringPool) +{ + // allow one of the Vector or Hash to own the data... but not both... + fVector = new (manager) RefVectorOf (maxElems, false, manager); + fHash = new (manager) RefHash2KeysTableOf (modulus, adoptElems, manager); +} +template XSNamedMap::~XSNamedMap() +{ + delete fVector; + delete fHash; +} + + +/** + * The number of XSObjects in the XSObjectList. + * The range of valid child object indices is 0 to + * mapLength-1 inclusive. + */ +template +XMLSize_t XSNamedMap::getLength() const +{ + return fVector->size(); +} + +/** + * Returns the indexth item in the collection. The index + * starts at 0. If index is greater than or equal to the + * number of objects in the list, this returns null. + * @param index index into the collection. + * @return The XSObject at the indexth + * position in the XSObjectList, or null if + * that is not a valid index. + */ +template +TVal* XSNamedMap::item(XMLSize_t index) +{ + if (index >= fVector->size()) + { + return 0; + } + return fVector->elementAt(index); +} + +template +const TVal* XSNamedMap::item(XMLSize_t index) const +{ + if (index >= fVector->size()) + { + return 0; + } + return fVector->elementAt(index); +} + +/** + * Retrieves a component specified by local name and namespace URI. + *
applications must use the value null as the + * compNamespace parameter for components whose targetNamespace property + * is absent. + * @param compNamespace The namespace URI of the component to retrieve. + * @param localName The local name of the component to retrieve. + * @return A component (of any type) with the specified local + * name and namespace URI, or null if they do not + * identify any node in this map. + */ +template +TVal *XSNamedMap::itemByName(const XMLCh *compNamespace, + const XMLCh *localName) +{ + return fHash->get((void*)localName, fURIStringPool->getId(compNamespace)); +} + + +template +void XSNamedMap::addElement(TVal* const toAdd, const XMLCh* key1, const XMLCh* key2) +{ + fVector->addElement(toAdd); + fHash->put((void*)key1, fURIStringPool->getId(key2), toAdd); +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSNamedMap.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSNamedMap.hpp new file mode 100644 index 000000000000..2fe5346402c6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSNamedMap.hpp @@ -0,0 +1,138 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSNAMEDMAP_HPP) +#define XERCESC_INCLUDE_GUARD_XSNAMEDMAP_HPP + + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLStringPool; + +/* + * This template provides convenient mappings between name,namespace + * pairs and individual components, as well as means to iterate through all the + * named components on some object. + */ + +template class XSNamedMap: public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + XSNamedMap(const XMLSize_t maxElems, + const XMLSize_t modulus, + XMLStringPool* uriStringPool, + const bool adoptElems, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Destructor */ + //@{ + ~XSNamedMap(); + + //@} + + // ----------------------------------------------------------------------- + // XSNamedMap methods + // ----------------------------------------------------------------------- + /** @name XSNamedMap methods */ + //@{ + + /** + * The number of XSObjects in the XSObjectList. + * The range of valid child object indices is 0 to + * mapLength-1 inclusive. + */ + XMLSize_t getLength() const; + + /** + * Returns the indexth item in the collection. The index + * starts at 0. If index is greater than or equal to the + * number of objects in the list, this returns null. + * @param index index into the collection. + * @return The XSObject at the indexth + * position in the XSObjectList, or null if + * that is not a valid index. + */ + TVal *item(XMLSize_t index); + const TVal *item(XMLSize_t index) const; + + /** + * Retrieves a component specified by local name and namespace URI. + *
applications must use the value null as the + * compNamespace parameter for components whose targetNamespace property + * is absent. + * @param compNamespace The namespace URI of the component to retrieve. + * @param localName The local name of the component to retrieve. + * @return A component (of any type) with the specified local + * name and namespace URI, or null if they do not + * identify any node in this map. + */ + TVal *itemByName(const XMLCh *compNamespace, + const XMLCh *localName); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + void addElement(TVal* const toAdd, const XMLCh* key1, const XMLCh* key2); + //@} + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSNamedMap(const XSNamedMap&); + XSNamedMap& operator=(const XSNamedMap&); + + // ----------------------------------------------------------------------- + // Data members + // + // fMemoryManager + // manager used to allocate memory needed by this object + MemoryManager *const fMemoryManager; + XMLStringPool* fURIStringPool; + RefVectorOf* fVector; + RefHash2KeysTableOf* fHash; +}; + + + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSNamespaceItem.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSNamespaceItem.hpp new file mode 100644 index 000000000000..8446cd094e03 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSNamespaceItem.hpp @@ -0,0 +1,245 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSNAMESPACEITEM_HPP) +#define XERCESC_INCLUDE_GUARD_XSNAMESPACEITEM_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class contains all properties of the Schema Namespace Information infoitem. + * These items correspond to the result of processing a schema document + * and all its included/redefined schema documents. It corresponds to the + * schema component discussed in the schema specifications, but since it + * is not like other components does not inherit from the XSObject interface. + * This is *always* owned by the validator /parser object from which + * it is obtained. It is designed to be subclassed; subclasses will + * specify under what conditions it may be relied upon to have meaningful contents. + */ + +// forward declarations +class XSAnnotation; +class XSAttributeDeclaration; +class XSAttributeGroupDefinition; +class XSElementDeclaration; +class XSModelGroupDefinition; +class XSNotationDeclaration; +class XSTypeDefinition; +class SchemaGrammar; +class XSModel; + +class XMLPARSER_EXPORT XSNamespaceItem : public XMemory +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param xsModel + * @param grammar + * @param manager The configurable memory manager + */ + XSNamespaceItem + ( + XSModel* const xsModel + , SchemaGrammar* const grammar + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XSNamespaceItem + ( + XSModel* const xsModel + , const XMLCh* const schemaNamespace + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSNamespaceItem(); + //@} + + //--------------------- + /** @name XSNamespaceItem methods */ + + //@{ + + /** + * [schema namespace]: A namespace name or null + * corresponding to the target namespace of the schema document. + */ + const XMLCh *getSchemaNamespace() const; + + /** + * [schema components]: a list of top-level components, i.e. element + * declarations, attribute declarations, etc. + * @param objectType The type of the declaration, i.e. + * ELEMENT_DECLARATION, + * TYPE_DEFINITION and any other component type that + * may be a property of a schema component. + * @return A list of top-level definition of the specified type in + * objectType or null. + */ + XSNamedMap *getComponents(XSConstants::COMPONENT_TYPE objectType); + + /** + * [annotations]: a set of annotations. + */ + XSAnnotationList *getAnnotations(); + const XSAnnotationList *getAnnotations() const; + + /** + * Convenience method. Returns a top-level element declaration. + * @param name The name of the declaration. + * @return A top-level element declaration or null if such + * declaration does not exist. + */ + XSElementDeclaration *getElementDeclaration(const XMLCh *name); + + /** + * Convenience method. Returns a top-level attribute declaration. + * @param name The name of the declaration. + * @return A top-level attribute declaration or null if such + * declaration does not exist. + */ + XSAttributeDeclaration *getAttributeDeclaration(const XMLCh *name); + + /** + * Convenience method. Returns a top-level simple or complex type + * definition. + * @param name The name of the definition. + * @return An XSTypeDefinition or null if such + * definition does not exist. + */ + XSTypeDefinition *getTypeDefinition(const XMLCh *name); + + /** + * Convenience method. Returns a top-level attribute group definition. + * @param name The name of the definition. + * @return A top-level attribute group definition or null if + * such definition does not exist. + */ + XSAttributeGroupDefinition *getAttributeGroup(const XMLCh *name); + + /** + * Convenience method. Returns a top-level model group definition. + * @param name The name of the definition. + * @return A top-level model group definition definition or + * null if such definition does not exist. + */ + XSModelGroupDefinition *getModelGroupDefinition(const XMLCh *name); + + /** + * Convenience method. Returns a top-level notation declaration. + * @param name The name of the declaration. + * @return A top-level notation declaration or null if such + * declaration does not exist. + */ + XSNotationDeclaration *getNotationDeclaration(const XMLCh *name); + + /** + * [document location] - a list of locations URI for the documents that + * contributed to the XSModel. + */ + const StringList *getDocumentLocations(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSNamespaceItem(const XSNamespaceItem&); + XSNamespaceItem & operator=(const XSNamespaceItem &); + +protected: + friend class XSModel; + friend class XSObjectFactory; + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fMemoryManager: + // used for any memory allocations + MemoryManager* const fMemoryManager; + SchemaGrammar* fGrammar; + XSModel* fXSModel; + + /* Need a XSNamedMap for each component top-level? + that is top level. + ATTRIBUTE_DECLARATION = 1, + ELEMENT_DECLARATION = 2, + TYPE_DEFINITION = 3, + ATTRIBUTE_USE = 4, no + ATTRIBUTE_GROUP_DEFINITION= 5, + MODEL_GROUP_DEFINITION = 6, + MODEL_GROUP = 7, no + PARTICLE = 8, no + WILDCARD = 9, no + IDENTITY_CONSTRAINT = 10, no + NOTATION_DECLARATION = 11, + ANNOTATION = 12, no + FACET = 13, no + MULTIVALUE_FACET = 14 no + */ + XSNamedMap* fComponentMap[XSConstants::MULTIVALUE_FACET]; + XSAnnotationList* fXSAnnotationList; + RefHashTableOf* fHashMap[XSConstants::MULTIVALUE_FACET]; + const XMLCh* fSchemaNamespace; +}; + +inline XSAnnotationList* XSNamespaceItem::getAnnotations() +{ + return fXSAnnotationList; +} + +inline const XSAnnotationList* XSNamespaceItem::getAnnotations() const +{ + return fXSAnnotationList; +} + +inline const XMLCh *XSNamespaceItem::getSchemaNamespace() const +{ + return fSchemaNamespace; +} + + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSNotationDeclaration.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSNotationDeclaration.hpp new file mode 100644 index 000000000000..2e2cf7485722 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSNotationDeclaration.hpp @@ -0,0 +1,154 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSNOTATIONDECLARATION_HPP) +#define XERCESC_INCLUDE_GUARD_XSNOTATIONDECLARATION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Notation Declaration + * component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class XMLNotationDecl; + +class XMLPARSER_EXPORT XSNotationDeclaration : public XSObject +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param xmlNotationDecl + * @param annot + * @param xsModel + * @param manager The configurable memory manager + */ + XSNotationDeclaration + ( + XMLNotationDecl* const xmlNotationDecl + , XSAnnotation* const annot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSNotationDeclaration(); + //@} + + //--------------------- + /** @name overridden XSXSObject methods */ + + //@{ + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem *getNamespaceItem(); + + //@} + + //--------------------- + /** @name XSNotationDeclaration methods */ + + //@{ + + /** + * The URI reference representing the system identifier for the notation + * declaration, if present, null otherwise. + */ + const XMLCh *getSystemId(); + + /** + * The string representing the public identifier for this notation + * declaration, if present; null otherwise. + */ + const XMLCh *getPublicId(); + + /** + * Optional. An [annotation]. + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSNotationDeclaration(const XSNotationDeclaration&); + XSNotationDeclaration & operator=(const XSNotationDeclaration &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + XMLNotationDecl* fXMLNotationDecl; + XSAnnotation* fAnnotation; +}; + +inline XSAnnotation* XSNotationDeclaration::getAnnotation() const +{ + return fAnnotation; +} + + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSObject.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSObject.hpp new file mode 100644 index 000000000000..b1e28a4ce8a4 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSObject.hpp @@ -0,0 +1,152 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSOBJECT_HPP) +#define XERCESC_INCLUDE_GUARD_XSOBJECT_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * The XSObject forms the base of the Schema Component Model. It contains + * all properties common to the majority of XML Schema components. + * This is *always* owned by the validator /parser object from which + * it is obtained. It is designed to be subclassed; subclasses will + * specify under what conditions it may be relied upon to have meaningful contents. + */ + +// forward declarations +class XSNamespaceItem; +class XSModel; + +class XMLPARSER_EXPORT XSObject : public XMemory +{ +public: + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param compType + * @param xsModel + * @param manager The configurable memory manager + */ + XSObject + ( + XSConstants::COMPONENT_TYPE compType + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + virtual ~XSObject(); + //@} + + //--------------------- + /** @name XSObject methods */ + + //@{ + + /** + * The type of this object, i.e. + * ELEMENT_DECLARATION. + */ + XSConstants::COMPONENT_TYPE getType() const; + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + virtual const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + virtual const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + virtual XSNamespaceItem *getNamespaceItem(); + + /** + * Optional. Return a unique identifier for a component within this XSModel, to + * optimize querying. May not be defined for all types of component. + * @return id unique for this type of component within this XSModel or 0 + * to indicate that this is not supported for this type of component. + */ + virtual XMLSize_t getId() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + /** + * Set the id to be returned on getId(). + */ + void setId(XMLSize_t id); + //@} + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSObject(const XSObject&); + XSObject & operator=(const XSObject &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fMemoryManager: + // used for any memory allocations + // fComponentType + // the type of the actual component + XSConstants::COMPONENT_TYPE fComponentType; + XSModel* fXSModel; + MemoryManager* fMemoryManager; + XMLSize_t fId; +}; + +inline XSConstants::COMPONENT_TYPE XSObject::getType() const +{ + return fComponentType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSParticle.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSParticle.hpp new file mode 100644 index 000000000000..8d3769b7aee7 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSParticle.hpp @@ -0,0 +1,198 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSPARTICLE_HPP) +#define XERCESC_INCLUDE_GUARD_XSPARTICLE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Particle + * component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSElementDeclaration; +class XSModelGroup; +class XSWildcard; + +class XMLPARSER_EXPORT XSParticle : public XSObject +{ +public: + + // possible terms of this particle + enum TERM_TYPE { + /* + * an empty particle + */ + TERM_EMPTY = 0, + /* + * the particle has element content + */ + TERM_ELEMENT = XSConstants::ELEMENT_DECLARATION, + /* + * the particle's content is a model group + */ + TERM_MODELGROUP = XSConstants::MODEL_GROUP_DEFINITION, + /* + * the particle's content is a wildcard + */ + TERM_WILDCARD = XSConstants::WILDCARD + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param termType + * @param xsModel + * @param particleTerm + * @param minOccurs + * @param maxOccurs + * @param unbounded + * @param manager The configurable memory manager + */ + XSParticle + ( + TERM_TYPE termType + , XSModel* const xsModel + , XSObject* const particleTerm + , XMLSize_t minOccurs + , XMLSize_t maxOccurs + , bool unbounded + , MemoryManager* const manager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSParticle(); + //@} + + //--------------------- + /** @name XSParticle methods */ + //@{ + + /** + * [min occurs]: determines the minimum number of terms that can occur. + */ + XMLSize_t getMinOccurs() const; + + /** + * [max occurs] determines the maximum number of terms that can occur. To + * query for value of unbounded use maxOccursUnbounded. + */ + XMLSize_t getMaxOccurs() const; + + /** + * [max occurs] whether the maxOccurs value is unbounded. + */ + bool getMaxOccursUnbounded() const; + + /** + * Returns the type of the [term]: one of + * TERM_EMPTY, TERM_ELEMENT, TERM_MODELGROUP, or TERM_WILDCARD. + */ + TERM_TYPE getTermType() const; + + /** + * If this particle has an [element declaration] for its term, + * this method returns that declaration; otherwise, it returns 0. + * @returns The element declaration that is the [term] of this Particle + * if and only if getTermType() == TERM_ELEMENT. + */ + XSElementDeclaration *getElementTerm(); + + /** + * If this particle has a [model group] for its term, + * this method returns that definition; otherwise, it returns 0. + * @returns The model group that is the [term] of this Particle + * if and only if getTermType() == TERM_MODELGROUP. + */ + XSModelGroup *getModelGroupTerm(); + + /** + * If this particle has an [wildcard] for its term, + * this method returns that declaration; otherwise, it returns 0. + * @returns The wildcard declaration that is the [term] of this Particle + * if and only if getTermType() == TERM_WILDCARD. + */ + XSWildcard *getWildcardTerm(); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSParticle(const XSParticle&); + XSParticle & operator=(const XSParticle &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + TERM_TYPE fTermType; + XMLSize_t fMinOccurs; + XMLSize_t fMaxOccurs; + bool fUnbounded; + XSObject* fTerm; +}; + +inline XMLSize_t XSParticle::getMinOccurs() const +{ + return fMinOccurs; +} + +inline XMLSize_t XSParticle::getMaxOccurs() const +{ + return fMaxOccurs; +} + +inline bool XSParticle::getMaxOccursUnbounded() const +{ + return fUnbounded; +} + +inline XSParticle::TERM_TYPE XSParticle::getTermType() const +{ + return fTermType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSSimpleTypeDefinition.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSSimpleTypeDefinition.hpp new file mode 100644 index 000000000000..3c1f5e21ad85 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSSimpleTypeDefinition.hpp @@ -0,0 +1,458 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSSIMPLETYPEDEFINITION_HPP) +#define XERCESC_INCLUDE_GUARD_XSSIMPLETYPEDEFINITION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class represents a simpleType definition + * schema component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + * + */ + +// forward declarations +class XSAnnotation; +class XSFacet; +class XSMultiValueFacet; +class DatatypeValidator; + +class XMLPARSER_EXPORT XSSimpleTypeDefinition : public XSTypeDefinition +{ +public: + + // Variety definitions + enum VARIETY { + /** + * The variety is absent for the anySimpleType definition. + */ + VARIETY_ABSENT = 0, + /** + * Atomic type. + */ + VARIETY_ATOMIC = 1, + /** + * List type. + */ + VARIETY_LIST = 2, + /** + * Union type. + */ + VARIETY_UNION = 3 + }; + + // Facets + enum FACET { + /** + * No facets defined. + */ + FACET_NONE = 0, + /** + * 4.3.1 Length + */ + FACET_LENGTH = 1, + /** + * 4.3.2 minLength. + */ + FACET_MINLENGTH = 2, + /** + * 4.3.3 maxLength. + */ + FACET_MAXLENGTH = 4, + /** + * 4.3.4 pattern. + */ + FACET_PATTERN = 8, + /** + * 4.3.5 whitespace. + */ + FACET_WHITESPACE = 16, + /** + * 4.3.7 maxInclusive. + */ + FACET_MAXINCLUSIVE = 32, + /** + * 4.3.9 maxExclusive. + */ + FACET_MAXEXCLUSIVE = 64, + /** + * 4.3.9 minExclusive. + */ + FACET_MINEXCLUSIVE = 128, + /** + * 4.3.10 minInclusive. + */ + FACET_MININCLUSIVE = 256, + /** + * 4.3.11 totalDigits . + */ + FACET_TOTALDIGITS = 512, + /** + * 4.3.12 fractionDigits. + */ + FACET_FRACTIONDIGITS = 1024, + /** + * 4.3.5 enumeration. + */ + FACET_ENUMERATION = 2048 + }; + + // possible order relations + enum ORDERING { + /** + * A constant defined for the 'ordered' fundamental facet: Not ordered. + */ + ORDERED_FALSE = 0, + /** + * A constant defined for the 'ordered' fundamental facet: partially + * ordered. + */ + ORDERED_PARTIAL = 1, + /** + * A constant defined for the 'ordered' fundamental facet: total ordered. + */ + ORDERED_TOTAL = 2 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param datatypeValidator + * @param stVariety + * @param xsBaseType + * @param primitiveOrItemType + * @param memberTypes + * @param headAnnot + * @param xsModel + * @param manager The configurable memory manager + */ + XSSimpleTypeDefinition + ( + DatatypeValidator* const datatypeValidator + , VARIETY stVariety + , XSTypeDefinition* const xsBaseType + , XSSimpleTypeDefinition* const primitiveOrItemType + , XSSimpleTypeDefinitionList* const memberTypes + , XSAnnotation* headAnnot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + ~XSSimpleTypeDefinition(); + //@} + + //--------------------- + /** @name XSSimpleTypeDefinition methods */ + + //@{ + + /** + * [variety]: one of {atomic, list, union} or absent + */ + VARIETY getVariety() const; + + /** + * If variety is atomic the primitive type definition (a + * built-in primitive datatype definition or the simple ur-type + * definition) is available, otherwise null. + */ + XSSimpleTypeDefinition *getPrimitiveType(); + + /** + * If variety is list the item type definition (an atomic or + * union simple type definition) is available, otherwise + * null. + */ + XSSimpleTypeDefinition *getItemType(); + + /** + * If variety is union the list of member type definitions (a + * non-empty sequence of simple type definitions) is available, + * otherwise null. + */ + XSSimpleTypeDefinitionList *getMemberTypes() const; + + /** + * [facets]: get all facets defined on this type. The value is a bit + * combination of FACET_XXX constants of all defined facets. + */ + int getDefinedFacets() const; + + /** + * Convenience method. [Facets]: check whether a facet is defined on this + * type. + * @param facetName The name of the facet. + * @return True if the facet is defined, false otherwise. + */ + bool isDefinedFacet(FACET facetName); + + /** + * [facets]: get all facets defined and fixed on this type. + */ + int getFixedFacets() const; + + /** + * Convenience method. [Facets]: check whether a facet is defined and + * fixed on this type. + * @param facetName The name of the facet. + * @return True if the facet is fixed, false otherwise. + */ + bool isFixedFacet(FACET facetName); + + /** + * Convenience method. Returns a value of a single constraining facet for + * this simple type definition. This method must not be used to retrieve + * values for enumeration and pattern facets. + * @param facetName The name of the facet, i.e. + * FACET_LENGTH, FACET_TOTALDIGITS (see + * XSConstants).To retrieve value for pattern or + * enumeration, see enumeration and pattern. + * @return A value of the facet specified in facetName for + * this simple type definition or null. + */ + const XMLCh *getLexicalFacetValue(FACET facetName); + + /** + * Returns a list of enumeration values. + */ + StringList *getLexicalEnumeration(); + + /** + * Returns a list of pattern values. + */ + StringList *getLexicalPattern(); + + /** + * Fundamental Facet: ordered + */ + ORDERING getOrdered() const; + + /** + * Fundamental Facet: cardinality. + */ + bool getFinite() const; + + /** + * Fundamental Facet: bounded. + */ + bool getBounded() const; + + /** + * Fundamental Facet: numeric. + */ + bool getNumeric() const; + + /** + * Optional. A set of [annotation]s. + */ + XSAnnotationList *getAnnotations(); + /** + * @return list of constraining facets. + * This method must not be used to retrieve + * values for enumeration and pattern facets. + */ + XSFacetList *getFacets(); + + /** + * @return list of enumeration and pattern facets. + */ + XSMultiValueFacetList *getMultiValueFacets(); + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + const XMLCh* getName() const; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + const XMLCh* getNamespace() const; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + XSNamespaceItem *getNamespaceItem(); + + /** + * A boolean that specifies if the type definition is + * anonymous. Convenience attribute. + */ + bool getAnonymous() const; + + /** + * {base type definition}: either a simple type definition or a complex + * type definition. + */ + XSTypeDefinition *getBaseType(); + + /** + * Convenience method: check if this type is derived from the given + * ancestorType. + * @param ancestorType An ancestor type definition. + * @return Return true if this type is derived from + * ancestorType. + */ + bool derivedFromType(const XSTypeDefinition* const ancestorType); + + /** + * + */ + inline DatatypeValidator* getDatatypeValidator() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + + //@} + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSSimpleTypeDefinition(const XSSimpleTypeDefinition&); + XSSimpleTypeDefinition & operator=(const XSSimpleTypeDefinition &); + + /** + * Helper method for construct + */ + void setFacetInfo + ( + int definedFacets + , int fixedFacets + , XSFacetList* const xsFacetList + , XSMultiValueFacetList* const xsMultiValueFacetList + , StringList* const patternList + ); + void setPrimitiveType(XSSimpleTypeDefinition* const toSet); + + friend class XSObjectFactory; + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + int fDefinedFacets; + int fFixedFacets; + VARIETY fVariety; + DatatypeValidator* fDatatypeValidator; + XSFacetList* fXSFacetList; + XSMultiValueFacetList* fXSMultiValueFacetList; + StringList* fPatternList; + XSSimpleTypeDefinition* fPrimitiveOrItemType; + XSSimpleTypeDefinitionList* fMemberTypes; + XSAnnotationList* fXSAnnotationList; +}; + +inline XSSimpleTypeDefinition::VARIETY XSSimpleTypeDefinition::getVariety() const +{ + return fVariety; +} + +inline XSSimpleTypeDefinition* XSSimpleTypeDefinition::getPrimitiveType() +{ + if (fVariety == VARIETY_ATOMIC) + return fPrimitiveOrItemType; + + return 0; +} + +inline XSSimpleTypeDefinition* XSSimpleTypeDefinition::getItemType() +{ + if (fVariety == VARIETY_LIST) + return fPrimitiveOrItemType; + + return 0; +} + +inline XSSimpleTypeDefinitionList* XSSimpleTypeDefinition::getMemberTypes() const +{ + return fMemberTypes; +} + +inline int XSSimpleTypeDefinition::getDefinedFacets() const +{ + return fDefinedFacets; +} + +inline int XSSimpleTypeDefinition::getFixedFacets() const +{ + return fFixedFacets; +} + +inline StringList* XSSimpleTypeDefinition::getLexicalPattern() +{ + return fPatternList; +} + +inline XSFacetList* XSSimpleTypeDefinition::getFacets() +{ + return fXSFacetList; +} + +inline XSMultiValueFacetList* XSSimpleTypeDefinition::getMultiValueFacets() +{ + return fXSMultiValueFacetList; +} + +inline XSAnnotationList *XSSimpleTypeDefinition::getAnnotations() +{ + return fXSAnnotationList; +} + +inline void +XSSimpleTypeDefinition::setPrimitiveType(XSSimpleTypeDefinition* const toSet) +{ + fPrimitiveOrItemType = toSet; +} + +inline DatatypeValidator* +XSSimpleTypeDefinition::getDatatypeValidator() const +{ + return fDatatypeValidator; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSTypeDefinition.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSTypeDefinition.hpp new file mode 100644 index 000000000000..9f8bf9ca854d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSTypeDefinition.hpp @@ -0,0 +1,214 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSTYPEDEFINITION_HPP) +#define XERCESC_INCLUDE_GUARD_XSTYPEDEFINITION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// forward declarations +class XSNamespaceItem; + +/** + * This class represents a complexType or simpleType definition. + * This is *always* owned by the validator /parser object from which + * it is obtained. + * + */ + +class XMLPARSER_EXPORT XSTypeDefinition : public XSObject +{ +public: + + enum TYPE_CATEGORY { + /** + * This constant value signifies a complex type. + */ + COMPLEX_TYPE = 15, + /** + * This constant value signifies a simple type. + */ + SIMPLE_TYPE = 16 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param typeCategory + * @param xsBaseType + * @param xsModel + * @param manager The configurable memory manager + */ + XSTypeDefinition + ( + TYPE_CATEGORY typeCategory + , XSTypeDefinition* const xsBaseType + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + /** @name Destructor */ + //@{ + virtual ~XSTypeDefinition(); + //@} + + //--------------------- + /** @name overloaded XSObject methods */ + //@{ + + /** + * The name of type NCName of this declaration as defined in + * XML Namespaces. + */ + virtual const XMLCh* getName() const = 0; + + /** + * The [target namespace] of this object, or null if it is + * unspecified. + */ + virtual const XMLCh* getNamespace() const = 0; + + /** + * A namespace schema information item corresponding to the target + * namespace of the component, if it's globally declared; or null + * otherwise. + */ + virtual XSNamespaceItem *getNamespaceItem() = 0; + + //@} + + //--------------------- + /** @name XSTypeDefinition methods */ + + //@{ + + /** + * Return whether this type definition is a simple type or complex type. + */ + TYPE_CATEGORY getTypeCategory() const; + + /** + * {base type definition}: either a simple type definition or a complex + * type definition. + */ + virtual XSTypeDefinition *getBaseType() = 0; + + /** + * {final}. For complex type definition it is a subset of {extension, + * restriction}. For simple type definition it is a subset of + * {extension, list, restriction, union}. + * @param toTest Extension, restriction, list, union constants + * (defined in XSObject). + * @return True if toTest is in the final set, otherwise false. + */ + bool isFinal(short toTest); + + /** + * For complex types the returned value is a bit combination of the subset + * of {DERIVATION_EXTENSION, DERIVATION_RESTRICTION} + * corresponding to final set of this type or + * DERIVATION_NONE. For simple types the returned value is + * a bit combination of the subset of { + * DERIVATION_RESTRICTION, DERIVATION_EXTENSION, DERIVATION_UNION, DERIVATION_LIST + * } corresponding to final set of this type or + * DERIVATION_NONE. + */ + short getFinal() const; + + /** + * A boolean that specifies if the type definition is + * anonymous. Convenience attribute. + */ + virtual bool getAnonymous() const = 0; + + /** + * Convenience method: check if this type is derived from the given + * ancestorType. + * @param ancestorType An ancestor type definition. + * @return Return true if this type is derived from + * ancestorType. + */ + virtual bool derivedFromType(const XSTypeDefinition* const ancestorType) = 0; + + /** + * Convenience method: check if this type is derived from the given + * ancestor type. + * @param typeNamespace An ancestor type namespace. + * @param name An ancestor type name. + * @return Return true if this type is derived from + * the ancestor defined by typeNamespace and name. + */ + bool derivedFrom(const XMLCh* typeNamespace, + const XMLCh* name); + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSTypeDefinition(const XSTypeDefinition&); + XSTypeDefinition & operator=(const XSTypeDefinition &); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + // fTypeCategory + // whether this is a simpleType or complexType + // fFinal + // the final properties which is set by the derived class. + TYPE_CATEGORY fTypeCategory; + short fFinal; + XSTypeDefinition* fBaseType; // owned by XSModel +}; + +inline XSTypeDefinition::TYPE_CATEGORY XSTypeDefinition::getTypeCategory() const +{ + return fTypeCategory; +} + +inline short XSTypeDefinition::getFinal() const +{ + return fFinal; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSValue.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSValue.hpp new file mode 100644 index 000000000000..2f131b93ee61 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSValue.hpp @@ -0,0 +1,406 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSVALUE_HPP) +#define XERCESC_INCLUDE_GUARD_XSVALUE_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class RegularExpression; + +class XMLPARSER_EXPORT XSValue : public XMemory +{ +public: + + enum DataType { + dt_string = 0, + dt_boolean = 1, + dt_decimal = 2, + dt_float = 3, + dt_double = 4, + dt_duration = 5, + dt_dateTime = 6, + dt_time = 7, + dt_date = 8, + dt_gYearMonth = 9, + dt_gYear = 10, + dt_gMonthDay = 11, + dt_gDay = 12, + dt_gMonth = 13, + dt_hexBinary = 14, + dt_base64Binary = 15, + dt_anyURI = 16, + dt_QName = 17, + dt_NOTATION = 18, + dt_normalizedString = 19, + dt_token = 20, + dt_language = 21, + dt_NMTOKEN = 22, + dt_NMTOKENS = 23, + dt_Name = 24, + dt_NCName = 25, + dt_ID = 26, + dt_IDREF = 27, + dt_IDREFS = 28, + dt_ENTITY = 29, + dt_ENTITIES = 30, + dt_integer = 31, + dt_nonPositiveInteger = 32, + dt_negativeInteger = 33, + dt_long = 34, + dt_int = 35, + dt_short = 36, + dt_byte = 37, + dt_nonNegativeInteger = 38, + dt_unsignedLong = 39, + dt_unsignedInt = 40, + dt_unsignedShort = 41, + dt_unsignedByte = 42, + dt_positiveInteger = 43, + dt_MAXCOUNT = 44 + }; + + enum XMLVersion { + ver_10, + ver_11 + }; + + enum Status { + st_Init, + st_NoContent, + st_NoCanRep, + st_NoActVal, + st_NotSupported, + st_CantCreateRegEx, + st_FOCA0002, //invalid lexical value + st_FOCA0001, //input value too large/too small for decimal + st_FOCA0003, //input value too large for integer + st_FODT0003, //invalid timezone value + st_UnknownType + }; + + enum DataGroup { + dg_numerics, + dg_datetimes, + dg_strings + }; + + enum DoubleFloatType + { + DoubleFloatType_NegINF, + DoubleFloatType_PosINF, + DoubleFloatType_NaN, + DoubleFloatType_Zero, + DoubleFloatType_Normal + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + ~XSValue(); + //@} + + //--------------------------------- + /** @name Externalization methods */ + //@{ + + /** + * Validate a given string of the data type specified + * + * @param content data to be validated + * @param datatype schema datatype + * @param status validation status which is set upon validation fails + * @param version xml version + * @param manager memory manager provided + */ + static + bool validate + ( + const XMLCh* const content + , DataType datatype + , Status& status + , XMLVersion version = ver_10 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Get the canonical representation for a given string of the + * data type specified + * + * @param content raw data + * @param datatype schema datatype + * @param status validation status which is set upon validation fails + * @param version xml version + * @param toValidate to validate the content before generate canonical representation + * @param manager memory manager provided + */ + static + XMLCh* getCanonicalRepresentation + ( + const XMLCh* const content + , DataType datatype + , Status& status + , XMLVersion version = ver_10 + , bool toValidate = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Get the actual value, in the form of XSValue, for a given string of the + * data type specified + * + * Client application is responsible for the deletion of the XSValue returned. + * + * @param content raw data + * @param datatype schema datatype + * @param status validation status which is set upon validation fails + * @param version xml version + * @param toValidate to validate the content before generate actual value + * @param manager memory manager provided + */ + static + XSValue* getActualValue + ( + const XMLCh* const content + , DataType datatype + , Status& status + , XMLVersion version = ver_10 + , bool toValidate = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + static + DataType getDataType (const XMLCh* const dtString); + + //@} + + //---------------------------------- + /** public data */ + + struct XSValue_Data { + + DataType f_datatype; + + union { + bool f_bool; + char f_char; + unsigned char f_uchar; + short f_short; + unsigned short f_ushort; + int f_int; + unsigned int f_uint; + long f_long; + unsigned long f_ulong; + float f_float; + double f_double; + XMLCh* f_strVal; + XMLByte* f_byteVal; + + struct decimal { + double f_dvalue; + } f_decimal; + + struct datetime { + int f_year; + int f_month; + int f_day; + int f_hour; + int f_min; + int f_second; + double f_milisec; + + } f_datetime; + + struct doubletype { + double f_double; + DoubleFloatType f_doubleEnum; + } f_doubleType; + + struct floattype { + float f_float; + DoubleFloatType f_floatEnum; + } f_floatType; + + + + } fValue; + + } fData; + +private: + + typedef union + { + long f_long; + unsigned long f_ulong; + } t_value; + + /** @name Constructors */ + //@{ + /** + * The default constructor + * + */ + XSValue( + DataType const dt + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@}; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSValue(const XSValue&); + XSValue & operator=(const XSValue &); + + //--------------------------------- + /** @name Helpers */ + + //@{ + + static const XSValue::DataGroup inGroup[]; + static const bool numericSign[]; + + //@} + + static + bool validateNumerics + ( + const XMLCh* const content + , DataType datatype + , Status& status + , MemoryManager* const manager + ); + + static + bool validateDateTimes + ( + const XMLCh* const content + , DataType datatype + , Status& status + , MemoryManager* const manager + ); + + static + bool validateStrings + ( + const XMLCh* const content + , DataType datatype + , Status& status + , XMLVersion version + , MemoryManager* const manager + ); + + static + XMLCh* getCanRepNumerics + ( + const XMLCh* const content + , DataType datatype + , Status& status + , bool toValidate + , MemoryManager* const manager + ); + + static + XMLCh* getCanRepDateTimes + ( + const XMLCh* const content + , DataType datatype + , Status& status + , bool toValidate + , MemoryManager* const manager + ); + + static + XMLCh* getCanRepStrings + ( + const XMLCh* const content + , DataType datatype + , Status& status + , XMLVersion version + , bool toValidate + , MemoryManager* const manager + ); + + static + XSValue* getActValNumerics + ( + const XMLCh* const content + , DataType datatype + , Status& status + , bool toValidate + , MemoryManager* const manager + ); + + static + XSValue* getActValDateTimes + ( + const XMLCh* const content + , DataType datatype + , Status& status + , MemoryManager* const manager + ); + + static + XSValue* getActValStrings + ( + const XMLCh* const content + , DataType datatype + , Status& status + , XMLVersion version + , bool toValidate + , MemoryManager* const manager + ); + + static + bool getActualNumericValue + ( + const XMLCh* const content + , Status& status + , t_value& retVal + , MemoryManager* const manager + , DataType datatype + ); + + static ValueHashTableOf* fDataTypeRegistry; + + // ----------------------------------------------------------------------- + // static helper methods + // ----------------------------------------------------------------------- + static void initializeRegistry(); + friend class XMLInitializer; + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + bool fMemAllocated; + MemoryManager* fMemoryManager; + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSWildcard.hpp b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSWildcard.hpp new file mode 100644 index 000000000000..f7090580b4be --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/framework/psvi/XSWildcard.hpp @@ -0,0 +1,201 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSWILDCARD_HPP) +#define XERCESC_INCLUDE_GUARD_XSWILDCARD_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class describes all properties of a Schema Wildcard + * component. + * This is *always* owned by the validator /parser object from which + * it is obtained. + */ + +// forward declarations +class XSAnnotation; +class SchemaAttDef; +class ContentSpecNode; + +class XMLPARSER_EXPORT XSWildcard : public XSObject +{ +public: + + // Namespace Constraint + enum NAMESPACE_CONSTRAINT { + /** + * Namespace Constraint: any namespace is allowed. + */ + NSCONSTRAINT_ANY = 1, + /** + * Namespace Constraint: namespaces in the list are not allowed. + */ + NSCONSTRAINT_NOT = 2, + /** + * Namespace Constraint: namespaces in the list are allowed. + */ + NSCONSTRAINT_DERIVATION_LIST = 3 + }; + + // Process contents + enum PROCESS_CONTENTS { + /** + * There must be a top-level declaration for the item available, or the + * item must have an xsi:type, and the item must be valid as appropriate. + */ + PC_STRICT = 1, + /** + * No constraints at all: the item must simply be well-formed XML. + */ + PC_SKIP = 2, + /** + * If the item, or any items among its [children] is an element + * information item, has a uniquely determined declaration available, it + * must be valid with respect to that definition, that is, validate + * where you can, don't worry when you can't. + */ + PC_LAX = 3 + }; + + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * The default constructor + * + * @param attWildCard + * @param annot + * @param xsModel + * @param manager The configurable memory manager + */ + XSWildcard + ( + SchemaAttDef* const attWildCard + , XSAnnotation* const annot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XSWildcard + ( + const ContentSpecNode* const elmWildCard + , XSAnnotation* const annot + , XSModel* const xsModel + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** @name Destructor */ + //@{ + ~XSWildcard(); + //@} + + //--------------------- + /** @name XSWildcard methods */ + + //@{ + + /** + * Namespace constraint: A constraint type: any, not, list. + */ + NAMESPACE_CONSTRAINT getConstraintType() const; + + /** + * Namespace constraint. For constraintType + * NSCONSTRAINT_DERIVATION_LIST, the list contains allowed namespaces. + * For constraintType NSCONSTRAINT_NOT, the + * list contains disallowed namespaces. + */ + StringList *getNsConstraintList(); + + /** + * [process contents]: one of skip, lax or strict. Valid constants values + * are: PC_SKIP, PC_LAX, PC_STRICT. + */ + PROCESS_CONTENTS getProcessContents() const; + + /** + * Optional. An [annotation]. + */ + XSAnnotation *getAnnotation() const; + + //@} + + //---------------------------------- + /** methods needed by implementation */ + + //@{ + + //@} +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSWildcard(const XSWildcard&); + XSWildcard & operator=(const XSWildcard &); + + /** + * Build namespace list + */ + void buildNamespaceList(const ContentSpecNode* const rootNode); + +protected: + + // ----------------------------------------------------------------------- + // data members + // ----------------------------------------------------------------------- + NAMESPACE_CONSTRAINT fConstraintType; + PROCESS_CONTENTS fProcessContents; + StringList* fNsConstraintList; + XSAnnotation* fAnnotation; +}; + +inline XSAnnotation *XSWildcard::getAnnotation() const +{ + return fAnnotation; +} + +inline XSWildcard::PROCESS_CONTENTS XSWildcard::getProcessContents() const +{ + return fProcessContents; +} + +inline StringList* XSWildcard::getNsConstraintList() +{ + return fNsConstraintList; +} + +inline XSWildcard::NAMESPACE_CONSTRAINT XSWildcard::getConstraintType() const +{ + return fConstraintType; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/BinFileOutputStream.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/BinFileOutputStream.hpp new file mode 100644 index 000000000000..ba4cb8526c18 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/BinFileOutputStream.hpp @@ -0,0 +1,100 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BINFILEOUTPUTSTREAM_HPP) +#define XERCESC_INCLUDE_GUARD_BINFILEOUTPUTSTREAM_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BinFileOutputStream : public BinOutputStream +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + ~BinFileOutputStream(); + + BinFileOutputStream + ( + const XMLCh* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + BinFileOutputStream + ( + const char* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getIsOpen() const; + XMLFilePos getSize() const; + void reset(); + + + // ----------------------------------------------------------------------- + // Implementation of the input stream interface + // ----------------------------------------------------------------------- + virtual XMLFilePos curPos() const; + + virtual void writeBytes + ( + const XMLByte* const toGo + , const XMLSize_t maxToWrite + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + BinFileOutputStream(const BinFileOutputStream&); + BinFileOutputStream& operator=(const BinFileOutputStream&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fSource + // The source file that we represent. The FileHandle type is defined + // per platform. + // ----------------------------------------------------------------------- + FileHandle fSource; + MemoryManager* const fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// BinFileOutputStream: Getter methods +// --------------------------------------------------------------------------- +inline bool BinFileOutputStream::getIsOpen() const +{ + return (fSource != (FileHandle) XERCES_Invalid_File_Handle); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/BinMemOutputStream.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/BinMemOutputStream.hpp new file mode 100644 index 000000000000..13e9885bb38e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/BinMemOutputStream.hpp @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BINMEMOUTPUTSTREAM_HPP) +#define XERCESC_INCLUDE_GUARD_BINMEMOUTPUTSTREAM_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BinMemOutputStream : public BinOutputStream +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + ~BinMemOutputStream(); + + BinMemOutputStream + ( + XMLSize_t initCapacity = 1023 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // ----------------------------------------------------------------------- + // Implementation of the output stream interface + // ----------------------------------------------------------------------- + virtual XMLFilePos curPos() const; + + virtual void writeBytes + ( + const XMLByte* const toGo + , const XMLSize_t maxToWrite + ) ; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const XMLByte* getRawBuffer() const; + + XMLFilePos getSize() const; + void reset(); + +private : + // ----------------------------------------------------------------------- + // Unimplemented methods. + // ----------------------------------------------------------------------- + BinMemOutputStream(const BinMemOutputStream&); + BinMemOutputStream& operator=(const BinMemOutputStream&); + + // ----------------------------------------------------------------------- + // Private helpers + // ----------------------------------------------------------------------- + void ensureCapacity(const XMLSize_t extraNeeded); + + // ----------------------------------------------------------------------- + // Private data members + // + // fDataBuf + // The pointer to the buffer data. Its grown as needed. Its always + // one larger than fCapacity, to leave room for the null terminator. + // + // fIndex + // The current index into the buffer, as characters are appended + // to it. If its zero, then the buffer is empty. + // + // fCapacity + // The current capacity of the buffer. Its actually always one + // larger, to leave room for the null terminator. + // + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + XMLByte* fDataBuf; + XMLSize_t fIndex; + XMLSize_t fCapacity; + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/CharTypeTables.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/CharTypeTables.hpp new file mode 100644 index 000000000000..fca46d87662f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/CharTypeTables.hpp @@ -0,0 +1,257 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CHARTYPETABLES_HPP) +#define XERCESC_INCLUDE_GUARD_CHARTYPETABLES_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// These are character type lookup tables. They are included into XMLReader +// but are in their own private header in order to keep from making that +// file unreadable. +// +// THE RANGES and SINGLES MUST BE IN NUMERICAL ORDER, because the lookup +// method will use this info to short circuit the search! +// --------------------------------------------------------------------------- +static const XMLCh gBaseChars[] = +{ + // Ranges + 0x0041, 0x005A, 0x0061, 0x007A, 0x00C0, 0x00D6, 0x00D8, 0x00F6 + , 0x00F8, 0x00FF + , 0x0100, 0x0131, 0x0134, 0x013E, 0x0141, 0x0148, 0x014A, 0x017E + , 0x0180, 0x01C3, 0x01CD, 0x01F0, 0x01F4, 0x01F5, 0x01FA, 0x0217 + , 0x0250, 0x02A8, 0x02BB, 0x02C1, 0x0388, 0x038A, 0x038E, 0x03A1 + , 0x03A3, 0x03CE, 0x03D0, 0x03D6, 0x03E2, 0x03F3, 0x0401, 0x040C + , 0x040E, 0x044F, 0x0451, 0x045C, 0x045E, 0x0481, 0x0490, 0x04C4 + , 0x04C7, 0x04C8, 0x04CB, 0x04CC, 0x04D0, 0x04EB, 0x04EE, 0x04F5 + , 0x04F8, 0x04F9, 0x0531, 0x0556, 0x0561, 0x0586, 0x05D0, 0x05EA + , 0x05F0, 0x05F2, 0x0621, 0x063A, 0x0641, 0x064A, 0x0671, 0x06B7 + , 0x06BA, 0x06BE, 0x06C0, 0x06CE, 0x06D0, 0x06D3, 0x06E5, 0x06E6 + , 0x0905, 0x0939, 0x0958, 0x0961, 0x0985, 0x098C, 0x098F, 0x0990 + , 0x0993, 0x09A8, 0x09AA, 0x09B0, 0x09B6, 0x09B9, 0x09DC, 0x09DD + , 0x09DF, 0x09E1, 0x09F0, 0x09F1, 0x0A05, 0x0A0A, 0x0A0F, 0x0A10 + , 0x0A13, 0x0A28, 0x0A2A, 0x0A30, 0x0A32, 0x0A33, 0x0A35, 0x0A36 + , 0x0A38, 0x0A39, 0x0A59, 0x0A5C, 0x0A72, 0x0A74, 0x0A85, 0x0A8B + , 0x0A8F, 0x0A91, 0x0A93, 0x0AA8, 0x0AAA, 0x0AB0, 0x0AB2, 0x0AB3 + , 0x0AB5, 0x0AB9, 0x0B05, 0x0B0C, 0x0B0F, 0x0B10, 0x0B13, 0x0B28 + , 0x0B2A, 0x0B30, 0x0B32, 0x0B33, 0x0B36, 0x0B39, 0x0B5C, 0x0B5D + , 0x0B5F, 0x0B61, 0x0B85, 0x0B8A, 0x0B8E, 0x0B90, 0x0B92, 0x0B95 + , 0x0B99, 0x0B9A, 0x0B9E, 0x0B9F, 0x0BA3, 0x0BA4, 0x0BA8, 0x0BAA + , 0x0BAE, 0x0BB5, 0x0BB7, 0x0BB9, 0x0C05, 0x0C0C, 0x0C0E, 0x0C10 + , 0x0C12, 0x0C28, 0x0C2A, 0x0C33, 0x0C35, 0x0C39, 0x0C60, 0x0C61 + , 0x0C85, 0x0C8C, 0x0C8E, 0x0C90, 0x0C92, 0x0CA8, 0x0CAA, 0x0CB3 + , 0x0CB5, 0x0CB9, 0x0CE0, 0x0CE1, 0x0D05, 0x0D0C, 0x0D0E, 0x0D10 + , 0x0D12, 0x0D28, 0x0D2A, 0x0D39, 0x0D60, 0x0D61, 0x0E01, 0x0E2E + , 0x0E32, 0x0E33, 0x0E40, 0x0E45, 0x0E81, 0x0E82, 0x0E87, 0x0E88 + , 0x0E94, 0x0E97, 0x0E99, 0x0E9F, 0x0EA1, 0x0EA3, 0x0EAA, 0x0EAB + , 0x0EAD, 0x0EAE, 0x0EB2, 0x0EB3, 0x0EC0, 0x0EC4, 0x0F40, 0x0F47 + , 0x0F49, 0x0F69, 0x10A0, 0x10C5, 0x10D0, 0x10F6, 0x1102, 0x1103 + , 0x1105, 0x1107, 0x110B, 0x110C, 0x110E, 0x1112, 0x1154, 0x1155 + , 0x115F, 0x1161, 0x116D, 0x116E, 0x1172, 0x1173, 0x11AE, 0x11AF + , 0x11B7, 0x11B8, 0x11BC, 0x11C2, 0x1E00, 0x1E9B, 0x1EA0, 0x1EF9 + , 0x1F00, 0x1F15, 0x1F18, 0x1F1D, 0x1F20, 0x1F45, 0x1F48, 0x1F4D + , 0x1F50, 0x1F57, 0x1F5F, 0x1F7D, 0x1F80, 0x1FB4, 0x1FB6, 0x1FBC + , 0x1FC2, 0x1FC4, 0x1FC6, 0x1FCC, 0x1FD0, 0x1FD3, 0x1FD6, 0x1FDB + , 0x1FE0, 0x1FEC, 0x1FF2, 0x1FF4, 0x1FF6, 0x1FFC, 0x212A, 0x212B + , 0x2180, 0x2182, 0x3041, 0x3094, 0x30A1, 0x30FA, 0x3105, 0x312C + , 0xAC00, 0xD7A3 + , 0x00 + + // Singles + , 0x0386, 0x038C, 0x03DA, 0x03DC, 0x03DE, 0x03E0, 0x0559, 0x06D5 + , 0x093D, 0x09B2, 0x0A5E, 0x0A8D, 0x0ABD, 0x0AE0, 0x0B3D, 0x0B9C + , 0x0CDE, 0x0E30, 0x0E84, 0x0E8A, 0x0E8D, 0x0EA5, 0x0EA7, 0x0EB0 + , 0x0EBD, 0x1100, 0x1109, 0x113C, 0x113E, 0x1140, 0x114C, 0x114E + , 0x1150, 0x1159, 0x1163, 0x1165, 0x1167, 0x1169, 0x1175, 0x119E + , 0x11A8, 0x11AB, 0x11BA, 0x11EB, 0x11F0, 0x11F9, 0x1F59, 0x1F5B + , 0x1F5D, 0x1FBE, 0x2126, 0x212E + , 0x00 +}; + + +static const XMLCh gCombiningChars[] = +{ + // Ranges + 0x0300, 0x0345, 0x0360, 0x0361, 0x0483, 0x0486, 0x0591, 0x05A1 + , 0x05A3, 0x05B9, 0x05BB, 0x05BD, 0x05C1, 0x05C2, 0x064B, 0x0652 + , 0x06D6, 0x06DC, 0x06DD, 0x06DF, 0x06E0, 0x06E4 + , 0x06E7, 0x06E8, 0x06EA, 0x06ED, 0x0901, 0x0903, 0x093E, 0x094C + , 0x0951, 0x0954, 0x0962, 0x0963, 0x0981, 0x0983, 0x09C0, 0x09C4 + , 0x09C7, 0x09C8, 0x09CB, 0x09CD, 0x09E2, 0x09E3, 0x0A40, 0x0A42 + , 0x0A47, 0x0A48, 0x0A4B, 0x0A4D, 0x0A70, 0x0A71, 0x0A81, 0x0A83 + , 0x0ABE, 0x0AC5, 0x0AC7, 0x0AC9, 0x0ACB, 0x0ACD, 0x0B01, 0x0B03 + , 0x0B3E, 0x0B43, 0x0B47, 0x0B48, 0x0B4B, 0x0B4D, 0x0B56, 0x0B57 + , 0x0B82, 0x0B83, 0x0BBE, 0x0BC2, 0x0BC6, 0x0BC8, 0x0BCA, 0x0BCD + , 0x0C01, 0x0C03, 0x0C3E, 0x0C44, 0x0C46, 0x0C48, 0x0C4A, 0x0C4D + , 0x0C55, 0x0C56, 0x0C82, 0x0C83, 0x0CBE, 0x0CC4, 0x0CC6, 0x0CC8 + , 0x0CCA, 0x0CCD, 0x0CD5, 0x0CD6, 0x0D02, 0x0D03, 0x0D3E, 0x0D43 + , 0x0D46, 0x0D48, 0x0D4A, 0x0D4D, 0x0E34, 0x0E3A, 0x0E47, 0x0E4E + , 0x0EB4, 0x0EB9, 0x0EBB, 0x0EBC, 0x0EC8, 0x0ECD, 0x0F18, 0x0F19 + , 0x0F71, 0x0F84, 0x0F86, 0x0F8B, 0x0F90, 0x0F95, 0x0F99, 0x0FAD + , 0x0FB1, 0x0FB7, 0x20D0, 0x20DC, 0x302A, 0x302F + , 0x00 + + // Singles + , 0x05BF, 0x05C4, 0x0670 + , 0x093C, 0x094D, 0x09BC, 0x09BE, 0x09BF, 0x09D7, 0x0A02 + , 0x0A3C, 0x0A3E, 0x0A3F, 0x0ABC, 0x0B3C, 0x0BD7, 0x0D57, 0x0E31 + , 0x0EB1, 0x0F35, 0x0F37, 0x0F39, 0x0F3E, 0x0F3F, 0x0F97, 0x0FB9 + , 0x20E1, 0x3099, 0x309A + , 0x00 +}; + + +static const XMLCh gDigitChars[] = +{ + // Ranges + 0x0030, 0x0039, 0x0660, 0x0669, 0x06F0, 0x06F9, 0x0966, 0x096F + , 0x09E6, 0x09EF, 0x0A66, 0x0A6F, 0x0AE6, 0x0AEF, 0x0B66, 0x0B6F + , 0x0BE7, 0x0BEF, 0x0C66, 0x0C6F, 0x0CE6, 0x0CEF, 0x0D66, 0x0D6F + , 0x0E50, 0x0E59, 0x0ED0, 0x0ED9, 0x0F20, 0x0F29 + , 0x00 + + // Singles + , 0x00 +}; + + +static const XMLCh gIdeographicChars[] = +{ + // Ranges + 0x3021, 0x3029, 0x4E00, 0x9FA5 + , 0x00 + + // Singles + , 0x3007 + , 0x00 +}; + +static const XMLCh gExtenderChars[] = +{ + // Ranges + 0x3031, 0x3035, 0x309D, 0x309E, 0x30FC, 0x30FE + , 0x00 + + // Singles + , 0x00B7, 0x02D0, 0x02D1, 0x0387, 0x0640, 0x0E46, 0x0EC6, 0x3005 + , 0x00 +}; + + +static const XMLCh gPublicIdChars[] = +{ + // Ranges + 0x0023, 0x0025, 0x0027, 0x003B, 0x003F, 0x005A, 0x0061, 0x007A + , 0x00 + + // Singles + , 0x000A, 0x000D, 0x0020, 0x0021, 0x003D, 0x005F + , 0x00 +}; + + +static const XMLCh gWhitespaceChars[] = +{ + // Ranges + 0x00 + + , 0x0020, 0x0009, 0x000D, 0x000A + , 0x00 +}; + + +static const XMLCh gXMLChars[] = +{ + // Ranges + 0x0020, 0xD7FF, 0xE000, 0xFFFD + , 0x00 + + , 0x0009, 0x000D, 0x000A + , 0x00 +}; + +// The following are for XML 1.1 +static const XMLCh gWhitespaceChars1_1[] = +{ + // Ranges + 0x00 + + , 0x0020, 0x0009, 0x000D, 0x000A, 0x0085, 0x2028 + , 0x00 +}; + +static const XMLCh gFirstNameChars[] = +{ + // Ranges + // Note: 0x10000 to 0xEFFFF are also allowed, need to separately check + 0x0041, 0x005A, 0x0061, 0x007A, 0x00C0, 0x00D6, 0x00D8, 0x00F6 + , 0x00F8, 0x02FF, 0x0370, 0x037D, 0x037F, 0x1FFF, 0x200C, 0x200D + , 0x2070, 0x218F, 0x2C00, 0x2FEF, 0x3001, 0xD7FF, 0xF900, 0xFDCF + , 0xFDF0, 0xFFFD + , 0x00 + + // : _ + , 0x003A, 0x005F + , 0x00 + +}; + +static const XMLCh gNameChars[] = +{ + // Ranges + // Note: 0x10000 to 0xEFFFF are also allowed, need to separately check + 0x0030, 0x0039, 0x0041, 0x005A, 0x0061, 0x007A, 0x00C0, 0x00D6 + , 0x00D8, 0x00F6, 0x00F8, 0x037D, 0x037F, 0x1FFF, 0x200C, 0x200D + , 0x203F, 0x2040, 0x2070, 0x218F, 0x2C00, 0x2FEF, 0x3001, 0xD7FF + , 0xF900, 0xFDCF, 0xFDF0, 0xFFFD + , 0x00 + + // - . : _ + , 0x002D, 0x002E, 0x003A, 0x005F, 0x00B7 + , 0x00 +}; + +static const XMLCh gXMLChars1_1[] = +{ + // Ranges + 0x0020, 0x007E, 0x00A0, 0xD7FF, 0xE000, 0xFFFD + , 0x00 + + , 0x0009, 0x000D, 0x000A, 0x0085 + , 0x00 +}; + +static const XMLCh gControl_Chars1_1[] = +{ + // Ranges + 0x0001, 0x001F, 0x007F, 0x009F + , 0x00 + + , 0x00 +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/DGXMLScanner.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/DGXMLScanner.hpp new file mode 100644 index 000000000000..68e1463216c1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/DGXMLScanner.hpp @@ -0,0 +1,192 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DGXMLSCANNER_HPP) +#define XERCESC_INCLUDE_GUARD_DGXMLSCANNER_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DTDElementDecl; +class DTDGrammar; +class DTDValidator; + +// This is an integrated scanner class, which does DTD/XML Schema grammar +// processing. +class XMLPARSER_EXPORT DGXMLScanner : public XMLScanner +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DGXMLScanner + ( + XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DGXMLScanner + ( + XMLDocumentHandler* const docHandler + , DocTypeHandler* const docTypeHandler + , XMLEntityHandler* const entityHandler + , XMLErrorReporter* const errReporter + , XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~DGXMLScanner(); + + // ----------------------------------------------------------------------- + // XMLScanner public virtual methods + // ----------------------------------------------------------------------- + virtual const XMLCh* getName() const; + virtual NameIdPool* getEntityDeclPool(); + virtual const NameIdPool* getEntityDeclPool() const; + virtual void scanDocument + ( + const InputSource& src + ); + virtual bool scanNext(XMLPScanToken& toFill); + virtual Grammar* loadGrammar + ( + const InputSource& src + , const short grammarType + , const bool toCache = false + ); + + virtual Grammar::GrammarType getCurrentGrammarType() const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DGXMLScanner(); + DGXMLScanner(const DGXMLScanner&); + DGXMLScanner& operator=(const DGXMLScanner&); + + // ----------------------------------------------------------------------- + // XMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual void scanCDSection(); + virtual void scanCharData(XMLBuffer& toToUse); + virtual EntityExpRes scanEntityRef + ( + const bool inAttVal + , XMLCh& firstCh + , XMLCh& secondCh + , bool& escaped + ); + virtual void scanDocTypeDecl(); + virtual void scanReset(const InputSource& src); + virtual void sendCharData(XMLBuffer& toSend); + virtual InputSource* resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void commonInit(); + void cleanUp(); + + XMLSize_t buildAttList + ( + const XMLSize_t attCount + , XMLElementDecl* elemDecl + , RefVectorOf& toFill + ); + void updateNSMap + ( + const XMLCh* const attrPrefix + , const XMLCh* const attrLocalName + , const XMLCh* const attrValue + ); + void scanAttrListforNameSpaces(RefVectorOf* theAttrList, XMLSize_t attCount, XMLElementDecl* elemDecl); + + // ----------------------------------------------------------------------- + // Private scanning methods + // ----------------------------------------------------------------------- + bool scanAttValue + ( + const XMLAttDef* const attDef + , const XMLCh *const attrName + , XMLBuffer& toFill + ); + bool scanContent(); + void scanEndTag(bool& gotData); + bool scanStartTag(bool& gotData); + bool scanStartTagNS(bool& gotData); + + // ----------------------------------------------------------------------- + // Grammar preparsing methods + // ----------------------------------------------------------------------- + Grammar* loadDTDGrammar(const InputSource& src, const bool toCache = false); + + // ----------------------------------------------------------------------- + // Data members + // + // fRawAttrList + // During the initial scan of the attributes we can only do a raw + // scan for key/value pairs. So this vector is used to store them + // until they can be processed (and put into fAttrList.) + // + // fDTDValidator + // The DTD validator instance. + // + // fDTDElemNonDeclPool + // registry of "faulted-in" DTD element decls + // fElemCount + // count of the number of start tags seen so far (starts at 1). + // Used for duplicate attribute detection/processing of required/defaulted attributes + // fAttDefRegistry + // mapping from XMLAttDef instances to the count of the last + // start tag where they were utilized. + // fUndeclaredAttrRegistry + // mapping of attr QNames to detect duplicates + // + // ----------------------------------------------------------------------- + ValueVectorOf* fAttrNSList; + DTDValidator* fDTDValidator; + DTDGrammar* fDTDGrammar; + NameIdPool* fDTDElemNonDeclPool; + unsigned int fElemCount; + RefHashTableOf* fAttDefRegistry; + Hash2KeysSetOf* fUndeclaredAttrRegistry; +}; + +inline const XMLCh* DGXMLScanner::getName() const +{ + return XMLUni::fgDGXMLScanner; +} + +inline Grammar::GrammarType DGXMLScanner::getCurrentGrammarType() const +{ + return Grammar::DTDGrammarType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/ElemStack.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/ElemStack.hpp new file mode 100644 index 000000000000..4634ae0a236b --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/ElemStack.hpp @@ -0,0 +1,592 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ELEMSTACK_HPP) +#define XERCESC_INCLUDE_GUARD_ELEMSTACK_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLElementDecl; +class Grammar; + +struct PrefMapElem : public XMemory +{ + unsigned int fPrefId; + unsigned int fURIId; +}; + +// +// During the scan of content, we have to keep up with the nesting of +// elements (for validation and wellformedness purposes) and we have to +// have places to remember namespace (prefix to URI) mappings. +// +// We only have to keep a stack of the current path down through the tree +// that we are currently scanning, and keep track of any children of any +// elements along that path. +// +// So, this data structure is a stack, which represents the current path +// through the tree that we've worked our way down to. For each node in +// the stack, there is an array of element ids that represent the ids of +// the child elements scanned so far. Upon exit from that element, its +// array of child elements is validated. +// +// Since we have the actual XMLElementDecl in the stack nodes, when its time +// to validate, we just extract the content model from that element decl +// and validate. All the required data falls easily to hand. Note that we +// actually have some derivative of XMLElementDecl, which is specific to +// the validator used, but the abstract API is sufficient for the needs of +// the scanner. +// +// Since the namespace support also requires the storage of information on +// a nested element basis, this structure also holds the namespace info. For +// each level, the prefixes defined at that level (and the namespaces that +// they map to) are stored. +// +class XMLPARSER_EXPORT ElemStack : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Class specific data types + // + // These really should be private, but some of the compilers we have to + // support are too dumb to deal with that. + // + // PrefMapElem + // fURIId is the id of the URI from the validator's URI map. The + // fPrefId is the id of the prefix from our own prefix pool. The + // namespace stack consists of these elements. + // + // StackElem + // fThisElement is the basic element decl for the current element. + // The fRowCapacity is how large fChildIds has grown so far. + // fChildCount is how many of them are valid right now. + // + // The fMapCapacity is how large fMap has grown so far. fMapCount + // is how many of them are valid right now. + // + // Note that we store the reader number we were in when we found the + // start tag. We'll use this at the end tag to test for unbalanced + // markup in entities. + // + // MapModes + // When a prefix is mapped to a namespace id, it matters whether the + // QName being mapped is an attribute or name. Attributes are not + // affected by an sibling xmlns attributes, whereas elements are + // affected by its own xmlns attributes. + // ----------------------------------------------------------------------- + struct StackElem : public XMemory + { + XMLElementDecl* fThisElement; + XMLSize_t fReaderNum; + + XMLSize_t fChildCapacity; + XMLSize_t fChildCount; + QName** fChildren; + + PrefMapElem* fMap; + XMLSize_t fMapCapacity; + XMLSize_t fMapCount; + + bool fValidationFlag; + bool fCommentOrPISeen; + bool fReferenceEscaped; + unsigned int fCurrentScope; + Grammar* fCurrentGrammar; + unsigned int fCurrentURI; + XMLCh * fSchemaElemName; + XMLSize_t fSchemaElemNameMaxLen; + + int fPrefixColonPos; + }; + + enum MapModes + { + Mode_Attribute + , Mode_Element + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ElemStack(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ElemStack(); + + + // ----------------------------------------------------------------------- + // Stack access + // ----------------------------------------------------------------------- + XMLSize_t addLevel(); + XMLSize_t addLevel(XMLElementDecl* const toSet, const XMLSize_t readerNum); + const StackElem* popTop(); + + + // ----------------------------------------------------------------------- + // Stack top access + // ----------------------------------------------------------------------- + XMLSize_t addChild(QName* const child, const bool toParent); + const StackElem* topElement() const; + void setElement(XMLElementDecl* const toSet, const XMLSize_t readerNum); + + void setValidationFlag(bool validationFlag); + bool getValidationFlag(); + + inline void setCommentOrPISeen(); + inline bool getCommentOrPISeen() const; + + inline void setReferenceEscaped(); + inline bool getReferenceEscaped() const; + + void setCurrentScope(int currentScope); + int getCurrentScope(); + + void setCurrentGrammar(Grammar* currentGrammar); + Grammar* getCurrentGrammar(); + + void setCurrentURI(unsigned int uri); + unsigned int getCurrentURI(); + + inline void setCurrentSchemaElemName(const XMLCh * const schemaElemName); + inline XMLCh *getCurrentSchemaElemName(); + + void setPrefixColonPos(int colonPos); + int getPrefixColonPos() const; + + // ----------------------------------------------------------------------- + // Prefix map methods + // ----------------------------------------------------------------------- + void addGlobalPrefix + ( + const XMLCh* const prefixToAdd + , const unsigned int uriId + ); + void addPrefix + ( + const XMLCh* const prefixToAdd + , const unsigned int uriId + ); + unsigned int mapPrefixToURI + ( + const XMLCh* const prefixToMap + , bool& unknown + ) const; + ValueVectorOf* getNamespaceMap() const; + unsigned int getPrefixId(const XMLCh* const prefix) const; + const XMLCh* getPrefixForId(unsigned int prefId) const; + + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + bool isEmpty() const; + void reset + ( + const unsigned int emptyId + , const unsigned int unknownId + , const unsigned int xmlId + , const unsigned int xmlNSId + ); + + unsigned int getEmptyNamespaceId(); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ElemStack(const ElemStack&); + ElemStack& operator=(const ElemStack&); + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void expandMap(StackElem* const toExpand); + void expandStack(); + + + // ----------------------------------------------------------------------- + // Data members + // + // fEmptyNamespaceId + // This is the special URI id for the "" namespace, which is magic + // because of the xmlns="" operation. + // + // fGlobalPoolId + // This is a special URI id that is returned when the namespace + // prefix is "" and no one has explicitly mapped that prefix to an + // explicit URI (or when they explicitly clear any such mapping, + // which they can also do.) And also its prefix pool id, which is + // stored here for fast access. + // + // fPrefixPool + // This is the prefix pool where prefixes are hashed and given unique + // ids. These ids are used to track prefixes in the element stack. + // + // fGlobalNamespaces + // This object contains the namespace bindings that are globally valid + // + // fStack + // fStackCapacity + // fStackTop + // This the stack array. Its an array of pointers to StackElem + // structures. The capacity is the current high water mark of the + // stack. The top is the current top of stack (i.e. the part of it + // being used.) + // + // fUnknownNamespaceId + // This is the URI id for the special URI that is assigned to any + // prefix which has not been mapped. This lets us keep going after + // issuing the error. + // + // fXMLNamespaceId + // fXMLPoolId + // fXMLNSNamespaceId + // fXMLNSPoolId + // These are the URI ids for the special URIs that are assigned to + // the 'xml' and 'xmlns' namespaces. And also its prefix pool id, + // which is stored here for fast access. + // ----------------------------------------------------------------------- + unsigned int fEmptyNamespaceId; + unsigned int fGlobalPoolId; + XMLStringPool fPrefixPool; + StackElem* fGlobalNamespaces; + StackElem** fStack; + XMLSize_t fStackCapacity; + XMLSize_t fStackTop; + unsigned int fUnknownNamespaceId; + unsigned int fXMLNamespaceId; + unsigned int fXMLPoolId; + unsigned int fXMLNSNamespaceId; + unsigned int fXMLNSPoolId; + ValueVectorOf* fNamespaceMap; + MemoryManager* fMemoryManager; +}; + + +class XMLPARSER_EXPORT WFElemStack : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Class specific data types + // + // These really should be private, but some of the compilers we have to + // support are too dumb to deal with that. + // + // PrefMapElem + // fURIId is the id of the URI from the validator's URI map. The + // fPrefId is the id of the prefix from our own prefix pool. The + // namespace stack consists of these elements. + // + // StackElem + // fThisElement is the basic element decl for the current element. + // The fRowCapacity is how large fChildIds has grown so far. + // fChildCount is how many of them are valid right now. + // + // The fMapCapacity is how large fMap has grown so far. fMapCount + // is how many of them are valid right now. + // + // Note that we store the reader number we were in when we found the + // start tag. We'll use this at the end tag to test for unbalanced + // markup in entities. + // + // MapModes + // When a prefix is mapped to a namespace id, it matters whether the + // QName being mapped is an attribute or name. Attributes are not + // affected by an sibling xmlns attributes, whereas elements are + // affected by its own xmlns attributes. + // ----------------------------------------------------------------------- + struct StackElem : public XMemory + { + int fTopPrefix; + unsigned int fCurrentURI; + unsigned int fReaderNum; + unsigned int fElemMaxLength; + XMLCh* fThisElement; + }; + + enum MapModes + { + Mode_Attribute + , Mode_Element + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + WFElemStack(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~WFElemStack(); + + + // ----------------------------------------------------------------------- + // Stack access + // ----------------------------------------------------------------------- + XMLSize_t addLevel(); + XMLSize_t addLevel(const XMLCh* const toSet, const unsigned int toSetLen, + const unsigned int readerNum); + const StackElem* popTop(); + + + // ----------------------------------------------------------------------- + // Stack top access + // ----------------------------------------------------------------------- + const StackElem* topElement() const; + void setElement(const XMLCh* const toSet, const unsigned int toSetLen, + const unsigned int readerNum); + + void setCurrentURI(unsigned int uri); + unsigned int getCurrentURI(); + + // ----------------------------------------------------------------------- + // Prefix map methods + // ----------------------------------------------------------------------- + void addPrefix + ( + const XMLCh* const prefixToAdd + , const unsigned int uriId + ); + unsigned int mapPrefixToURI + ( + const XMLCh* const prefixToMap + , bool& unknown + ) const; + + + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + bool isEmpty() const; + void reset + ( + const unsigned int emptyId + , const unsigned int unknownId + , const unsigned int xmlId + , const unsigned int xmlNSId + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + WFElemStack(const WFElemStack&); + WFElemStack& operator=(const WFElemStack&); + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void expandMap(); + void expandStack(); + + + // ----------------------------------------------------------------------- + // Data members + // + // fEmptyNamespaceId + // This is the special URI id for the "" namespace, which is magic + // because of the xmlns="" operation. + // + // fGlobalPoolId + // This is a special URI id that is returned when the namespace + // prefix is "" and no one has explicitly mapped that prefix to an + // explicit URI (or when they explicitly clear any such mapping, + // which they can also do.) And also its prefix pool id, which is + // stored here for fast access. + // + // fPrefixPool + // This is the prefix pool where prefixes are hashed and given unique + // ids. These ids are used to track prefixes in the element stack. + // + // fStack + // fStackCapacity + // fStackTop + // This the stack array. Its an array of pointers to StackElem + // structures. The capacity is the current high water mark of the + // stack. The top is the current top of stack (i.e. the part of it + // being used.) + // + // fUnknownNamespaceId + // This is the URI id for the special URI that is assigned to any + // prefix which has not been mapped. This lets us keep going after + // issuing the error. + // + // fXMLNamespaceId + // fXMLPoolId + // fXMLNSNamespaceId + // fXMLNSPoolId + // These are the URI ids for the special URIs that are assigned to + // the 'xml' and 'xmlns' namespaces. And also its prefix pool id, + // which is stored here for fast access. + // ----------------------------------------------------------------------- + unsigned int fEmptyNamespaceId; + unsigned int fGlobalPoolId; + XMLSize_t fStackCapacity; + XMLSize_t fStackTop; + unsigned int fUnknownNamespaceId; + unsigned int fXMLNamespaceId; + unsigned int fXMLPoolId; + unsigned int fXMLNSNamespaceId; + unsigned int fXMLNSPoolId; + XMLSize_t fMapCapacity; + PrefMapElem* fMap; + StackElem** fStack; + XMLStringPool fPrefixPool; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// ElemStack: Miscellaneous methods +// --------------------------------------------------------------------------- +inline bool ElemStack::isEmpty() const +{ + return (fStackTop == 0); +} + +inline bool ElemStack::getValidationFlag() +{ + return fStack[fStackTop-1]->fValidationFlag; +} + +inline void ElemStack::setValidationFlag(bool validationFlag) +{ + fStack[fStackTop-1]->fValidationFlag = validationFlag; +} + +inline bool ElemStack::getCommentOrPISeen() const +{ + return fStack[fStackTop-1]->fCommentOrPISeen; +} + +inline void ElemStack::setCommentOrPISeen() +{ + fStack[fStackTop-1]->fCommentOrPISeen = true; +} + +inline bool ElemStack::getReferenceEscaped() const +{ + return fStack[fStackTop-1]->fReferenceEscaped; +} + +inline void ElemStack::setReferenceEscaped() +{ + fStack[fStackTop-1]->fReferenceEscaped = true; +} + +inline void ElemStack::setCurrentSchemaElemName(const XMLCh * const schemaElemName) +{ + XMLSize_t schemaElemNameLen = XMLString::stringLen(schemaElemName); + XMLSize_t stackPos = fStackTop-1; + + if(fStack[stackPos]->fSchemaElemNameMaxLen <= schemaElemNameLen) + { + XMLCh *tempStr = fStack[stackPos]->fSchemaElemName; + fStack[stackPos]->fSchemaElemNameMaxLen = schemaElemNameLen << 1; + fStack[stackPos]->fSchemaElemName = (XMLCh *)fMemoryManager->allocate((fStack[stackPos]->fSchemaElemNameMaxLen)*sizeof(XMLCh)); + fMemoryManager->deallocate(tempStr); + } + XMLString::copyString(fStack[stackPos]->fSchemaElemName, schemaElemName); +} + +inline XMLCh *ElemStack::getCurrentSchemaElemName() +{ + return fStack[fStackTop-1]->fSchemaElemName; +} + +inline int ElemStack::getCurrentScope() +{ + return fStack[fStackTop-1]->fCurrentScope; +} + +inline void ElemStack::setCurrentScope(int currentScope) +{ + fStack[fStackTop-1]->fCurrentScope = currentScope; +} + +inline Grammar* ElemStack::getCurrentGrammar() +{ + return fStack[fStackTop-1]->fCurrentGrammar; +} + +inline void ElemStack::setCurrentGrammar(Grammar* currentGrammar) +{ + fStack[fStackTop-1]->fCurrentGrammar = currentGrammar; +} + +inline unsigned int ElemStack::getCurrentURI() +{ + return fStack[fStackTop-1]->fCurrentURI; +} + +inline void ElemStack::setCurrentURI(unsigned int uri) +{ + fStack[fStackTop-1]->fCurrentURI = uri; +} + +inline unsigned int ElemStack::getPrefixId(const XMLCh* const prefix) const +{ + return fPrefixPool.getId(prefix); +} + +inline const XMLCh* ElemStack::getPrefixForId(unsigned int prefId) const +{ + return fPrefixPool.getValueForId(prefId); +} + +inline void ElemStack::setPrefixColonPos(int colonPos) +{ + fStack[fStackTop-1]->fPrefixColonPos = colonPos; +} + +inline int ElemStack::getPrefixColonPos() const { + return fStack[fStackTop-1]->fPrefixColonPos; +} + +inline unsigned int ElemStack::getEmptyNamespaceId() { + return fEmptyNamespaceId; +} + +// --------------------------------------------------------------------------- +// WFElemStack: Miscellaneous methods +// --------------------------------------------------------------------------- +inline bool WFElemStack::isEmpty() const +{ + return (fStackTop == 0); +} + +inline unsigned int WFElemStack::getCurrentURI() +{ + return fStack[fStackTop-1]->fCurrentURI; +} + +inline void WFElemStack::setCurrentURI(unsigned int uri) +{ + fStack[fStackTop-1]->fCurrentURI = uri; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/EndOfEntityException.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/EndOfEntityException.hpp new file mode 100644 index 000000000000..25039d577658 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/EndOfEntityException.hpp @@ -0,0 +1,116 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ENDOFENTITYEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_ENDOFENTITYEXCEPTION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLEntityDecl; + +// +// This class is only used internally. Its thrown by the ReaderMgr class, +// when an entity ends, and is caught in the scanner. This tells the scanner +// that an entity has ended, and allows it to do the right thing according +// to what was going on when the entity ended. +// +// Since its internal, it does not bother implementing XMLException. +// +class XMLPARSER_EXPORT EndOfEntityException +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + EndOfEntityException( XMLEntityDecl* entityThatEnded + , const XMLSize_t readerNum) : + + fEntity(entityThatEnded) + , fReaderNum(readerNum) + { + } + + EndOfEntityException(const EndOfEntityException& toCopy) : + + fEntity(toCopy.fEntity) + , fReaderNum(toCopy.fReaderNum) + { + } + + ~EndOfEntityException() + { + } + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLEntityDecl& getEntity(); + const XMLEntityDecl& getEntity() const; + XMLSize_t getReaderNum() const; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + EndOfEntityException& operator = (const EndOfEntityException&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fEntity + // This is a reference to the entity that ended, causing this + // exception. + // + // fReaderNum + // The unique reader number of the reader that was handling this + // entity. This is used to know whether a particular entity has + // ended. + // ----------------------------------------------------------------------- + XMLEntityDecl* fEntity; + XMLSize_t fReaderNum; +}; + + +// --------------------------------------------------------------------------- +// EndOfEntityException: Getter methods +// --------------------------------------------------------------------------- +inline XMLEntityDecl& EndOfEntityException::getEntity() +{ + return *fEntity; +} + +inline const XMLEntityDecl& EndOfEntityException::getEntity() const +{ + return *fEntity; +} + +inline XMLSize_t EndOfEntityException::getReaderNum() const +{ + return fReaderNum; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/IANAEncodings.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/IANAEncodings.hpp new file mode 100644 index 000000000000..c8c546a167dd --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/IANAEncodings.hpp @@ -0,0 +1,834 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IANAENCODINGS_HPP) +#define XERCESC_INCLUDE_GUARD_IANAENCODINGS_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// ---------------------------------------------------------------- +// This file was generated from the IANA charset source. +// so do not edit this file directly!! +// ---------------------------------------------------------------- + +const XMLCh gEncodingArray[][46] = +{ + { 0x0041,0x004E,0x0053,0x0049,0x005F,0x0058,0x0033,0x002E,0x0034,0x002D,0x0031,0x0039,0x0036,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0036,0x00 } + , { 0x0041,0x004E,0x0053,0x0049,0x005F,0x0058,0x0033,0x002E,0x0034,0x002D,0x0031,0x0039,0x0038,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0036,0x0034,0x0036,0x002E,0x0069,0x0072,0x0076,0x003A,0x0031,0x0039,0x0039,0x0031,0x00 } + , { 0x0041,0x0053,0x0043,0x0049,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0055,0x0053,0x00 } + , { 0x0055,0x0053,0x002D,0x0041,0x0053,0x0043,0x0049,0x0049,0x00 } + , { 0x0075,0x0073,0x00 } + , { 0x0049,0x0042,0x004D,0x0033,0x0036,0x0037,0x00 } + , { 0x0063,0x0070,0x0033,0x0036,0x0037,0x00 } + , { 0x0063,0x0073,0x0041,0x0053,0x0043,0x0049,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x0055,0x0054,0x0046,0x002D,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0030,0x0036,0x0034,0x0036,0x0055,0x0054,0x0046,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0036,0x0034,0x0036,0x002E,0x0062,0x0061,0x0073,0x0069,0x0063,0x003A,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x0072,0x0065,0x0066,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x0062,0x0061,0x0073,0x0069,0x0063,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x0049,0x004E,0x0056,0x0041,0x0052,0x0049,0x0041,0x004E,0x0054,0x00 } + , { 0x0063,0x0073,0x0049,0x004E,0x0056,0x0041,0x0052,0x0049,0x0041,0x004E,0x0054,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0036,0x0034,0x0036,0x002E,0x0069,0x0072,0x0076,0x003A,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0032,0x00 } + , { 0x0069,0x0072,0x0076,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0049,0x006E,0x0074,0x006C,0x0052,0x0065,0x0066,0x0056,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0042,0x0053,0x005F,0x0034,0x0037,0x0033,0x0030,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0034,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0047,0x0042,0x00 } + , { 0x0067,0x0062,0x00 } + , { 0x0075,0x006B,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0034,0x0055,0x006E,0x0069,0x0074,0x0065,0x0064,0x004B,0x0069,0x006E,0x0067,0x0064,0x006F,0x006D,0x00 } + , { 0x004E,0x0041,0x0054,0x0053,0x002D,0x0053,0x0045,0x0046,0x0049,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x002D,0x0031,0x00 } + , { 0x0063,0x0073,0x004E,0x0041,0x0054,0x0053,0x0053,0x0045,0x0046,0x0049,0x00 } + , { 0x004E,0x0041,0x0054,0x0053,0x002D,0x0053,0x0045,0x0046,0x0049,0x002D,0x0041,0x0044,0x0044,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x002D,0x0032,0x00 } + , { 0x0063,0x0073,0x004E,0x0041,0x0054,0x0053,0x0053,0x0045,0x0046,0x0049,0x0041,0x0044,0x0044,0x00 } + , { 0x004E,0x0041,0x0054,0x0053,0x002D,0x0044,0x0041,0x004E,0x004F,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x002D,0x0031,0x00 } + , { 0x0063,0x0073,0x004E,0x0041,0x0054,0x0053,0x0044,0x0041,0x004E,0x004F,0x00 } + , { 0x004E,0x0041,0x0054,0x0053,0x002D,0x0044,0x0041,0x004E,0x004F,0x002D,0x0041,0x0044,0x0044,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x002D,0x0032,0x00 } + , { 0x0063,0x0073,0x004E,0x0041,0x0054,0x0053,0x0044,0x0041,0x004E,0x004F,0x0041,0x0044,0x0044,0x00 } + , { 0x0053,0x0045,0x004E,0x005F,0x0038,0x0035,0x0030,0x0032,0x0030,0x0030,0x005F,0x0042,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x00 } + , { 0x0046,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0046,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0053,0x0045,0x00 } + , { 0x0073,0x0065,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0030,0x0053,0x0077,0x0065,0x0064,0x0069,0x0073,0x0068,0x00 } + , { 0x0053,0x0045,0x004E,0x005F,0x0038,0x0035,0x0030,0x0032,0x0030,0x0030,0x005F,0x0043,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0053,0x0045,0x0032,0x00 } + , { 0x0073,0x0065,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0031,0x0053,0x0077,0x0065,0x0064,0x0069,0x0073,0x0068,0x0046,0x006F,0x0072,0x004E,0x0061,0x006D,0x0065,0x0073,0x00 } + , { 0x004B,0x0053,0x005F,0x0043,0x005F,0x0035,0x0036,0x0030,0x0031,0x002D,0x0031,0x0039,0x0038,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0039,0x00 } + , { 0x004B,0x0053,0x005F,0x0043,0x005F,0x0035,0x0036,0x0030,0x0031,0x002D,0x0031,0x0039,0x0038,0x0039,0x00 } + , { 0x004B,0x0053,0x0043,0x005F,0x0035,0x0036,0x0030,0x0031,0x00 } + , { 0x006B,0x006F,0x0072,0x0065,0x0061,0x006E,0x00 } + , { 0x0063,0x0073,0x004B,0x0053,0x0043,0x0035,0x0036,0x0030,0x0031,0x0031,0x0039,0x0038,0x0037,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0032,0x0030,0x0032,0x0032,0x002D,0x004B,0x0052,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0030,0x0032,0x0032,0x004B,0x0052,0x00 } + , { 0x0045,0x0055,0x0043,0x002D,0x004B,0x0052,0x00 } + , { 0x0063,0x0073,0x0045,0x0055,0x0043,0x004B,0x0052,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0032,0x0030,0x0032,0x0032,0x002D,0x004A,0x0050,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0030,0x0032,0x0032,0x004A,0x0050,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0032,0x0030,0x0032,0x0032,0x002D,0x004A,0x0050,0x002D,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0030,0x0032,0x0032,0x004A,0x0050,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0032,0x0030,0x0032,0x0032,0x002D,0x0043,0x004E,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0032,0x0030,0x0032,0x0032,0x002D,0x0043,0x004E,0x002D,0x0045,0x0058,0x0054,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0030,0x002D,0x0031,0x0039,0x0036,0x0039,0x002D,0x006A,0x0070,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0030,0x002D,0x0031,0x0039,0x0036,0x0039,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0033,0x00 } + , { 0x006B,0x0061,0x0074,0x0061,0x006B,0x0061,0x006E,0x0061,0x00 } + , { 0x0078,0x0030,0x0032,0x0030,0x0031,0x002D,0x0037,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0033,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0032,0x0030,0x006A,0x0070,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0030,0x002D,0x0031,0x0039,0x0036,0x0039,0x002D,0x0072,0x006F,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x00 } + , { 0x006A,0x0070,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x004A,0x0050,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0034,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0032,0x0030,0x0072,0x006F,0x00 } + , { 0x0049,0x0054,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0049,0x0054,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0049,0x0074,0x0061,0x006C,0x0069,0x0061,0x006E,0x00 } + , { 0x0050,0x0054,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0050,0x0054,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0036,0x0050,0x006F,0x0072,0x0074,0x0075,0x0067,0x0075,0x0065,0x0073,0x0065,0x00 } + , { 0x0045,0x0053,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0037,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0045,0x0053,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0037,0x0053,0x0070,0x0061,0x006E,0x0069,0x0073,0x0068,0x00 } + , { 0x0067,0x0072,0x0065,0x0065,0x006B,0x0037,0x002D,0x006F,0x006C,0x0064,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0038,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0038,0x0047,0x0072,0x0065,0x0065,0x006B,0x0037,0x004F,0x006C,0x0064,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0067,0x0072,0x0065,0x0065,0x006B,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0039,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0039,0x004C,0x0061,0x0074,0x0069,0x006E,0x0047,0x0072,0x0065,0x0065,0x006B,0x00 } + , { 0x0044,0x0049,0x004E,0x005F,0x0036,0x0036,0x0030,0x0030,0x0033,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0032,0x0031,0x00 } + , { 0x0064,0x0065,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0044,0x0045,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0031,0x0047,0x0065,0x0072,0x006D,0x0061,0x006E,0x00 } + , { 0x004E,0x0046,0x005F,0x005A,0x005F,0x0036,0x0032,0x002D,0x0030,0x0031,0x0030,0x005F,0x0028,0x0031,0x0039,0x0037,0x0033,0x0029,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0032,0x0035,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0046,0x0052,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0035,0x0046,0x0072,0x0065,0x006E,0x0063,0x0068,0x00 } + , { 0x004C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0067,0x0072,0x0065,0x0065,0x006B,0x002D,0x0031,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0032,0x0037,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0037,0x004C,0x0061,0x0074,0x0069,0x006E,0x0047,0x0072,0x0065,0x0065,0x006B,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0035,0x0034,0x0032,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0033,0x0037,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0034,0x0032,0x0037,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0036,0x002D,0x0031,0x0039,0x0037,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0034,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0034,0x0032,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0032,0x0036,0x0031,0x0039,0x0037,0x0038,0x00 } + , { 0x0042,0x0053,0x005F,0x0076,0x0069,0x0065,0x0077,0x0064,0x0061,0x0074,0x0061,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0034,0x0037,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0034,0x0037,0x0042,0x0053,0x0056,0x0069,0x0065,0x0077,0x0064,0x0061,0x0074,0x0061,0x00 } + , { 0x0049,0x004E,0x0049,0x0053,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0034,0x0039,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0034,0x0039,0x0049,0x004E,0x0049,0x0053,0x00 } + , { 0x0049,0x004E,0x0049,0x0053,0x002D,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0030,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0030,0x0049,0x004E,0x0049,0x0053,0x0038,0x00 } + , { 0x0049,0x004E,0x0049,0x0053,0x002D,0x0063,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0031,0x0049,0x004E,0x0049,0x0053,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0035,0x0034,0x0032,0x0037,0x003A,0x0031,0x0039,0x0038,0x0031,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0034,0x00 } + , { 0x0049,0x0053,0x004F,0x0035,0x0034,0x0032,0x0037,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x0031,0x0039,0x0038,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0035,0x0034,0x0032,0x0038,0x003A,0x0031,0x0039,0x0038,0x0030,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0035,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0034,0x0032,0x0038,0x0047,0x0072,0x0065,0x0065,0x006B,0x00 } + , { 0x0047,0x0042,0x005F,0x0031,0x0039,0x0038,0x0038,0x002D,0x0038,0x0030,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0037,0x00 } + , { 0x0063,0x006E,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0043,0x004E,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0037,0x0047,0x0042,0x0031,0x0039,0x0038,0x0038,0x00 } + , { 0x0047,0x0042,0x005F,0x0032,0x0033,0x0031,0x0032,0x002D,0x0038,0x0030,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0038,0x00 } + , { 0x0063,0x0068,0x0069,0x006E,0x0065,0x0073,0x0065,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0038,0x0047,0x0042,0x0032,0x0033,0x0031,0x0032,0x0038,0x0030,0x00 } + , { 0x004E,0x0053,0x005F,0x0034,0x0035,0x0035,0x0031,0x002D,0x0031,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0036,0x0030,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x004E,0x004F,0x00 } + , { 0x006E,0x006F,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0030,0x0044,0x0061,0x006E,0x0069,0x0073,0x0068,0x004E,0x006F,0x0072,0x0077,0x0065,0x0067,0x0069,0x0061,0x006E,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0030,0x004E,0x006F,0x0072,0x0077,0x0065,0x0067,0x0069,0x0061,0x006E,0x0031,0x00 } + , { 0x004E,0x0053,0x005F,0x0034,0x0035,0x0035,0x0031,0x002D,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x004E,0x004F,0x0032,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0036,0x0031,0x00 } + , { 0x006E,0x006F,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0031,0x004E,0x006F,0x0072,0x0077,0x0065,0x0067,0x0069,0x0061,0x006E,0x0032,0x00 } + , { 0x004E,0x0046,0x005F,0x005A,0x005F,0x0036,0x0032,0x002D,0x0030,0x0031,0x0030,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0036,0x0039,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0046,0x0052,0x00 } + , { 0x0066,0x0072,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0039,0x0046,0x0072,0x0065,0x006E,0x0063,0x0068,0x00 } + , { 0x0076,0x0069,0x0064,0x0065,0x006F,0x0074,0x0065,0x0078,0x002D,0x0073,0x0075,0x0070,0x0070,0x006C,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0037,0x0030,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0037,0x0030,0x0056,0x0069,0x0064,0x0065,0x006F,0x0074,0x0065,0x0078,0x0053,0x0075,0x0070,0x0070,0x0031,0x00 } + , { 0x0050,0x0054,0x0032,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0034,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0050,0x0054,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0034,0x0050,0x006F,0x0072,0x0074,0x0075,0x0067,0x0075,0x0065,0x0073,0x0065,0x0032,0x00 } + , { 0x0045,0x0053,0x0032,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0035,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0045,0x0053,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0035,0x0053,0x0070,0x0061,0x006E,0x0069,0x0073,0x0068,0x0032,0x00 } + , { 0x004D,0x0053,0x005A,0x005F,0x0037,0x0037,0x0039,0x0035,0x002E,0x0033,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0048,0x0055,0x00 } + , { 0x0068,0x0075,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0036,0x0048,0x0075,0x006E,0x0067,0x0061,0x0072,0x0069,0x0061,0x006E,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0036,0x002D,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0037,0x00 } + , { 0x0078,0x0030,0x0032,0x0030,0x0038,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0058,0x0030,0x0032,0x0030,0x0038,0x002D,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0037,0x004A,0x0049,0x0053,0x0058,0x0030,0x0032,0x0030,0x0038,0x00 } + , { 0x0067,0x0072,0x0065,0x0065,0x006B,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0038,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0047,0x0072,0x0065,0x0065,0x006B,0x0037,0x00 } + , { 0x0041,0x0053,0x004D,0x004F,0x005F,0x0034,0x0034,0x0039,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0039,0x0030,0x0033,0x0036,0x00 } + , { 0x0061,0x0072,0x0061,0x0062,0x0069,0x0063,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0039,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0039,0x0041,0x0053,0x004D,0x004F,0x0034,0x0034,0x0039,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0030,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0030,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x0061,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0031,0x00 } + , { 0x006A,0x0070,0x002D,0x006F,0x0063,0x0072,0x002D,0x0061,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0031,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0032,0x0039,0x0031,0x0039,0x0038,0x0034,0x0061,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x0062,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x004A,0x0050,0x002D,0x004F,0x0043,0x0052,0x002D,0x0042,0x00 } + , { 0x006A,0x0070,0x002D,0x006F,0x0063,0x0072,0x002D,0x0062,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0032,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0039,0x0039,0x0031,0x0039,0x0038,0x0034,0x0062,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x0062,0x002D,0x0061,0x0064,0x0064,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0033,0x00 } + , { 0x006A,0x0070,0x002D,0x006F,0x0063,0x0072,0x002D,0x0062,0x002D,0x0061,0x0064,0x0064,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0033,0x004A,0x0049,0x0053,0x0036,0x0032,0x0032,0x0039,0x0031,0x0039,0x0038,0x0034,0x0062,0x0061,0x0064,0x0064,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x0068,0x0061,0x006E,0x0064,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0034,0x00 } + , { 0x006A,0x0070,0x002D,0x006F,0x0063,0x0072,0x002D,0x0068,0x0061,0x006E,0x0064,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0034,0x004A,0x0049,0x0053,0x0036,0x0032,0x0032,0x0039,0x0031,0x0039,0x0038,0x0034,0x0068,0x0061,0x006E,0x0064,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x0068,0x0061,0x006E,0x0064,0x002D,0x0061,0x0064,0x0064,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0035,0x00 } + , { 0x006A,0x0070,0x002D,0x006F,0x0063,0x0072,0x002D,0x0068,0x0061,0x006E,0x0064,0x002D,0x0061,0x0064,0x0064,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0035,0x004A,0x0049,0x0053,0x0036,0x0032,0x0032,0x0039,0x0031,0x0039,0x0038,0x0034,0x0068,0x0061,0x006E,0x0064,0x0061,0x0064,0x0064,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x006B,0x0061,0x006E,0x0061,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0036,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0036,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0032,0x0039,0x0031,0x0039,0x0038,0x0034,0x006B,0x0061,0x006E,0x0061,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0032,0x0030,0x0033,0x0033,0x002D,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0038,0x00 } + , { 0x0065,0x0031,0x0033,0x0062,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0030,0x0033,0x0033,0x00 } + , { 0x0041,0x004E,0x0053,0x0049,0x005F,0x0058,0x0033,0x002E,0x0031,0x0031,0x0030,0x002D,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0039,0x00 } + , { 0x0043,0x0053,0x0041,0x005F,0x0054,0x0035,0x0030,0x0030,0x002D,0x0031,0x0039,0x0038,0x0033,0x00 } + , { 0x004E,0x0041,0x0050,0x004C,0x0050,0x0053,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0039,0x004E,0x0041,0x0050,0x004C,0x0050,0x0053,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x003A,0x0031,0x0039,0x0038,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x0030,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } + , { 0x006C,0x0031,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0031,0x0039,0x00 } + , { 0x0043,0x0050,0x0038,0x0031,0x0039,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0032,0x003A,0x0031,0x0039,0x0038,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0032,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0032,0x00 } + , { 0x006C,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0032,0x00 } + , { 0x0054,0x002E,0x0036,0x0031,0x002D,0x0037,0x0062,0x0069,0x0074,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0030,0x0032,0x0054,0x0036,0x0031,0x0037,0x0062,0x0069,0x0074,0x00 } + , { 0x0054,0x002E,0x0036,0x0031,0x002D,0x0038,0x0062,0x0069,0x0074,0x00 } + , { 0x0054,0x002E,0x0036,0x0031,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0030,0x0033,0x0054,0x0036,0x0031,0x0038,0x0062,0x0069,0x0074,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0033,0x003A,0x0031,0x0039,0x0038,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x0039,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0033,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0033,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0033,0x00 } + , { 0x006C,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0033,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0034,0x003A,0x0031,0x0039,0x0038,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0031,0x0030,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0034,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0034,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0034,0x00 } + , { 0x006C,0x0034,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0034,0x00 } + , { 0x0045,0x0043,0x004D,0x0041,0x002D,0x0063,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0031,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0031,0x0031,0x0045,0x0043,0x004D,0x0041,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x0043,0x0053,0x0041,0x005F,0x005A,0x0032,0x0034,0x0033,0x002E,0x0034,0x002D,0x0031,0x0039,0x0038,0x0035,0x002D,0x0031,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0043,0x0041,0x00 } + , { 0x0063,0x0073,0x0061,0x0037,0x002D,0x0031,0x00 } + , { 0x0063,0x0061,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0032,0x0031,0x0043,0x0061,0x006E,0x0061,0x0064,0x0069,0x0061,0x006E,0x0031,0x00 } + , { 0x0043,0x0053,0x0041,0x005F,0x005A,0x0032,0x0034,0x0033,0x002E,0x0034,0x002D,0x0031,0x0039,0x0038,0x0035,0x002D,0x0032,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0043,0x0041,0x0032,0x00 } + , { 0x0063,0x0073,0x0061,0x0037,0x002D,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0032,0x0032,0x0043,0x0061,0x006E,0x0061,0x0064,0x0069,0x0061,0x006E,0x0032,0x00 } + , { 0x0043,0x0053,0x0041,0x005F,0x005A,0x0032,0x0034,0x0033,0x002E,0x0034,0x002D,0x0031,0x0039,0x0038,0x0035,0x002D,0x0067,0x0072,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0032,0x0033,0x0043,0x0053,0x0041,0x005A,0x0032,0x0034,0x0033,0x0034,0x0031,0x0039,0x0038,0x0035,0x0067,0x0072,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x003A,0x0031,0x0039,0x0038,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0037,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x00 } + , { 0x0045,0x0043,0x004D,0x0041,0x002D,0x0031,0x0031,0x0034,0x00 } + , { 0x0041,0x0053,0x004D,0x004F,0x002D,0x0037,0x0030,0x0038,0x00 } + , { 0x0061,0x0072,0x0061,0x0062,0x0069,0x0063,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0041,0x0072,0x0061,0x0062,0x0069,0x0063,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x002D,0x0045,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0035,0x0039,0x0036,0x0045,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x002D,0x0045,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x002D,0x0049,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0035,0x0039,0x0036,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x002D,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0037,0x003A,0x0031,0x0039,0x0038,0x0037,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0037,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0037,0x00 } + , { 0x0045,0x004C,0x004F,0x0054,0x005F,0x0039,0x0032,0x0038,0x00 } + , { 0x0045,0x0043,0x004D,0x0041,0x002D,0x0031,0x0031,0x0038,0x00 } + , { 0x0067,0x0072,0x0065,0x0065,0x006B,0x00 } + , { 0x0067,0x0072,0x0065,0x0065,0x006B,0x0038,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0047,0x0072,0x0065,0x0065,0x006B,0x00 } + , { 0x0054,0x002E,0x0031,0x0030,0x0031,0x002D,0x0047,0x0032,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0038,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0032,0x0038,0x0054,0x0031,0x0030,0x0031,0x0047,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x003A,0x0031,0x0039,0x0038,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0033,0x0038,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x00 } + , { 0x0068,0x0065,0x0062,0x0072,0x0065,0x0077,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0048,0x0065,0x0062,0x0072,0x0065,0x0077,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x002D,0x0045,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0035,0x0039,0x0038,0x0045,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x002D,0x0045,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x002D,0x0049,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0035,0x0039,0x0038,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x002D,0x0049,0x00 } + , { 0x0043,0x0053,0x004E,0x005F,0x0033,0x0036,0x0039,0x0031,0x0030,0x0033,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0033,0x0039,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0033,0x0039,0x0043,0x0053,0x004E,0x0033,0x0036,0x0039,0x0031,0x0030,0x0033,0x00 } + , { 0x004A,0x0055,0x0053,0x005F,0x0049,0x002E,0x0042,0x0031,0x002E,0x0030,0x0030,0x0032,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0059,0x0055,0x00 } + , { 0x006A,0x0073,0x00 } + , { 0x0079,0x0075,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0034,0x0031,0x004A,0x0055,0x0053,0x0049,0x0042,0x0031,0x0030,0x0030,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0036,0x0039,0x0033,0x0037,0x002D,0x0032,0x002D,0x0061,0x0064,0x0064,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0054,0x0065,0x0078,0x0074,0x0043,0x006F,0x006D,0x006D,0x00 } + , { 0x0049,0x0045,0x0043,0x005F,0x0050,0x0032,0x0037,0x002D,0x0031,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0034,0x0033,0x0049,0x0045,0x0043,0x0050,0x0032,0x0037,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0035,0x003A,0x0031,0x0039,0x0038,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0034,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0035,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0035,0x00 } + , { 0x0063,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x004A,0x0055,0x0053,0x005F,0x0049,0x002E,0x0042,0x0031,0x002E,0x0030,0x0030,0x0033,0x002D,0x0073,0x0065,0x0072,0x0062,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0036,0x00 } + , { 0x0073,0x0065,0x0072,0x0062,0x0069,0x0061,0x006E,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0034,0x0036,0x0053,0x0065,0x0072,0x0062,0x0069,0x0061,0x006E,0x00 } + , { 0x004A,0x0055,0x0053,0x005F,0x0049,0x002E,0x0042,0x0031,0x002E,0x0030,0x0030,0x0033,0x002D,0x006D,0x0061,0x0063,0x00 } + , { 0x006D,0x0061,0x0063,0x0065,0x0064,0x006F,0x006E,0x0069,0x0061,0x006E,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0037,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0034,0x0037,0x004D,0x0061,0x0063,0x0065,0x0064,0x006F,0x006E,0x0069,0x0061,0x006E,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0039,0x003A,0x0031,0x0039,0x0038,0x0039,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0038,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0039,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0039,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0035,0x00 } + , { 0x006C,0x0035,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0035,0x00 } + , { 0x0067,0x0072,0x0065,0x0065,0x006B,0x002D,0x0063,0x0063,0x0069,0x0074,0x0074,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0030,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0030,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0030,0x0047,0x0072,0x0065,0x0065,0x006B,0x0043,0x0043,0x0049,0x0054,0x0054,0x00 } + , { 0x004E,0x0043,0x005F,0x004E,0x0043,0x0030,0x0030,0x002D,0x0031,0x0030,0x003A,0x0038,0x0031,0x00 } + , { 0x0063,0x0075,0x0062,0x0061,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0043,0x0055,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0031,0x0043,0x0075,0x0062,0x0061,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0036,0x0039,0x0033,0x0037,0x002D,0x0032,0x002D,0x0032,0x0035,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0039,0x0033,0x0037,0x0041,0x0064,0x0064,0x00 } + , { 0x0047,0x004F,0x0053,0x0054,0x005F,0x0031,0x0039,0x0037,0x0036,0x0038,0x002D,0x0037,0x0034,0x00 } + , { 0x0053,0x0054,0x005F,0x0053,0x0045,0x0056,0x005F,0x0033,0x0035,0x0038,0x002D,0x0038,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0033,0x0047,0x004F,0x0053,0x0054,0x0031,0x0039,0x0037,0x0036,0x0038,0x0037,0x0034,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0073,0x0075,0x0070,0x0070,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0034,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0031,0x002D,0x0032,0x002D,0x0035,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0035,0x0039,0x0053,0x0075,0x0070,0x0070,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0031,0x0030,0x0033,0x0036,0x0037,0x002D,0x0062,0x006F,0x0078,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0035,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0030,0x0033,0x0036,0x0037,0x0042,0x006F,0x0078,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0030,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0037,0x00 } + , { 0x006C,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0030,0x003A,0x0031,0x0039,0x0039,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0036,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0036,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x002D,0x006C,0x0061,0x0070,0x00 } + , { 0x006C,0x0061,0x0070,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0038,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0038,0x004C,0x0061,0x0070,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0058,0x0030,0x0032,0x0031,0x0032,0x002D,0x0031,0x0039,0x0039,0x0030,0x00 } + , { 0x0078,0x0030,0x0032,0x0031,0x0032,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0039,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0039,0x004A,0x0049,0x0053,0x0058,0x0030,0x0032,0x0031,0x0032,0x0031,0x0039,0x0039,0x0030,0x00 } + , { 0x0044,0x0053,0x005F,0x0032,0x0030,0x0038,0x0039,0x00 } + , { 0x0044,0x0053,0x0032,0x0030,0x0038,0x0039,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0044,0x004B,0x00 } + , { 0x0064,0x006B,0x00 } + , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x0044,0x0061,0x006E,0x0069,0x0073,0x0068,0x00 } + , { 0x0075,0x0073,0x002D,0x0064,0x006B,0x00 } + , { 0x0063,0x0073,0x0055,0x0053,0x0044,0x004B,0x00 } + , { 0x0064,0x006B,0x002D,0x0075,0x0073,0x00 } + , { 0x0063,0x0073,0x0044,0x004B,0x0055,0x0053,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0058,0x0030,0x0032,0x0030,0x0031,0x00 } + , { 0x0058,0x0030,0x0032,0x0030,0x0031,0x00 } + , { 0x0063,0x0073,0x0048,0x0061,0x006C,0x0066,0x0057,0x0069,0x0064,0x0074,0x0068,0x004B,0x0061,0x0074,0x0061,0x006B,0x0061,0x006E,0x0061,0x00 } + , { 0x004B,0x0053,0x0043,0x0035,0x0036,0x0033,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x004B,0x0052,0x00 } + , { 0x0063,0x0073,0x004B,0x0053,0x0043,0x0035,0x0036,0x0033,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x0055,0x0043,0x0053,0x002D,0x0032,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x0055,0x0043,0x0053,0x002D,0x0034,0x00 } + , { 0x0063,0x0073,0x0055,0x0043,0x0053,0x0034,0x00 } + , { 0x0044,0x0045,0x0043,0x002D,0x004D,0x0043,0x0053,0x00 } + , { 0x0064,0x0065,0x0063,0x00 } + , { 0x0063,0x0073,0x0044,0x0045,0x0043,0x004D,0x0043,0x0053,0x00 } + , { 0x0068,0x0070,0x002D,0x0072,0x006F,0x006D,0x0061,0x006E,0x0038,0x00 } + , { 0x0072,0x006F,0x006D,0x0061,0x006E,0x0038,0x00 } + , { 0x0072,0x0038,0x00 } + , { 0x0063,0x0073,0x0048,0x0050,0x0052,0x006F,0x006D,0x0061,0x006E,0x0038,0x00 } + , { 0x006D,0x0061,0x0063,0x0069,0x006E,0x0074,0x006F,0x0073,0x0068,0x00 } + , { 0x006D,0x0061,0x0063,0x00 } + , { 0x0063,0x0073,0x004D,0x0061,0x0063,0x0069,0x006E,0x0074,0x006F,0x0073,0x0068,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0033,0x0037,0x00 } + , { 0x0063,0x0070,0x0030,0x0033,0x0037,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0075,0x0073,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0063,0x0061,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0077,0x0074,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x006E,0x006C,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0030,0x0033,0x0037,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0033,0x0038,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0049,0x004E,0x0054,0x00 } + , { 0x0063,0x0070,0x0030,0x0033,0x0038,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0030,0x0033,0x0038,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0037,0x0033,0x00 } + , { 0x0043,0x0050,0x0032,0x0037,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0037,0x0033,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0037,0x0034,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0042,0x0045,0x00 } + , { 0x0043,0x0050,0x0032,0x0037,0x0034,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0037,0x0034,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0037,0x0035,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0042,0x0052,0x00 } + , { 0x0063,0x0070,0x0032,0x0037,0x0035,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0037,0x0035,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0037,0x0037,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0043,0x0050,0x002D,0x0044,0x004B,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0043,0x0050,0x002D,0x004E,0x004F,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0037,0x0037,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0037,0x0038,0x00 } + , { 0x0043,0x0050,0x0032,0x0037,0x0038,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0066,0x0069,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0073,0x0065,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0037,0x0038,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0038,0x0030,0x00 } + , { 0x0043,0x0050,0x0032,0x0038,0x0030,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0069,0x0074,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0038,0x0030,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0038,0x0031,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x004A,0x0050,0x002D,0x0045,0x00 } + , { 0x0063,0x0070,0x0032,0x0038,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0038,0x0031,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0038,0x0034,0x00 } + , { 0x0043,0x0050,0x0032,0x0038,0x0034,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0065,0x0073,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0038,0x0034,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0038,0x0035,0x00 } + , { 0x0043,0x0050,0x0032,0x0038,0x0035,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0067,0x0062,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0038,0x0035,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0039,0x0030,0x00 } + , { 0x0063,0x0070,0x0032,0x0039,0x0030,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x004A,0x0050,0x002D,0x006B,0x0061,0x006E,0x0061,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0039,0x0030,0x00 } + , { 0x0049,0x0042,0x004D,0x0032,0x0039,0x0037,0x00 } + , { 0x0063,0x0070,0x0032,0x0039,0x0037,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0066,0x0072,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0039,0x0037,0x00 } + , { 0x0049,0x0042,0x004D,0x0034,0x0032,0x0030,0x00 } + , { 0x0063,0x0070,0x0034,0x0032,0x0030,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0061,0x0072,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0034,0x0032,0x0030,0x00 } + , { 0x0049,0x0042,0x004D,0x0034,0x0032,0x0033,0x00 } + , { 0x0063,0x0070,0x0034,0x0032,0x0033,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0067,0x0072,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0034,0x0032,0x0033,0x00 } + , { 0x0049,0x0042,0x004D,0x0034,0x0032,0x0034,0x00 } + , { 0x0063,0x0070,0x0034,0x0032,0x0034,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0068,0x0065,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0034,0x0032,0x0034,0x00 } + , { 0x0049,0x0042,0x004D,0x0034,0x0033,0x0037,0x00 } + , { 0x0063,0x0070,0x0034,0x0033,0x0037,0x00 } + , { 0x0034,0x0033,0x0037,0x00 } + , { 0x0063,0x0073,0x0050,0x0043,0x0038,0x0043,0x006F,0x0064,0x0065,0x0050,0x0061,0x0067,0x0065,0x0034,0x0033,0x0037,0x00 } + , { 0x0049,0x0042,0x004D,0x0035,0x0030,0x0030,0x00 } + , { 0x0043,0x0050,0x0035,0x0030,0x0030,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0062,0x0065,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0063,0x0068,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0035,0x0030,0x0030,0x00 } + , { 0x0049,0x0042,0x004D,0x0037,0x0037,0x0035,0x00 } + , { 0x0063,0x0070,0x0037,0x0037,0x0035,0x00 } + , { 0x0063,0x0073,0x0050,0x0043,0x0037,0x0037,0x0035,0x0042,0x0061,0x006C,0x0074,0x0069,0x0063,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0035,0x0030,0x00 } + , { 0x0063,0x0070,0x0038,0x0035,0x0030,0x00 } + , { 0x0038,0x0035,0x0030,0x00 } + , { 0x0063,0x0073,0x0050,0x0043,0x0038,0x0035,0x0030,0x004D,0x0075,0x006C,0x0074,0x0069,0x006C,0x0069,0x006E,0x0067,0x0075,0x0061,0x006C,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0035,0x0031,0x00 } + , { 0x0063,0x0070,0x0038,0x0035,0x0031,0x00 } + , { 0x0038,0x0035,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0035,0x0031,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0035,0x0032,0x00 } + , { 0x0063,0x0070,0x0038,0x0035,0x0032,0x00 } + , { 0x0038,0x0035,0x0032,0x00 } + , { 0x0063,0x0073,0x0050,0x0043,0x0070,0x0038,0x0035,0x0032,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0035,0x0035,0x00 } + , { 0x0063,0x0070,0x0038,0x0035,0x0035,0x00 } + , { 0x0038,0x0035,0x0035,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0035,0x0035,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0035,0x0037,0x00 } + , { 0x0063,0x0070,0x0038,0x0035,0x0037,0x00 } + , { 0x0038,0x0035,0x0037,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0035,0x0037,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0030,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0030,0x00 } + , { 0x0038,0x0036,0x0030,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0030,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0031,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0031,0x00 } + , { 0x0038,0x0036,0x0031,0x00 } + , { 0x0063,0x0070,0x002D,0x0069,0x0073,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0031,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0032,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0032,0x00 } + , { 0x0038,0x0036,0x0032,0x00 } + , { 0x0063,0x0073,0x0050,0x0043,0x0038,0x0036,0x0032,0x004C,0x0061,0x0074,0x0069,0x006E,0x0048,0x0065,0x0062,0x0072,0x0065,0x0077,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0033,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0033,0x00 } + , { 0x0038,0x0036,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0033,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0034,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0034,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0034,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0035,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0035,0x00 } + , { 0x0038,0x0036,0x0035,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0035,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0036,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0036,0x00 } + , { 0x0038,0x0036,0x0036,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0036,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0038,0x00 } + , { 0x0043,0x0050,0x0038,0x0036,0x0038,0x00 } + , { 0x0063,0x0070,0x002D,0x0061,0x0072,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0038,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0039,0x00 } + , { 0x0063,0x0070,0x0038,0x0036,0x0039,0x00 } + , { 0x0038,0x0036,0x0039,0x00 } + , { 0x0063,0x0070,0x002D,0x0067,0x0072,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0039,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0037,0x0030,0x00 } + , { 0x0043,0x0050,0x0038,0x0037,0x0030,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0072,0x006F,0x0065,0x0063,0x0065,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0079,0x0075,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0037,0x0030,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0037,0x0031,0x00 } + , { 0x0043,0x0050,0x0038,0x0037,0x0031,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0069,0x0073,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0037,0x0031,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0038,0x0030,0x00 } + , { 0x0063,0x0070,0x0038,0x0038,0x0030,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0038,0x0030,0x00 } + , { 0x0049,0x0042,0x004D,0x0038,0x0039,0x0031,0x00 } + , { 0x0063,0x0070,0x0038,0x0039,0x0031,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0039,0x0031,0x00 } + , { 0x0049,0x0042,0x004D,0x0039,0x0030,0x0033,0x00 } + , { 0x0063,0x0070,0x0039,0x0030,0x0033,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0039,0x0030,0x0033,0x00 } + , { 0x0049,0x0042,0x004D,0x0039,0x0030,0x0034,0x00 } + , { 0x0063,0x0070,0x0039,0x0030,0x0034,0x00 } + , { 0x0039,0x0030,0x0034,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x0042,0x004D,0x0039,0x0030,0x0034,0x00 } + , { 0x0049,0x0042,0x004D,0x0039,0x0030,0x0035,0x00 } + , { 0x0043,0x0050,0x0039,0x0030,0x0035,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0074,0x0072,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0039,0x0030,0x0035,0x00 } + , { 0x0049,0x0042,0x004D,0x0039,0x0031,0x0038,0x00 } + , { 0x0043,0x0050,0x0039,0x0031,0x0038,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0061,0x0072,0x0032,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0039,0x0031,0x0038,0x00 } + , { 0x0049,0x0042,0x004D,0x0031,0x0030,0x0032,0x0036,0x00 } + , { 0x0043,0x0050,0x0031,0x0030,0x0032,0x0036,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0031,0x0030,0x0032,0x0036,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0041,0x0054,0x002D,0x0044,0x0045,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0041,0x0054,0x0044,0x0045,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0041,0x0054,0x002D,0x0044,0x0045,0x002D,0x0041,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0041,0x0054,0x0044,0x0045,0x0041,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0043,0x0041,0x002D,0x0046,0x0052,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0043,0x0041,0x0046,0x0052,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0044,0x004B,0x002D,0x004E,0x004F,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0044,0x004B,0x004E,0x004F,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0044,0x004B,0x002D,0x004E,0x004F,0x002D,0x0041,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0044,0x004B,0x004E,0x004F,0x0041,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0046,0x0049,0x002D,0x0053,0x0045,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0046,0x0049,0x0053,0x0045,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0046,0x0049,0x002D,0x0053,0x0045,0x002D,0x0041,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0046,0x0049,0x0053,0x0045,0x0041,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0046,0x0052,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0046,0x0052,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0049,0x0054,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0049,0x0054,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0050,0x0054,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0050,0x0054,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0045,0x0053,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0045,0x0053,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0045,0x0053,0x002D,0x0041,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0045,0x0053,0x0041,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0045,0x0053,0x002D,0x0053,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0045,0x0053,0x0053,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0055,0x004B,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0055,0x004B,0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0055,0x0053,0x00 } + , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0055,0x0053,0x00 } + , { 0x0055,0x004E,0x004B,0x004E,0x004F,0x0057,0x004E,0x002D,0x0038,0x0042,0x0049,0x0054,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0038,0x0042,0x0069,0x0054,0x00 } + , { 0x004D,0x004E,0x0045,0x004D,0x004F,0x004E,0x0049,0x0043,0x00 } + , { 0x0063,0x0073,0x004D,0x006E,0x0065,0x006D,0x006F,0x006E,0x0069,0x0063,0x00 } + , { 0x004D,0x004E,0x0045,0x004D,0x00 } + , { 0x0063,0x0073,0x004D,0x006E,0x0065,0x006D,0x00 } + , { 0x0056,0x0049,0x0053,0x0043,0x0049,0x0049,0x00 } + , { 0x0063,0x0073,0x0056,0x0049,0x0053,0x0043,0x0049,0x0049,0x00 } + , { 0x0056,0x0049,0x0051,0x0052,0x00 } + , { 0x0063,0x0073,0x0056,0x0049,0x0051,0x0052,0x00 } + , { 0x004B,0x004F,0x0049,0x0038,0x002D,0x0052,0x00 } + , { 0x0063,0x0073,0x004B,0x004F,0x0049,0x0038,0x0052,0x00 } + , { 0x004B,0x004F,0x0049,0x0038,0x002D,0x0055,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0030,0x0038,0x0035,0x0038,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0030,0x0038,0x0035,0x0038,0x00 } + , { 0x0043,0x0050,0x0030,0x0030,0x0038,0x0035,0x0038,0x00 } + , { 0x0050,0x0043,0x002D,0x004D,0x0075,0x006C,0x0074,0x0069,0x006C,0x0069,0x006E,0x0067,0x0075,0x0061,0x006C,0x002D,0x0038,0x0035,0x0030,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0030,0x0039,0x0032,0x0034,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0030,0x0039,0x0032,0x0034,0x00 } + , { 0x0043,0x0050,0x0030,0x0030,0x0039,0x0032,0x0034,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x0039,0x002D,0x002D,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0030,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0030,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0030,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0075,0x0073,0x002D,0x0033,0x0037,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0031,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0031,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0031,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0064,0x0065,0x002D,0x0032,0x0037,0x0033,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0032,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0032,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0032,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0064,0x006B,0x002D,0x0032,0x0037,0x0037,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x006E,0x006F,0x002D,0x0032,0x0037,0x0037,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0033,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0033,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0033,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0066,0x0069,0x002D,0x0032,0x0037,0x0038,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0073,0x0065,0x002D,0x0032,0x0037,0x0038,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0034,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0034,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0034,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0069,0x0074,0x002D,0x0032,0x0038,0x0030,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0035,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0035,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0035,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0065,0x0073,0x002D,0x0032,0x0038,0x0034,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0036,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0036,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0036,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0067,0x0062,0x002D,0x0032,0x0038,0x0035,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0037,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0037,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0037,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0066,0x0072,0x002D,0x0032,0x0039,0x0037,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0038,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0038,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0038,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x002D,0x0035,0x0030,0x0030,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0039,0x00 } + , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0039,0x00 } + , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0039,0x00 } + , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0069,0x0073,0x002D,0x0038,0x0037,0x0031,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } + , { 0x0042,0x0069,0x0067,0x0035,0x002D,0x0048,0x004B,0x0053,0x0043,0x0053,0x00 } + , { 0x0055,0x004E,0x0049,0x0043,0x004F,0x0044,0x0045,0x002D,0x0031,0x002D,0x0031,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0031,0x0031,0x00 } + , { 0x0053,0x0043,0x0053,0x0055,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0037,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0031,0x0036,0x0042,0x0045,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0031,0x0036,0x004C,0x0045,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0031,0x0036,0x00 } + , { 0x0043,0x0045,0x0053,0x0055,0x002D,0x0038,0x00 } + , { 0x0063,0x0073,0x0043,0x0045,0x0053,0x0055,0x002D,0x0038,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0033,0x0032,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0033,0x0032,0x0042,0x0045,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0033,0x0032,0x004C,0x0045,0x00 } + , { 0x0055,0x004E,0x0049,0x0043,0x004F,0x0044,0x0045,0x002D,0x0031,0x002D,0x0031,0x002D,0x0055,0x0054,0x0046,0x002D,0x0037,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0031,0x0031,0x0055,0x0054,0x0046,0x0037,0x00 } + , { 0x0055,0x0054,0x0046,0x002D,0x0038,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0033,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0034,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0039,0x0039,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0034,0x003A,0x0031,0x0039,0x0039,0x0038,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0034,0x00 } + , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0038,0x00 } + , { 0x0069,0x0073,0x006F,0x002D,0x0063,0x0065,0x006C,0x0074,0x0069,0x0063,0x00 } + , { 0x006C,0x0038,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0035,0x00 } + , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0035,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0036,0x00 } + , { 0x00 } + , { 0x0047,0x0042,0x004B,0x00 } + , { 0x0043,0x0050,0x0039,0x0033,0x0036,0x00 } + , { 0x004D,0x0053,0x0039,0x0033,0x0036,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0039,0x0033,0x0036,0x00 } + , { 0x0047,0x0042,0x0031,0x0038,0x0030,0x0033,0x0030,0x00 } + , { 0x004A,0x0049,0x0053,0x005F,0x0045,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x0063,0x0073,0x004A,0x0049,0x0053,0x0045,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x0053,0x0068,0x0069,0x0066,0x0074,0x005F,0x004A,0x0049,0x0053,0x00 } + , { 0x004D,0x0053,0x005F,0x004B,0x0061,0x006E,0x006A,0x0069,0x00 } + , { 0x0063,0x0073,0x0053,0x0068,0x0069,0x0066,0x0074,0x004A,0x0049,0x0053,0x00 } + , { 0x0045,0x0078,0x0074,0x0065,0x006E,0x0064,0x0065,0x0064,0x005F,0x0055,0x004E,0x0049,0x0058,0x005F,0x0043,0x006F,0x0064,0x0065,0x005F,0x0050,0x0061,0x0063,0x006B,0x0065,0x0064,0x005F,0x0046,0x006F,0x0072,0x006D,0x0061,0x0074,0x005F,0x0066,0x006F,0x0072,0x005F,0x004A,0x0061,0x0070,0x0061,0x006E,0x0065,0x0073,0x0065,0x00 } + , { 0x0063,0x0073,0x0045,0x0055,0x0043,0x0050,0x006B,0x0064,0x0046,0x006D,0x0074,0x004A,0x0061,0x0070,0x0061,0x006E,0x0065,0x0073,0x0065,0x00 } + , { 0x0045,0x0055,0x0043,0x002D,0x004A,0x0050,0x00 } + , { 0x0045,0x0078,0x0074,0x0065,0x006E,0x0064,0x0065,0x0064,0x005F,0x0055,0x004E,0x0049,0x0058,0x005F,0x0043,0x006F,0x0064,0x0065,0x005F,0x0046,0x0069,0x0078,0x0065,0x0064,0x005F,0x0057,0x0069,0x0064,0x0074,0x0068,0x005F,0x0066,0x006F,0x0072,0x005F,0x004A,0x0061,0x0070,0x0061,0x006E,0x0065,0x0073,0x0065,0x00 } + , { 0x0063,0x0073,0x0045,0x0055,0x0043,0x0046,0x0069,0x0078,0x0057,0x0069,0x0064,0x004A,0x0061,0x0070,0x0061,0x006E,0x0065,0x0073,0x0065,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x0055,0x0043,0x0053,0x002D,0x0042,0x0061,0x0073,0x0069,0x0063,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0041,0x0053,0x0043,0x0049,0x0049,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x004C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x004A,0x002D,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x0049,0x0042,0x004D,0x002D,0x0031,0x0032,0x0036,0x0031,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0049,0x0042,0x004D,0x0031,0x0032,0x0036,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x0049,0x0042,0x004D,0x002D,0x0031,0x0032,0x0036,0x0038,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0049,0x0042,0x004D,0x0031,0x0032,0x0036,0x0038,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x0049,0x0042,0x004D,0x002D,0x0031,0x0032,0x0037,0x0036,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0049,0x0042,0x004D,0x0031,0x0032,0x0037,0x0036,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x0049,0x0042,0x004D,0x002D,0x0031,0x0032,0x0036,0x0034,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0049,0x0042,0x004D,0x0031,0x0032,0x0036,0x0034,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x0049,0x0042,0x004D,0x002D,0x0031,0x0032,0x0036,0x0035,0x00 } + , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0049,0x0042,0x004D,0x0031,0x0032,0x0036,0x0035,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x002D,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0033,0x002E,0x0030,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0031,0x00 } + , { 0x0063,0x0073,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x0033,0x0030,0x004C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x002D,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0033,0x002E,0x0031,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0031,0x00 } + , { 0x0063,0x0073,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x0033,0x0031,0x004C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0032,0x002D,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0032,0x00 } + , { 0x0063,0x0073,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x0033,0x0031,0x004C,0x0061,0x0074,0x0069,0x006E,0x0032,0x00 } + , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0039,0x002D,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0035,0x00 } + , { 0x0063,0x0073,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x0033,0x0031,0x004C,0x0061,0x0074,0x0069,0x006E,0x0035,0x00 } + , { 0x0041,0x0064,0x006F,0x0062,0x0065,0x002D,0x0053,0x0074,0x0061,0x006E,0x0064,0x0061,0x0072,0x0064,0x002D,0x0045,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x0063,0x0073,0x0041,0x0064,0x006F,0x0062,0x0065,0x0053,0x0074,0x0061,0x006E,0x0064,0x0061,0x0072,0x0064,0x0045,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x002D,0x0055,0x0053,0x00 } + , { 0x0063,0x0073,0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x0055,0x0053,0x00 } + , { 0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x002D,0x0049,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x00 } + , { 0x0063,0x0073,0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x0049,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x00 } + , { 0x0050,0x0043,0x0038,0x002D,0x0044,0x0061,0x006E,0x0069,0x0073,0x0068,0x002D,0x004E,0x006F,0x0072,0x0077,0x0065,0x0067,0x0069,0x0061,0x006E,0x00 } + , { 0x0063,0x0073,0x0050,0x0043,0x0038,0x0044,0x0061,0x006E,0x0069,0x0073,0x0068,0x004E,0x006F,0x0072,0x0077,0x0065,0x0067,0x0069,0x0061,0x006E,0x00 } + , { 0x0050,0x0043,0x0038,0x002D,0x0054,0x0075,0x0072,0x006B,0x0069,0x0073,0x0068,0x00 } + , { 0x0063,0x0073,0x0050,0x0043,0x0038,0x0054,0x0075,0x0072,0x006B,0x0069,0x0073,0x0068,0x00 } + , { 0x0049,0x0042,0x004D,0x002D,0x0053,0x0079,0x006D,0x0062,0x006F,0x006C,0x0073,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0053,0x0079,0x006D,0x0062,0x006F,0x006C,0x0073,0x00 } + , { 0x0049,0x0042,0x004D,0x002D,0x0054,0x0068,0x0061,0x0069,0x00 } + , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0054,0x0068,0x0061,0x0069,0x00 } + , { 0x0048,0x0050,0x002D,0x004C,0x0065,0x0067,0x0061,0x006C,0x00 } + , { 0x0063,0x0073,0x0048,0x0050,0x004C,0x0065,0x0067,0x0061,0x006C,0x00 } + , { 0x0048,0x0050,0x002D,0x0050,0x0069,0x002D,0x0066,0x006F,0x006E,0x0074,0x00 } + , { 0x0063,0x0073,0x0048,0x0050,0x0050,0x0069,0x0046,0x006F,0x006E,0x0074,0x00 } + , { 0x0048,0x0050,0x002D,0x004D,0x0061,0x0074,0x0068,0x0038,0x00 } + , { 0x0063,0x0073,0x0048,0x0050,0x004D,0x0061,0x0074,0x0068,0x0038,0x00 } + , { 0x0041,0x0064,0x006F,0x0062,0x0065,0x002D,0x0053,0x0079,0x006D,0x0062,0x006F,0x006C,0x002D,0x0045,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x0063,0x0073,0x0048,0x0050,0x0050,0x0053,0x004D,0x0061,0x0074,0x0068,0x00 } + , { 0x0048,0x0050,0x002D,0x0044,0x0065,0x0073,0x006B,0x0054,0x006F,0x0070,0x00 } + , { 0x0063,0x0073,0x0048,0x0050,0x0044,0x0065,0x0073,0x006B,0x0074,0x006F,0x0070,0x00 } + , { 0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x002D,0x004D,0x0061,0x0074,0x0068,0x00 } + , { 0x0063,0x0073,0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x004D,0x0061,0x0074,0x0068,0x00 } + , { 0x004D,0x0069,0x0063,0x0072,0x006F,0x0073,0x006F,0x0066,0x0074,0x002D,0x0050,0x0075,0x0062,0x006C,0x0069,0x0073,0x0068,0x0069,0x006E,0x0067,0x00 } + , { 0x0063,0x0073,0x004D,0x0069,0x0063,0x0072,0x006F,0x0073,0x006F,0x0066,0x0074,0x0050,0x0075,0x0062,0x006C,0x0069,0x0073,0x0068,0x0069,0x006E,0x0067,0x00 } + , { 0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0033,0x0031,0x004A,0x00 } + , { 0x0063,0x0073,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x0033,0x0031,0x004A,0x00 } + , { 0x0047,0x0042,0x0032,0x0033,0x0031,0x0032,0x00 } + , { 0x0063,0x0073,0x0047,0x0042,0x0032,0x0033,0x0031,0x0032,0x00 } + , { 0x0042,0x0069,0x0067,0x0035,0x00 } + , { 0x0063,0x0073,0x0042,0x0069,0x0067,0x0035,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0030,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0031,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0032,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0033,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0034,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0035,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0036,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0037,0x00 } + , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0038,0x00 } + , { 0x0054,0x0049,0x0053,0x002D,0x0036,0x0032,0x0030,0x00 } + , { 0x0048,0x005A,0x002D,0x0047,0x0042,0x002D,0x0032,0x0033,0x0031,0x0032,0x00 } + +}; +const unsigned int gEncodingArraySize = 791; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/IGXMLScanner.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/IGXMLScanner.hpp new file mode 100644 index 000000000000..d3e1046a0f9c --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/IGXMLScanner.hpp @@ -0,0 +1,308 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IGXMLSCANNER_HPP) +#define XERCESC_INCLUDE_GUARD_IGXMLSCANNER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DTDElementDecl; +class DTDGrammar; +class DTDValidator; +class SchemaValidator; +class IdentityConstraintHandler; +class IdentityConstraint; +class ContentLeafNameTypeVector; +class SchemaAttDef; +class XMLContentModel; +class XSModel; +class PSVIAttributeList; +class PSVIElement; + +// This is an integrated scanner class, which does DTD/XML Schema grammar +// processing. +class XMLPARSER_EXPORT IGXMLScanner : public XMLScanner +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + IGXMLScanner + ( + XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + IGXMLScanner + ( + XMLDocumentHandler* const docHandler + , DocTypeHandler* const docTypeHandler + , XMLEntityHandler* const entityHandler + , XMLErrorReporter* const errReporter + , XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~IGXMLScanner(); + + // ----------------------------------------------------------------------- + // XMLScanner public virtual methods + // ----------------------------------------------------------------------- + virtual const XMLCh* getName() const; + virtual NameIdPool* getEntityDeclPool(); + virtual const NameIdPool* getEntityDeclPool() const; + virtual void scanDocument + ( + const InputSource& src + ); + virtual bool scanNext(XMLPScanToken& toFill); + virtual Grammar* loadGrammar + ( + const InputSource& src + , const short grammarType + , const bool toCache = false + ); + + virtual void resetCachedGrammar (); + virtual Grammar::GrammarType getCurrentGrammarType() const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IGXMLScanner(); + IGXMLScanner(const IGXMLScanner&); + IGXMLScanner& operator=(const IGXMLScanner&); + + // ----------------------------------------------------------------------- + // XMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual void scanCDSection(); + virtual void scanCharData(XMLBuffer& toToUse); + virtual EntityExpRes scanEntityRef + ( + const bool inAttVal + , XMLCh& firstCh + , XMLCh& secondCh + , bool& escaped + ); + virtual void scanDocTypeDecl(); + virtual void scanReset(const InputSource& src); + virtual void sendCharData(XMLBuffer& toSend); + virtual InputSource* resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void commonInit(); + void cleanUp(); + + XMLSize_t buildAttList + ( + const RefVectorOf& providedAttrs + , const XMLSize_t attCount + , XMLElementDecl* elemDecl + , RefVectorOf& toFill + ); + bool normalizeAttValue + ( + const XMLAttDef* const attDef + , const XMLCh* const name + , const XMLCh* const value + , XMLBuffer& toFill + ); + bool normalizeAttRawValue + ( + const XMLCh* const attrName + , const XMLCh* const value + , XMLBuffer& toFill + ); + void updateNSMap + ( + const XMLCh* const attrName + , const XMLCh* const attrValue + ); + void updateNSMap + ( + const XMLCh* const attrName + , const XMLCh* const attrValue + , const int colonPosition + ); + void scanRawAttrListforNameSpaces(XMLSize_t attCount); + void parseSchemaLocation(const XMLCh* const schemaLocationStr, bool ignoreLoadSchema = false); + void resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri, bool ignoreLoadSchema = false); + bool switchGrammar(const XMLCh* const newGrammarNameSpace); + bool laxElementValidation(QName* element, ContentLeafNameTypeVector* cv, + const XMLContentModel* const cm, + const XMLSize_t parentElemDepth); + bool anyAttributeValidation(SchemaAttDef* attWildCard, + unsigned int uriId, + bool& skipThisOne, + bool& laxThisOne); + void resizeElemState(); + void processSchemaLocation(XMLCh* const schemaLoc); + + void resizeRawAttrColonList(); + + // ----------------------------------------------------------------------- + // Private scanning methods + // ----------------------------------------------------------------------- + bool basicAttrValueScan + ( + const XMLCh* const attrName + , XMLBuffer& toFill + ); + XMLSize_t rawAttrScan + ( + const XMLCh* const elemName + , RefVectorOf& toFill + , bool& isEmpty + ); + bool scanAttValue + ( + const XMLAttDef* const attDef + , const XMLCh* const attrName + , XMLBuffer& toFill + ); + bool scanContent(); + void scanEndTag(bool& gotData); + bool scanStartTag(bool& gotData); + bool scanStartTagNS(bool& gotData); + + // ----------------------------------------------------------------------- + // IdentityConstraints Activation methods + // ----------------------------------------------------------------------- + inline bool toCheckIdentityConstraint() const; + + // ----------------------------------------------------------------------- + // Grammar preparsing methods + // ----------------------------------------------------------------------- + Grammar* loadXMLSchemaGrammar(const InputSource& src, const bool toCache = false); + Grammar* loadDTDGrammar(const InputSource& src, const bool toCache = false); + + // ----------------------------------------------------------------------- + // PSVI handling methods + // ----------------------------------------------------------------------- + void endElementPSVI(SchemaElementDecl* const elemDecl, + DatatypeValidator* const memberDV); + void resetPSVIElemContext(); + + // ----------------------------------------------------------------------- + // Data members + // + // fRawAttrList + // During the initial scan of the attributes we can only do a raw + // scan for key/value pairs. So this vector is used to store them + // until they can be processed (and put into fAttrList.) + // + // fDTDValidator + // The DTD validator instance. + // + // fSchemaValidator + // The Schema validator instance. + // + // fSeeXsi + // This flag indicates a schema has been seen. + // + // fElemState + // fElemLoopState + // fElemStateSize + // Stores an element next state from DFA content model - used for + // wildcard validation + // + // fDTDElemNonDeclPool + // registry of "faulted-in" DTD element decls + // fSchemaElemNonDeclPool + // registry for elements without decls in the grammar + // fElemCount + // count of the number of start tags seen so far (starts at 1). + // Used for duplicate attribute detection/processing of required/defaulted attributes + // fAttDefRegistry + // mapping from XMLAttDef instances to the count of the last + // start tag where they were utilized. + // fUndeclaredAttrRegistry + // set of attr QNames to detect duplicates + // fPSVIAttrList + // PSVI attribute list implementation that needs to be + // filled when a PSVIHandler is registered + // fSchemaInfoList + // Transient schema info list that is passed to TraverseSchema instances. + // fCachedSchemaInfoList + // Cached Schema info list that is passed to TraverseSchema instances. + // + // ----------------------------------------------------------------------- + bool fSeeXsi; + Grammar::GrammarType fGrammarType; + unsigned int fElemStateSize; + unsigned int* fElemState; + unsigned int* fElemLoopState; + XMLBuffer fContent; + RefVectorOf* fRawAttrList; + unsigned int fRawAttrColonListSize; + int* fRawAttrColonList; + DTDValidator* fDTDValidator; + SchemaValidator* fSchemaValidator; + DTDGrammar* fDTDGrammar; + IdentityConstraintHandler* fICHandler; + ValueVectorOf* fLocationPairs; + NameIdPool* fDTDElemNonDeclPool; + RefHash3KeysIdPool* fSchemaElemNonDeclPool; + unsigned int fElemCount; + RefHashTableOf*fAttDefRegistry; + Hash2KeysSetOf* fUndeclaredAttrRegistry; + PSVIAttributeList * fPSVIAttrList; + XSModel* fModel; + PSVIElement* fPSVIElement; + ValueStackOf* fErrorStack; + PSVIElemContext fPSVIElemContext; + RefHash2KeysTableOf* fSchemaInfoList; + RefHash2KeysTableOf* fCachedSchemaInfoList; +}; + +inline const XMLCh* IGXMLScanner::getName() const +{ + return XMLUni::fgIGXMLScanner; +} + +inline bool IGXMLScanner::toCheckIdentityConstraint() const +{ + return fValidate && fIdentityConstraintChecking && fICHandler; +} + +inline Grammar::GrammarType IGXMLScanner::getCurrentGrammarType() const +{ + return fGrammarType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/MemoryManagerImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/MemoryManagerImpl.hpp new file mode 100644 index 000000000000..5aeb1682e439 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/MemoryManagerImpl.hpp @@ -0,0 +1,106 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_MEMORYMANAGERIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_MEMORYMANAGERIMPL_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Configurable memory manager + * + *

This is Xerces default implementation of the memory + * manager interface, which will be instantiated and used + * in the absence of an application's memory manager. + *

+ */ + +class XMLUTIL_EXPORT MemoryManagerImpl : public MemoryManager +{ +public: + + /** @name Constructor */ + //@{ + + /** + * Default constructor + */ + MemoryManagerImpl() + { + } + //@} + + /** @name Destructor */ + //@{ + + /** + * Default destructor + */ + virtual ~MemoryManagerImpl() + { + } + //@} + + + /** + * This method is called to obtain the memory manager that should be + * used to allocate memory used in exceptions. + * + * @return A pointer to the memory manager + */ + virtual MemoryManager* getExceptionMemoryManager(); + + + /** @name The virtual methods in MemoryManager */ + //@{ + + /** + * This method allocates requested memory. + * + * @param size The requested memory size + * + * @return A pointer to the allocated memory + */ + virtual void* allocate(XMLSize_t size); + + /** + * This method deallocates memory + * + * @param p The pointer to the allocated memory to be deleted + */ + virtual void deallocate(void* p); + + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + MemoryManagerImpl(const MemoryManagerImpl&); + MemoryManagerImpl& operator=(const MemoryManagerImpl&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/ReaderMgr.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/ReaderMgr.hpp new file mode 100644 index 000000000000..f63b2194e075 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/ReaderMgr.hpp @@ -0,0 +1,447 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_READERMGR_HPP) +#define XERCESC_INCLUDE_GUARD_READERMGR_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLEntityDecl; +class XMLEntityHandler; +class XMLDocumentHandler; +class XMLScanner; + + +// --------------------------------------------------------------------------- +// This class is used by the scanner. The scanner must deal with expansion +// of entities, some of which are totally different files (external parsed +// entities.) It does so by pushing readers onto a stack. The top reader is +// the one it wants to read out of, but that one must be popped when it is +// empty. To keep that logic from being all over the place, the scanner +// talks to the reader manager, which handles the stack and popping off +// used up readers. +// --------------------------------------------------------------------------- +class XMLPARSER_EXPORT ReaderMgr : public XMemory + , public Locator +{ +public : + // ----------------------------------------------------------------------- + // Class specific types + // ----------------------------------------------------------------------- + struct LastExtEntityInfo : public XMemory + { + const XMLCh* systemId; + const XMLCh* publicId; + XMLFileLoc lineNumber; + XMLFileLoc colNumber; + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ReaderMgr(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ReaderMgr(); + + + // ----------------------------------------------------------------------- + // Convenience scanning methods + // + // This are all convenience methods that work in terms of the core + // character spooling methods. + // ----------------------------------------------------------------------- + bool atEOF() const; + bool getName(XMLBuffer& toFill); + bool getQName(XMLBuffer& toFill, int* colonPosition); + bool getNameToken(XMLBuffer& toFill); + XMLCh getNextChar(); + bool getNextCharIfNot(const XMLCh chNotToGet, XMLCh& chGotten); + void movePlainContentChars(XMLBuffer &dest); + void getSpaces(XMLBuffer& toFill); + void getUpToCharOrWS(XMLBuffer& toFill, const XMLCh toCheck); + bool isEmpty() const; + bool lookingAtChar(const XMLCh toCheck); + bool lookingAtSpace(); + XMLCh peekNextChar(); + bool skipIfQuote(XMLCh& chGotten); + void skipPastChar(const XMLCh toSkip); + void skipPastSpaces(bool& skippedSomething, bool inDecl = false); + void skipPastSpaces(); + void skipToChar(const XMLCh toSkipTo); + bool skippedChar(const XMLCh toSkip); + bool skippedSpace(); + bool skippedString(const XMLCh* const toSkip); + bool skippedStringLong(const XMLCh* const toSkip); + void skipQuotedString(const XMLCh quoteCh); + XMLCh skipUntilIn(const XMLCh* const listToSkip); + XMLCh skipUntilInOrWS(const XMLCh* const listToSkip); + bool peekString(const XMLCh* const toPeek); + + + // ----------------------------------------------------------------------- + // Control methods + // ----------------------------------------------------------------------- + void cleanStackBackTo(const XMLSize_t readerNum); + XMLReader* createReader + ( + const InputSource& src + , const bool xmlDecl + , const XMLReader::RefFrom refFrom + , const XMLReader::Types type + , const XMLReader::Sources source + , const bool calcSrsOfs = true + , XMLSize_t lowWaterMark = 100 + ); + XMLReader* createReader + ( + const XMLCh* const sysId + , const XMLCh* const pubId + , const bool xmlDecl + , const XMLReader::RefFrom refFrom + , const XMLReader::Types type + , const XMLReader::Sources source + , InputSource*& srcToFill + , const bool calcSrcOfs = true + , XMLSize_t lowWaterMark = 100 + , const bool disableDefaultEntityResolution = false + ); + XMLReader* createReader + ( + const XMLCh* const baseURI + , const XMLCh* const sysId + , const XMLCh* const pubId + , const bool xmlDecl + , const XMLReader::RefFrom refFrom + , const XMLReader::Types type + , const XMLReader::Sources source + , InputSource*& srcToFill + , const bool calcSrcOfs = true + , XMLSize_t lowWaterMark = 100 + , const bool disableDefaultEntityResolution = false + ); + XMLReader* createIntEntReader + ( + const XMLCh* const sysId + , const XMLReader::RefFrom refFrom + , const XMLReader::Types type + , const XMLCh* const dataBuf + , const XMLSize_t dataLen + , const bool copyBuf + , const bool calcSrcOfs = true + , XMLSize_t lowWaterMark = 100 + ); + bool isScanningPERefOutOfLiteral() const; + bool pushReader + ( + XMLReader* const reader + , XMLEntityDecl* const entity + ); + void reset(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const XMLCh* getCurrentEncodingStr() const; + const XMLEntityDecl* getCurrentEntity() const; + XMLEntityDecl* getCurrentEntity(); + const XMLReader* getCurrentReader() const; + XMLReader* getCurrentReader(); + XMLSize_t getCurrentReaderNum() const; + XMLSize_t getReaderDepth() const; + void getLastExtEntityInfo(LastExtEntityInfo& lastInfo) const; + XMLFilePos getSrcOffset() const; + bool getThrowEOE() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setEntityHandler(XMLEntityHandler* const newHandler); + void setThrowEOE(const bool newValue); + void setXMLVersion(const XMLReader::XMLVersion version); + void setStandardUriConformant(const bool newValue); + + // ----------------------------------------------------------------------- + // Implement the SAX Locator interface + // ----------------------------------------------------------------------- + virtual const XMLCh* getPublicId() const; + virtual const XMLCh* getSystemId() const; + virtual XMLFileLoc getLineNumber() const; + virtual XMLFileLoc getColumnNumber() const; + + +private : + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + const XMLReader* getLastExtEntity(const XMLEntityDecl*& itsEntity) const; + bool popReader(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ReaderMgr(const ReaderMgr&); + ReaderMgr& operator=(const ReaderMgr&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fCurEntity + // This is the current top of stack entity. We pull it off the stack + // and store it here for efficiency. + // + // fCurReader + // This is the current top of stack reader. We pull it off the + // stack and store it here for efficiency. + // + // fEntityHandler + // This is the installed entity handler. Its installed via the + // scanner but he passes it on to us since we need it the most, in + // process of creating external entity readers. + // + // fEntityStack + // We need to keep up with which of the pushed readers are pushed + // entity values that are being spooled. This is done to avoid the + // problem of recursive definitions. This stack consists of refs to + // EntityDecl objects for the pushed entities. + // + // fNextReaderNum + // This is the reader serial number value. Each new reader that is + // created from this reader is given a successive number. This lets + // us catch things like partial markup errors and such. + // + // fReaderStack + // This is the stack of reader references. We own all the readers + // and destroy them when they are used up. + // + // fThrowEOE + // This flag controls whether we throw an exception when we hit an + // end of entity. The scanner doesn't really need to know about ends + // of entities in the int/ext subsets, so it will turn this flag off + // until it gets into the content usually. + // + // fXMLVersion + // Enum to indicate if each Reader should be created as XML 1.1 or + // XML 1.0 conformant + // + // fStandardUriConformant + // This flag controls whether we force conformant URI + // ----------------------------------------------------------------------- + XMLEntityDecl* fCurEntity; + XMLReader* fCurReader; + XMLEntityHandler* fEntityHandler; + RefStackOf* fEntityStack; + unsigned int fNextReaderNum; + RefStackOf* fReaderStack; + bool fThrowEOE; + XMLReader::XMLVersion fXMLVersion; + bool fStandardUriConformant; + MemoryManager* fMemoryManager; +}; + + + +// --------------------------------------------------------------------------- +// ReaderMgr: Inlined methods +// +// NOTE: We cannot put these in alphabetical and type order as we usually +// do because some of the compilers we have to support are too stupid to +// understand out of order inlines! +// --------------------------------------------------------------------------- +inline XMLSize_t ReaderMgr::getCurrentReaderNum() const +{ + return fCurReader->getReaderNum(); +} + +inline const XMLReader* ReaderMgr::getCurrentReader() const +{ + return fCurReader; +} + +inline XMLReader* ReaderMgr::getCurrentReader() +{ + return fCurReader; +} + +inline bool ReaderMgr::getName(XMLBuffer& toFill) +{ + toFill.reset(); + return fCurReader->getName(toFill, false); +} + +inline bool ReaderMgr::getQName(XMLBuffer& toFill, int *colonPosition) +{ + toFill.reset(); + return fCurReader->getQName(toFill, colonPosition); +} + +inline bool ReaderMgr::getNameToken(XMLBuffer& toFill) +{ + toFill.reset(); + return fCurReader->getName(toFill, true); +} + +inline bool ReaderMgr::getNextCharIfNot(const XMLCh chNotToGet, XMLCh& chGotten) +{ + return fCurReader->getNextCharIfNot(chNotToGet, chGotten); +} + +inline void ReaderMgr::movePlainContentChars(XMLBuffer &dest) +{ + fCurReader->movePlainContentChars(dest); +} + +inline bool ReaderMgr::getThrowEOE() const +{ + return fThrowEOE; +} + +inline XMLFilePos ReaderMgr::getSrcOffset() const +{ + return fCurReader? fCurReader->getSrcOffset() : 0; +} + +inline bool ReaderMgr::lookingAtChar(const XMLCh chToCheck) +{ + return (chToCheck == peekNextChar()); +} + +inline bool ReaderMgr::lookingAtSpace() +{ + XMLCh c = peekNextChar(); + return fCurReader->isWhitespace(c); +} + +inline void ReaderMgr::setThrowEOE(const bool newValue) +{ + fThrowEOE = newValue; +} + +inline void ReaderMgr::setStandardUriConformant(const bool newValue) +{ + fStandardUriConformant = newValue; +} + +inline bool ReaderMgr::skippedString(const XMLCh* const toSkip) +{ + return fCurReader->skippedString(toSkip); +} + +inline bool ReaderMgr::skippedStringLong(const XMLCh* const toSkip) +{ + return fCurReader->skippedStringLong(toSkip); +} + +inline void ReaderMgr::skipToChar(const XMLCh toSkipTo) +{ + XMLCh nextCh = 0; + do + { + // Get chars until we find the one to skip + nextCh = getNextChar(); + } + // Break out at end of input or the char to skip + while((nextCh != toSkipTo) && nextCh!=0); +} + +inline void ReaderMgr::skipPastChar(const XMLCh toSkipPast) +{ + XMLCh nextCh = 0; + do + { + // Get chars until we find the one to skip + nextCh = getNextChar(); + } + while((nextCh != toSkipPast) && nextCh!=0); +} + +inline bool ReaderMgr::peekString(const XMLCh* const toPeek) +{ + return fCurReader->peekString(toPeek); +} + +inline void ReaderMgr::setEntityHandler(XMLEntityHandler* const newHandler) +{ + fEntityHandler = newHandler; +} + +inline void ReaderMgr::setXMLVersion(const XMLReader::XMLVersion version) +{ + fXMLVersion = version; + fCurReader->setXMLVersion(version); +} + +// +// This is a simple class to temporarily change the 'throw at end of entity' +// flag of the reader manager. There are some places where we need to +// turn this on and off on a scoped basis. +// +class XMLPARSER_EXPORT ThrowEOEJanitor +{ +public : + // ----------------------------------------------------------------------- + // Constructors and destructor + // ----------------------------------------------------------------------- + ThrowEOEJanitor(ReaderMgr* mgrTarget, const bool newValue) : + + fOld(mgrTarget->getThrowEOE()) + , fMgr(mgrTarget) + { + mgrTarget->setThrowEOE(newValue); + } + + ~ThrowEOEJanitor() + { + fMgr->setThrowEOE(fOld); + }; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ThrowEOEJanitor(const ThrowEOEJanitor&); + ThrowEOEJanitor& operator=(const ThrowEOEJanitor&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fOld + // The previous value of the flag, which we replaced during ctor, + // and will replace during dtor. + // + // fMgr + // A pointer to the reader manager we are going to set/reset the + // flag on. + // ----------------------------------------------------------------------- + bool fOld; + ReaderMgr* fMgr; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/SGXMLScanner.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/SGXMLScanner.hpp new file mode 100644 index 000000000000..fe280b0a7c45 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/SGXMLScanner.hpp @@ -0,0 +1,307 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SGXMLSCANNER_HPP) +#define XERCESC_INCLUDE_GUARD_SGXMLSCANNER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +class SchemaGrammar; +class SchemaValidator; +class IdentityConstraintHandler; +class IdentityConstraint; +class ContentLeafNameTypeVector; +class SchemaAttDef; +class XMLContentModel; +class XSModel; +class PSVIAttributeList; +class PSVIElement; + +// This is a scanner class, which process XML Schema grammar. +class XMLPARSER_EXPORT SGXMLScanner : public XMLScanner +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + SGXMLScanner + ( + XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + SGXMLScanner + ( + XMLDocumentHandler* const docHandler + , DocTypeHandler* const docTypeHandler + , XMLEntityHandler* const entityHandler + , XMLErrorReporter* const errReporter + , XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~SGXMLScanner(); + + // ----------------------------------------------------------------------- + // XMLScanner public virtual methods + // ----------------------------------------------------------------------- + virtual const XMLCh* getName() const; + virtual NameIdPool* getEntityDeclPool(); + virtual const NameIdPool* getEntityDeclPool() const; + virtual void scanDocument + ( + const InputSource& src + ); + virtual bool scanNext(XMLPScanToken& toFill); + virtual Grammar* loadGrammar + ( + const InputSource& src + , const short grammarType + , const bool toCache = false + ); + + virtual void resetCachedGrammar (); + virtual Grammar::GrammarType getCurrentGrammarType() const; + +protected: + // ----------------------------------------------------------------------- + // XMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual void scanReset(const InputSource& src); + + // ----------------------------------------------------------------------- + // SGXMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual bool scanStartTag(bool& gotData); + virtual void scanEndTag(bool& gotData); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + XMLSize_t buildAttList + ( + const RefVectorOf& providedAttrs + , const XMLSize_t attCount + , XMLElementDecl* elemDecl + , RefVectorOf& toFill + ); + bool laxElementValidation(QName* element, ContentLeafNameTypeVector* cv, + const XMLContentModel* const cm, + const XMLSize_t parentElemDepth); + XMLSize_t rawAttrScan + ( + const XMLCh* const elemName + , RefVectorOf& toFill + , bool& isEmpty + ); + void updateNSMap + ( + const XMLCh* const attrName + , const XMLCh* const attrValue + ); + void resizeElemState(); + + void updateNSMap + ( + const XMLCh* const attrName + , const XMLCh* const attrValue + , const int colonPosition + ); + void resizeRawAttrColonList(); + // ----------------------------------------------------------------------- + // Data members + // + // fRawAttrList + // During the initial scan of the attributes we can only do a raw + // scan for key/value pairs. So this vector is used to store them + // until they can be processed (and put into fAttrList.) + // + // fSchemaValidator + // The Schema validator instance. + // + // fSeeXsi + // This flag indicates a schema has been seen. + // + // fElemState + // fElemLoopState + // fElemStateSize + // Stores an element next state from DFA content model - used for + // wildcard validation + // + // fElemNonDeclPool + // registry for elements without decls in the grammar + // fElemCount + // count of the number of start tags seen so far (starts at 1). + // Used for duplicate attribute detection/processing of required/defaulted attributes + // fAttDefRegistry + // mapping from XMLAttDef instances to the count of the last + // start tag where they were utilized. + // fUndeclaredAttrRegistry + // set of namespaceId/localName pairs to detect duplicates + // fPSVIAttrList + // PSVI attribute list implementation that needs to be + // filled when a PSVIHandler is registered + // fSchemaInfoList + // Transient schema info list that is passed to TraverseSchema instances. + // fCachedSchemaInfoList + // Cached Schema info list that is passed to TraverseSchema instances. + // + // ----------------------------------------------------------------------- + bool fSeeXsi; + Grammar::GrammarType fGrammarType; + unsigned int fElemStateSize; + unsigned int* fElemState; + unsigned int* fElemLoopState; + XMLBuffer fContent; + ValueHashTableOf* fEntityTable; + RefVectorOf* fRawAttrList; + unsigned int fRawAttrColonListSize; + int* fRawAttrColonList; + SchemaGrammar* fSchemaGrammar; + SchemaValidator* fSchemaValidator; + IdentityConstraintHandler* fICHandler; + RefHash3KeysIdPool* fElemNonDeclPool; + unsigned int fElemCount; + RefHashTableOf*fAttDefRegistry; + Hash2KeysSetOf* fUndeclaredAttrRegistry; + PSVIAttributeList * fPSVIAttrList; + XSModel* fModel; + PSVIElement* fPSVIElement; + ValueStackOf* fErrorStack; + PSVIElemContext fPSVIElemContext; + RefHash2KeysTableOf* fSchemaInfoList; + RefHash2KeysTableOf* fCachedSchemaInfoList; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SGXMLScanner(); + SGXMLScanner(const SGXMLScanner&); + SGXMLScanner& operator=(const SGXMLScanner&); + + // ----------------------------------------------------------------------- + // XMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual void scanCDSection(); + virtual void scanCharData(XMLBuffer& toToUse); + virtual EntityExpRes scanEntityRef + ( + const bool inAttVal + , XMLCh& firstCh + , XMLCh& secondCh + , bool& escaped + ); + virtual void scanDocTypeDecl(); + virtual void sendCharData(XMLBuffer& toSend); + virtual InputSource* resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void commonInit(); + void cleanUp(); + + bool normalizeAttValue + ( + const XMLAttDef* const attDef + , const XMLCh* const attrName + , const XMLCh* const value + , XMLBuffer& toFill + ); + bool normalizeAttRawValue + ( + const XMLCh* const attrName + , const XMLCh* const value + , XMLBuffer& toFill + ); + void scanRawAttrListforNameSpaces(XMLSize_t attCount); + void parseSchemaLocation(const XMLCh* const schemaLocationStr, bool ignoreLoadSchema = false); + void resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri, bool ignoreLoadSchema = false); + bool switchGrammar(const XMLCh* const newGrammarNameSpace); + bool anyAttributeValidation(SchemaAttDef* attWildCard, + unsigned int uriId, + bool& skipThisOne, + bool& laxThisOne); + + // ----------------------------------------------------------------------- + // Private scanning methods + // ----------------------------------------------------------------------- + bool basicAttrValueScan + ( + const XMLCh* const attrName + , XMLBuffer& toFill + ); + bool scanAttValue + ( + const XMLAttDef* const attDef + , XMLBuffer& toFill + ); + bool scanContent(); + + // ----------------------------------------------------------------------- + // IdentityConstraints Activation methods + // ----------------------------------------------------------------------- + inline bool toCheckIdentityConstraint() const; + + // ----------------------------------------------------------------------- + // Grammar preparsing methods + // ----------------------------------------------------------------------- + Grammar* loadXMLSchemaGrammar(const InputSource& src, const bool toCache = false); + + // ----------------------------------------------------------------------- + // PSVI handling methods + // ----------------------------------------------------------------------- + void endElementPSVI(SchemaElementDecl* const elemDecl, + DatatypeValidator* const memberDV); + void resetPSVIElemContext(); +}; + +inline const XMLCh* SGXMLScanner::getName() const +{ + return XMLUni::fgSGXMLScanner; +} + +inline bool SGXMLScanner::toCheckIdentityConstraint() const +{ + return fValidate && fIdentityConstraintChecking && fICHandler; +} + +inline Grammar::GrammarType SGXMLScanner::getCurrentGrammarType() const +{ + return fGrammarType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/ValidationContextImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/ValidationContextImpl.hpp new file mode 100644 index 000000000000..3cdc0d88ec03 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/ValidationContextImpl.hpp @@ -0,0 +1,173 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALIDATION_CONTEXTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_VALIDATION_CONTEXTIMPL_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN +class ElemStack; +class NamespaceScope; + +class XMLPARSER_EXPORT ValidationContextImpl : public ValidationContext +{ +public : + // ----------------------------------------------------------------------- + /** @name Virtual destructor for derived classes */ + // ----------------------------------------------------------------------- + //@{ + + /** + * virtual destructor + * + */ + virtual ~ValidationContextImpl(); + + ValidationContextImpl(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); + + //@} + + // ----------------------------------------------------------------------- + /** @name The ValidationContextImpl Interface */ + // ----------------------------------------------------------------------- + //@{ + + /** + * IDRefList + * + */ + virtual RefHashTableOf* getIdRefList() const; + + virtual void setIdRefList(RefHashTableOf* const); + + virtual void clearIdRefList(); + + virtual void addId(const XMLCh * const ); + + virtual void addIdRef(const XMLCh * const ); + + virtual void toCheckIdRefList(bool); + + /** + * EntityDeclPool + * + */ + virtual const NameIdPool* getEntityDeclPool() const; + + virtual const NameIdPool* setEntityDeclPool(const NameIdPool* const); + + virtual void checkEntity(const XMLCh * const ) const; + + + /** + * Union datatype handling + * + */ + + virtual DatatypeValidator * getValidatingMemberType() const; + virtual void setValidatingMemberType(DatatypeValidator * validatingMemberType) ; + + /** + * QName datatype handling + * Create default implementations for source code compatibility + */ + virtual bool isPrefixUnknown(XMLCh* prefix); + virtual void setElemStack(ElemStack* elemStack); + virtual const XMLCh* getURIForPrefix(XMLCh* prefix); + virtual void setScanner(XMLScanner* scanner); + virtual void setNamespaceScope(NamespaceScope* nsStack); + + + //@} + +private: + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + ValidationContextImpl(const ValidationContextImpl& ); + ValidationContextImpl& operator=(const ValidationContextImpl& ); + //@} + + // ----------------------------------------------------------------------- + // Data members + // + // fIDRefList: owned/adopted + // This is a list of XMLRefInfo objects. This member lets us do all + // needed ID-IDREF balancing checks. + // + // fEntityDeclPool: referenced only + // This is a pool of EntityDecl objects, which contains all of the + // general entities that are declared in the DTD subsets, plus the + // default entities (such as > < ...) defined by the XML Standard. + // + // fToAddToList + // fValidatingMemberType + // The member type in a union that actually + // validated some text. Note that the validationContext does not + // own this object, and the value of getValidatingMemberType + // will not be accurate unless the type of the most recently-validated + // element/attribute is in fact a union datatype. + // fElemStack + // Need access to elemstack to look up URI's that are inscope (while validating an XML). + // fNamespaceScope + // Need access to namespace scope to look up URI's that are inscope (while loading a schema). + // ----------------------------------------------------------------------- + + RefHashTableOf* fIdRefList; + const NameIdPool* fEntityDeclPool; + bool fToCheckIdRefList; + DatatypeValidator * fValidatingMemberType; + ElemStack* fElemStack; + XMLScanner* fScanner; + NamespaceScope* fNamespaceScope; + +}; + + + +inline DatatypeValidator * ValidationContextImpl::getValidatingMemberType() const +{ + return fValidatingMemberType; +} + +inline void ValidationContextImpl::setValidatingMemberType(DatatypeValidator * validatingMemberType) +{ + fValidatingMemberType = validatingMemberType; +} + +inline void ValidationContextImpl::setElemStack(ElemStack* elemStack) { + fElemStack = elemStack; +} + +inline void ValidationContextImpl::setScanner(XMLScanner* scanner) { + fScanner = scanner; +} + +inline void ValidationContextImpl::setNamespaceScope(NamespaceScope* nsStack) { + fNamespaceScope = nsStack; +} + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/VecAttrListImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/VecAttrListImpl.hpp new file mode 100644 index 000000000000..2d28a9090d19 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/VecAttrListImpl.hpp @@ -0,0 +1,96 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VECATTRLISTIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_VECATTRLISTIMPL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT VecAttrListImpl : public XMemory, public AttributeList +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + VecAttrListImpl(); + ~VecAttrListImpl(); + + + // ----------------------------------------------------------------------- + // Implementation of the attribute list interface + // ----------------------------------------------------------------------- + virtual XMLSize_t getLength() const; + virtual const XMLCh* getName(const XMLSize_t index) const; + virtual const XMLCh* getType(const XMLSize_t index) const; + virtual const XMLCh* getValue(const XMLSize_t index) const; + virtual const XMLCh* getType(const XMLCh* const name) const; + virtual const XMLCh* getValue(const XMLCh* const name) const; + virtual const XMLCh* getValue(const char* const name) const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setVector + ( + const RefVectorOf* const srcVec + , const XMLSize_t count + , const bool adopt = false + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + VecAttrListImpl(const VecAttrListImpl&); + VecAttrListImpl& operator=(const VecAttrListImpl&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fAdopt + // Indicates whether the passed vector is to be adopted or not. If + // so, we destroy it when we are destroyed (and when a new vector is + // set!) + // + // fCount + // The count of elements in the vector that should be considered + // valid. This is an optimization to allow vector elements to be + // reused over and over but a different count of them be valid for + // each use. + // + // fVector + // The vector that provides the backing for the list. + // ----------------------------------------------------------------------- + bool fAdopt; + XMLSize_t fCount; + const RefVectorOf* fVector; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/VecAttributesImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/VecAttributesImpl.hpp new file mode 100644 index 000000000000..d0d412c97886 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/VecAttributesImpl.hpp @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VECATTRIBUTESIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_VECATTRIBUTESIMPL_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT VecAttributesImpl : public Attributes +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + VecAttributesImpl(); + ~VecAttributesImpl(); + + + // ----------------------------------------------------------------------- + // Implementation of the attributes interface + // ----------------------------------------------------------------------- + virtual XMLSize_t getLength() const ; + + virtual const XMLCh* getURI(const XMLSize_t index) const; + virtual const XMLCh* getLocalName(const XMLSize_t index) const ; + virtual const XMLCh* getQName(const XMLSize_t index) const ; + virtual const XMLCh* getType(const XMLSize_t index) const ; + virtual const XMLCh* getValue(const XMLSize_t index) const ; + + virtual bool getIndex(const XMLCh* const uri, const XMLCh* const localPart, XMLSize_t& index) const; + virtual int getIndex(const XMLCh* const uri, const XMLCh* const localPart ) const ; + virtual bool getIndex(const XMLCh* const qName, XMLSize_t& index) const; + virtual int getIndex(const XMLCh* const qName ) const ; + + virtual const XMLCh* getType(const XMLCh* const uri, const XMLCh* const localPart ) const ; + virtual const XMLCh* getType(const XMLCh* const qName) const ; + + virtual const XMLCh* getValue(const XMLCh* const qName) const; + virtual const XMLCh* getValue(const XMLCh* const uri, const XMLCh* const localPart ) const ; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setVector + ( + const RefVectorOf* const srcVec + , const XMLSize_t count + , const XMLScanner * const scanner + , const bool adopt = false + ); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + VecAttributesImpl(const VecAttributesImpl&); + VecAttributesImpl& operator=(const VecAttributesImpl&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fAdopt + // Indicates whether the passed vector is to be adopted or not. If + // so, we destroy it when we are destroyed (and when a new vector is + // set!) + // + // fCount + // The count of elements in the vector that should be considered + // valid. This is an optimization to allow vector elements to be + // reused over and over but a different count of them be valid for + // each use. + // + // fVector + // The vector that provides the backing for the list. + // + // fScanner + // This is a pointer to the in use Scanner, so that we can resolve + // namespace URIs from UriIds + // + // fURIBuffer + // A temporary buffer which is re-used when getting namespace URI's + // ----------------------------------------------------------------------- + bool fAdopt; + XMLSize_t fCount; + const RefVectorOf* fVector; + const XMLScanner * fScanner ; +}; + +XERCES_CPP_NAMESPACE_END + +#endif // ! VECATTRIBUTESIMPL_HPP diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/WFXMLScanner.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/WFXMLScanner.hpp new file mode 100644 index 000000000000..b88b0346e54c --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/WFXMLScanner.hpp @@ -0,0 +1,153 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_WFXMLSCANNER_HPP) +#define XERCESC_INCLUDE_GUARD_WFXMLSCANNER_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +// This is a a non-validating scanner. No DOCTYPE or XML Schema processing +// will take place. +class XMLPARSER_EXPORT WFXMLScanner : public XMLScanner +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + WFXMLScanner + ( + XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + WFXMLScanner + ( + XMLDocumentHandler* const docHandler + , DocTypeHandler* const docTypeHandler + , XMLEntityHandler* const entityHandler + , XMLErrorReporter* const errReporter + , XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~WFXMLScanner(); + + // ----------------------------------------------------------------------- + // XMLScanner public virtual methods + // ----------------------------------------------------------------------- + virtual const XMLCh* getName() const; + virtual NameIdPool* getEntityDeclPool(); + virtual const NameIdPool* getEntityDeclPool() const; + virtual void scanDocument + ( + const InputSource& src + ); + virtual bool scanNext(XMLPScanToken& toFill); + virtual Grammar* loadGrammar + ( + const InputSource& src + , const short grammarType + , const bool toCache = false + ); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + WFXMLScanner(); + WFXMLScanner(const WFXMLScanner&); + WFXMLScanner& operator=(const WFXMLScanner&); + + // ----------------------------------------------------------------------- + // XMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual void scanCDSection(); + virtual void scanCharData(XMLBuffer& toToUse); + virtual EntityExpRes scanEntityRef + ( + const bool inAttVal + , XMLCh& firstCh + , XMLCh& secondCh + , bool& escaped + ); + virtual void scanDocTypeDecl(); + virtual void scanReset(const InputSource& src); + virtual void sendCharData(XMLBuffer& toSend); + virtual InputSource* resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void commonInit(); + void cleanUp(); + + // ----------------------------------------------------------------------- + // Private scanning methods + // ----------------------------------------------------------------------- + bool scanAttValue + ( + const XMLCh* const attrName + , XMLBuffer& toFill + ); + bool scanContent(); + void scanEndTag(bool& gotData); + bool scanStartTag(bool& gotData); + bool scanStartTagNS(bool& gotData); + + // ----------------------------------------------------------------------- + // Data members + // + // fEntityTable + // This the table that contains the default entity entries. + // + // fAttrNameHashList + // This contains the hash value for attribute names. It's used when + // checking for duplicate attributes. + // + // fAttrNSList + // This contains XMLAttr objects that we need to map their prefixes + // to URIs when namespace is enabled. + // + // ----------------------------------------------------------------------- + unsigned int fElementIndex; + RefVectorOf* fElements; + ValueHashTableOf* fEntityTable; + ValueVectorOf* fAttrNameHashList; + ValueVectorOf* fAttrNSList; + RefHashTableOf* fElementLookup; +}; + +inline const XMLCh* WFXMLScanner::getName() const +{ + return XMLUni::fgWFXMLScanner; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/XMLInternalErrorHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/XMLInternalErrorHandler.hpp new file mode 100644 index 000000000000..d56c229807d2 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/XMLInternalErrorHandler.hpp @@ -0,0 +1,139 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLINTERNALERRORHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLINTERNALERRORHANDLER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLInternalErrorHandler : public ErrorHandler +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLInternalErrorHandler(ErrorHandler* userHandler = 0) : + fSawWarning(false), + fSawError(false), + fSawFatal(false), + fUserErrorHandler(userHandler) + { + } + + ~XMLInternalErrorHandler() + { + } + + // ----------------------------------------------------------------------- + // Implementation of the error handler interface + // ----------------------------------------------------------------------- + void warning(const SAXParseException& toCatch); + void error(const SAXParseException& toCatch); + void fatalError(const SAXParseException& toCatch); + void resetErrors(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getSawWarning() const; + bool getSawError() const; + bool getSawFatal() const; + + // ----------------------------------------------------------------------- + // Private data members + // + // fSawWarning + // This is set if we get any warning, and is queryable via a getter + // method. + // + // fSawError + // This is set if we get any errors, and is queryable via a getter + // method. + // + // fSawFatal + // This is set if we get any fatal, and is queryable via a getter + // method. + // + // fUserErrorHandler + // This is the error handler from user + // ----------------------------------------------------------------------- + bool fSawWarning; + bool fSawError; + bool fSawFatal; + ErrorHandler* fUserErrorHandler; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLInternalErrorHandler(const XMLInternalErrorHandler&); + XMLInternalErrorHandler& operator=(const XMLInternalErrorHandler&); +}; + +inline bool XMLInternalErrorHandler::getSawWarning() const +{ + return fSawWarning; +} + +inline bool XMLInternalErrorHandler::getSawError() const +{ + return fSawError; +} + +inline bool XMLInternalErrorHandler::getSawFatal() const +{ + return fSawFatal; +} + +inline void XMLInternalErrorHandler::warning(const SAXParseException& toCatch) +{ + fSawWarning = true; + if (fUserErrorHandler) + fUserErrorHandler->warning(toCatch); +} + +inline void XMLInternalErrorHandler::error(const SAXParseException& toCatch) +{ + fSawError = true; + if (fUserErrorHandler) + fUserErrorHandler->error(toCatch); +} + +inline void XMLInternalErrorHandler::fatalError(const SAXParseException& toCatch) +{ + fSawFatal = true; + if (fUserErrorHandler) + fUserErrorHandler->fatalError(toCatch); +} + +inline void XMLInternalErrorHandler::resetErrors() +{ + fSawWarning = false; + fSawError = false; + fSawFatal = false; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/XMLReader.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/XMLReader.hpp new file mode 100644 index 000000000000..966ca224d6bf --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/XMLReader.hpp @@ -0,0 +1,790 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLREADER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLREADER_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class InputSource; +class BinInputStream; +class ReaderMgr; +class XMLScanner; +class XMLTranscoder; + + +// --------------------------------------------------------------------------- +// Instances of this class are used to manage the content of entities. The +// scanner maintains a stack of these, one for each entity (this means entity +// in the sense of any parsed file or internal entity) currently being +// scanned. This class, given a binary input stream will handle reading in +// the data and decoding it from its external decoding into the internal +// Unicode format. Once internallized, this class provides the access +// methods to read in the data in various ways, maintains line and column +// information, and provides high performance character attribute checking +// methods. +// +// This is NOT to be derived from. +// +// --------------------------------------------------------------------------- +class XMLPARSER_EXPORT XMLReader : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public types + // ----------------------------------------------------------------------- + enum Types + { + Type_PE + , Type_General + }; + + enum Sources + { + Source_Internal + , Source_External + }; + + enum RefFrom + { + RefFrom_Literal + , RefFrom_NonLiteral + }; + + enum XMLVersion + { + XMLV1_0 + , XMLV1_1 + , XMLV_Unknown + }; + + + // ----------------------------------------------------------------------- + // Public, query methods + // ----------------------------------------------------------------------- + bool isAllSpaces + ( + const XMLCh* const toCheck + , const XMLSize_t count + ) const; + + bool containsWhiteSpace + ( + const XMLCh* const toCheck + , const XMLSize_t count + ) const; + + + bool isXMLLetter(const XMLCh toCheck) const; + bool isFirstNameChar(const XMLCh toCheck) const; + bool isNameChar(const XMLCh toCheck) const; + bool isPlainContentChar(const XMLCh toCheck) const; + bool isSpecialStartTagChar(const XMLCh toCheck) const; + bool isXMLChar(const XMLCh toCheck) const; + bool isWhitespace(const XMLCh toCheck) const; + bool isControlChar(const XMLCh toCheck) const; + bool isPublicIdChar(const XMLCh toCheck) const; + bool isFirstNCNameChar(const XMLCh toCheck) const; + bool isNCNameChar(const XMLCh toCheck) const; + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLReader + ( + const XMLCh* const pubId + , const XMLCh* const sysId + , BinInputStream* const streamToAdopt + , const RefFrom from + , const Types type + , const Sources source + , const bool throwAtEnd = false + , const bool calculateSrcOfs = true + , XMLSize_t lowWaterMark = 100 + , const XMLVersion xmlVersion = XMLV1_0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XMLReader + ( + const XMLCh* const pubId + , const XMLCh* const sysId + , BinInputStream* const streamToAdopt + , const XMLCh* const encodingStr + , const RefFrom from + , const Types type + , const Sources source + , const bool throwAtEnd = false + , const bool calculateSrcOfs = true + , XMLSize_t lowWaterMark = 100 + , const XMLVersion xmlVersion = XMLV1_0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XMLReader + ( + const XMLCh* const pubId + , const XMLCh* const sysId + , BinInputStream* const streamToAdopt + , XMLRecognizer::Encodings encodingEnum + , const RefFrom from + , const Types type + , const Sources source + , const bool throwAtEnd = false + , const bool calculateSrcOfs = true + , XMLSize_t lowWaterMark = 100 + , const XMLVersion xmlVersion = XMLV1_0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~XMLReader(); + + + // ----------------------------------------------------------------------- + // Character buffer management methods + // ----------------------------------------------------------------------- + XMLSize_t charsLeftInBuffer() const; + bool refreshCharBuffer(); + + + // ----------------------------------------------------------------------- + // Scanning methods + // ----------------------------------------------------------------------- + bool getName(XMLBuffer& toFill, const bool token); + bool getQName(XMLBuffer& toFill, int* colonPosition); + bool getNCName(XMLBuffer& toFill); + bool getNextChar(XMLCh& chGotten); + bool getNextCharIfNot(const XMLCh chNotToGet, XMLCh& chGotten); + void movePlainContentChars(XMLBuffer &dest); + bool getSpaces(XMLBuffer& toFill); + bool getUpToCharOrWS(XMLBuffer& toFill, const XMLCh toCheck); + bool peekNextChar(XMLCh& chGotten); + bool skipIfQuote(XMLCh& chGotten); + bool skipSpaces(bool& skippedSomething, bool inDecl = false); + bool skippedChar(const XMLCh toSkip); + bool skippedSpace(); + bool skippedString(const XMLCh* const toSkip); + bool skippedStringLong(const XMLCh* toSkip); + bool peekString(const XMLCh* const toPeek); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLFileLoc getColumnNumber() const; + const XMLCh* getEncodingStr() const; + XMLFileLoc getLineNumber() const; + bool getNoMoreFlag() const; + const XMLCh* getPublicId() const; + XMLSize_t getReaderNum() const; + RefFrom getRefFrom() const; + Sources getSource() const; + XMLFilePos getSrcOffset() const; + const XMLCh* getSystemId() const; + bool getThrowAtEnd() const; + Types getType() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + bool setEncoding + ( + const XMLCh* const newEncoding + ); + void setReaderNum(const XMLSize_t newNum); + void setThrowAtEnd(const bool newValue); + void setXMLVersion(const XMLVersion version); + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLReader(const XMLReader&); + XMLReader& operator=(const XMLReader&); + + // --------------------------------------------------------------------------- + // Class Constants + // + // kCharBufSize + // The size of the character spool buffer that we use. Its not terribly + // large because its just getting filled with data from a raw byte + // buffer as we go along. We don't want to decode all the text at + // once before we find out that there is an error. + // + // NOTE: This is a size in characters, not bytes. + // + // kRawBufSize + // The size of the raw buffer from which raw bytes are spooled out + // as we transcode chunks of data. As it is emptied, it is filled back + // in again from the source stream. + // --------------------------------------------------------------------------- + enum Constants + { + kCharBufSize = 16 * 1024 + , kRawBufSize = 48 * 1024 + }; + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void checkForSwapped(); + + void doInitCharSizeChecks(); + + void doInitDecode(); + + XMLByte getNextRawByte + ( + const bool eoiOk + ); + + void refreshRawBuffer(); + + void setTranscoder + ( + const XMLCh* const newEncoding + ); + + XMLSize_t xcodeMoreChars + ( + XMLCh* const bufToFill + , unsigned char* const charSizes + , const XMLSize_t maxChars + ); + + void handleEOL + ( + XMLCh& curCh + , bool inDecl = false + ); + + // ----------------------------------------------------------------------- + // Data members + // + // fCharIndex + // The index into the character buffer. When this hits fCharsAvail + // then its time to refill. + // + // fCharBuf + // A buffer that the reader manager fills up with transcoded + // characters a small amount at a time. + // + // fCharsAvail + // The characters currently available in the character buffer. + // + // fCharSizeBuf + // This buffer is an array that contains the number of source chars + // eaten to create each char in the fCharBuf buffer. So the entry + // fCharSizeBuf[x] is the number of source chars that were eaten + // to make the internalized char fCharBuf[x]. This only contains + // useful data if fSrcOfsSupported is true. + // + // fCharOfsBuf + // This buffer is an array that contains the offset in the + // fRawByteBuf buffer of each char in the fCharBuf buffer. It + // only contains useful data if fSrcOfsSupported is true. + // + // fCurCol + // fCurLine + // The current line and column that we are in within this reader's + // text. + // + // fEncoding + // This is the rough encoding setting. This enum is set during + // construction and just tells us the rough family of encoding that + // we are doing. + // + // fEncodingStr + // This is the name of the encoding we are using. It will be + // provisionally set during construction, from the auto-sensed + // encoding. But it might be overridden when the XMLDecl is finally + // seen by the scanner. It can also be forced to a particular + // encoding, in which case fForcedEncoding is set. + // + // fForcedEncoding + // If the encoding if forced then this is set and all other + // information will be ignored. This encoding will be taken as + // gospel. This is done by calling an alternate constructor. + // + // fNoMore + // This is set when the source text is exhausted. It lets us know + // quickly that no more text is available. + // + // fRawBufIndex + // The current index into the raw byte buffer. When its equal to + // fRawBytesAvail then we need to read another buffer. + // + // fRawByteBuf + // This is the raw byte buffer that is used to spool out bytes + // from into the fCharBuf buffer, as we transcode in blocks. + // + // fRawBytesAvail + // The number of bytes currently available in the raw buffer. This + // helps deal with the last buffer's worth, which will usually not + // be a full one. + // + // fLowWaterMark + // The low water mark for the raw byte buffer. + // + // + // fReaderNum + // Each reader from a particular reader manager (which means from a + // particular document) is given a unique number. The reader manager + // sets these numbers. They are used to catch things like partial + // markup errors. + // + // fRefFrom + // This flag is provided in the ctor, and tells us if we represent + // some entity being expanded inside a literal. Sometimes things + // happen differently inside and outside literals. + // + // fPublicId + // fSystemId + // These are the system and public ids of the source that this + // reader is reading. + // + // fSentTrailingSpace + // If we are a PE entity being read and we not referenced from a + // literal, then a leading and trailing space must be faked into the + // data. This lets us know we've done the trailing space already (so + // we don't just keep doing it again and again.) + // + // fSource + // Indicates whether the content this reader is spooling as already + // been internalized. This will prevent multiple processing of + // whitespace when an already internalized entity is being spooled + // out. + // + // fSpareChar + // Some encodings can create two chars in an atomic way, e.g. + // surrogate pairs. We might not be able to store both, so we store + // it here until the next buffer transcoding operation. + // + // fSrcOfsBase + // This is the base offset within the source of this entity. Values + // in the curent fCharSizeBuf array are relative to this value. + // + // fSrcOfsSupported + // This flag is set to indicate whether source byte offset info + // is supported. For intrinsic encodings, its always set since we + // can always support it. For transcoder based encodings, we ask + // the transcoder if it supports it or not. + // + // fStream + // This is the input stream that provides the data for the reader. + // Its always treated as a raw byte stream. The derived class will + // ask for buffers of text from it and will handle making some + // sense of it. + // + // fSwapped + // If the encoding is one of the ones we do intrinsically, and its + // in a different byte order from our native order, then this is + // set to remind us to byte swap it during transcoding. + // + // fThrowAtEnd + // Indicates whether the reader manager should throw an end of entity + // exception at the end of this reader instance. This is usually + // set for top level external entity references. It overrides the + // reader manager's global flag that controls throwing at the end + // of entities. Defaults to false. + // + // fTranscoder + // If the encoding is not one that we handle intrinsically, then + // we use an an external transcoder to do it. This class is an + // abstraction that allows us to use pluggable external transcoding + // services (via XMLTransService in util.) + // + // fType + // Indicates whether this reader represents a PE or not. If this + // flag is true and the fInLiteral flag is false, then we will put + // out an extra space at the end. + // + // fgCharCharsTable; + // Pointer to XMLChar table, depends on XML version + // + // fNEL + // Boolean indicates if NEL and LSEP should be recognized as NEL + // + // fXMLVersion + // Enum to indicate if this Reader is conforming to XML 1.0 or XML 1.1 + // ----------------------------------------------------------------------- + XMLSize_t fCharIndex; + XMLCh fCharBuf[kCharBufSize]; + XMLSize_t fCharsAvail; + unsigned char fCharSizeBuf[kCharBufSize]; + unsigned int fCharOfsBuf[kCharBufSize]; + XMLFileLoc fCurCol; + XMLFileLoc fCurLine; + XMLRecognizer::Encodings fEncoding; + XMLCh* fEncodingStr; + bool fForcedEncoding; + bool fNoMore; + XMLCh* fPublicId; + XMLSize_t fRawBufIndex; + XMLByte fRawByteBuf[kRawBufSize]; + XMLSize_t fRawBytesAvail; + XMLSize_t fLowWaterMark; + XMLSize_t fReaderNum; + RefFrom fRefFrom; + bool fSentTrailingSpace; + Sources fSource; + XMLFilePos fSrcOfsBase; + bool fSrcOfsSupported; + bool fCalculateSrcOfs; + XMLCh* fSystemId; + BinInputStream* fStream; + bool fSwapped; + bool fThrowAtEnd; + XMLTranscoder* fTranscoder; + Types fType; + XMLByte* fgCharCharsTable; + bool fNEL; + XMLVersion fXMLVersion; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// XMLReader: Public, query methods +// --------------------------------------------------------------------------- +inline bool XMLReader::isNameChar(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gNameCharMask) != 0); +} + +inline bool XMLReader::isNCNameChar(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gNCNameCharMask) != 0); +} + +inline bool XMLReader::isPlainContentChar(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gPlainContentCharMask) != 0); +} + + +inline bool XMLReader::isFirstNameChar(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gFirstNameCharMask) != 0); +} + +inline bool XMLReader::isFirstNCNameChar(const XMLCh toCheck) const +{ + return (((fgCharCharsTable[toCheck] & gFirstNameCharMask) != 0) + && (toCheck != chColon)); +} + +inline bool XMLReader::isSpecialStartTagChar(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gSpecialStartTagCharMask) != 0); +} + +inline bool XMLReader::isXMLChar(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gXMLCharMask) != 0); +} + +inline bool XMLReader::isXMLLetter(const XMLCh toCheck) const +{ + return (((fgCharCharsTable[toCheck] & gFirstNameCharMask) != 0) + && (toCheck != chColon) && (toCheck != chUnderscore)); +} + +inline bool XMLReader::isWhitespace(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gWhitespaceCharMask) != 0); +} + +inline bool XMLReader::isControlChar(const XMLCh toCheck) const +{ + return ((fgCharCharsTable[toCheck] & gControlCharMask) != 0); +} + +// --------------------------------------------------------------------------- +// XMLReader: Buffer management methods +// --------------------------------------------------------------------------- +inline XMLSize_t XMLReader::charsLeftInBuffer() const +{ + return fCharsAvail - fCharIndex; +} + + +// --------------------------------------------------------------------------- +// XMLReader: Getter methods +// --------------------------------------------------------------------------- +inline XMLFileLoc XMLReader::getColumnNumber() const +{ + return fCurCol; +} + +inline const XMLCh* XMLReader::getEncodingStr() const +{ + return fEncodingStr; +} + +inline XMLFileLoc XMLReader::getLineNumber() const +{ + return fCurLine; +} + +inline bool XMLReader::getNoMoreFlag() const +{ + return fNoMore; +} + +inline const XMLCh* XMLReader::getPublicId() const +{ + return fPublicId; +} + +inline XMLSize_t XMLReader::getReaderNum() const +{ + return fReaderNum; +} + +inline XMLReader::RefFrom XMLReader::getRefFrom() const +{ + return fRefFrom; +} + +inline XMLReader::Sources XMLReader::getSource() const +{ + return fSource; +} + +inline const XMLCh* XMLReader::getSystemId() const +{ + return fSystemId; +} + +inline bool XMLReader::getThrowAtEnd() const +{ + return fThrowAtEnd; +} + +inline XMLReader::Types XMLReader::getType() const +{ + return fType; +} + +// --------------------------------------------------------------------------- +// XMLReader: Setter methods +// --------------------------------------------------------------------------- +inline void XMLReader::setReaderNum(const XMLSize_t newNum) +{ + fReaderNum = newNum; +} + +inline void XMLReader::setThrowAtEnd(const bool newValue) +{ + fThrowAtEnd = newValue; +} + +inline void XMLReader::setXMLVersion(const XMLVersion version) +{ + fXMLVersion = version; + if (version == XMLV1_1) { + fNEL = true; + fgCharCharsTable = XMLChar1_1::fgCharCharsTable1_1; + } + else { + fNEL = XMLChar1_0::enableNEL; + fgCharCharsTable = XMLChar1_0::fgCharCharsTable1_0; + } + +} + + + +// --------------------------------------------------------------------------- +// +// XMLReader: movePlainContentChars() +// +// Move as many plain (no special handling of any sort required) content +// characters as possible from this reader to the supplied destination buffer. +// +// This is THE hottest performance spot in the parser. +// +// --------------------------------------------------------------------------- +inline void XMLReader::movePlainContentChars(XMLBuffer &dest) +{ + const XMLSize_t chunkSize = fCharsAvail - fCharIndex; + const XMLCh* cursor = &fCharBuf[fCharIndex]; + XMLSize_t count=0; + for(;count= fCharsAvail) + { + // If fNoMore is set, then we have nothing else to give + if (fNoMore) + return false; + + // Try to refresh + if (!refreshCharBuffer()) + return false; + } + + // Check the next char + if (fCharBuf[fCharIndex] == chNotToGet) + return false; + + // Its not the one we want to skip so bump the index + chGotten = fCharBuf[fCharIndex++]; + + // Handle end of line normalization and line/col member maintenance. + // + // we can have end-of-line combinations with a leading + // chCR(xD), chLF(xA), chNEL(x85), or chLineSeparator(x2028) + // + // 0000000000001101 chCR + // 0000000000001010 chLF + // 0000000010000101 chNEL + // 0010000000101000 chLineSeparator + // ----------------------- + // 1101111101010000 == ~(chCR|chLF|chNEL|chLineSeparator) + // + // if the result of the logical-& operation is + // true : 'curCh' can not be chCR, chLF, chNEL or chLineSeparator + // false : 'curCh' can be chCR, chLF, chNEL or chLineSeparator + // + if ( chGotten & (XMLCh) ~(chCR|chLF|chNEL|chLineSeparator) ) + { + fCurCol++; + } else + { + handleEOL(chGotten, false); + } + + return true; +} + +// --------------------------------------------------------------------------- +// XMLReader: getNextChar() method inlined for speed +// --------------------------------------------------------------------------- +inline bool XMLReader::getNextChar(XMLCh& chGotten) +{ + // + // See if there is at least a char in the buffer. Else, do the buffer + // reload logic. + // + if (fCharIndex >= fCharsAvail) + { + // If fNoMore is set, then we have nothing else to give + if (fNoMore) + return false; + + // Try to refresh + if (!refreshCharBuffer()) + return false; + } + + chGotten = fCharBuf[fCharIndex++]; + + // Handle end of line normalization and line/col member maintenance. + // + // we can have end-of-line combinations with a leading + // chCR(xD), chLF(xA), chNEL(x85), or chLineSeparator(x2028) + // + // 0000000000001101 chCR + // 0000000000001010 chLF + // 0000000010000101 chNEL + // 0010000000101000 chLineSeparator + // ----------------------- + // 1101111101010000 == ~(chCR|chLF|chNEL|chLineSeparator) + // + // if the result of the logical-& operation is + // true : 'curCh' can not be chCR, chLF, chNEL or chLineSeparator + // false : 'curCh' can be chCR, chLF, chNEL or chLineSeparator + // + if ( chGotten & (XMLCh) ~(chCR|chLF|chNEL|chLineSeparator) ) + { + fCurCol++; + } else + { + handleEOL(chGotten, false); + } + + return true; +} + + +// --------------------------------------------------------------------------- +// XMLReader: peekNextChar() method inlined for speed +// --------------------------------------------------------------------------- +inline bool XMLReader::peekNextChar(XMLCh& chGotten) +{ + // + // If there is something still in the buffer, get it. Else do the reload + // scenario. + // + if (fCharIndex >= fCharsAvail) + { + // Try to refresh the buffer + if (!refreshCharBuffer()) + { + chGotten = chNull; + return false; + } + } + + chGotten = fCharBuf[fCharIndex]; + + // + // Even though we are only peeking, we have to act the same as the + // normal char get method in regards to newline normalization, though + // its not as complicated as the actual character getting method's. + // + if ((chGotten == chCR || (fNEL && (chGotten == chNEL || chGotten == chLineSeparator))) + && (fSource == Source_External)) + chGotten = chLF; + + return true; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/XMLScanner.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/XMLScanner.hpp new file mode 100644 index 000000000000..c8bdaf1fcfad --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/XMLScanner.hpp @@ -0,0 +1,1448 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLSCANNER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLSCANNER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class InputSource; +class XMLDocumentHandler; +class XMLEntityHandler; +class ErrorHandler; +class DocTypeHandler; +class XMLPScanToken; +class XMLStringPool; +class Grammar; +class XMLValidator; +class MemoryManager; +class PSVIHandler; + + +struct PSVIElemContext +{ + bool fIsSpecified; + bool fErrorOccurred; + int fElemDepth; + int fFullValidationDepth; + int fNoneValidationDepth; + DatatypeValidator* fCurrentDV; + ComplexTypeInfo* fCurrentTypeInfo; + const XMLCh* fNormalizedValue; +}; + +// This is the mondo scanner class, which does the vast majority of the +// work of parsing. It handles reading in input and spitting out events +// to installed handlers. +class XMLPARSER_EXPORT XMLScanner : public XMemory, public XMLBufferFullHandler +{ +public : + // ----------------------------------------------------------------------- + // Public class types + // + // NOTE: These should really be private, but some of the compilers we + // have to deal with are too stupid to understand this. + // + // DeclTypes + // Used by scanXMLDecl() to know what type of decl it should scan. + // Text decls have slightly different rules from XMLDecls. + // + // EntityExpRes + // These are the values returned from the entity expansion method, + // to indicate how it went. + // + // XMLTokens + // These represent the possible types of input we can get while + // scanning content. + // + // ValScheme + // This indicates what the scanner should do in terms of validation. + // 'Auto' means if there is any int/ext subset, then validate. Else, + // don't. + // ----------------------------------------------------------------------- + enum DeclTypes + { + Decl_Text + , Decl_XML + }; + + enum EntityExpRes + { + EntityExp_Pushed + , EntityExp_Returned + , EntityExp_Failed + }; + + enum XMLTokens + { + Token_CData + , Token_CharData + , Token_Comment + , Token_EndTag + , Token_EOF + , Token_PI + , Token_StartTag + , Token_Unknown + }; + + enum ValSchemes + { + Val_Never + , Val_Always + , Val_Auto + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLScanner + ( + XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + XMLScanner + ( + XMLDocumentHandler* const docHandler + , DocTypeHandler* const docTypeHandler + , XMLEntityHandler* const entityHandler + , XMLErrorReporter* const errReporter + , XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~XMLScanner(); + + + // ----------------------------------------------------------------------- + // Error emitter methods + // ----------------------------------------------------------------------- + bool emitErrorWillThrowException(const XMLErrs::Codes toEmit); + void emitError(const XMLErrs::Codes toEmit); + void emitError + ( + const XMLErrs::Codes toEmit + , const XMLCh* const text1 + , const XMLCh* const text2 = 0 + , const XMLCh* const text3 = 0 + , const XMLCh* const text4 = 0 + ); + void emitError + ( + const XMLErrs::Codes toEmit + , const char* const text1 + , const char* const text2 = 0 + , const char* const text3 = 0 + , const char* const text4 = 0 + ); + void emitError + ( + const XMLErrs::Codes toEmit + , const XMLExcepts::Codes originalErrorCode + , const XMLCh* const text1 = 0 + , const XMLCh* const text2 = 0 + , const XMLCh* const text3 = 0 + , const XMLCh* const text4 = 0 + + ); + + // ----------------------------------------------------------------------- + // Implementation of XMLBufferFullHandler interface + // ----------------------------------------------------------------------- + + virtual bool bufferFull(XMLBuffer& toSend) + { + sendCharData(toSend); + return true; + } + + virtual Grammar::GrammarType getCurrentGrammarType() const; + + // ----------------------------------------------------------------------- + // Public pure virtual methods + // ----------------------------------------------------------------------- + virtual const XMLCh* getName() const = 0; + virtual NameIdPool* getEntityDeclPool() = 0; + virtual const NameIdPool* getEntityDeclPool() const = 0; + virtual void scanDocument + ( + const InputSource& src + ) = 0; + virtual bool scanNext(XMLPScanToken& toFill) = 0; + virtual Grammar* loadGrammar + ( + const InputSource& src + , const short grammarType + , const bool toCache = false + ) = 0; + + virtual void resetCachedGrammar (); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const XMLDocumentHandler* getDocHandler() const; + XMLDocumentHandler* getDocHandler(); + const DocTypeHandler* getDocTypeHandler() const; + DocTypeHandler* getDocTypeHandler(); + bool getDoNamespaces() const; + ValSchemes getValidationScheme() const; + bool getDoSchema() const; + bool getValidationSchemaFullChecking() const; + bool getIdentityConstraintChecking() const; + const XMLEntityHandler* getEntityHandler() const; + XMLEntityHandler* getEntityHandler(); + const XMLErrorReporter* getErrorReporter() const; + XMLErrorReporter* getErrorReporter(); + const ErrorHandler* getErrorHandler() const; + ErrorHandler* getErrorHandler(); + const PSVIHandler* getPSVIHandler() const; + PSVIHandler* getPSVIHandler(); + bool getExitOnFirstFatal() const; + bool getValidationConstraintFatal() const; + RefHashTableOf* getIDRefList(); + const RefHashTableOf* getIDRefList() const; + + ValidationContext* getValidationContext(); + + bool getInException() const; + /*bool getLastExtLocation + ( + XMLCh* const sysIdToFill + , const unsigned int maxSysIdChars + , XMLCh* const pubIdToFill + , const unsigned int maxPubIdChars + , XMLSSize_t& lineToFill + , XMLSSize_t& colToFill + ) const;*/ + const Locator* getLocator() const; + const ReaderMgr* getReaderMgr() const; + XMLFilePos getSrcOffset() const; + bool getStandalone() const; + const XMLValidator* getValidator() const; + XMLValidator* getValidator(); + int getErrorCount(); + const XMLStringPool* getURIStringPool() const; + XMLStringPool* getURIStringPool(); + bool getHasNoDTD() const; + XMLCh* getExternalSchemaLocation() const; + XMLCh* getExternalNoNamespaceSchemaLocation() const; + SecurityManager* getSecurityManager() const; + bool getDisallowDTD() const; + bool getLoadExternalDTD() const; + bool getLoadSchema() const; + bool getNormalizeData() const; + bool isCachingGrammarFromParse() const; + bool isUsingCachedGrammarInParse() const; + bool getCalculateSrcOfs() const; + Grammar* getRootGrammar() const; + XMLReader::XMLVersion getXMLVersion() const; + MemoryManager* getMemoryManager() const; + ValueVectorOf* getNamespaceContext() const; + unsigned int getPrefixId(const XMLCh* const prefix) const; + const XMLCh* getPrefixForId(unsigned int prefId) const; + + // Return is a reference so that we can return it as void* from + // getProperty. + // + const XMLSize_t& getLowWaterMark() const; + + bool getGenerateSyntheticAnnotations() const; + bool getValidateAnnotations() const; + bool getIgnoreCachedDTD() const; + bool getIgnoreAnnotations() const; + bool getDisableDefaultEntityResolution() const; + bool getSkipDTDValidation() const; + bool getHandleMultipleImports() const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * When an attribute name has no prefix, unlike elements, it is not mapped + * to the global namespace. So, in order to have something to map it to + * for practical purposes, a id for an empty URL is created and used for + * such names. + * + * @return The URL pool id of the URL for an empty URL "". + */ + unsigned int getEmptyNamespaceId() const; + + /** + * When a prefix is found that has not been mapped, an error is issued. + * However, if the parser has been instructed not to stop on the first + * fatal error, it needs to be able to continue. To do so, it will map + * that prefix tot his magic unknown namespace id. + * + * @return The URL pool id of the URL for the unknown prefix + * namespace. + */ + unsigned int getUnknownNamespaceId() const; + + /** + * The prefix 'xml' is a magic prefix, defined by the XML spec and + * requiring no prior definition. This method returns the id for the + * intrinsically defined URL for this prefix. + * + * @return The URL pool id of the URL for the 'xml' prefix. + */ + unsigned int getXMLNamespaceId() const; + + /** + * The prefix 'xmlns' is a magic prefix, defined by the namespace spec + * and requiring no prior definition. This method returns the id for the + * intrinsically defined URL for this prefix. + * + * @return The URL pool id of the URL for the 'xmlns' prefix. + */ + unsigned int getXMLNSNamespaceId() const; + + /** + * This method find the passed URI id in its URI pool and + * copy the text of that URI into the passed buffer. + */ + bool getURIText + ( + const unsigned int uriId + , XMLBuffer& uriBufToFill + ) const; + + const XMLCh* getURIText(const unsigned int uriId) const; + + /* tell if the validator comes from user */ + bool isValidatorFromUser(); + + /* tell if standard URI are forced */ + bool getStandardUriConformant() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void addGlobalPrefix(const XMLCh* const prefix, const unsigned int uriId); + void setDocHandler(XMLDocumentHandler* const docHandler); + void setDocTypeHandler(DocTypeHandler* const docTypeHandler); + void setDoNamespaces(const bool doNamespaces); + void setEntityHandler(XMLEntityHandler* const docTypeHandler); + void setErrorReporter(XMLErrorReporter* const errHandler); + void setErrorHandler(ErrorHandler* const handler); + void setPSVIHandler(PSVIHandler* const handler); + void setURIStringPool(XMLStringPool* const stringPool); + void setExitOnFirstFatal(const bool newValue); + void setValidationConstraintFatal(const bool newValue); + void setValidationScheme(const ValSchemes newScheme); + void setValidator(XMLValidator* const valToAdopt); + void setDoSchema(const bool doSchema); + void setValidationSchemaFullChecking(const bool schemaFullChecking); + void setIdentityConstraintChecking(const bool identityConstraintChecking); + void setHasNoDTD(const bool hasNoDTD); + void cacheGrammarFromParse(const bool newValue); + void useCachedGrammarInParse(const bool newValue); + void setRootElemName(XMLCh* rootElemName); + void setExternalSchemaLocation(const XMLCh* const schemaLocation); + void setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation); + void setExternalSchemaLocation(const char* const schemaLocation); + void setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation); + void setSecurityManager(SecurityManager* const securityManager); + void setDisallowDTD(const bool disallowDTD); + void setLoadExternalDTD(const bool loadDTD); + void setLoadSchema(const bool loadSchema); + void setNormalizeData(const bool normalizeData); + void setCalculateSrcOfs(const bool newValue); + void setParseSettings(XMLScanner* const refScanner); + void setStandardUriConformant(const bool newValue); + void setInputBufferSize(const XMLSize_t bufferSize); + void setLowWaterMark(XMLSize_t newValue); + + void setGenerateSyntheticAnnotations(const bool newValue); + void setValidateAnnotations(const bool newValue); + void setIgnoredCachedDTD(const bool newValue); + void setIgnoreAnnotations(const bool newValue); + void setDisableDefaultEntityResolution(const bool newValue); + void setSkipDTDValidation(const bool newValue); + void setHandleMultipleImports(const bool newValue); + + // ----------------------------------------------------------------------- + // Mutator methods + // ----------------------------------------------------------------------- + void incrementErrorCount(void); // For use by XMLValidator + + // ----------------------------------------------------------------------- + // Document scanning methods + // + // scanDocument() does the entire source document. scanFirst(), + // scanNext(), and scanReset() support a progressive parse. + // ----------------------------------------------------------------------- + void scanDocument + ( + const XMLCh* const systemId + ); + void scanDocument + ( + const char* const systemId + ); + + bool scanFirst + ( + const InputSource& src + , XMLPScanToken& toFill + ); + bool scanFirst + ( + const XMLCh* const systemId + , XMLPScanToken& toFill + ); + bool scanFirst + ( + const char* const systemId + , XMLPScanToken& toFill + ); + + void scanReset(XMLPScanToken& toFill); + + bool checkXMLDecl(bool startWithAngle); + + // ----------------------------------------------------------------------- + // Grammar preparsing methods + // ----------------------------------------------------------------------- + Grammar* loadGrammar + ( + const XMLCh* const systemId + , const short grammarType + , const bool toCache = false + ); + Grammar* loadGrammar + ( + const char* const systemId + , const short grammarType + , const bool toCache = false + ); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + unsigned int resolveQName + ( + const XMLCh* const qName + , XMLBuffer& prefixBufToFill + , const ElemStack::MapModes mode + , int& prefixColonPos + ); + +protected: + // ----------------------------------------------------------------------- + // Protected pure virtual methods + // ----------------------------------------------------------------------- + virtual void scanCDSection() = 0; + virtual void scanCharData(XMLBuffer& toToUse) = 0; + virtual EntityExpRes scanEntityRef + ( + const bool inAttVal + , XMLCh& firstCh + , XMLCh& secondCh + , bool& escaped + ) = 0; + virtual void scanDocTypeDecl() = 0; + virtual void scanReset(const InputSource& src) = 0; + virtual void sendCharData(XMLBuffer& toSend) = 0; + + //return owned by the caller + virtual InputSource* resolveSystemId(const XMLCh* const /*sysId*/ + ,const XMLCh* const /*pubId*/) {return 0;}; + + // ----------------------------------------------------------------------- + // Protected scanning methods + // ----------------------------------------------------------------------- + bool scanCharRef(XMLCh& toFill, XMLCh& second); + void scanComment(); + bool scanEq(bool inDecl = false); + void scanMiscellaneous(); + void scanPI(); + void scanProlog(); + void scanXMLDecl(const DeclTypes type); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void checkInternalDTD(bool hasExtSubset, const XMLCh* const sysId, const XMLCh* const pubId); + void checkIDRefs(); + bool isLegalToken(const XMLPScanToken& toCheck); + XMLTokens senseNextToken(XMLSize_t& orgReader); + void initValidator(XMLValidator* theValidator); + inline void resetValidationContext(); + unsigned int *getNewUIntPtr(); + void resetUIntPool(); + void recreateUIntPool(); + unsigned int resolvePrefix + ( + const XMLCh* const prefix + , const ElemStack::MapModes mode + ); + unsigned int resolveQNameWithColon + ( + const XMLCh* const qName + , XMLBuffer& prefixBufToFill + , const ElemStack::MapModes mode + , const int prefixColonPos + ); + + inline + void setAttrDupChkRegistry + ( + const XMLSize_t &attrNumber + , bool &toUseHashTable + ); + + // ----------------------------------------------------------------------- + // Data members + // + // fBufferSize + // Maximum input buffer size + // + // fLowWaterMark + // The low water mark for the raw byte buffer. + // + // fAttrList + // Every time we get a new element start tag, we have to pass to + // the document handler the attributes found. To make it more + // efficient we keep this ref vector of XMLAttr objects around. We + // just reuse it over and over, allowing it to grow to meet the + // peak need. + // + // fBufMgr + // This is a manager for temporary buffers used during scanning. + // For efficiency we must use a set of static buffers, but we have + // to insure that they are not incorrectly reused. So this manager + // provides the smarts to hand out buffers as required. + // + // fDocHandler + // The client code's document handler. If zero, then no document + // handler callouts are done. We don't adopt it. + // + // fDocTypeHandler + // The client code's document type handler (used by DTD Validator). + // + // fDoNamespaces + // This flag indicates whether the client code wants us to do + // namespaces or not. If the installed validator indicates that it + // has to do namespaces, then this is ignored. + // + // fEntityHandler + // The client code's entity handler. If zero, then no entity handler + // callouts are done. We don't adopt it. + // + // fErrorReporter + // The client code's error reporter. If zero, then no error reporter + // callouts are done. We don't adopt it. + // + // fErrorHandler + // The client code's error handler. Need to store this info for + // Schema parse error handling. + // + // fPSVIHandler + // The client code's PSVI handler. + // + // fExitOnFirstFatal + // This indicates whether we bail out on the first fatal XML error + // or not. It defaults to true, which is the strict XML way, but it + // can be changed. + // + // fValidationConstraintFatal + // This indicates whether we treat validation constraint errors as + // fatal errors or not. It defaults to false, but it can be changed. + // + // fIDRefList + // This is a list of XMLRefInfo objects. This member lets us do all + // needed ID-IDREF balancing checks. + // + // fInException + // To avoid a circular freakout when we catch an exception and emit + // it, which would normally throw again if the 'fail on first error' + // flag is one. + // + // fReaderMgr + // This is the reader manager, from which we get characters. It + // manages the reader stack for us, and provides a lot of convenience + // methods to do specialized checking for chars, sequences of chars, + // skipping chars, etc... + // + // fScannerId + // fSequenceId + // These are used for progressive parsing, to make sure that the + // client code does the right thing at the right time. + // + // fStandalone + // Indicates whether the document is standalone or not. Defaults to + // no, but can be overridden in the XMLDecl. + // + // fHasNoDTD + // Indicates the document has no DTD or has only an internal DTD subset + // which contains no parameter entity references. + // + // fValidate + // Indicates whether any validation should be done. This is defined + // by the existence of a Grammar together with fValScheme. + // + // fValidator + // The installed validator. We look at them via the abstract + // validator interface, and don't know what it actual is. + // Either point to user's installed validator, or fDTDValidator + // or fSchemaValidator. + // + // fValidatorFromUser + // This flag indicates whether the validator was installed from + // user. If false, then the validator was created by the Scanner. + // + // fValScheme + // This is the currently set validation scheme. It defaults to + // 'never', but can be set by the client. + // + // fErrorCount + // The number of errors we've encountered. + // + // fDoSchema + // This flag indicates whether the client code wants Schema to + // be processed or not. + // + // fSchemaFullChecking + // This flag indicates whether the client code wants full Schema + // constraint checking. + // + // fIdentityConstraintChecking + // This flag indicates whether the client code wants Identity + // Constraint checking, defaulted to true to maintain backward + // compatibility (to minimize supprise) + // + // fAttName + // fAttValue + // fCDataBuf + // fNameBuf + // fQNameBuf + // fPrefixBuf + // For the most part, buffers are obtained from the fBufMgr object + // on the fly. However, for the start tag scan, we have a set of + // fixed buffers for performance reasons. These are used a lot and + // there are a number of them, so asking the buffer manager each + // time for new buffers is a bit too much overhead. + // + // fEmptyNamespaceId + // This is the id of the empty namespace URI. This is a special one + // because of the xmlns="" type of deal. We have to quickly sense + // that its the empty namespace. + // + // fUnknownNamespaceId + // This is the id of the namespace URI which is assigned to the + // global namespace. Its for debug purposes only, since there is no + // real global namespace URI. Its set by the derived class. + // + // fXMLNamespaceId + // fXMLNSNamespaceId + // These are the ids of the namespace URIs which are assigned to the + // 'xml' and 'xmlns' special prefixes. The former is officially + // defined but the latter is not, so we just provide one for debug + // purposes. + // + // fSchemaNamespaceId + // This is the id of the schema namespace URI. + // + // fGrammarResolver + // Grammar Pool that stores all the grammars. Key is namespace for + // schema and system id for external DTD. When caching a grammar, if + // a grammar is already in the pool, it will be replaced with the + // new parsed one. + // + // fGrammar + // Current Grammar used by the Scanner and Validator + // + // fRootGrammar + // The grammar where the root element is declared. + // + // fGrammarType + // Current Grammar Type. Store this value instead of calling getGrammarType + // all the time for faster performance. + // + // fURIStringPool + // This is a pool for URIs with unique ids assigned. We use a standard + // string pool class. This pool is going to be shared by all Grammar. + // Use only if namespace is turned on. + // + // fRootElemName + // No matter we are using DTD or Schema Grammar, if a DOCTYPE exists, + // we need to verify the root element name. So store the rootElement + // that is used in the DOCTYPE in the Scanner instead of in the DTDGrammar + // where it used to + // + // fExternalSchemaLocation + // The list of Namespace/SchemaLocation that was specified externally + // using setExternalSchemaLocation. + // + // fExternalNoNamespaceSchemaLocation + // The no target namespace XML Schema Location that was specified + // externally using setExternalNoNamespaceSchemaLocation. + // + // fSecurityManager + // The SecurityManager instance; as and when set by the application. + // + // fEntityExpansionLimit + // The number of entity expansions to be permitted while processing this document + // Only meaningful when fSecurityManager != 0 + // + // fEntityExpansionCount + // The number of general entities expanded so far in this document. + // Only meaningful when fSecurityManager != null + // + // fDisallowDTD + // This flag indicates whether the presence of a DTD should be fatal + // + // fLoadExternalDTD + // This flag indicates whether the external DTD be loaded or not + // + // fLoadSchema + // This flag indicates whether the parser should attempt to load + // schemas if they cannot be found in the grammar pool. + // + // fNormalizeData + // This flag indicates whether the parser should perform datatype + // normalization that is defined in the schema. + // + // fCalculateSrcOfs + // This flag indicates the parser should calculate the source offset. + // Turning this on may impact performance. + // + // fStandardUriConformant + // This flag controls whether we force conformant URI + // + // fXMLVersion + // Enum to indicate if the main doc is XML 1.1 or XML 1.0 conformant + // fUIntPool + // pool of unsigned integers to help with duplicate attribute + // detection and filling in default/fixed attributes + // fUIntPoolRow + // current row in fUIntPool + // fUIntPoolCol + // current column in row + // fUIntPoolRowTotal + // total number of rows in table + // + // fMemoryManager + // Pluggable memory manager for dynamic allocation/deallocation. + // + // ----------------------------------------------------------------------- + XMLSize_t fBufferSize; + XMLSize_t fLowWaterMark; + bool fStandardUriConformant; + bool fCalculateSrcOfs; + bool fDoNamespaces; + bool fExitOnFirstFatal; + bool fValidationConstraintFatal; + bool fInException; + bool fStandalone; + bool fHasNoDTD; + bool fValidate; + bool fValidatorFromUser; + bool fDoSchema; + bool fSchemaFullChecking; + bool fIdentityConstraintChecking; + bool fToCacheGrammar; + bool fUseCachedGrammar; + bool fDisallowDTD; + bool fLoadExternalDTD; + bool fLoadSchema; + bool fNormalizeData; + bool fGenerateSyntheticAnnotations; + bool fValidateAnnotations; + bool fIgnoreCachedDTD; + bool fIgnoreAnnotations; + bool fDisableDefaultEntityResolution; + bool fSkipDTDValidation; + bool fHandleMultipleImports; + int fErrorCount; + XMLSize_t fEntityExpansionLimit; + XMLSize_t fEntityExpansionCount; + unsigned int fEmptyNamespaceId; + unsigned int fUnknownNamespaceId; + unsigned int fXMLNamespaceId; + unsigned int fXMLNSNamespaceId; + unsigned int fSchemaNamespaceId; + unsigned int ** fUIntPool; + unsigned int fUIntPoolRow; + unsigned int fUIntPoolCol; + unsigned int fUIntPoolRowTotal; + XMLUInt32 fScannerId; + XMLUInt32 fSequenceId; + RefVectorOf* fAttrList; + RefHash2KeysTableOf* fAttrDupChkRegistry; + XMLDocumentHandler* fDocHandler; + DocTypeHandler* fDocTypeHandler; + XMLEntityHandler* fEntityHandler; + XMLErrorReporter* fErrorReporter; + ErrorHandler* fErrorHandler; + PSVIHandler* fPSVIHandler; + ValidationContext *fValidationContext; + bool fEntityDeclPoolRetrieved; + ReaderMgr fReaderMgr; + XMLValidator* fValidator; + ValSchemes fValScheme; + GrammarResolver* const fGrammarResolver; + MemoryManager* const fGrammarPoolMemoryManager; + Grammar* fGrammar; + Grammar* fRootGrammar; + XMLStringPool* fURIStringPool; + XMLCh* fRootElemName; + XMLCh* fExternalSchemaLocation; + XMLCh* fExternalNoNamespaceSchemaLocation; + SecurityManager* fSecurityManager; + XMLReader::XMLVersion fXMLVersion; + MemoryManager* fMemoryManager; + XMLBufferMgr fBufMgr; + XMLBuffer fAttNameBuf; + XMLBuffer fAttValueBuf; + XMLBuffer fCDataBuf; + XMLBuffer fQNameBuf; + XMLBuffer fPrefixBuf; + XMLBuffer fURIBuf; + XMLBuffer fWSNormalizeBuf; + ElemStack fElemStack; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLScanner(); + XMLScanner(const XMLScanner&); + XMLScanner& operator=(const XMLScanner&); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void commonInit(); + void cleanUp(); + + // ----------------------------------------------------------------------- + // Private scanning methods + // ----------------------------------------------------------------------- + bool getQuotedString(XMLBuffer& toFill); + XMLSize_t scanUpToWSOr + ( + XMLBuffer& toFill + , const XMLCh chEndChar + ); +}; + +// --------------------------------------------------------------------------- +// XMLScanner: Getter methods +// --------------------------------------------------------------------------- +inline const XMLDocumentHandler* XMLScanner::getDocHandler() const +{ + return fDocHandler; +} + +inline XMLDocumentHandler* XMLScanner::getDocHandler() +{ + return fDocHandler; +} + +inline const DocTypeHandler* XMLScanner::getDocTypeHandler() const +{ + return fDocTypeHandler; +} + +inline DocTypeHandler* XMLScanner::getDocTypeHandler() +{ + return fDocTypeHandler; +} + +inline bool XMLScanner::getDoNamespaces() const +{ + return fDoNamespaces; +} + +inline const XMLEntityHandler* XMLScanner::getEntityHandler() const +{ + return fEntityHandler; +} + +inline XMLEntityHandler* XMLScanner::getEntityHandler() +{ + return fEntityHandler; +} + +inline const XMLErrorReporter* XMLScanner::getErrorReporter() const +{ + return fErrorReporter; +} + +inline XMLErrorReporter* XMLScanner::getErrorReporter() +{ + return fErrorReporter; +} + +inline const ErrorHandler* XMLScanner::getErrorHandler() const +{ + return fErrorHandler; +} + +inline ErrorHandler* XMLScanner::getErrorHandler() +{ + return fErrorHandler; +} + +inline const PSVIHandler* XMLScanner::getPSVIHandler() const +{ + return fPSVIHandler; +} + +inline PSVIHandler* XMLScanner::getPSVIHandler() +{ + return fPSVIHandler; +} + +inline bool XMLScanner::getExitOnFirstFatal() const +{ + return fExitOnFirstFatal; +} + +inline bool XMLScanner::getValidationConstraintFatal() const +{ + return fValidationConstraintFatal; +} + +inline bool XMLScanner::getInException() const +{ + return fInException; +} + +inline RefHashTableOf* XMLScanner::getIDRefList() +{ + return fValidationContext->getIdRefList(); +} + +inline const RefHashTableOf* XMLScanner::getIDRefList() const +{ + return fValidationContext->getIdRefList(); +} + +inline ValidationContext* XMLScanner::getValidationContext() +{ + if (!fEntityDeclPoolRetrieved) + { + fValidationContext->setEntityDeclPool(getEntityDeclPool()); + fEntityDeclPoolRetrieved = true; + } + + return fValidationContext; +} + +inline const Locator* XMLScanner::getLocator() const +{ + return &fReaderMgr; +} + +inline const ReaderMgr* XMLScanner::getReaderMgr() const +{ + return &fReaderMgr; +} + +inline XMLFilePos XMLScanner::getSrcOffset() const +{ + return fReaderMgr.getSrcOffset(); +} + +inline bool XMLScanner::getStandalone() const +{ + return fStandalone; +} + +inline XMLScanner::ValSchemes XMLScanner::getValidationScheme() const +{ + return fValScheme; +} + +inline const XMLValidator* XMLScanner::getValidator() const +{ + return fValidator; +} + +inline XMLValidator* XMLScanner::getValidator() +{ + return fValidator; +} + +inline bool XMLScanner::getDoSchema() const +{ + return fDoSchema; +} + +inline bool XMLScanner::getValidationSchemaFullChecking() const +{ + return fSchemaFullChecking; +} + +inline bool XMLScanner::getIdentityConstraintChecking() const +{ + return fIdentityConstraintChecking; +} + +inline int XMLScanner::getErrorCount() +{ + return fErrorCount; +} + +inline bool XMLScanner::isValidatorFromUser() +{ + return fValidatorFromUser; +} + +inline unsigned int XMLScanner::getEmptyNamespaceId() const +{ + return fEmptyNamespaceId; +} + +inline unsigned int XMLScanner::getUnknownNamespaceId() const +{ + return fUnknownNamespaceId; +} + +inline unsigned int XMLScanner::getXMLNamespaceId() const +{ + return fXMLNamespaceId; +} + +inline unsigned int XMLScanner::getXMLNSNamespaceId() const +{ + return fXMLNSNamespaceId; +} + +inline const XMLStringPool* XMLScanner::getURIStringPool() const +{ + return fURIStringPool; +} + +inline XMLStringPool* XMLScanner::getURIStringPool() +{ + return fURIStringPool; +} + +inline bool XMLScanner::getHasNoDTD() const +{ + return fHasNoDTD; +} + +inline XMLCh* XMLScanner::getExternalSchemaLocation() const +{ + return fExternalSchemaLocation; +} + +inline XMLCh* XMLScanner::getExternalNoNamespaceSchemaLocation() const +{ + return fExternalNoNamespaceSchemaLocation; +} + +inline SecurityManager* XMLScanner::getSecurityManager() const +{ + return fSecurityManager; +} + +inline bool XMLScanner::getDisallowDTD() const +{ + return fDisallowDTD; +} + +inline bool XMLScanner::getLoadExternalDTD() const +{ + return fLoadExternalDTD; +} + +inline bool XMLScanner::getLoadSchema() const +{ + return fLoadSchema; +} + +inline bool XMLScanner::getNormalizeData() const +{ + return fNormalizeData; +} + +inline bool XMLScanner::isCachingGrammarFromParse() const +{ + return fToCacheGrammar; +} + +inline bool XMLScanner::isUsingCachedGrammarInParse() const +{ + return fUseCachedGrammar; +} + +inline bool XMLScanner::getCalculateSrcOfs() const +{ + return fCalculateSrcOfs; +} + +inline Grammar* XMLScanner::getRootGrammar() const +{ + return fRootGrammar; +} + +inline bool XMLScanner::getStandardUriConformant() const +{ + return fStandardUriConformant; +} + +inline XMLReader::XMLVersion XMLScanner::getXMLVersion() const +{ + return fXMLVersion; +} + +inline MemoryManager* XMLScanner::getMemoryManager() const +{ + return fMemoryManager; +} + +inline ValueVectorOf* XMLScanner::getNamespaceContext() const +{ + return fElemStack.getNamespaceMap(); +} + +inline unsigned int XMLScanner::getPrefixId(const XMLCh* const prefix) const +{ + return fElemStack.getPrefixId(prefix); +} + +inline const XMLCh* XMLScanner::getPrefixForId(unsigned int prefId) const +{ + return fElemStack.getPrefixForId(prefId); +} + +inline bool XMLScanner::getGenerateSyntheticAnnotations() const +{ + return fGenerateSyntheticAnnotations; +} + +inline bool XMLScanner::getValidateAnnotations() const +{ + return fValidateAnnotations; +} + +inline const XMLSize_t& XMLScanner::getLowWaterMark() const +{ + return fLowWaterMark; +} + +inline bool XMLScanner::getIgnoreCachedDTD() const +{ + return fIgnoreCachedDTD; +} + +inline bool XMLScanner::getIgnoreAnnotations() const +{ + return fIgnoreAnnotations; +} + +inline bool XMLScanner::getDisableDefaultEntityResolution() const +{ + return fDisableDefaultEntityResolution; +} + +inline bool XMLScanner::getSkipDTDValidation() const +{ + return fSkipDTDValidation; +} + +inline bool XMLScanner::getHandleMultipleImports() const +{ + return fHandleMultipleImports; +} + +// --------------------------------------------------------------------------- +// XMLScanner: Setter methods +// --------------------------------------------------------------------------- +inline void XMLScanner::addGlobalPrefix(const XMLCh* const prefix, const unsigned int uriId) +{ + fElemStack.addGlobalPrefix(prefix, uriId); +} + +inline void XMLScanner::setDocHandler(XMLDocumentHandler* const docHandler) +{ + fDocHandler = docHandler; +} + +inline void XMLScanner::setDocTypeHandler(DocTypeHandler* const docTypeHandler) +{ + fDocTypeHandler = docTypeHandler; +} + +inline void XMLScanner::setErrorHandler(ErrorHandler* const handler) +{ + fErrorHandler = handler; +} + +inline void XMLScanner::setPSVIHandler(PSVIHandler* const handler) +{ + fPSVIHandler = handler; +} + +inline void XMLScanner::setEntityHandler(XMLEntityHandler* const entityHandler) +{ + fEntityHandler = entityHandler; + fReaderMgr.setEntityHandler(entityHandler); +} + +inline void XMLScanner::setErrorReporter(XMLErrorReporter* const errHandler) +{ + fErrorReporter = errHandler; +} + +inline void XMLScanner::setExitOnFirstFatal(const bool newValue) +{ + fExitOnFirstFatal = newValue; +} + + +inline void XMLScanner::setValidationConstraintFatal(const bool newValue) +{ + fValidationConstraintFatal = newValue; +} + +inline void XMLScanner::setValidationScheme(const ValSchemes newScheme) +{ + fValScheme = newScheme; + + // validation flag for Val_Auto is set to false by default, + // and will be turned to true if a grammar is seen + if (fValScheme == Val_Always) + fValidate = true; + else + fValidate = false; +} + +inline void XMLScanner::setDoSchema(const bool doSchema) +{ + fDoSchema = doSchema; +} + +inline void XMLScanner::setDoNamespaces(const bool doNamespaces) +{ + fDoNamespaces = doNamespaces; +} + +inline void XMLScanner::setValidationSchemaFullChecking(const bool schemaFullChecking) +{ + fSchemaFullChecking = schemaFullChecking; +} + +inline void XMLScanner::setIdentityConstraintChecking(const bool identityConstraintChecking) +{ + fIdentityConstraintChecking = identityConstraintChecking; +} + +inline void XMLScanner::setHasNoDTD(const bool hasNoDTD) +{ + fHasNoDTD = hasNoDTD; +} + +inline void XMLScanner::setRootElemName(XMLCh* rootElemName) +{ + fMemoryManager->deallocate(fRootElemName);//delete [] fRootElemName; + fRootElemName = XMLString::replicate(rootElemName, fMemoryManager); +} + +inline void XMLScanner::setExternalSchemaLocation(const XMLCh* const schemaLocation) +{ + fMemoryManager->deallocate(fExternalSchemaLocation);//delete [] fExternalSchemaLocation; + fExternalSchemaLocation = XMLString::replicate(schemaLocation, fMemoryManager); +} + +inline void XMLScanner::setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation) +{ + fMemoryManager->deallocate(fExternalNoNamespaceSchemaLocation);//delete [] fExternalNoNamespaceSchemaLocation; + fExternalNoNamespaceSchemaLocation = XMLString::replicate(noNamespaceSchemaLocation, fMemoryManager); +} + +inline void XMLScanner::setExternalSchemaLocation(const char* const schemaLocation) +{ + fMemoryManager->deallocate(fExternalSchemaLocation);//delete [] fExternalSchemaLocation; + fExternalSchemaLocation = XMLString::transcode(schemaLocation, fMemoryManager); +} + +inline void XMLScanner::setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation) +{ + fMemoryManager->deallocate(fExternalNoNamespaceSchemaLocation);//delete [] fExternalNoNamespaceSchemaLocation; + fExternalNoNamespaceSchemaLocation = XMLString::transcode(noNamespaceSchemaLocation, fMemoryManager); +} + +inline void XMLScanner::setSecurityManager(SecurityManager* const securityManager) +{ + fSecurityManager = securityManager; + if(securityManager != 0) + { + fEntityExpansionLimit = securityManager->getEntityExpansionLimit(); + fEntityExpansionCount = 0; + } +} + +inline void XMLScanner::setDisallowDTD(const bool disallowDTD) +{ + fDisallowDTD = disallowDTD; +} + +inline void XMLScanner::setLoadExternalDTD(const bool loadDTD) +{ + fLoadExternalDTD = loadDTD; +} + +inline void XMLScanner::setLoadSchema(const bool loadSchema) +{ + fLoadSchema = loadSchema; +} + +inline void XMLScanner::setNormalizeData(const bool normalizeData) +{ + fNormalizeData = normalizeData; +} + +inline void XMLScanner::cacheGrammarFromParse(const bool newValue) +{ + fToCacheGrammar = newValue; +} + +inline void XMLScanner::useCachedGrammarInParse(const bool newValue) +{ + fUseCachedGrammar = newValue; +} + +inline void XMLScanner::setCalculateSrcOfs(const bool newValue) +{ + fCalculateSrcOfs = newValue; +} + +inline void XMLScanner::setStandardUriConformant(const bool newValue) +{ + fStandardUriConformant = newValue; + fReaderMgr.setStandardUriConformant(newValue); +} + +inline void XMLScanner::setGenerateSyntheticAnnotations(const bool newValue) +{ + fGenerateSyntheticAnnotations = newValue; +} + +inline void XMLScanner::setValidateAnnotations(const bool newValue) +{ + fValidateAnnotations = newValue; +} + +inline void XMLScanner::setInputBufferSize(const XMLSize_t bufferSize) +{ + fBufferSize = bufferSize; + fCDataBuf.setFullHandler(this, fBufferSize); +} + +inline void XMLScanner::setLowWaterMark(XMLSize_t newValue) +{ + fLowWaterMark = newValue; +} + +inline void XMLScanner::setIgnoredCachedDTD(const bool newValue) +{ + fIgnoreCachedDTD = newValue; +} + +inline void XMLScanner::setIgnoreAnnotations(const bool newValue) +{ + fIgnoreAnnotations = newValue; +} + +inline void XMLScanner::setDisableDefaultEntityResolution(const bool newValue) +{ + fDisableDefaultEntityResolution = newValue; +} + +inline void XMLScanner::setSkipDTDValidation(const bool newValue) +{ + fSkipDTDValidation = newValue; +} + +inline void XMLScanner::setHandleMultipleImports(const bool newValue) +{ + fHandleMultipleImports = newValue; +} + +// --------------------------------------------------------------------------- +// XMLScanner: Mutator methods +// --------------------------------------------------------------------------- +inline void XMLScanner::incrementErrorCount() +{ + ++fErrorCount; +} + +inline void XMLScanner::resetValidationContext() +{ + fValidationContext->clearIdRefList(); + fValidationContext->setEntityDeclPool(0); + fEntityDeclPoolRetrieved = false; +} + +inline void XMLScanner::setAttrDupChkRegistry(const XMLSize_t &attrNumber + , bool &toUseHashTable) +{ + // once the attribute exceed 100, we use hash table to check duplication + if (attrNumber > 100) + { + toUseHashTable = true; + + if (!fAttrDupChkRegistry) + { + fAttrDupChkRegistry = new (fMemoryManager) RefHash2KeysTableOf + ( + 2*attrNumber+1, false, fMemoryManager + ); + } + else + { + fAttrDupChkRegistry->removeAll(); + } + } + +} + +inline Grammar::GrammarType XMLScanner::getCurrentGrammarType() const +{ + return Grammar::UnKnown; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/XMLScannerResolver.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/XMLScannerResolver.hpp new file mode 100644 index 000000000000..26b7e396b0a3 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/XMLScannerResolver.hpp @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLSCANNERRESOLVER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLSCANNERRESOLVER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLValidator; +class XMLDocumentHandler; +class XMLErrorReporter; +class DocTypeHandler; +class XMLEntityHandler; + +class XMLPARSER_EXPORT XMLScannerResolver +{ +public: + // ----------------------------------------------------------------------- + // Public class methods + // ----------------------------------------------------------------------- + static XMLScanner* resolveScanner + ( + const XMLCh* const scannerName + , XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + static XMLScanner* resolveScanner + ( + const XMLCh* const scannerName + , XMLDocumentHandler* const docHandler + , DocTypeHandler* const docTypeHandler + , XMLEntityHandler* const entityHandler + , XMLErrorReporter* const errReporter + , XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + static XMLScanner* getDefaultScanner + ( + XMLValidator* const valToAdopt + , GrammarResolver* const grammarResolver + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + +private : + + // ----------------------------------------------------------------------- + // Unimplemented constructor and destructor + // ----------------------------------------------------------------------- + XMLScannerResolver(); + ~XMLScannerResolver(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/XProtoType.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/XProtoType.hpp new file mode 100644 index 000000000000..5af22a158c7d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/XProtoType.hpp @@ -0,0 +1,93 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XPROTOTYPE_HPP) +#define XERCESC_INCLUDE_GUARD_XPROTOTYPE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XSerializeEngine; +class XSerializable; + +class XMLUTIL_EXPORT XProtoType +{ +public: + + void store(XSerializeEngine& serEng) const; + + static void load(XSerializeEngine& serEng + , XMLByte* const name + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // ------------------------------------------------------------------------------- + // data + // + // fClassName: + // name of the XSerializable derivatives + // + // fCreateObject: + // pointer to the factory method (createObject()) + // of the XSerializable derivatives + // + // ------------------------------------------------------------------------------- + + XMLByte* fClassName; + + XSerializable* (*fCreateObject)(MemoryManager*); + +}; + +#define DECL_XPROTOTYPE(class_name) \ +static XProtoType class##class_name; \ +static XSerializable* createObject(MemoryManager* manager); + +/*** + * For non-abstract class + ***/ +#define IMPL_XPROTOTYPE_TOCREATE(class_name) \ +IMPL_XPROTOTYPE_INSTANCE(class_name) \ +XSerializable* class_name::createObject(MemoryManager* manager) \ +{return new (manager) class_name(manager);} + +/*** +* For abstract class + ***/ +#define IMPL_XPROTOTYPE_NOCREATE(class_name) \ +IMPL_XPROTOTYPE_INSTANCE(class_name) \ +XSerializable* class_name::createObject(MemoryManager*) \ +{return 0;} + + +/*** + * Helper Macro + ***/ +#define XPROTOTYPE_CLASS(class_name) ((XProtoType*)(&class_name::class##class_name)) + +#define IMPL_XPROTOTYPE_INSTANCE(class_name) \ +XProtoType class_name::class##class_name = \ +{const_cast(reinterpret_cast(#class_name)), class_name::createObject }; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/XSAXMLScanner.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/XSAXMLScanner.hpp new file mode 100644 index 000000000000..4935e6cd552c --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/XSAXMLScanner.hpp @@ -0,0 +1,98 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSAXMLSCANNER_HPP) +#define XERCESC_INCLUDE_GUARD_XSAXMLSCANNER_HPP + +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This is a scanner class, which processes/validates contents of XML Schema +// Annotations. It's intended for internal use only. +// +class XMLPARSER_EXPORT XSAXMLScanner : public SGXMLScanner +{ +public : + // ----------------------------------------------------------------------- + // Destructor + // ----------------------------------------------------------------------- + virtual ~XSAXMLScanner(); + + // ----------------------------------------------------------------------- + // XMLScanner public virtual methods + // ----------------------------------------------------------------------- + virtual const XMLCh* getName() const; + +protected: + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + /** + * The grammar representing the XML Schema annotation (xsaGrammar) is + * passed in by the caller. The scanner will own it and is responsible + * for deleting it. + */ + XSAXMLScanner + ( + GrammarResolver* const grammarResolver + , XMLStringPool* const uriStringPool + , SchemaGrammar* const xsaGrammar + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + friend class TraverseSchema; + + // ----------------------------------------------------------------------- + // XMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual void scanReset(const InputSource& src); + + // ----------------------------------------------------------------------- + // SGXMLScanner virtual methods + // ----------------------------------------------------------------------- + virtual bool scanStartTag(bool& gotData); + virtual void scanEndTag(bool& gotData); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSAXMLScanner(); + XSAXMLScanner(const XSAXMLScanner&); + XSAXMLScanner& operator=(const XSAXMLScanner&); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void scanRawAttrListforNameSpaces(XMLSize_t attCount); + void switchGrammar(const XMLCh* const newGrammarNameSpace, bool laxValidate); +}; + +inline const XMLCh* XSAXMLScanner::getName() const +{ + return XMLUni::fgXSAXMLScanner; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/XSObjectFactory.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/XSObjectFactory.hpp new file mode 100644 index 000000000000..e42d32e096ce --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/XSObjectFactory.hpp @@ -0,0 +1,237 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSOBJECTFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_XSOBJECTFACTORY_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XSObject; +class XSAttributeUse; +class XSAttributeDeclaration; +class XSModel; +class XSElementDeclaration; +class XSSimpleTypeDefinition; +class XSComplexTypeDefinition; +class XSModelGroupDefinition; +class XSAttributeGroupDefinition; +class XSWildcard; +class XSParticle; +class XSAnnotation; +class XSNamespaceItem; +class XSNotationDeclaration; +class SchemaAttDef; +class SchemaElementDecl; +class DatatypeValidator; +class ContentSpecNode; +class ComplexTypeInfo; +class XercesGroupInfo; +class XercesAttGroupInfo; +class XSIDCDefinition; +class IdentityConstraint; +class XMLNotationDecl; + +/** + * Factory class to create various XSObject(s) + * Used by XSModel + */ +class XMLPARSER_EXPORT XSObjectFactory : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XSObjectFactory(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~XSObjectFactory(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and destructor + // ----------------------------------------------------------------------- + XSObjectFactory(const XSObjectFactory&); + XSObjectFactory& operator=(const XSObjectFactory&); + + // ----------------------------------------------------------------------- + // factory methods + // ----------------------------------------------------------------------- + XSParticle* createModelGroupParticle + ( + const ContentSpecNode* const node + , XSModel* const xsModel + ); + + XSAttributeDeclaration* addOrFind + ( + SchemaAttDef* const attDef + , XSModel* const xsModel + , XSComplexTypeDefinition* const enclosingTypeDef = 0 + ); + + XSSimpleTypeDefinition* addOrFind + ( + DatatypeValidator* const validator + , XSModel* const xsModel + , bool isAnySimpleType = false + ); + + XSElementDeclaration* addOrFind + ( + SchemaElementDecl* const elemDecl + , XSModel* const xsModel + , XSComplexTypeDefinition* const enclosingTypeDef = 0 + ); + + XSComplexTypeDefinition* addOrFind + ( + ComplexTypeInfo* const typeInfo + , XSModel* const xsModel + ); + + XSIDCDefinition* addOrFind + ( + IdentityConstraint* const ic + , XSModel* const xsModel + ); + + XSNotationDeclaration* addOrFind + ( + XMLNotationDecl* const notDecl + , XSModel* const xsModel + ); + + XSAttributeUse* createXSAttributeUse + ( + XSAttributeDeclaration* const xsAttDecl + , XSModel* const xsModel + ); + XSWildcard* createXSWildcard + ( + SchemaAttDef* const attDef + , XSModel* const xsModel + ); + + XSWildcard* createXSWildcard + ( + const ContentSpecNode* const rootNode + , XSModel* const xsModel + ); + + XSModelGroupDefinition* createXSModelGroupDefinition + ( + XercesGroupInfo* const groupInfo + , XSModel* const xsModel + ); + + XSAttributeGroupDefinition* createXSAttGroupDefinition + ( + XercesAttGroupInfo* const attGroupInfo + , XSModel* const xsModel + ); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + // creates a particle corresponding to an element + XSParticle* createElementParticle + ( + const ContentSpecNode* const rootNode + , XSModel* const xsModel + ); + + // creates a particle corresponding to a wildcard + XSParticle* createWildcardParticle + ( + const ContentSpecNode* const rootNode + , XSModel* const xsModel + ); + + XSAnnotation* getAnnotationFromModel + ( + XSModel* const xsModel + , const void* const key + ); + + void buildAllParticles + ( + const ContentSpecNode* const rootNode + , XSParticleList* const particleList + , XSModel* const xsModel + ); + + void buildChoiceSequenceParticles + ( + const ContentSpecNode* const rootNode + , XSParticleList* const particleList + , XSModel* const xsModel + ); + + void putObjectInMap + ( + void* key + , XSObject* const object + ); + + XSObject* getObjectFromMap + ( + void* key + ); + + void processFacets + ( + DatatypeValidator* const dv + , XSModel* const xsModel + , XSSimpleTypeDefinition* const xsST + ); + + void processAttUse + ( + SchemaAttDef* const attDef + , XSAttributeUse* const xsAttUse + ); + + bool isMultiValueFacetDefined(DatatypeValidator* const dv); + + // make XSModel our friend + friend class XSModel; + + // ----------------------------------------------------------------------- + // Private Data Members + // + // fMemoryManager + // The memory manager used to create various XSObject(s). + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + RefHashTableOf* fXercesToXSMap; + RefVectorOf* fDeleteVector; +}; + +inline XSObject* XSObjectFactory::getObjectFromMap(void* key) +{ + return fXercesToXSMap->get(key); +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/XSerializable.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/XSerializable.hpp new file mode 100644 index 000000000000..1b0fb7a73db3 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/XSerializable.hpp @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSERIALIZABLE_HPP) +#define XERCESC_INCLUDE_GUARD_XSERIALIZABLE_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XSerializable +{ +public : + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + virtual ~XSerializable() {} ; + + // ----------------------------------------------------------------------- + // Serialization Interface + // ----------------------------------------------------------------------- + virtual bool isSerializable() const = 0; + + virtual void serialize(XSerializeEngine& ) = 0; + + virtual XProtoType* getProtoType() const = 0; + +protected: + XSerializable() {} + XSerializable(const XSerializable& ) {} + +private: + // ----------------------------------------------------------------------- + // Unimplemented assignment operator + // ----------------------------------------------------------------------- + XSerializable& operator=(const XSerializable&); + +}; + +inline void XSerializable::serialize(XSerializeEngine& ) +{ +} + +/*** + * Macro to be included in XSerializable derivatives' + * declaration's public section + ***/ +#define DECL_XSERIALIZABLE(class_name) \ +public: \ +\ +DECL_XPROTOTYPE(class_name) \ +\ +virtual bool isSerializable() const ; \ +virtual XProtoType* getProtoType() const; \ +virtual void serialize(XSerializeEngine&); \ +\ +inline friend XSerializeEngine& operator>>(XSerializeEngine& serEng \ + , class_name*& objPtr) \ +{objPtr = (class_name*) serEng.read(XPROTOTYPE_CLASS(class_name)); \ + return serEng; \ +}; + +/*** + * Macro to be included in the implementation file + * of XSerializable derivatives' which is instantiable + ***/ +#define IMPL_XSERIALIZABLE_TOCREATE(class_name) \ +IMPL_XPROTOTYPE_TOCREATE(class_name) \ +IMPL_XSERIAL(class_name) + +/*** + * Macro to be included in the implementation file + * of XSerializable derivatives' which is UN-instantiable + ***/ +#define IMPL_XSERIALIZABLE_NOCREATE(class_name) \ +IMPL_XPROTOTYPE_NOCREATE(class_name) \ +IMPL_XSERIAL(class_name) + +/*** + * Helper Macro + ***/ +#define IMPL_XSERIAL(class_name) \ +bool class_name::isSerializable() const \ +{return true; } \ +XProtoType* class_name::getProtoType() const \ +{return XPROTOTYPE_CLASS(class_name); } + +#define IS_EQUIVALENT(lptr, rptr) \ + if (lptr == rptr) \ + return true; \ + if (( lptr && !rptr) || (!lptr && rptr)) \ + return false; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/XSerializationException.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/XSerializationException.hpp new file mode 100644 index 000000000000..62dbc3d298bd --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/XSerializationException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSERIALIZATION_EXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_XSERIALIZATION_EXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(XSerializationException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/XSerializeEngine.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/XSerializeEngine.hpp new file mode 100644 index 000000000000..025dc11a8a31 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/XSerializeEngine.hpp @@ -0,0 +1,841 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSERIALIZE_ENGINE_HPP) +#define XERCESC_INCLUDE_GUARD_XSERIALIZE_ENGINE_HPP + +#include +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XSerializable; +class XProtoType; +class MemoryManager; +class XSerializedObjectId; +class BinOutputStream; +class BinInputStream; +class XMLGrammarPool; +class XMLGrammarPoolImpl; +class XMLStringPool; + +class XMLUTIL_EXPORT XSerializeEngine +{ +public: + + enum { mode_Store + , mode_Load + }; + + + static const bool toReadBufferLen; + + typedef unsigned int XSerializedObjectId_t; + + /*** + * + * Destructor + * + ***/ + ~XSerializeEngine(); + + /*** + * + * Constructor for de-serialization(loading) + * + * Application needs to make sure that the instance of + * BinInputStream, persists beyond the life of this + * SerializeEngine. + * + * Param + * inStream input stream + * gramPool Grammar Pool + * bufSize the size of the internal buffer + * + ***/ + XSerializeEngine(BinInputStream* inStream + , XMLGrammarPool* const gramPool + , XMLSize_t bufSize = 8192 ); + + + /*** + * + * Constructor for serialization(storing) + * + * Application needs to make sure that the instance of + * BinOutputStream, persists beyond the life of this + * SerializeEngine. + * + * Param + * outStream output stream + * gramPool Grammar Pool + * bufSize the size of the internal buffer + * + ***/ + XSerializeEngine(BinOutputStream* outStream + , XMLGrammarPool* const gramPool + , XMLSize_t bufSize = 8192 ); + + /*** + * + * When serialization, flush out the internal buffer + * + * Return: + * + ***/ + void flush(); + + /*** + * + * Checking if the serialize engine is doing serialization(storing) + * + * Return: true, if it is + * false, otherwise + * + ***/ + inline bool isStoring() const; + + /*** + * + * Checking if the serialize engine is doing de-serialization(loading) + * + * Return: true, if it is + * false, otherwise + * + ***/ + inline bool isLoading() const; + + /*** + * + * Get the GrammarPool + * + * Return: XMLGrammarPool + * + ***/ + XMLGrammarPool* getGrammarPool() const; + + /*** + * + * Get the StringPool + * + * Return: XMLStringPool + * + ***/ + XMLStringPool* getStringPool() const; + + /*** + * + * Get the embeded Memory Manager + * + * Return: MemoryManager + * + ***/ + MemoryManager* getMemoryManager() const; + + /*** + * + * Get the storer level (the level of the serialize engine + * which created the binary stream that this serialize engine + * is loading). + * + * The level returned is meaningful only when + * the engine isLoading. + * + * Return: level + * + ***/ + inline unsigned int getStorerLevel() const; + + /*** + * + * Write object to the internal buffer. + * + * Param + * objectToWrite: the object to be serialized + * + * Return: + * + ***/ + void write(XSerializable* const objectToWrite); + + /*** + * + * Write prototype info to the internal buffer. + * + * Param + * protoType: instance of prototype + * + * Return: + * + ***/ + void write(XProtoType* const protoType); + + /*** + * + * Write a stream of XMLByte to the internal buffer. + * + * Param + * toWrite: the stream of XMLByte to write + * writeLen: the length of the stream + * + * Return: + * + ***/ + void write(const XMLByte* const toWrite + , XMLSize_t writeLen); + + /*** + * + * Write a stream of XMLCh to the internal buffer. + * + * Param + * toWrite: the stream of XMLCh to write + * writeLen: the length of the stream + * + * Return: + * + ***/ + void write(const XMLCh* const toWrite + , XMLSize_t writeLen); + + /*** + * + * Write a stream of XMLCh to the internal buffer. + * + * Write the bufferLen first if requested, then the length + * of the stream followed by the stream. + * + * Param + * toWrite: the stream of XMLCh to write + * bufferLen: the maximum size of the buffer + * toWriteBufLen: specify if the bufferLen need to be written or not + * + * Return: + * + ***/ + void writeString(const XMLCh* const toWrite + , const XMLSize_t bufferLen = 0 + , bool toWriteBufLen = false); + + /*** + * + * Write a stream of XMLByte to the internal buffer. + * + * Write the bufferLen first if requested, then the length + * of the stream followed by the stream. + * + * Param + * toWrite: the stream of XMLByte to write + * bufferLen: the maximum size of the buffer + * toWriteBufLen: specify if the bufferLen need to be written or not + * + * Return: + * + ***/ + void writeString(const XMLByte* const toWrite + , const XMLSize_t bufferLen = 0 + , bool toWriteBufLen = false); + + static const bool toWriteBufferLen; + + /*** + * + * Read/Create object from the internal buffer. + * + * Param + * protoType: an instance of prototype of the object anticipated + * + * Return: to object read/created + * + ***/ + XSerializable* read(XProtoType* const protoType); + + /*** + * + * Read prototype object from the internal buffer. + * Verify if the same prototype object found in buffer. + * + * Param + * protoType: an instance of prototype of the object anticipated + * objTag: the object Tag to an existing object + * + * Return: true : if matching found + * false : otherwise + * + ***/ + bool read(XProtoType* const protoType + , XSerializedObjectId_t* objTag); + + /*** + * + * Read XMLByte stream from the internal buffer. + * + * Param + * toRead: the buffer to hold the XMLByte stream + * readLen: the length of the XMLByte to read in + * + * Return: + * + ***/ + void read(XMLByte* const toRead + , XMLSize_t readLen); + + /*** + * + * Read XMLCh stream from the internal buffer. + * + * Param + * toRead: the buffer to hold the XMLCh stream + * readLen: the length of the XMLCh to read in + * + * Return: + * + ***/ + void read(XMLCh* const toRead + , XMLSize_t readLen); + + /*** + * + * Read a stream of XMLCh from the internal buffer. + * + * Read the bufferLen first if requested, then the length + * of the stream followed by the stream. + * + * Param + * toRead: the pointer to the buffer to hold the XMLCh stream + * bufferLen: the size of the buffer created + * dataLen: the length of the stream + * toReadBufLen: specify if the bufferLen need to be read or not + * + * Return: + * + ***/ + void readString(XMLCh*& toRead + , XMLSize_t& bufferLen + , XMLSize_t& dataLen + , bool toReadBufLen = false); + + /*** + * + * Read a stream of XMLCh from the internal buffer. + * + * Read the bufferLen first if requested, then the length + * of the stream followed by the stream. + * + * Param + * toRead: the pointer to the buffer to hold the XMLCh stream + * bufferLen: the size of the buffer created + * + * Return: + * + ***/ + inline void readString(XMLCh*& toRead + , XMLSize_t& bufferLen); + + /*** + * + * Read a stream of XMLCh from the internal buffer. + * + * Param + * toRead: the pointer to the buffer to hold the XMLCh stream + * + * Return: + * + ***/ + inline void readString(XMLCh*& toRead); + + /*** + * + * Read a stream of XMLByte from the internal buffer. + * + * Read the bufferLen first if requested, then the length + * of the stream followed by the stream. + * + * Param + * toRead: the pointer to the buffer to hold the XMLByte stream + * bufferLen: the size of the buffer created + * dataLen: the length of the stream + * toReadBufLen: specify if the bufferLen need to be read or not + * + * Return: + * + ***/ + void readString(XMLByte*& toRead + , XMLSize_t& bufferLen + , XMLSize_t& dataLen + , bool toReadBufLen = false); + + + /*** + * + * Read a stream of XMLByte from the internal buffer. + * + * Read the bufferLen first if requested, then the length + * of the stream followed by the stream. + * + * Param + * toRead: the pointer to the buffer to hold the XMLByte stream + * bufferLen: the size of the buffer created + * + * Return: + * + ***/ + inline void readString(XMLByte*& toRead + , XMLSize_t& bufferLen); + + /*** + * + * Read a stream of XMLByte from the internal buffer. + * + * Read the bufferLen first if requested, then the length + * of the stream followed by the stream. + * + * Param + * toRead: the pointer to the buffer to hold the XMLByte stream + * bufferLen: the size of the buffer created + * dataLen: the length of the stream + * toReadBufLen: specify if the bufferLen need to be read or not + * + * Return: + * + ***/ + inline void readString(XMLByte*& toRead); + + /*** + * + * Check if the template object has been stored or not + * + * Param + * objectPtr: the template object pointer + * + * Return: true : the object has NOT been stored yet + * false : otherwise + * + ***/ + bool needToStoreObject(void* const templateObjectToWrite); + + /*** + * + * Check if the template object has been loaded or not + * + * Param + * objectPtr: the address of the template object pointer + * + * Return: true : the object has NOT been loaded yet + * false : otherwise + * + ***/ + bool needToLoadObject(void** templateObjectToRead); + + /*** + * + * In the case of needToLoadObject() return true, the client + * application needs to instantiate an expected template object, and + * register the address to the engine. + * + * Param + * objectPtr: the template object pointer newly instantiated + * + * Return: + * + ***/ + void registerObject(void* const templateObjectToRegister); + + /*** + * + * Insertion operator for serializable classes + * + ***/ + + friend XSerializeEngine& operator<<(XSerializeEngine& + , XSerializable* const ); + + /*** + * + * Insertion operators for + * . basic Xerces data types + * . built-in types + * + ***/ + XSerializeEngine& operator<<(XMLByte); + XSerializeEngine& operator<<(XMLCh); + + XSerializeEngine& operator<<(char); + XSerializeEngine& operator<<(short); + XSerializeEngine& operator<<(int); + XSerializeEngine& operator<<(unsigned int); + XSerializeEngine& operator<<(long); + XSerializeEngine& operator<<(unsigned long); + XSerializeEngine& operator<<(float); + XSerializeEngine& operator<<(double); + XSerializeEngine& operator<<(bool); + + // These cannot be done as operators since on some platforms they + // may collide with int/long types. + // + void writeSize (XMLSize_t); + void writeInt64 (XMLInt64); + void writeUInt64 (XMLUInt64); + + + /*** + * + * Extraction operators for + * . basic Xerces data types + * . built-in types + * + ***/ + XSerializeEngine& operator>>(XMLByte&); + XSerializeEngine& operator>>(XMLCh&); + + XSerializeEngine& operator>>(char&); + XSerializeEngine& operator>>(short&); + XSerializeEngine& operator>>(int&); + XSerializeEngine& operator>>(unsigned int&); + XSerializeEngine& operator>>(long&); + XSerializeEngine& operator>>(unsigned long&); + XSerializeEngine& operator>>(float&); + XSerializeEngine& operator>>(double&); + XSerializeEngine& operator>>(bool&); + + void readSize (XMLSize_t&); + void readInt64 (XMLInt64&); + void readUInt64 (XMLUInt64&); + + /*** + * + * Getters + * + ***/ + inline + XMLSize_t getBufSize() const; + + inline + XMLSize_t getBufCur() const; + + inline + XMLSize_t getBufCurAccumulated() const; + + inline + unsigned long getBufCount() const; + + void trace(char*) const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSerializeEngine(); + XSerializeEngine(const XSerializeEngine&); + XSerializeEngine& operator=(const XSerializeEngine&); + + /*** + * + * Store Pool Opertions + * + ***/ + XSerializedObjectId_t lookupStorePool(void* const objectPtr) const; + void addStorePool(void* const objectPtr); + + /*** + * + * Load Pool Opertions + * + ***/ + XSerializable* lookupLoadPool(XSerializedObjectId_t objectTag) const; + void addLoadPool(void* const objectPtr); + + /*** + * + * Intenal Buffer Operations + * + ***/ + inline void checkAndFillBuffer(XMLSize_t bytesNeedToRead); + + inline void checkAndFlushBuffer(XMLSize_t bytesNeedToWrite); + + void fillBuffer(); + + void flushBuffer(); + + void pumpCount(); + + inline void resetBuffer(); + + /*** + * + * Helper + * + ***/ + inline void ensureStoring() const; + + inline void ensureLoading() const; + + inline void ensureStoreBuffer() const; + + inline void ensureLoadBuffer() const; + + inline void ensurePointer(void* const) const; + + inline void Assert(bool toEval + , const XMLExcepts::Codes toThrow) const; + + + inline XMLSize_t calBytesNeeded(XMLSize_t) const; + + inline XMLSize_t alignAdjust(XMLSize_t) const; + + inline void alignBufCur(XMLSize_t); + + // Make XTemplateSerializer friend of XSerializeEngine so that + // we can call lookupStorePool and lookupLoadPool in the case of + // annotations. + friend class XTemplateSerializer; + + // ------------------------------------------------------------------------------- + // data + // + // fStoreLoad: + // Indicator: storing(serialization) or loading(de-serialization) + // + // fStorerLevel: + // The level of the serialize engine which created the binary + // stream that this serialize engine is loading + // + // It is set by GrammarPool when loading + // + // fGrammarPool: + // Thw owning GrammarPool which instantiate this SerializeEngine + // instance + // + // fInputStream: + // Binary stream to read from (de-serialization), provided + // by client application, not owned. + // + // fOutputStream: + // Binary stream to write to (serialization), provided + // by client application, not owned. + // + // fBufSize: + // The size of the internal buffer + // + // fBufStart/fBufEnd: + // + // The internal buffer. + // fBufEnd: + // one beyond the last valid cell + // fBufEnd === (fBufStart + fBufSize) + // + // fBufCur: + // The cursor of the buffer + // + // fBufLoadMax: + // Indicating the end of the valid content in the buffer + // + // fStorePool: + // Object collection for storing + // + // fLoadPool: + // Object collection for loading + // + // fMapCount: + // ------------------------------------------------------------------------------- + const short fStoreLoad; + unsigned int fStorerLevel; + + XMLGrammarPool* const fGrammarPool; + BinInputStream* const fInputStream; + BinOutputStream* const fOutputStream; + + unsigned long fBufCount; + + //buffer + const XMLSize_t fBufSize; + XMLByte* const fBufStart; + XMLByte* const fBufEnd; + XMLByte* fBufCur; + XMLByte* fBufLoadMax; + + + + /*** + * Map for storing object + * + * key: XSerializable* + * XProtoType* + * + * value: XMLInteger*, owned + * + ***/ + RefHashTableOf* fStorePool; + + /*** + * Vector for loading object, objects are NOT owned + * + * data: XSerializable* + * XProtoType* + * + ***/ + ValueVectorOf* fLoadPool; + + /*** + * object counter + ***/ + XSerializedObjectId_t fObjectCount; + + //to allow grammar pool to set storer level when loading + friend class XMLGrammarPoolImpl; +}; + +inline bool XSerializeEngine::isStoring() const +{ + return (fStoreLoad == mode_Store); +} + +inline bool XSerializeEngine::isLoading() const +{ + return (fStoreLoad == mode_Load); +} + +inline XSerializeEngine& operator<<(XSerializeEngine& serEng + , XSerializable* const serObj) +{ + serEng.write(serObj); + return serEng; +} + +inline void XSerializeEngine::ensureStoring() const +{ + Assert(isStoring(), XMLExcepts::XSer_Storing_Violation); +} + +inline void XSerializeEngine::ensureLoading() const +{ + Assert(isLoading(), XMLExcepts::XSer_Loading_Violation); +} + + + +inline void XSerializeEngine::Assert(bool toEval + , const XMLExcepts::Codes toThrow) const +{ + if (!toEval) + { + ThrowXMLwithMemMgr(XSerializationException, toThrow, getMemoryManager()); + } + +} + +inline void XSerializeEngine::readString(XMLCh*& toRead + , XMLSize_t& bufferLen) +{ + XMLSize_t dummyDataLen; + readString(toRead, bufferLen, dummyDataLen); +} + +inline void XSerializeEngine::readString(XMLCh*& toRead) +{ + XMLSize_t dummyBufferLen; + XMLSize_t dummyDataLen; + readString(toRead, dummyBufferLen, dummyDataLen); +} + +inline void XSerializeEngine::readString(XMLByte*& toRead + , XMLSize_t& bufferLen) +{ + XMLSize_t dummyDataLen; + readString(toRead, bufferLen, dummyDataLen); +} + +inline void XSerializeEngine::readString(XMLByte*& toRead) +{ + XMLSize_t dummyBufferLen; + XMLSize_t dummyDataLen; + readString(toRead, dummyBufferLen, dummyDataLen); +} + +inline +XMLSize_t XSerializeEngine::getBufSize() const +{ + return fBufSize; +} + +inline +XMLSize_t XSerializeEngine::getBufCur() const +{ + return (fBufCur-fBufStart); +} + +inline +XMLSize_t XSerializeEngine::getBufCurAccumulated() const +{ + return (fBufCount - (isStoring() ? 0: 1)) * fBufSize + (fBufCur-fBufStart); +} + +inline +unsigned long XSerializeEngine::getBufCount() const +{ + return fBufCount; +} + +inline +unsigned int XSerializeEngine::getStorerLevel() const +{ + return fStorerLevel; +} + +/*** + * Ought to be nested class + ***/ +class XSerializedObjectId : public XMemory +{ +public: + + ~XSerializedObjectId(){}; + +private: + + inline XSerializedObjectId(XSerializeEngine::XSerializedObjectId_t val): + fData(val) { }; + + inline XSerializeEngine::XSerializedObjectId_t getValue() const {return fData; }; + + friend class XSerializeEngine; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSerializedObjectId(); + XSerializedObjectId(const XSerializedObjectId&); + XSerializedObjectId& operator=(const XSerializedObjectId&); + + XSerializeEngine::XSerializedObjectId_t fData; + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/internal/XTemplateSerializer.hpp b/src/libs/xerces-c/msvc/include/xercesc/internal/XTemplateSerializer.hpp new file mode 100644 index 000000000000..108d90008078 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/internal/XTemplateSerializer.hpp @@ -0,0 +1,365 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XTEMPLATE_SERIALIZER_HPP) +#define XERCESC_INCLUDE_GUARD_XTEMPLATE_SERIALIZER_HPP + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XTemplateSerializer +{ +public: + + /********************************************************** + * + * ValueVectorOf + * + * SchemaElementDecl* + * unsigned int + * + ***********************************************************/ + static void storeObject(ValueVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(ValueVectorOf** tempObjToRead + , int initSize + , bool toCallDestructor + , XSerializeEngine& serEng); + + static void storeObject(ValueVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(ValueVectorOf** tempObjToRead + , int initSize + , bool toCallDestructor + , XSerializeEngine& serEng); + + /********************************************************** + * + * RefArrayVectorOf + * + * XMLCh + * + ***********************************************************/ + static void storeObject(RefArrayVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefArrayVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + /********************************************************** + * + * RefVectorOf + * + * SchemaAttDef + * SchemaElementDecl + * ContentSpecNode + * IC_Field + * DatatypeValidator + * IdentityConstraint + * XMLNumber + * XercesLocationPath + * XercesStep + * + ***********************************************************/ + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XMLNumber::NumberType numType + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefVectorOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefVectorOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + /********************************************************** + * + * RefHashTableOf + * + * KVStringPair + * XMLAttDef + * DTDAttDef + * ComplexTypeInfo + * XercesGroupInfo + * XercesAttGroupInfo + * XMLRefInfo + * DatatypeValidator + * Grammar + * XSAnnotation + * + ***********************************************************/ + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHashTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHashTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + /********************************************************** + * + * RefHash2KeysTableOf + * + * SchemaAttDef + * ElemVector + * + ***********************************************************/ + static void storeObject(RefHash2KeysTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHash2KeysTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + static void storeObject(RefHash2KeysTableOf* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHash2KeysTableOf** tempObjToRead + , int initSize + , bool toAdopt + , XSerializeEngine& serEng); + + /********************************************************** + * + * RefHash3KeysIdPool + * + * SchemaElementDecl + * + ***********************************************************/ + static void storeObject(RefHash3KeysIdPool* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(RefHash3KeysIdPool** tempObjToRead + , int initSize + , bool toAdopt + , int initSize2 + , XSerializeEngine& serEng); + + /********************************************************** + * + * NameIdPool + * + * DTDElementDecl + * DTDEntityDecl + * XMLNotationDecl + * + ***********************************************************/ + static void storeObject(NameIdPool* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(NameIdPool** tempObjToRead + , int initSize + , int initSize2 + , XSerializeEngine& serEng); + + static void storeObject(NameIdPool* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(NameIdPool** tempObjToRead + , int initSize + , int initSize2 + , XSerializeEngine& serEng); + + static void storeObject(NameIdPool* const tempObjToWrite + , XSerializeEngine& serEng); + + static void loadObject(NameIdPool** tempObjToRead + , int initSize + , int initSize2 + , XSerializeEngine& serEng); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ~XTemplateSerializer(); + XTemplateSerializer(); + XTemplateSerializer(const XTemplateSerializer&); + XTemplateSerializer& operator=(const XTemplateSerializer&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/parsers/AbstractDOMParser.hpp b/src/libs/xerces-c/msvc/include/xercesc/parsers/AbstractDOMParser.hpp new file mode 100644 index 000000000000..be4e0eacf759 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/parsers/AbstractDOMParser.hpp @@ -0,0 +1,1900 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ABSTRACTDOMPARSER_HPP) +#define XERCESC_INCLUDE_GUARD_ABSTRACTDOMPARSER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPScanToken; +class XMLScanner; +class XMLValidator; +class DOMDocumentImpl; +class DOMDocumentTypeImpl; +class DOMEntityImpl; +class DOMElement; +class GrammarResolver; +class XMLGrammarPool; +class PSVIHandler; + +/** + * This class implements the Document Object Model (DOM) interface. + * It is used as a base for DOM parsers (i.e. XercesDOMParser, DOMLSParser). + */ +class PARSERS_EXPORT AbstractDOMParser : + + public XMemory + , public XMLDocumentHandler + , public XMLErrorReporter + , public XMLEntityHandler + , public DocTypeHandler + , public PSVIHandler +{ +public : + // ----------------------------------------------------------------------- + // Class types + // ----------------------------------------------------------------------- + /** @name Public constants */ + //@{ + + /** ValScheme enum used in setValidationScheme + * Val_Never: Do not report validation errors. + * Val_Always: The parser will always report validation errors. + * Val_Auto: The parser will report validation errors only if a grammar is specified. + * + * @see #setValidationScheme + */ + enum ValSchemes + { + Val_Never + , Val_Always + , Val_Auto + }; + + //@} + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + + /** + * Destructor + */ + virtual ~AbstractDOMParser(); + + //@} + + // ----------------------------------------------------------------------- + // Utility methods + // ----------------------------------------------------------------------- + + /** @name Utility methods */ + //@{ + /** Reset the parser + * + * This method resets the state of the DOM driver and makes + * it ready for a fresh parse run. + */ + void reset(); + + /** Adopt the DOM document + * + * This method returns the DOMDocument object representing the + * root of the document tree. + * + * The caller will adopt the DOMDocument and thus is responsible to + * call DOMDocument::release() to release the associated memory. + * The parser will not delete it. The ownership is transferred + * from the parser to the caller. + * + * @return The adopted DOMDocument object which represents the entire + * XML document. + */ + DOMDocument* adoptDocument(); + + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** Get the DOM document + * + * This method returns the DOMDocument object representing the + * root of the document tree. This object provides the primary + * access to the document's data. + * + * The returned DOMDocument object is owned by the parser. + * + * @return The DOMDocument object which represents the entire + * XML document. + */ + DOMDocument* getDocument(); + + /** Get a const reference to the validator + * + * This method returns a reference to the parser's installed + * validator. + * + * @return A const reference to the installed validator object. + */ + const XMLValidator& getValidator() const; + + /** + * This method returns an enumerated value that indicates the current + * validation scheme set on this parser. + * + * @return The ValSchemes value current set on this parser. + * @see #setValidationScheme + */ + ValSchemes getValidationScheme() const; + + /** Get the 'do schema' flag + * + * This method returns the state of the parser's schema processing + * flag. + * + * @return true, if the parser is currently configured to + * understand schema, false otherwise. + * + * @see #setDoSchema + */ + bool getDoSchema() const; + + /** Get the 'full schema constraint checking' flag + * + * This method returns the state of the parser's full schema constraint + * checking flag. + * + * @return true, if the parser is currently configured to + * have full schema constraint checking, false otherwise. + * + * @see #setValidationSchemaFullChecking + */ + bool getValidationSchemaFullChecking() const; + + /** Get the identity constraint checking' flag + * + * This method returns the state of the parser's identity constraint + * checking flag. + * + * @return true, if the parser is currently configured to + * have identity constraint checking, false otherwise. + * + * @see setIdentityConstraintChecking + */ + bool getIdentityConstraintChecking() const; + + /** Get error count from the last parse operation. + * + * This method returns the error count from the last parse + * operation. Note that this count is actually stored in the + * scanner, so this method simply returns what the + * scanner reports. + * + * @return number of errors encountered during the latest + * parse operation. + * + */ + XMLSize_t getErrorCount() const; + + /** Get the 'do namespaces' flag + * + * This method returns the state of the parser's namespace processing + * flag. + * + * @return true, if the parser is currently configured to + * understand namespaces, false otherwise. + * + * @see #setDoNamespaces + */ + bool getDoNamespaces() const; + + /** Get the 'exit on first error' flag + * + * This method returns the state of the parser's + * exit-on-First-Fatal-Error flag. If this flag is true, then the + * parse will exit the first time it sees any non-wellformed XML or + * any validity error. The default state is true. + * + * @return true, if the parser is currently configured to + * exit on the first fatal error, false otherwise. + * + * @see #setExitOnFirstFatalError + */ + bool getExitOnFirstFatalError() const; + + /** + * This method returns the state of the parser's + * validation-constraint-fatal flag. + * + * @return true, if the parser is currently configured to + * set validation constraint errors as fatal, false + * otherwise. + * + * @see #setValidationConstraintFatal + */ + bool getValidationConstraintFatal() const; + + /** Get the 'include entity references' flag + * + * This method returns the flag that specifies whether the parser is + * creating entity reference nodes in the DOM tree being produced. + * + * @return The state of the create entity reference node + * flag. + * @see #setCreateEntityReferenceNodes + */ + bool getCreateEntityReferenceNodes()const; + + /** Get the 'include ignorable whitespace' flag. + * + * This method returns the state of the parser's include ignorable + * whitespace flag. + * + * @return 'true' if the include ignorable whitespace flag is set on + * the parser, 'false' otherwise. + * + * @see #setIncludeIgnorableWhitespace + */ + bool getIncludeIgnorableWhitespace() const; + + /** Get the set of Namespace/SchemaLocation that is specified externally. + * + * This method returns the list of Namespace/SchemaLocation that was + * specified using setExternalSchemaLocation. + * + * The parser owns the returned string, and the memory allocated for + * the returned string will be destroyed when the parser is deleted. + * + * To ensure accessibility of the returned information after the parser + * is deleted, callers need to copy and store the returned information + * somewhere else. + * + * @return a pointer to the list of Namespace/SchemaLocation that was + * specified externally. The pointer spans the same life-time as + * the parser. A null pointer is returned if nothing + * was specified externally. + * + * @see #setExternalSchemaLocation(const XMLCh* const) + */ + XMLCh* getExternalSchemaLocation() const; + + /** Get the noNamespace SchemaLocation that is specified externally. + * + * This method returns the no target namespace XML Schema Location + * that was specified using setExternalNoNamespaceSchemaLocation. + * + * The parser owns the returned string, and the memory allocated for + * the returned string will be destroyed when the parser is deleted. + * + * To ensure accessibility of the returned information after the parser + * is deleted, callers need to copy and store the returned information + * somewhere else. + * + * @return a pointer to the no target namespace Schema Location that was + * specified externally. The pointer spans the same life-time as + * the parser. A null pointer is returned if nothing + * was specified externally. + * + * @see #setExternalNoNamespaceSchemaLocation(const XMLCh* const) + */ + XMLCh* getExternalNoNamespaceSchemaLocation() const; + + /** Get the SecurityManager instance attached to this parser. + * + * This method returns the security manager + * that was specified using setSecurityManager. + * + * The SecurityManager instance must have been specified by the application; + * this should not be deleted until after the parser has been deleted (or + * a new SecurityManager instance has been supplied to the parser). + * + * @return a pointer to the SecurityManager instance + * specified externally. A null pointer is returned if nothing + * was specified externally. + * + * @see #setSecurityManager + */ + SecurityManager* getSecurityManager() const; + + /** Get the raw buffer low water mark for this parser. + * + * If the number of available bytes in the raw buffer is less than + * the low water mark the parser will attempt to read more data before + * continuing parsing. By default the value for this parameter is 100 + * bytes. You may want to set this parameter to 0 if you would like + * the parser to parse the available data immediately without + * potentially blocking while waiting for more date. + * + * @return current low water mark + * + * @see #setSecurityManager + */ + const XMLSize_t& getLowWaterMark() const; + + /** Get the 'Loading External DTD' flag + * + * This method returns the state of the parser's loading external DTD + * flag. + * + * @return false, if the parser is currently configured to + * ignore external DTD completely, true otherwise. + * + * @see #setLoadExternalDTD + * @see #getValidationScheme + */ + bool getLoadExternalDTD() const; + + /** Get the 'Loading Schema' flag + * + * This method returns the state of the parser's loading schema + * flag. + * + * @return true, if the parser is currently configured to + * automatically load schemas that are not in the + * grammar pool, false otherwise. + * + * @see #setLoadSchema + */ + bool getLoadSchema() const; + + /** Get the 'create comment node' flag + * + * This method returns the flag that specifies whether the parser is + * creating comment nodes in the DOM tree being produced. + * + * @return The state of the create comment node flag. + * @see #setCreateCommentNodes + */ + bool getCreateCommentNodes()const; + + /** + * Get the 'calculate src offset flag' + * + * This method returns the state of the parser's src offset calculation + * when parsing an XML document. + * + * @return true, if the parser is currently configured to + * calculate src offsets, false otherwise. + * + * @see #setCalculateSrcOfs + */ + bool getCalculateSrcOfs() const; + + /** + * Get the 'force standard uri flag' + * + * This method returns the state if the parser forces standard uri + * + * @return true, if the parser is currently configured to + * force standard uri, i.e. malformed uri will be rejected. + * + * @see #setStandardUriConformant + */ + bool getStandardUriConformant() const; + + /** + * This method returns the installed PSVI handler. Suitable + * for 'lvalue' usages. + * + * @return The pointer to the installed PSVI handler object. + */ + PSVIHandler* getPSVIHandler(); + + /** + * This method returns the installed PSVI handler. Suitable + * for 'rvalue' usages. + * + * @return A const pointer to the installed PSVI handler object. + */ + const PSVIHandler* getPSVIHandler() const; + + /** Get the 'associate schema info' flag + * + * This method returns the flag that specifies whether + * the parser is storing schema informations in the element + * and attribute nodes in the DOM tree being produced. + * + * @return The state of the associate schema info flag. + * @see #setCreateSchemaInfo + */ + bool getCreateSchemaInfo() const; + + /** Get the 'do XInclude' flag + * + * This method returns the flag that specifies whether + * the parser will process XInclude nodes + * in the DOM tree being produced. + * + * @return The state of the 'do XInclude' flag. + * @see #setDoXInclude + */ + bool getDoXInclude() const; + + /** Get the 'generate synthetic annotations' flag + * + * @return true, if the parser is currently configured to + * generate synthetic annotations, false otherwise. + * A synthetic XSAnnotation is created when a schema + * component has non-schema attributes but has no + * child annotations so that the non-schema attributes + * can be recovered under PSVI. + * + * @see #setGenerateSyntheticAnnotations + */ + bool getGenerateSyntheticAnnotations() const; + + /** Get the 'validate annotations' flag + * + * @return true, if the parser is currently configured to + * validate annotations, false otherwise. + * + * @see #setValidateAnnotations + */ + bool getValidateAnnotations() const; + + /** Get the 'ignore annotations' flag + * + * @return true, if the parser is currently configured to + * ignore annotations, false otherwise. + * + * @see #setIgnoreAnnotations + */ + bool getIgnoreAnnotations() const; + + /** Get the 'disable default entity resolution' flag + * + * @return true, if the parser is currently configured to + * not perform default entity resolution, false otherwise. + * + * @see #setDisableDefaultEntityResolution + */ + bool getDisableDefaultEntityResolution() const; + + /** Get the 'skip DTD validation' flag + * + * @return true, if the parser is currently configured to + * skip DTD validation, false otherwise. + * + * @see #setSkipDTDValidation + */ + bool getSkipDTDValidation() const; + + /** Get the 'handle multiple schema imports' flag + * + * @return true, if the parser is currently configured to + * import multiple schemas with the same namespace, false otherwise. + * + * @see #setHandleMultipleImports + */ + bool getHandleMultipleImports() const; + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + /** set the 'generate synthetic annotations' flag + * + * @param newValue The value for specifying whether Synthetic Annotations + * should be generated or not. + * A synthetic XSAnnotation is created when a schema + * component has non-schema attributes but has no + * child annotations so that the non-schema attributes + * can be recovered under PSVI. + * + * @see #getGenerateSyntheticAnnotations + */ + void setGenerateSyntheticAnnotations(const bool newValue); + + /** set the 'validlate annotations' flag + * + * @param newValue The value for specifying whether Annotations + * should be validated or not. + * + * @see #getValidateAnnotations + */ + void setValidateAnnotations(const bool newValue); + + /** Set the 'do namespaces' flag + * + * This method allows users to enable or disable the parser's + * namespace processing. When set to true, parser starts enforcing + * all the constraints and rules specified by the NameSpace + * specification. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether NameSpace rules should + * be enforced or not. + * + * @see #getDoNamespaces + */ + void setDoNamespaces(const bool newState); + + /** Set the 'exit on first error' flag + * + * This method allows users to set the parser's behaviour when it + * encounters the first fatal error. If set to true, the parser + * will exit at the first fatal error. If false, then it will + * report the error and continue processing. + * + * The default value is 'true' and the parser exits on the + * first fatal error. + * + * @param newState The value specifying whether the parser should + * continue or exit when it encounters the first + * fatal error. + * + * @see #getExitOnFirstFatalError + */ + void setExitOnFirstFatalError(const bool newState); + + /** + * This method allows users to set the parser's behaviour when it + * encounters a validation constraint error. If set to true, and the + * the parser will treat validation error as fatal and will exit depends on the + * state of "getExitOnFirstFatalError". If false, then it will + * report the error and continue processing. + * + * Note: setting this true does not mean the validation error will be printed with + * the word "Fatal Error". It is still printed as "Error", but the parser + * will exit if "setExitOnFirstFatalError" is set to true. + * + *

The default value is 'false'.

+ * + * @param newState If true, the parser will exit if "setExitOnFirstFatalError" + * is set to true. + * + * @see #getValidationConstraintFatal + * @see #setExitOnFirstFatalError + */ + void setValidationConstraintFatal(const bool newState); + + /** Set the 'include entity references' flag + * + * This method allows the user to specify whether the parser should + * create entity reference nodes in the DOM tree being produced. + * When the 'create' flag is + * true, the parser will create EntityReference nodes in the DOM tree. + * The EntityReference nodes and their child nodes will be read-only. + * When the 'create' flag is false, no EntityReference nodes will be created. + *

The replacement text + * of the entity is included in either case, either as a + * child of the Entity Reference node or in place at the location + * of the reference. + *

The default value is 'true'. + * + * @param create The new state of the create entity reference nodes + * flag. + * @see #getCreateEntityReferenceNodes + */ + void setCreateEntityReferenceNodes(const bool create); + + /** Set the 'include ignorable whitespace' flag + * + * This method allows the user to specify whether a validating parser + * should include ignorable whitespaces as text nodes. It has no effect + * on non-validating parsers which always include non-markup text. + *

When set to true (also the default), ignorable whitespaces will be + * added to the DOM tree as text nodes. The method + * DOMText::isIgnorableWhitespace() will return true for those text + * nodes only. + *

When set to false, all ignorable whitespace will be discarded and + * no text node is added to the DOM tree. Note: applications intended + * to process the "xml:space" attribute should not set this flag to false. + * And this flag also overrides any schema datateye whitespace facets, + * that is, all ignorable whitespace will be discarded even though + * 'preserve' is set in schema datatype whitespace facets. + * + * @param include The new state of the include ignorable whitespace + * flag. + * + * @see #getIncludeIgnorableWhitespace + */ + void setIncludeIgnorableWhitespace(const bool include); + + /** + * This method allows users to set the validation scheme to be used + * by this parser. The value is one of the ValSchemes enumerated values + * defined by this class: + * + *
Val_Never - turn off validation + *
Val_Always - turn on validation + *
Val_Auto - turn on validation if any internal/external + * DTD subset have been seen + * + *

The parser's default state is: Val_Never.

+ * + * @param newScheme The new validation scheme to use. + * + * @see #getValidationScheme + */ + void setValidationScheme(const ValSchemes newScheme); + + /** Set the 'do schema' flag + * + * This method allows users to enable or disable the parser's + * schema processing. When set to false, parser will not process + * any schema found. + * + * The parser's default state is: false. + * + * Note: If set to true, namespace processing must also be turned on. + * + * @param newState The value specifying whether schema support should + * be enforced or not. + * + * @see #getDoSchema + */ + void setDoSchema(const bool newState); + + /** + * This method allows the user to turn full Schema constraint checking on/off. + * Only takes effect if Schema validation is enabled. + * If turned off, partial constraint checking is done. + * + * Full schema constraint checking includes those checking that may + * be time-consuming or memory intensive. Currently, particle unique + * attribution constraint checking and particle derivation restriction checking + * are controlled by this option. + * + * The parser's default state is: false. + * + * @param schemaFullChecking True to turn on full schema constraint checking. + * + * @see #getValidationSchemaFullChecking + */ + void setValidationSchemaFullChecking(const bool schemaFullChecking); + + /** + * This method allows users to enable or disable the parser's identity + * constraint checks. + * + *

By default, the parser does identity constraint checks. + * The default value is true.

+ * + * @param newState The value specifying whether the parser should + * do identity constraint checks or not in the + * input XML document. + * + * @see #getIdentityConstraintChecking + */ + void setIdentityConstraintChecking(const bool newState); + + /** + * This method allows the user to specify a list of schemas to use. + * If the targetNamespace of a schema specified using this method matches + * the targetNamespace of a schema occurring in the instance document in + * the schemaLocation attribute, or if the targetNamespace matches the + * namespace attribute of the "import" element, the schema specified by the + * user using this method will be used (i.e., the schemaLocation attribute + * in the instance document or on the "import" element will be effectively ignored). + * + * If this method is called more than once, only the last one takes effect. + * + * The syntax is the same as for schemaLocation attributes in instance + * documents: e.g, "http://www.example.com file_name.xsd". The user can + * specify more than one XML Schema in the list. + * + * @param schemaLocation the list of schemas to use + * + * @see #getExternalSchemaLocation + */ + + void setExternalSchemaLocation(const XMLCh* const schemaLocation); + + /** + * This method is same as setExternalSchemaLocation(const XMLCh* const). + * It takes native char string as parameter + * + * @param schemaLocation the list of schemas to use + * + * @see #setExternalSchemaLocation(const XMLCh* const) + */ + void setExternalSchemaLocation(const char* const schemaLocation); + + /** + * This method allows the user to specify the no target namespace XML + * Schema Location externally. If specified, the instance document's + * noNamespaceSchemaLocation attribute will be effectively ignored. + * + * If this method is called more than once, only the last one takes effect. + * + * The syntax is the same as for the noNamespaceSchemaLocation attribute + * that may occur in an instance document: e.g."file_name.xsd". + * + * @param noNamespaceSchemaLocation the XML Schema Location with no target namespace + * + * @see #getExternalNoNamespaceSchemaLocation + */ + void setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation); + + /** + * This method is same as setExternalNoNamespaceSchemaLocation(const XMLCh* const). + * It takes native char string as parameter + * + * @param noNamespaceSchemaLocation the XML Schema Location with no target namespace + * + * @see #setExternalNoNamespaceSchemaLocation(const XMLCh* const) + */ + void setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation); + + /** + * This allows an application to set a SecurityManager on + * the parser; this object stores information that various + * components use to limit their consumption of system + * resources while processing documents. + * + * If this method is called more than once, only the last one takes effect. + * It may not be reset during a parse. + * + * + * @param securityManager the SecurityManager instance to + * be used by this parser + * + * @see #getSecurityManager + */ + void setSecurityManager(SecurityManager* const securityManager); + + /** Set the raw buffer low water mark for this parser. + * + * If the number of available bytes in the raw buffer is less than + * the low water mark the parser will attempt to read more data before + * continuing parsing. By default the value for this parameter is 100 + * bytes. You may want to set this parameter to 0 if you would like + * the parser to parse the available data immediately without + * potentially blocking while waiting for more date. + * + * @param lwm new low water mark + * + * @see #getSecurityManager + */ + void setLowWaterMark(XMLSize_t lwm); + + /** Set the 'Loading External DTD' flag + * + * This method allows users to enable or disable the loading of external DTD. + * When set to false, the parser will ignore any external DTD completely + * if the validationScheme is set to Val_Never. + * + * The parser's default state is: true. + * + * This flag is ignored if the validationScheme is set to Val_Always or Val_Auto. + * + * @param newState The value specifying whether external DTD should + * be loaded or not. + * + * @see #getLoadExternalDTD + * @see #setValidationScheme + */ + void setLoadExternalDTD(const bool newState); + + /** Set the 'Loading Schema' flag + * + * This method allows users to enable or disable the loading of schemas. + * When set to false, the parser not attempt to load schemas beyond + * querying the grammar pool for them. + * + * The parser's default state is: true. + * + * @param newState The value specifying whether schemas should + * be loaded if they're not found in the grammar + * pool. + * + * @see #getLoadSchema + * @see #setDoSchema + */ + void setLoadSchema(const bool newState); + + /** Set the 'create comment nodes' flag + * + * This method allows the user to specify whether the parser should + * create comment nodes in the DOM tree being produced. + *

The default value is 'true'. + * + * @param create The new state of the create comment nodes + * flag. + * @see #getCreateCommentNodes + */ + void setCreateCommentNodes(const bool create); + + /** Enable/disable src offset calculation + * + * This method allows users to enable/disable src offset calculation. + * Disabling the calculation will improve performance. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether we should enable or + * disable src offset calculation + * + * @see #getCalculateSrcOfs + */ + void setCalculateSrcOfs(const bool newState); + + /** Force standard uri + * + * This method allows users to tell the parser to force standard uri conformance. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether the parser should reject malformed URI. + * + * @see #getStandardUriConformant + */ + void setStandardUriConformant(const bool newState); + + /** Set the scanner to use when scanning the XML document + * + * This method allows users to set the scanner to use + * when scanning a given XML document. + * + * @param scannerName The name of the desired scanner + */ + void useScanner(const XMLCh* const scannerName); + + /** Set the implementation to use when creating the document + * + * This method allows users to set the implementation to use + * to create the document when parseing. + * + * @param implementationFeatures The names of the desired features the implementation should have. + */ + void useImplementation(const XMLCh* const implementationFeatures); + + /** + * This method installs the user specified PSVI handler on + * the parser. + * + * @param handler A pointer to the PSVI handler to be called + * when the parser comes across 'PSVI' events + * as per the schema specification. + */ + virtual void setPSVIHandler(PSVIHandler* const handler); + + /** Set the 'associate schema info' flag + * + * This method allows users to specify whether + * the parser should store schema informations in the element + * and attribute nodes in the DOM tree being produced. + * + * @param newState The state to set + * @see #getCreateSchemaInfo + */ + void setCreateSchemaInfo(const bool newState); + + /** Set the 'do XInclude' flag + * + * This method allows users to specify whether + * the parser should process XInclude nodes + * in the DOM tree being produced. + * + * @param newState The state to set + * @see #getDoXInclude + */ + void setDoXInclude(const bool newState); + + /** Set the 'ignore annotation' flag + * + * This method gives users the option to not generate XSAnnotations + * when "traversing" a schema. + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setIgnoreAnnotations(const bool newValue); + + /** Set the 'disable default entity resolution' flag + * + * This method gives users the option to not perform default entity + * resolution. If the user's resolveEntity method returns NULL the + * parser will try to resolve the entity on its own. When this option + * is set to true, the parser will not attempt to resolve the entity + * when the resolveEntity method returns NULL. + * + * The parser's default state is false + * + * @param newValue The state to set + * + * @see #EntityResolver + */ + void setDisableDefaultEntityResolution(const bool newValue); + + /** Set the 'skip DTD validation' flag + * + * This method gives users the option to skip DTD validation only when + * schema validation is on (i.e. when performing validation, we will + * ignore the DTD, except for entities, when schema validation is enabled). + * + * NOTE: This option is ignored if schema validation is disabled. + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setSkipDTDValidation(const bool newValue); + + /** Set the 'handle multiple schema imports' flag + * + * This method gives users the ability to import multiple schemas that + * have the same namespace. + * + * NOTE: This option is ignored if schema validation is disabled. + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setHandleMultipleImports(const bool newValue); + //@} + + + // ----------------------------------------------------------------------- + // Parsing methods + // ----------------------------------------------------------------------- + + /** @name Parsing methods */ + //@{ + + /** Parse via an input source object + * + * This method invokes the parsing process on the XML file specified + * by the InputSource parameter. This API is borrowed from the + * SAX Parser interface. + * + * @param source A const reference to the InputSource object which + * points to the XML file to be parsed. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * @see InputSource#InputSource + */ + void parse(const InputSource& source); + + /** Parse via a file path or URL + * + * This method invokes the parsing process on the XML file specified by + * the Unicode string parameter 'systemId'. This method is borrowed + * from the SAX Parser interface. + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML file to be parsed. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * @see #parse(InputSource,...) + */ + void parse(const XMLCh* const systemId); + + /** Parse via a file path or URL (in the local code page) + * + * This method invokes the parsing process on the XML file specified by + * the native char* string parameter 'systemId'. + * + * @param systemId A const char pointer to a native string which + * contains the path to the XML file to be parsed. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * @see #parse(InputSource,...) + */ + void parse(const char* const systemId); + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a Unicode string representing the path + * to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + bool parseFirst + ( + const XMLCh* const systemId + , XMLPScanToken& toFill + ); + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a regular native string representing + * the path to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(InputSource&,...) + */ + bool parseFirst + ( + const char* const systemId + , XMLPScanToken& toFill + ); + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param source A const reference to the InputSource object which + * points to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + */ + bool parseFirst + ( + const InputSource& source + , XMLPScanToken& toFill + ); + + /** Continue a progressive parse operation + * + * This method is used to continue with progressive parsing of + * XML files started by a call to 'parseFirst' method. + * + * It parses the XML file and stops as soon as it comes across + * a XML token (as defined in the XML specification). + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the next XML token. + * It indicates the user can go ahead with parsing the rest + * of the file. It returns 'false' to indicate that the parser + * could not find next token as per the XML specification + * production rule. + * + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + bool parseNext(XMLPScanToken& token); + + /** Reset the parser after a progressive parse + * + * If a progressive parse loop exits before the end of the document + * is reached, the parser has no way of knowing this. So it will leave + * open any files or sockets or memory buffers that were in use at + * the time that the parse loop exited. + * + * The next parse operation will cause these open files and such to + * be closed, but the next parse operation might occur at some unknown + * future point. To avoid this problem, you should reset the parser if + * you exit the loop early. + * + * If you exited because of an error, then this cleanup will be done + * for you. Its only when you exit the file prematurely of your own + * accord, because you've found what you wanted in the file most + * likely. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + void parseReset(XMLPScanToken& token); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the PSVIHandler interface. + // ----------------------------------------------------------------------- + + /** @name Implementation of the PSVIHandler interface. */ + //@{ + + /** Receive notification of the PSVI properties of an element. + * The scanner will issue this call after the XMLDocumentHandler + * endElement call. Since the scanner will issue the psviAttributes + * call immediately after reading the start tag of an element, all element + * content will be effectively bracketed by these two calls. + * @param localName The name of the element whose end tag was just + * parsed. + * @param uri The namespace to which the element is bound + * @param elementInfo Object containing the element's PSVI properties + */ + virtual void handleElementPSVI + ( + const XMLCh* const localName + , const XMLCh* const uri + , PSVIElement * elementInfo + ); + + virtual void handlePartialElementPSVI + ( + const XMLCh* const localName + , const XMLCh* const uri + , PSVIElement * elementInfo + ); + /** + * Enables PSVI information about attributes to be passed back to the + * application. This callback will be made on *all* + * elements; on elements with no attributes, the final parameter will + * be null. + * @param localName The name of the element upon which start tag + * these attributes were encountered. + * @param uri The namespace to which the element is bound + * @param psviAttributes Object containing the attributes' PSVI properties + * with information to identify them. + */ + virtual void handleAttributesPSVI + ( + const XMLCh* const localName + , const XMLCh* const uri + , PSVIAttributeList * psviAttributes + ); + //@} + + // ----------------------------------------------------------------------- + // Implementation of the XMLDocumentHandler interface. + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLDocumentHandler interface. */ + //@{ + + /** Handle document character events + * + * This method is used to report all the characters scanned by the + * parser. This DOM implementation stores this data in the appropriate + * DOM node, creating one if necessary. + * + * @param chars A const pointer to a Unicode string representing the + * character data. + * @param length The length of the Unicode string returned in 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + */ + virtual void docCharacters + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + /** Handle a document comment event + * + * This method is used to report any comments scanned by the parser. + * A new comment node is created which stores this data. + * + * @param comment A const pointer to a null terminated Unicode + * string representing the comment text. + */ + virtual void docComment + ( + const XMLCh* const comment + ); + + /** Handle a document PI event + * + * This method is used to report any PI scanned by the parser. A new + * PI node is created and appended as a child of the current node in + * the tree. + * + * @param target A const pointer to a Unicode string representing the + * target of the PI declaration. + * @param data A const pointer to a Unicode string representing the + * data of the PI declaration. See the PI production rule + * in the XML specification for details. + */ + virtual void docPI + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** Handle the end of document event + * + * This method is used to indicate the end of the current document. + */ + virtual void endDocument(); + + /** Handle and end of element event + * + * This method is used to indicate the end tag of an element. The + * DOM parser pops the current element off the top of the element + * stack, and make it the new current element. + * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param isRoot A flag indicating whether this element was the + * root element. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + */ + virtual void endElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const bool isRoot + , const XMLCh* const elemPrefix + ); + + /** Handle and end of entity reference event + * + * This method is used to indicate that an end of an entity reference + * was just scanned. + * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void endEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** Handle an ignorable whitespace vent + * + * This method is used to report all the whitespace characters, which + * are determined to be 'ignorable'. This distinction between characters + * is only made, if validation is enabled. + * + * Any whitespace before content is ignored. If the current node is + * already of type DOMNode::TEXT_NODE, then these whitespaces are + * appended, otherwise a new Text node is created which stores this + * data. Essentially all contiguous ignorable characters are collected + * in one node. + * + * @param chars A const pointer to a Unicode string representing the + * ignorable whitespace character data. + * @param length The length of the Unicode string 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + /** Handle a document reset event + * + * This method allows the user installed Document Handler to 'reset' + * itself, freeing all the memory resources. The scanner calls this + * method before starting a new parse event. + */ + virtual void resetDocument(); + + /** Handle a start document event + * + * This method is used to report the start of the parsing process. + */ + virtual void startDocument(); + + /** Handle a start element event + * + * This method is used to report the start of an element. It is + * called at the end of the element, by which time all attributes + * specified are also parsed. A new DOM Element node is created + * along with as many attribute nodes as required. This new element + * is added appended as a child of the current node in the tree, and + * then replaces it as the current node (if the isEmpty flag is false.) + * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + * @param attrList A const reference to the object containing the + * list of attributes just scanned for this element. + * @param attrCount A count of number of attributes in the list + * specified by the parameter 'attrList'. + * @param isEmpty A flag indicating whether this is an empty element + * or not. If empty, then no endElement() call will + * be made. + * @param isRoot A flag indicating whether this element was the + * root element. + * @see DocumentHandler#startElement + */ + virtual void startElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const XMLCh* const elemPrefix + , const RefVectorOf& attrList + , const XMLSize_t attrCount + , const bool isEmpty + , const bool isRoot + ); + + /** Handle a start entity reference event + * + * This method is used to indicate the start of an entity reference. + * If the expand entity reference flag is true, then a new + * DOM Entity reference node is created. + * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void startEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** Handle an XMLDecl event + * + * This method is used to report the XML decl scanned by the parser. + * Refer to the XML specification to see the meaning of parameters. + * + * This method is a no-op for this DOM + * implementation. + * + * @param versionStr A const pointer to a Unicode string representing + * version string value. + * @param encodingStr A const pointer to a Unicode string representing + * the encoding string value. + * @param standaloneStr A const pointer to a Unicode string + * representing the standalone string value. + * @param actualEncStr A const pointer to a Unicode string + * representing the actual encoding string + * value. + */ + virtual void XMLDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + , const XMLCh* const standaloneStr + , const XMLCh* const actualEncStr + ); + + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the deprecated DocTypeHandler interface. + // ----------------------------------------------------------------------- + /** @name Deprecated DocTypeHandler Interfaces */ + //@{ + virtual void attDef + ( + const DTDElementDecl& elemDecl + , const DTDAttDef& attDef + , const bool ignoring + ); + + virtual void doctypeComment + ( + const XMLCh* const comment + ); + + virtual void doctypeDecl + ( + const DTDElementDecl& elemDecl + , const XMLCh* const publicId + , const XMLCh* const systemId + , const bool hasIntSubset + , const bool hasExtSubset = false + ); + + virtual void doctypePI + ( + const XMLCh* const target + , const XMLCh* const data + ); + + virtual void doctypeWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + virtual void elementDecl + ( + const DTDElementDecl& decl + , const bool isIgnored + ); + + virtual void endAttList + ( + const DTDElementDecl& elemDecl + ); + + virtual void endIntSubset(); + + virtual void endExtSubset(); + + virtual void entityDecl + ( + const DTDEntityDecl& entityDecl + , const bool isPEDecl + , const bool isIgnored + ); + + virtual void resetDocType(); + + virtual void notationDecl + ( + const XMLNotationDecl& notDecl + , const bool isIgnored + ); + + virtual void startAttList + ( + const DTDElementDecl& elemDecl + ); + + virtual void startIntSubset(); + + virtual void startExtSubset(); + + virtual void TextDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + ); + + //@} + +protected: + // DOM node creation hooks. Override them if you are using your own + // DOM node types. + // + virtual DOMCDATASection* createCDATASection (const XMLCh*, XMLSize_t); + virtual DOMText* createText (const XMLCh*, XMLSize_t); + + virtual DOMElement* createElement (const XMLCh* name); + virtual DOMElement* createElementNS (const XMLCh* namespaceURI, + const XMLCh* elemPrefix, + const XMLCh* localName, + const XMLCh* qName); + + virtual DOMAttr* createAttr (const XMLCh* name); + virtual DOMAttr* createAttrNS (const XMLCh* namespaceURI, + const XMLCh* elemPrefix, + const XMLCh* localName, + const XMLCh* qName); + + + + +protected : + // ----------------------------------------------------------------------- + // Protected Constructor Methods + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + /** Construct a AbstractDOMParser, with an optional validator + * + * Constructor with an instance of validator class to use for + * validation. If you don't provide a validator, a default one will + * be created for you in the scanner. + * + * @param valToAdopt Pointer to the validator instance to use. The + * parser is responsible for freeing the memory. + * + * @param gramPool Pointer to the grammar pool instance from + * external application (through derivatives). + * The parser does NOT own it. + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + AbstractDOMParser + ( + XMLValidator* const valToAdopt = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , XMLGrammarPool* const gramPool = 0 + ); + + //@} + + // ----------------------------------------------------------------------- + // Protected getter methods + // ----------------------------------------------------------------------- + /** @name Protected getter methods */ + //@{ + /** Get the current DOM node + * + * This provides derived classes with access to the current node, i.e. + * the node to which new nodes are being added. + */ + DOMNode* getCurrentNode(); + + /** Get the XML scanner + * + * This provides derived classes with access to the XML scanner. + */ + XMLScanner* getScanner() const; + + /** Get the Grammar resolver + * + * This provides derived classes with access to the grammar resolver. + */ + GrammarResolver* getGrammarResolver() const; + + /** Get the parse in progress flag + * + * This provides derived classes with access to the parse in progress + * flag. + */ + bool getParseInProgress() const; + + MemoryManager* getMemoryManager() const; + + //@} + + + // ----------------------------------------------------------------------- + // Protected setter methods + // ----------------------------------------------------------------------- + + /** @name Protected setter methods */ + //@{ + + /** Set the current DOM node + * + * This method sets the current node maintained inside the parser to + * the one specified. + * + * @param toSet The DOM node which will be the current node. + */ + void setCurrentNode(DOMNode* toSet); + + /** Set the document node + * + * This method sets the DOM Document node to the one specified. + * + * @param toSet The new DOM Document node for this XML document. + */ + void setDocument(DOMDocument* toSet); + + /** Set the parse in progress flag + * + * This method sets the parse in progress flag to true or false. + * + * @param toSet The value of the flag to be set. + */ + void setParseInProgress(const bool toSet); + //@} + + // ----------------------------------------------------------------------- + // Protected Helper methods + // ----------------------------------------------------------------------- + /** @name Protected helper methods */ + //@{ + void resetPool(); + + /** + * Returns true if the user has adopted the document + */ + bool isDocumentAdopted() const; + + //@} + + +private : + // ----------------------------------------------------------------------- + // Initialize/Cleanup methods + // ----------------------------------------------------------------------- + void initialize(); + void cleanUp(); + void resetInProgress(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + AbstractDOMParser(const AbstractDOMParser&); + AbstractDOMParser& operator=(const AbstractDOMParser&); + +protected: + // ----------------------------------------------------------------------- + // Protected data members + // + // fCurrentNode + // fCurrentParent + // Used to track the current node during nested element events. Since + // the tree must be built from a set of disjoint callbacks, we need + // these to keep up with where we currently are. + // + // fCurrentEntity + // Used to track the current entity decl. If a text decl is seen later on, + // it is used to update the encoding and version information. + // + // fDocument + // The root document object, filled with the document contents. + // + // fCreateEntityReferenceNodes + // Indicates whether entity reference nodes should be created. + // + // fIncludeIgnorableWhitespace + // Indicates whether ignorable whitespace should be added to + // the DOM tree for validating parsers. + // + // fScanner + // The scanner used for this parser. This is created during the + // constructor. + // + // fImplementationFeatures + // The implementation features that we use to get an implementation + // for use in creating the DOMDocument used during parse. If this is + // null then the default DOMImplementation is used + // + // fParseInProgress + // Used to prevent multiple entrance to the parser while its doing + // a parse. + // + // fWithinElement + // A flag to indicate that the parser is within at least one level + // of element processing. + // + // fDocumentType + // Used to store and update the documentType variable information + // in fDocument + // + // fDocumentVector + // Store all the previous fDocument(s) (thus not the current fDocument) + // created in this parser. It is destroyed when the parser is destructed. + // + // fCreateCommentNodes + // Indicates whether comment nodes should be created. + // + // fDocumentAdoptedByUser + // The DOMDocument ownership has been transferred to application + // If set to true, the parser does not own the document anymore + // and thus will not release its memory. + // + // fInternalSubset + // Buffer for storing the internal subset information. + // Once complete (after DOCTYPE is finished scanning), send + // it to DocumentType Node + // + // fGrammarPool + // The grammar pool passed from external application (through derivatives). + // which could be 0, not owned. + // + // fCreateSchemaInfo + // Indicates whether element and attributes will have schema info associated + // + // fDoXinclude + // A bool used to request that XInlcude processing occur on the + // Document the parser parses. + // ----------------------------------------------------------------------- + bool fCreateEntityReferenceNodes; + bool fIncludeIgnorableWhitespace; + bool fWithinElement; + bool fParseInProgress; + bool fCreateCommentNodes; + bool fDocumentAdoptedByUser; + bool fCreateSchemaInfo; + bool fDoXInclude; + XMLScanner* fScanner; + XMLCh* fImplementationFeatures; + DOMNode* fCurrentParent; + DOMNode* fCurrentNode; + DOMEntityImpl* fCurrentEntity; + DOMDocumentImpl* fDocument; + DOMDocumentTypeImpl* fDocumentType; + RefVectorOf* fDocumentVector; + GrammarResolver* fGrammarResolver; + XMLStringPool* fURIStringPool; + XMLValidator* fValidator; + MemoryManager* fMemoryManager; + XMLGrammarPool* fGrammarPool; + XMLBufferMgr fBufMgr; + XMLBuffer& fInternalSubset; + PSVIHandler* fPSVIHandler; +}; + + + +// --------------------------------------------------------------------------- +// AbstractDOMParser: Getter methods +// --------------------------------------------------------------------------- +inline bool AbstractDOMParser::getCreateEntityReferenceNodes() const +{ + return fCreateEntityReferenceNodes; +} + +inline bool AbstractDOMParser::getIncludeIgnorableWhitespace() const +{ + return fIncludeIgnorableWhitespace; +} + +inline bool AbstractDOMParser::getParseInProgress() const +{ + return fParseInProgress; +} + +inline XMLScanner* AbstractDOMParser::getScanner() const +{ + return fScanner; +} + +inline GrammarResolver* AbstractDOMParser::getGrammarResolver() const +{ + return fGrammarResolver; +} + +inline bool AbstractDOMParser::getCreateCommentNodes() const +{ + return fCreateCommentNodes; +} + +inline PSVIHandler* AbstractDOMParser::getPSVIHandler() +{ + return fPSVIHandler; +} + +inline const PSVIHandler* AbstractDOMParser::getPSVIHandler() const +{ + return fPSVIHandler; +} + +inline bool AbstractDOMParser::getCreateSchemaInfo() const +{ + return fCreateSchemaInfo; +} + +inline bool AbstractDOMParser::getDoXInclude() const +{ + return fDoXInclude; +} +// --------------------------------------------------------------------------- +// AbstractDOMParser: Setter methods +// --------------------------------------------------------------------------- +inline void AbstractDOMParser::setCreateEntityReferenceNodes(const bool create) +{ + fCreateEntityReferenceNodes = create; +} + +inline void AbstractDOMParser::setIncludeIgnorableWhitespace(const bool include) +{ + fIncludeIgnorableWhitespace = include; +} + +inline void AbstractDOMParser::setCreateCommentNodes(const bool create) +{ + fCreateCommentNodes = create; +} + +inline void AbstractDOMParser::useImplementation(const XMLCh* const implementationFeatures) +{ + fMemoryManager->deallocate(fImplementationFeatures); + fImplementationFeatures = XMLString::replicate(implementationFeatures, fMemoryManager); +} + +inline void AbstractDOMParser::setDoXInclude(const bool newState) +{ + fDoXInclude = newState; +} + +// --------------------------------------------------------------------------- +// AbstractDOMParser: Protected getter methods +// --------------------------------------------------------------------------- +inline DOMNode* AbstractDOMParser::getCurrentNode() +{ + return fCurrentNode; +} + +inline MemoryManager* AbstractDOMParser::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// AbstractDOMParser: Protected setter methods +// --------------------------------------------------------------------------- +inline void AbstractDOMParser::setCurrentNode(DOMNode* toSet) +{ + fCurrentNode = toSet; +} + +inline void AbstractDOMParser::setParseInProgress(const bool toSet) +{ + fParseInProgress = toSet; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/parsers/DOMLSParserImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/parsers/DOMLSParserImpl.hpp new file mode 100644 index 000000000000..6e3bf0e04f1b --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/parsers/DOMLSParserImpl.hpp @@ -0,0 +1,715 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOMBUILDERIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_DOMBUILDERIMPL_HPP + + +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLEntityResolver; +class XMLResourceIdentifier; +class DOMStringListImpl; +class DOMLSResourceResolver; + + /** + * Introduced in DOM Level 3 + * + * DOMLSParserImpl provides an implementation of a DOMLSParser interface. + * A DOMLSParser instance is obtained from the DOMImplementationLS interface + * by invoking its createDOMLSParser method. + */ +class PARSERS_EXPORT DOMLSParserImpl : public AbstractDOMParser, + public DOMLSParser, + public DOMConfiguration +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Detructor + // ----------------------------------------------------------------------- + + /** @name Constructors and Destructor */ + //@{ + /** Construct a DOMLSParserImpl, with an optional validator + * + * Constructor with an instance of validator class to use for + * validation. If you don't provide a validator, a default one will + * be created for you in the scanner. + * + * @param valToAdopt Pointer to the validator instance to use. The + * parser is responsible for freeing the memory. + * @param manager The memory manager to be used for memory allocations + * @param gramPool Pointer to the grammar pool instance from + * external application. + * The parser does NOT own it. + * + */ + DOMLSParserImpl + ( + XMLValidator* const valToAdopt = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , XMLGrammarPool* const gramPool = 0 + ); + + /** + * Destructor + */ + virtual ~DOMLSParserImpl(); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of DOMLSParser interface + // ----------------------------------------------------------------------- + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** + * @see DOMLSParser#getDomConfig + */ + virtual DOMConfiguration* getDomConfig(); + + /** + * @see DOMLSParser#getFilter + */ + virtual const DOMLSParserFilter* getFilter() const; + + /** + * @see DOMLSParser#getAsync + */ + virtual bool getAsync() const; + + /** + * @see DOMLSParser#getBusy + */ + virtual bool getBusy() const; + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + /** + * @see DOMLSParser#setFilter + */ + virtual void setFilter(DOMLSParserFilter* const filter); + + //@} + + // ----------------------------------------------------------------------- + // Parsing methods + // ----------------------------------------------------------------------- + /** @name Parsing methods */ + //@{ + + // ----------------------------------------------------------------------- + // Parsing methods + // ----------------------------------------------------------------------- + /** + * @see DOMLSParser#parse + */ + virtual DOMDocument* parse(const DOMLSInput* source); + + /** + * @see DOMLSParser#parseURI + */ + virtual DOMDocument* parseURI(const XMLCh* const uri); + + /** + * @see DOMLSParser#parseURI + */ + virtual DOMDocument* parseURI(const char* const uri); + + /** + * @see DOMLSParser#parseWithContext + */ + virtual DOMNode* parseWithContext + ( + const DOMLSInput* source + , DOMNode* contextNode + , const ActionType action + ); + + /** + * @see DOMLSParser#abort + */ + virtual void abort(); + + + // ----------------------------------------------------------------------- + // Non-standard Extension + // ----------------------------------------------------------------------- + /** @name Non-standard Extension */ + //@{ + + /** + * Called to indicate that this DOMLSParser is no longer in use + * and that the implementation may relinquish any resources associated with it. + * + */ + virtual void release(); + + /** Reset the documents vector pool and release all the associated memory + * back to the system. + * + * When parsing a document using a DOM parser, all memory allocated + * for a DOM tree is associated to the DOM document. + * + * If you do multiple parse using the same DOM parser instance, then + * multiple DOM documents will be generated and saved in a vector pool. + * All these documents (and thus all the allocated memory) + * won't be deleted until the parser instance is destroyed. + * + * If you don't need these DOM documents anymore and don't want to + * destroy the DOM parser instance at this moment, then you can call this method + * to reset the document vector pool and release all the allocated memory + * back to the system. + * + * It is an error to call this method if you are in the middle of a + * parse (e.g. in the mid of a progressive parse). + * + * @exception IOException An exception from the parser if this function + * is called when a parse is in progress. + * + */ + virtual void resetDocumentPool(); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via an input source + * object. + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the DOMLSInput parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * @param source A const reference to the DOMLSInput object which + * points to the schema grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no chaching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * + * @see DOMLSInput#DOMLSInput + */ + virtual Grammar* loadGrammar(const DOMLSInput* source, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML grammar file to be + * preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no chaching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const XMLCh* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * @param systemId A const char pointer to a native string which contains + * the path to the XML grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no chaching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const char* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param nameSpaceKey Namespace key + * @return Grammar associated with the Namespace key. + */ + virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey) const; + + /** + * Retrieve the grammar where the root element is declared. + * + * @return Grammar where root element declared + */ + virtual Grammar* getRootGrammar() const; + + /** + * Returns the string corresponding to a URI id from the URI string pool. + * + * @param uriId id of the string in the URI string pool. + * @return URI string corresponding to the URI id. + */ + virtual const XMLCh* getURIText(unsigned int uriId) const; + + /** + * Clear the cached grammar pool + */ + virtual void resetCachedGrammarPool(); + + /** + * Returns the current src offset within the input source. + * To be used only while parsing is in progress. + * + * @return offset within the input source + */ + virtual XMLFilePos getSrcOffset() const; + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the DOMConfiguration interface. + // ----------------------------------------------------------------------- + /** @name Implementation of the DOMConfiguration interface. */ + //@{ + /** + * Set the value of a parameter. + * + * @param name The name of the parameter to set. + * @param value The new value or null if the user wishes to unset the + * parameter. While the type of the value parameter is defined as + * DOMUserData, the object type must match the type defined + * by the definition of the parameter. For example, if the parameter is + * "error-handler", the value must be of type DOMErrorHandler + * + * @exception DOMException (NOT_SUPPORTED_ERR) Raised when the + * parameter name is recognized but the requested value cannot be set. + * @exception DOMException (NOT_FOUND_ERR) Raised when the + * parameter name is not recognized. + * + * @since DOM level 3 + **/ + virtual void setParameter(const XMLCh* name, const void* value); + virtual void setParameter(const XMLCh* name, bool value); + + /** + * Return the value of a parameter if known. + * + * @param name The name of the parameter. + * @return The current object associated with the specified parameter or + * null if no object has been associated or if the parameter is not + * supported. + * + * @exception DOMException (NOT_FOUND_ERR) Raised when the i + * boolean parameter + * name is not recognized. + * + * @since DOM level 3 + **/ + virtual const void* getParameter(const XMLCh* name) const; + + /** + * Check if setting a parameter to a specific value is supported. + * + * @param name The name of the parameter to check. + * @param value An object. if null, the returned value is true. + * @return true if the parameter could be successfully set to the specified + * value, or false if the parameter is not recognized or the requested value + * is not supported. This does not change the current value of the parameter + * itself. + * + * @since DOM level 3 + **/ + virtual bool canSetParameter(const XMLCh* name, const void* value) const; + virtual bool canSetParameter(const XMLCh* name, bool value) const; + + /** + * The list of the parameters supported by this DOMConfiguration object and + * for which at least one value can be set by the application. + * Note that this list can also contain parameter names defined outside this specification. + * + * @return The list of parameters that can be used with setParameter/getParameter + * @since DOM level 3 + **/ + virtual const DOMStringList* getParameterNames() const; + //@} + + // ----------------------------------------------------------------------- + // Implementation of the XMLErrorReporter interface. + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLErrorReporter interface. */ + //@{ + + /** Handle errors reported from the parser + * + * This method is used to report back errors found while parsing the + * XML file. This method is also borrowed from the SAX specification. + * It calls the corresponding user installed Error Handler method: + * 'fatal', 'error', 'warning' depending on the severity of the error. + * This classification is defined by the XML specification. + * + * @param errCode An integer code for the error. + * @param msgDomain A const pointer to an Unicode string representing + * the message domain to use. + * @param errType An enumeration classifying the severity of the error. + * @param errorText A const pointer to an Unicode string representing + * the text of the error message. + * @param systemId A const pointer to an Unicode string representing + * the system id of the XML file where this error + * was discovered. + * @param publicId A const pointer to an Unicode string representing + * the public id of the XML file where this error + * was discovered. + * @param lineNum The line number where the error occurred. + * @param colNum The column number where the error occurred. + * @see DOMErrorHandler + */ + virtual void error + ( + const unsigned int errCode + , const XMLCh* const msgDomain + , const XMLErrorReporter::ErrTypes errType + , const XMLCh* const errorText + , const XMLCh* const systemId + , const XMLCh* const publicId + , const XMLFileLoc lineNum + , const XMLFileLoc colNum + ); + + /** Reset any error data before a new parse + * + * This method allows the user installed Error Handler callback to + * 'reset' itself. + * + * This method is a no-op for this DOM + * implementation. + */ + virtual void resetErrors(); + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the XMLEntityHandler interface. + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLEntityHandler interface. */ + //@{ + + /** Handle an end of input source event + * + * This method is used to indicate the end of parsing of an external + * entity file. + * + * This method is a no-op for this DOM + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the XML file being parsed. + * @see InputSource + */ + virtual void endInputSource(const InputSource& inputSource); + + /** Expand a system id + * + * This method allows an installed XMLEntityHandler to further + * process any system id's of enternal entities encountered in + * the XML file being parsed, such as redirection etc. + * + * This method always returns 'false' + * for this DOM implementation. + * + * @param systemId A const pointer to an Unicode string representing + * the system id scanned by the parser. + * @param toFill A pointer to a buffer in which the application + * processed system id is stored. + * @return 'true', if any processing is done, 'false' otherwise. + */ + virtual bool expandSystemId + ( + const XMLCh* const systemId + , XMLBuffer& toFill + ); + + /** Reset any entity handler information + * + * This method allows the installed XMLEntityHandler to reset + * itself. + * + * This method is a no-op for this DOM + * implementation. + */ + virtual void resetEntities(); + + /** Resolve a public/system id + * + * This method allows a user installed entity handler to further + * process any pointers to external entities. The applications can + * implement 'redirection' via this callback. + * + * @param resourceIdentifier An object containing the type of + * resource to be resolved and the associated data members + * corresponding to this type. + * @return The value returned by the user installed resolveEntity + * method or NULL otherwise to indicate no processing was done. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @see XMLEntityHandler + * @see XMLEntityResolver + */ + virtual InputSource* resolveEntity + ( + XMLResourceIdentifier* resourceIdentifier + ); + + /** Handle a 'start input source' event + * + * This method is used to indicate the start of parsing an external + * entity file. + * + * This method is a no-op for this DOM parse + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the external entity + * being parsed. + */ + virtual void startInputSource(const InputSource& inputSource); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the XMLDocumentHandler interface. + // ----------------------------------------------------------------------- + virtual void docCharacters + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + virtual void docComment + ( + const XMLCh* const comment + ); + virtual void docPI + ( + const XMLCh* const target + , const XMLCh* const data + ); + virtual void startEntityReference + ( + const XMLEntityDecl& entDecl + ); + virtual void endElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const bool isRoot + , const XMLCh* const elemPrefix + ); + virtual void startElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const XMLCh* const elemPrefix + , const RefVectorOf& attrList + , const XMLSize_t attrCount + , const bool isEmpty + , const bool isRoot + ); + + // overriden callbacks to implement parseWithContext behavior + virtual void startDocument(); + virtual void XMLDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + , const XMLCh* const standaloneStr + , const XMLCh* const actualEncStr + ); + + +private : + // ----------------------------------------------------------------------- + // Initialize/Cleanup methods + // ----------------------------------------------------------------------- + void resetParse(); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void applyFilter(DOMNode* node); + + // ----------------------------------------------------------------------- + // Private data members + // + // fEntityResolver + // The installed DOM entity resolver, if any. Null if none. + // + // fXMLEntityResolver + // The installed Xerces entity resolver, if any. Null if none. + // + // fErrorHandler + // The installed DOM error handler, if any. Null if none. + // + // fFilter + // The installed application filter, if any. Null if none. + // + // fCharsetOverridesXMLEncoding + // Indicates if the "charset-overrides-xml-encoding" is set or not + // + // fUserAdoptsDocument + // The DOMDocument ownership has been transferred to application + // If set to true, the parser does not own the document anymore + // and thus will not release its memory. + // + // fSupportedParameters + // A list of the parameters that can be set, including the ones + // specific of Xerces + // + // fFilterAction + // A map of elements rejected by the DOMLSParserFilter::startElement + // callback, used to avoid invoking DOMLSParserFilter::acceptNode + // on its children + // + // fFilterDelayedTextNodes + // As text nodes are filled incrementally, store them in a map + // so that we ask DOMLSParserFilter::acceptNode only once, when it + // is completely created + // + // fWrapNodesInDocumentFragment + // fWrapNodesContext + // fWrapNodesAction + // Variables used to keep the state for parseWithContext API + // + //----------------------------------------------------------------------- + DOMLSResourceResolver* fEntityResolver; + XMLEntityResolver* fXMLEntityResolver; + DOMErrorHandler* fErrorHandler; + DOMLSParserFilter* fFilter; + bool fCharsetOverridesXMLEncoding; + bool fUserAdoptsDocument; + DOMStringListImpl* fSupportedParameters; + ValueHashTableOf* fFilterAction; + ValueHashTableOf* fFilterDelayedTextNodes; + DOMDocumentFragment* fWrapNodesInDocumentFragment; + DOMNode* fWrapNodesContext; + ActionType fWrapNodesAction; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DOMLSParserImpl(const DOMLSParserImpl &); + DOMLSParserImpl & operator = (const DOMLSParserImpl &); +}; + + + +// --------------------------------------------------------------------------- +// DOMLSParserImpl: Handlers for the XMLEntityHandler interface +// --------------------------------------------------------------------------- +inline void DOMLSParserImpl::endInputSource(const InputSource&) +{ + // The DOM entity resolver doesn't handle this +} + +inline bool DOMLSParserImpl::expandSystemId(const XMLCh* const, XMLBuffer&) +{ + // The DOM entity resolver doesn't handle this + return false; +} + +inline void DOMLSParserImpl::resetEntities() +{ + // Nothing to do on this one +} + +inline void DOMLSParserImpl::startInputSource(const InputSource&) +{ + // The DOM entity resolver doesn't handle this +} + + +// --------------------------------------------------------------------------- +// DOMLSParserImpl: Getter methods +// --------------------------------------------------------------------------- +inline DOMConfiguration* DOMLSParserImpl::getDomConfig() +{ + return this; +} + +inline bool DOMLSParserImpl::getAsync() const +{ + // We are a synchronous parser + return false; +} + +inline const DOMLSParserFilter* DOMLSParserImpl::getFilter() const +{ + return fFilter; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/parsers/SAX2XMLFilterImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/parsers/SAX2XMLFilterImpl.hpp new file mode 100644 index 000000000000..008d78ad75ff --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/parsers/SAX2XMLFilterImpl.hpp @@ -0,0 +1,1445 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SAX2XMLFILTERIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_SAX2XMLFILTERIMPL_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * This class implements the SAX2 'XMLFilterImpl' interface and should be + * used by applications as the base class for their SAX2 filters. + * This implementation simply forwards every call to the parent object. + * + */ + +class PARSERS_EXPORT SAX2XMLFilterImpl : + public SAX2XMLFilter + , public EntityResolver + , public DTDHandler + , public ContentHandler + , public ErrorHandler +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** The default constructor */ + SAX2XMLFilterImpl(SAX2XMLReader* parent); + + /** The destructor */ + ~SAX2XMLFilterImpl() ; + //@} + + //----------------------------------------------------------------------- + // Implementation of SAX2XMLReader Interface + //----------------------------------------------------------------------- + //----------------------------------------------------------------------- + // The XMLReader interface + //----------------------------------------------------------------------- + /** @name Implementation of SAX 2.0 XMLReader interface's. */ + //@{ + + /** + * This method returns the installed content handler. + * + * @return A pointer to the installed content handler object. + */ + virtual ContentHandler* getContentHandler() const ; + + /** + * This method returns the installed DTD handler. + * + * @return A pointer to the installed DTD handler object. + */ + virtual DTDHandler* getDTDHandler() const ; + + /** + * This method returns the installed entity resolver. + * + * @return A pointer to the installed entity resolver object. + */ + virtual EntityResolver* getEntityResolver() const ; + + /** + * This method returns the installed error handler. + * + * @return A pointer to the installed error handler object. + */ + virtual ErrorHandler* getErrorHandler() const ; + + /** + * Query the current state of any feature in a SAX2 XMLReader. + * + * @param name The unique identifier (URI) of the feature being set. + * @return The current state of the feature. + * @exception SAXNotRecognizedException If the requested feature is not known. + */ + virtual bool getFeature(const XMLCh* const name) const ; + + /** + * Query the current value of a property in a SAX2 XMLReader. + * + * The parser owns the returned pointer. The memory allocated for + * the returned pointer will be destroyed when the parser is deleted. + * + * To ensure accessibility of the returned information after the parser + * is deleted, callers need to copy and store the returned information + * somewhere else; otherwise you may get unexpected result. Since the returned + * pointer is a generic void pointer, see the SAX2 Programming Guide to learn + * exactly what type of property value each property returns for replication. + * + * @param name The unique identifier (URI) of the property being set. + * @return The current value of the property. The pointer spans the same + * life-time as the parser. A null pointer is returned if nothing + * was specified externally. + * @exception SAXNotRecognizedException If the requested property is not known. + */ + virtual void* getProperty(const XMLCh* const name) const ; + + /** + * Allow an application to register a document event handler. + * + * If the application does not register a document handler, all + * document events reported by the SAX parser will be silently + * ignored (this is the default behaviour implemented by + * HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The document handler. + * @see DocumentHandler#DocumentHandler + * @see HandlerBase#HandlerBase + */ + virtual void setContentHandler(ContentHandler* const handler) ; + + /** + * Allow an application to register a DTD event handler. + * + * If the application does not register a DTD handler, all DTD + * events reported by the SAX parser will be silently ignored (this + * is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the middle + * of a parse, and the SAX parser must begin using the new handler + * immediately. + * + * @param handler The DTD handler. + * @see DTDHandler#DTDHandler + * @see HandlerBase#HandlerBase + */ + virtual void setDTDHandler(DTDHandler* const handler) ; + + /** + * Allow an application to register a custom entity resolver. + * + * If the application does not register an entity resolver, the + * SAX parser will resolve system identifiers and open connections + * to entities itself (this is the default behaviour implemented in + * DefaultHandler). + * + * Applications may register a new or different entity resolver + * in the middle of a parse, and the SAX parser must begin using + * the new resolver immediately. + * + * @param resolver The object for resolving entities. + * @see EntityResolver#EntityResolver + * @see DefaultHandler#DefaultHandler + */ + virtual void setEntityResolver(EntityResolver* const resolver) ; + + /** + * Allow an application to register an error event handler. + * + * If the application does not register an error event handler, + * all error events reported by the SAX parser will be silently + * ignored, except for fatalError, which will throw a SAXException + * (this is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The error handler. + * @see ErrorHandler#ErrorHandler + * @see SAXException#SAXException + * @see HandlerBase#HandlerBase + */ + virtual void setErrorHandler(ErrorHandler* const handler) ; + + /** + * Set the state of any feature in a SAX2 XMLReader. + * Supported features in SAX2 for xerces-c are: + *
(See the SAX2 Programming Guide for detail description). + * + *
http://xml.org/sax/features/validation (default: true) + *
http://xml.org/sax/features/namespaces (default: true) + *
http://xml.org/sax/features/namespace-prefixes (default: false) + *
http://apache.org/xml/features/validation/dynamic (default: false) + *
http://apache.org/xml/features/validation/reuse-grammar (default: false) + *
http://apache.org/xml/features/validation/schema (default: true) + *
http://apache.org/xml/features/validation/schema-full-checking (default: false) + *
http://apache.org/xml/features/validating/load-schema (default: true) + *
http://apache.org/xml/features/nonvalidating/load-external-dtd (default: true) + *
http://apache.org/xml/features/continue-after-fatal-error (default: false) + *
http://apache.org/xml/features/validation-error-as-fatal (default: false) + * + * @param name The unique identifier (URI) of the feature. + * @param value The requested state of the feature (true or false). + * @exception SAXNotRecognizedException If the requested feature is not known. + * @exception SAXNotSupportedException Feature modification is not supported during parse + * + */ + virtual void setFeature(const XMLCh* const name, const bool value) ; + + /** + * Set the value of any property in a SAX2 XMLReader. + * Supported properties in SAX2 for xerces-c are: + *
(See the SAX2 Programming Guide for detail description). + * + *
http://apache.org/xml/properties/schema/external-schemaLocation + *
http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation. + * + * It takes a void pointer as the property value. Application is required to initialize this void + * pointer to a correct type. See the SAX2 Programming Guide + * to learn exactly what type of property value each property expects for processing. + * Passing a void pointer that was initialized with a wrong type will lead to unexpected result. + * If the same property is set more than once, the last one takes effect. + * + * @param name The unique identifier (URI) of the property being set. + * @param value The requested value for the property. See + * the SAX2 Programming Guide to learn + * exactly what type of property value each property expects for processing. + * Passing a void pointer that was initialized with a wrong type will lead + * to unexpected result. + * @exception SAXNotRecognizedException If the requested property is not known. + * @exception SAXNotSupportedException Property modification is not supported during parse + */ + virtual void setProperty(const XMLCh* const name, void* value) ; + + /** + * Parse an XML document. + * + * The application can use this method to instruct the SAX parser + * to begin parsing an XML document from any valid input + * source (a character stream, a byte stream, or a URI). + * + * Applications may not invoke this method while a parse is in + * progress (they should create a new Parser instead for each + * additional XML document). Once a parse is complete, an + * application may reuse the same Parser object, possibly with a + * different input source. + * + * @param source The input source for the top-level of the + * XML document. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see InputSource#InputSource + * @see #setEntityResolver + * @see #setDTDHandler + * @see #setDocumentHandler + * @see #setErrorHandler + */ + virtual void parse + ( + const InputSource& source + ) ; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(InputSource) + */ + virtual void parse + ( + const XMLCh* const systemId + ) ; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(InputSource) + */ + virtual void parse + ( + const char* const systemId + ) ; + + //@} + + // ----------------------------------------------------------------------- + // SAX 2.0-ext + // ----------------------------------------------------------------------- + /** @name SAX 2.0-ext */ + //@{ + /** + * This method returns the installed declaration handler. + * + * @return A pointer to the installed declaration handler object. + */ + virtual DeclHandler* getDeclarationHandler() const ; + + /** + * This method returns the installed lexical handler. + * + * @return A pointer to the installed lexical handler object. + */ + virtual LexicalHandler* getLexicalHandler() const ; + + /** + * Allow an application to register a declaration event handler. + * + * If the application does not register a declaration handler, + * all events reported by the SAX parser will be silently + * ignored. (this is the default behaviour implemented by DefaultHandler). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The DTD declaration handler. + * @see DeclHandler#DeclHandler + * @see SAXException#SAXException + * @see DefaultHandler#DefaultHandler + */ + virtual void setDeclarationHandler(DeclHandler* const handler) ; + + /** + * Allow an application to register a lexical event handler. + * + * If the application does not register a lexical handler, + * all events reported by the SAX parser will be silently + * ignored. (this is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The error handler. + * @see LexicalHandler#LexicalHandler + * @see SAXException#SAXException + * @see HandlerBase#HandlerBase + */ + virtual void setLexicalHandler(LexicalHandler* const handler) ; + + //@} + + // ----------------------------------------------------------------------- + // Getter Methods + // ----------------------------------------------------------------------- + /** @name Getter Methods (Xerces-C specific) */ + //@{ + /** + * This method is used to get the current validator. + * + * SAX2XMLReader assumes responsibility for the validator. It will be + * deleted when the XMLReader is destroyed. + * + * @return A pointer to the validator. An application should not deleted + * the object returned. + * + */ + virtual XMLValidator* getValidator() const ; + + /** Get error count from the last parse operation. + * + * This method returns the error count from the last parse + * operation. Note that this count is actually stored in the + * scanner, so this method simply returns what the + * scanner reports. + * + * @return number of errors encountered during the latest + * parse operation. + */ + virtual XMLSize_t getErrorCount() const ; + + /** + * This method returns the state of the parser's + * exit-on-First-Fatal-Error flag. + * + *

Or you can query the feature "http://apache.org/xml/features/continue-after-fatal-error" + * which indicates the opposite state.

+ * + * @return true, if the parser is currently configured to + * exit on the first fatal error, false otherwise. + * + * @see #setExitOnFirstFatalError + * @see #getFeature + */ + virtual bool getExitOnFirstFatalError() const ; + + /** + * This method returns the state of the parser's + * validation-constraint-fatal flag. + * + *

Or you can query the feature "http://apache.org/xml/features/validation-error-as-fatal" + * which means the same thing. + * + * @return true, if the parser is currently configured to + * set validation constraint errors as fatal, false + * otherwise. + * + * @see #setValidationContraintFatal + * @see #getFeature + */ + virtual bool getValidationConstraintFatal() const ; + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param nameSpaceKey Namespace key + * @return Grammar associated with the Namespace key. + */ + virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey); + + /** + * Retrieve the grammar where the root element is declared. + * + * @return Grammar where root element declared + */ + virtual Grammar* getRootGrammar(); + + /** + * Returns the string corresponding to a URI id from the URI string pool. + * + * @param uriId id of the string in the URI string pool. + * @return URI string corresponding to the URI id. + */ + virtual const XMLCh* getURIText(unsigned int uriId) const; + + /** + * Returns the current src offset within the input source. + * To be used only while parsing is in progress. + * + * @return offset within the input source + */ + virtual XMLFilePos getSrcOffset() const; + + //@} + + // ----------------------------------------------------------------------- + // Setter Methods + // ----------------------------------------------------------------------- + /** @name Setter Methods (Xerces-C specific) */ + //@{ + /** + * This method is used to set a validator. + * + * SAX2XMLReader assumes responsibility for the validator. It will be + * deleted when the XMLReader is destroyed. + * + * @param valueToAdopt A pointer to the validator that the reader should use. + * + */ + virtual void setValidator(XMLValidator* valueToAdopt) ; + + /** + * This method allows users to set the parser's behaviour when it + * encounters the first fatal error. If set to true, the parser + * will exit at the first fatal error. If false, then it will + * report the error and continue processing. + * + *

The default value is 'true' and the parser exits on the + * first fatal error.

+ * + *

Or you can set the feature "http://apache.org/xml/features/continue-after-fatal-error" + * which has the opposite behaviour.

+ * + *

If both the feature above and this function are used, the latter takes effect.

+ * + * @param newState The value specifying whether the parser should + * continue or exit when it encounters the first + * fatal error. + * + * @see #getExitOnFirstFatalError + * @see #setFeature + */ + virtual void setExitOnFirstFatalError(const bool newState) ; + + /** + * This method allows users to set the parser's behaviour when it + * encounters a validation constraint error. If set to true, and the + * the parser will treat validation error as fatal and will exit depends on the + * state of "getExitOnFirstFatalError". If false, then it will + * report the error and continue processing. + * + * Note: setting this true does not mean the validation error will be printed with + * the word "Fatal Error". It is still printed as "Error", but the parser + * will exit if "setExitOnFirstFatalError" is set to true. + * + *

The default value is 'false'.

+ * + *

Or you can set the feature "http://apache.org/xml/features/validation-error-as-fatal" + * which means the same thing.

+ * + *

If both the feature above and this function are used, the latter takes effect.

+ * + * @param newState If true, the parser will exit if "setExitOnFirstFatalError" + * is set to true. + * + * @see #getValidationConstraintFatal + * @see #setExitOnFirstFatalError + * @see #setFeature + */ + virtual void setValidationConstraintFatal(const bool newState) ; + //@} + + + // ----------------------------------------------------------------------- + // Progressive scan methods + // ----------------------------------------------------------------------- + + /** @name Progressive scan methods */ + //@{ + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a Unicode string representing the path + * to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could parse the + * prolog (which means the token will not be valid.) + * + * @see #parseNext + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseFirst + ( + const XMLCh* const systemId + , XMLPScanToken& toFill + ) ; + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a regular native string representing + * the path to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseFirst + ( + const char* const systemId + , XMLPScanToken& toFill + ) ; + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param source A const reference to the InputSource object which + * points to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + */ + virtual bool parseFirst + ( + const InputSource& source + , XMLPScanToken& toFill + ) ; + + /** Continue a progressive parse operation + * + * This method is used to continue with progressive parsing of + * XML files started by a call to 'parseFirst' method. + * + * It parses the XML file and stops as soon as it comes across + * a XML token (as defined in the XML specification). Relevant + * callback handlers are invoked as required by the SAX + * specification. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the next XML token. + * It indicates the user can go ahead with parsing the rest + * of the file. It returns 'false' to indicate that the parser + * could not find next token as per the XML specification + * production rule. + * + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseNext(XMLPScanToken& token) ; + + /** Reset the parser after a progressive parse + * + * If a progressive parse loop exits before the end of the document + * is reached, the parser has no way of knowing this. So it will leave + * open any files or sockets or memory buffers that were in use at + * the time that the parse loop exited. + * + * The next parse operation will cause these open files and such to + * be closed, but the next parse operation might occur at some unknown + * future point. To avoid this problem, you should reset the parser if + * you exit the loop early. + * + * If you exited because of an error, then this cleanup will be done + * for you. Its only when you exit the file prematurely of your own + * accord, because you've found what you wanted in the file most + * likely. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + */ + virtual void parseReset(XMLPScanToken& token) ; + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the grammar preparsing interface + // ----------------------------------------------------------------------- + + /** @name Implementation of Grammar preparsing interface's. */ + //@{ + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via an input source + * object. + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the SAX InputSource parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param source A const reference to the SAX InputSource object which + * points to the schema grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * + * @see InputSource#InputSource + */ + virtual Grammar* loadGrammar(const InputSource& source, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML grammar file to be + * preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const XMLCh* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const char pointer to a native string which contains + * the path to the XML grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const char* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Clear the cached grammar pool + */ + virtual void resetCachedGrammarPool(); + + /** Set maximum input buffer size + * + * This method allows users to limit the size of buffers used in parsing + * XML character data. The effect of setting this size is to limit the + * size of a ContentHandler::characters() call. + * + * The parser's default input buffer size is 1 megabyte. + * + * @param bufferSize The maximum input buffer size + */ + void setInputBufferSize(const XMLSize_t bufferSize); + + //@} + + + // ----------------------------------------------------------------------- + // Advanced document handler list maintenance methods + // ----------------------------------------------------------------------- + + /** @name Advanced document handler list maintenance methods */ + //@{ + /** + * This method installs the specified 'advanced' document callback + * handler, thereby allowing the user to customize the processing, + * if they choose to do so. Any number of advanced callback handlers + * maybe installed. + * + *

The methods in the advanced callback interface represent + * Xerces-C extensions. There is no specification for this interface.

+ * + * @param toInstall A pointer to the users advanced callback handler. + * + * @see #removeAdvDocHandler + */ + virtual void installAdvDocHandler(XMLDocumentHandler* const toInstall) ; + + /** + * This method removes the 'advanced' document handler callback from + * the underlying parser scanner. If no handler is installed, advanced + * callbacks are not invoked by the scanner. + * @param toRemove A pointer to the advanced callback handler which + * should be removed. + * + * @see #installAdvDocHandler + */ + virtual bool removeAdvDocHandler(XMLDocumentHandler* const toRemove) ; + //@} + + + // ----------------------------------------------------------------------- + // The XMLFilter interface + // ----------------------------------------------------------------------- + + /** @name Implementation of SAX 2.0 XMLFilter interface's. */ + //@{ + /** + * This method returns the parent XMLReader object. + * + * @return A pointer to the parent XMLReader object. + */ + virtual SAX2XMLReader* getParent() const; + + /** + * Sets the parent XMLReader object; parse requests will be forwarded to this + * object, and callback notifications coming from it will be postprocessed + * + * @param parent The new XMLReader parent. + * @see SAX2XMLReader#SAX2XMLReader + */ + virtual void setParent(SAX2XMLReader* parent); + //@} + + // ----------------------------------------------------------------------- + // Implementation of the EntityResolver interface + // ----------------------------------------------------------------------- + /** @name The EntityResolver interface */ + //@{ + + /** + * Allow the application to resolve external entities. + * + *

The Parser will call this method before opening any external + * entity except the top-level document entity (including the + * external DTD subset, external entities referenced within the + * DTD, and external entities referenced within the document + * element): the application may request that the parser resolve + * the entity itself, that it use an alternative URI, or that it + * use an entirely different input source.

+ * + *

Application writers can use this method to redirect external + * system identifiers to secure and/or local URIs, to look up + * public identifiers in a catalogue, or to read an entity from a + * database or other input source (including, for example, a dialog + * box).

+ * + *

If the system identifier is a URL, the SAX parser must + * resolve it fully before reporting it to the application.

+ * + * @param publicId The public identifier of the external entity + * being referenced, or null if none was supplied. + * @param systemId The system identifier of the external entity + * being referenced. + * @return An InputSource object describing the new input source, + * or null to request that the parser open a regular + * URI connection to the system identifier. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception IOException An IO exception, + * possibly the result of creating a new InputStream + * or Reader for the InputSource. + * @see InputSource#InputSource + */ + virtual InputSource* resolveEntity + ( + const XMLCh* const publicId + , const XMLCh* const systemId + ); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the DTDHandler interface + // ----------------------------------------------------------------------- + /** @name The DTD handler interface */ + //@{ + /** + * Receive notification of a notation declaration event. + * + *

It is up to the application to record the notation for later + * reference, if necessary.

+ * + *

If a system identifier is present, and it is a URL, the SAX + * parser must resolve it fully before passing it to the + * application.

+ * + * @param name The notation name. + * @param publicId The notation's public identifier, or null if + * none was given. + * @param systemId The notation's system identifier, or null if + * none was given. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #unparsedEntityDecl + * @see AttributeList#AttributeList + */ + virtual void notationDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ); + + /** + * Receive notification of an unparsed entity declaration event. + * + *

Note that the notation name corresponds to a notation + * reported by the notationDecl() event. It is up to the + * application to record the entity for later reference, if + * necessary.

+ * + *

If the system identifier is a URL, the parser must resolve it + * fully before passing it to the application.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @param name The unparsed entity's name. + * @param publicId The entity's public identifier, or null if none + * was given. + * @param systemId The entity's system identifier (it must always + * have one). + * @param notationName The name of the associated notation. + * @see #notationDecl + * @see AttributeList#AttributeList + */ + virtual void unparsedEntityDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + , const XMLCh* const notationName + ); + + /** + * Reset the DocType object on its reuse + * + *

This method helps in reseting the DTD object implementation + * defaults each time the DTD is begun.

+ * + */ + virtual void resetDocType(); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the ContentHandler interface + // ----------------------------------------------------------------------- + /** @name The virtual document handler interface */ + + //@{ + /** + * Receive notification of character data. + * + *

The Parser will call this method to report each chunk of + * character data. SAX parsers may return all contiguous character + * data in a single chunk, or they may split it into several + * chunks; however, all of the characters in any single event + * must come from the same external entity, so that the Locator + * provides useful information.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + *

Note that some parsers will report whitespace using the + * ignorableWhitespace() method rather than this one (validating + * parsers must do so).

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #ignorableWhitespace + * @see Locator#Locator + */ + virtual void characters + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * Receive notification of the end of a document. + * + *

The SAX parser will invoke this method only once, and it will + * be the last method invoked during the parse. The parser shall + * not invoke this method until it has either abandoned parsing + * (because of an unrecoverable error) or reached the end of + * input.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endDocument (); + + /** + * Receive notification of the end of an element. + * + *

The SAX parser will invoke this method at the end of every + * element in the XML document; there will be a corresponding + * startElement() event for every endElement() event (even when the + * element is empty).

+ * + * @param uri The URI of the associated namespace for this element + * @param localname The local part of the element name + * @param qname The QName of this element + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endElement + ( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname + ); + + /** + * Receive notification of ignorable whitespace in element content. + * + *

Validating Parsers must use this method to report each chunk + * of ignorable whitespace (see the W3C XML 1.0 recommendation, + * section 2.10): non-validating parsers may also use this method + * if they are capable of parsing and using content models.

+ * + *

SAX parsers may return all contiguous whitespace in a single + * chunk, or they may split it into several chunks; however, all of + * the characters in any single event must come from the same + * external entity, so that the Locator provides useful + * information.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #characters + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * Receive notification of a processing instruction. + * + *

The Parser will invoke this method once for each processing + * instruction found: note that processing instructions may occur + * before or after the main document element.

+ * + *

A SAX parser should never report an XML declaration (XML 1.0, + * section 2.8) or a text declaration (XML 1.0, section 4.3.1) + * using this method.

+ * + * @param target The processing instruction target. + * @param data The processing instruction data, or null if + * none was supplied. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void processingInstruction + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** + * Receive an object for locating the origin of SAX document events. + * + * SAX parsers are strongly encouraged (though not absolutely + * required) to supply a locator: if it does so, it must supply + * the locator to the application by invoking this method before + * invoking any of the other methods in the DocumentHandler + * interface. + * + * The locator allows the application to determine the end + * position of any document-related event, even if the parser is + * not reporting an error. Typically, the application will + * use this information for reporting its own errors (such as + * character content that does not match an application's + * business rules). The information returned by the locator + * is probably not sufficient for use with a search engine. + * + * Note that the locator will return correct information only + * during the invocation of the events in this interface. The + * application should not attempt to use it at any other time. + * + * @param locator An object that can return the location of + * any SAX document event. The object is only + * 'on loan' to the client code and they are not + * to attempt to delete or modify it in any way! + * + * @see Locator#Locator + */ + virtual void setDocumentLocator(const Locator* const locator); + + /** + * Receive notification of the beginning of a document. + * + *

The SAX parser will invoke this method only once, before any + * other methods in this interface or in DTDHandler (except for + * setDocumentLocator).

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startDocument(); + + /** + * Receive notification of the beginning of an element. + * + *

The Parser will invoke this method at the beginning of every + * element in the XML document; there will be a corresponding + * endElement() event for every startElement() event (even when the + * element is empty). All of the element's content will be + * reported, in order, before the corresponding endElement() + * event.

+ * + *

Note that the attribute list provided will + * contain only attributes with explicit values (specified or + * defaulted): #IMPLIED attributes will be omitted.

+ * + * @param uri The URI of the associated namespace for this element + * @param localname The local part of the element name + * @param qname The QName of this element + * @param attrs The attributes attached to the element, if any. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #endElement + * @see Attributes#Attributes + */ + virtual void startElement + ( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname, + const Attributes& attrs + ); + + /** + * Receive notification of the start of an namespace prefix mapping. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the start of + * each namespace prefix mapping.

+ * + * @param prefix The namespace prefix used + * @param uri The namespace URI used. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startPrefixMapping + ( + const XMLCh* const prefix, + const XMLCh* const uri + ); + + /** + * Receive notification of the end of an namespace prefix mapping. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the end of + * each namespace prefix mapping.

+ * + * @param prefix The namespace prefix used + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endPrefixMapping + ( + const XMLCh* const prefix + ); + + /** + * Receive notification of a skipped entity + * + *

The parser will invoke this method once for each entity + * skipped. All processors may skip external entities, + * depending on the values of the features:
+ * http://xml.org/sax/features/external-general-entities
+ * http://xml.org/sax/features/external-parameter-entities

+ * + *

Note: Xerces (specifically) never skips any entities, regardless + * of the above features. This function is never called in the + * Xerces implementation of SAX2.

+ * + *

Introduced with SAX2

+ * + * @param name The name of the skipped entity. If it is a parameter entity, + * the name will begin with %, and if it is the external DTD subset, + * it will be the string [dtd]. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void skippedEntity + ( + const XMLCh* const name + ); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the ErrorHandler interface + // ----------------------------------------------------------------------- + /** @name The error handler interface */ + //@{ + /** + * Receive notification of a warning. + * + *

SAX parsers will use this method to report conditions that + * are not errors or fatal errors as defined by the XML 1.0 + * recommendation. The default behaviour is to take no action.

+ * + *

The SAX parser must continue to provide normal parsing events + * after invoking this method: it should still be possible for the + * application to process the document through to the end.

+ * + * @param exc The warning information encapsulated in a + * SAX parse exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see SAXParseException#SAXParseException + */ + virtual void warning(const SAXParseException& exc); + + /** + * Receive notification of a recoverable error. + * + *

This corresponds to the definition of "error" in section 1.2 + * of the W3C XML 1.0 Recommendation. For example, a validating + * parser would use this callback to report the violation of a + * validity constraint. The default behaviour is to take no + * action.

+ * + *

The SAX parser must continue to provide normal parsing events + * after invoking this method: it should still be possible for the + * application to process the document through to the end. If the + * application cannot do so, then the parser should report a fatal + * error even if the XML 1.0 recommendation does not require it to + * do so.

+ * + * @param exc The error information encapsulated in a + * SAX parse exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see SAXParseException#SAXParseException + */ + virtual void error(const SAXParseException& exc); + + /** + * Receive notification of a non-recoverable error. + * + *

This corresponds to the definition of "fatal error" in + * section 1.2 of the W3C XML 1.0 Recommendation. For example, a + * parser would use this callback to report the violation of a + * well-formedness constraint.

+ * + *

The application must assume that the document is unusable + * after the parser has invoked this method, and should continue + * (if at all) only for the sake of collecting addition error + * messages: in fact, SAX parsers are free to stop reporting any + * other events once this method has been invoked.

+ * + * @param exc The error information encapsulated in a + * SAX parse exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see SAXParseException#SAXParseException + */ + virtual void fatalError(const SAXParseException& exc); + + /** + * Reset the Error handler object on its reuse + * + *

This method helps in reseting the Error handler object + * implementation defaults each time the Error handler is begun.

+ * + */ + virtual void resetErrors(); + + //@} + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SAX2XMLFilterImpl(const SAX2XMLFilterImpl&); + SAX2XMLFilterImpl& operator=(const SAX2XMLFilterImpl&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fParentReader + // The object that we are filtering + // + // fDocHandler + // The installed SAX content handler, if any. Null if none. + // + // fDTDHandler + // The installed SAX DTD handler, if any. Null if none. + // + // fEntityResolver + // The installed SAX entity handler, if any. Null if none. + // + // fErrorHandler + // The installed SAX error handler, if any. Null if none. + // + // ----------------------------------------------------------------------- + SAX2XMLReader* fParentReader; + ContentHandler* fDocHandler; + DTDHandler* fDTDHandler; + EntityResolver* fEntityResolver; + ErrorHandler* fErrorHandler; +}; + + +// --------------------------------------------------------------------------- +// SAX2XMLReader: Getter methods +// --------------------------------------------------------------------------- +inline SAX2XMLReader* SAX2XMLFilterImpl::getParent() const +{ + return fParentReader; +} + +inline ContentHandler* SAX2XMLFilterImpl::getContentHandler() const +{ + return fDocHandler; +} + +inline DTDHandler* SAX2XMLFilterImpl::getDTDHandler() const +{ + return fDTDHandler; +} + +inline EntityResolver* SAX2XMLFilterImpl::getEntityResolver() const +{ + return fEntityResolver; +} + +inline ErrorHandler* SAX2XMLFilterImpl::getErrorHandler() const +{ + return fErrorHandler; +} + +inline LexicalHandler* SAX2XMLFilterImpl::getLexicalHandler() const +{ + return 0; +} + +inline DeclHandler* SAX2XMLFilterImpl::getDeclarationHandler() const +{ + return 0; +} + +inline void SAX2XMLFilterImpl::setContentHandler(ContentHandler* const handler) +{ + fDocHandler = handler; +} + +inline void SAX2XMLFilterImpl::setDTDHandler(DTDHandler* const handler) +{ + fDTDHandler = handler; +} + +inline void SAX2XMLFilterImpl::setErrorHandler(ErrorHandler* const handler) +{ + fErrorHandler = handler; +} + +inline void SAX2XMLFilterImpl::setEntityResolver(EntityResolver* const resolver) +{ + fEntityResolver = resolver; +} + +inline void SAX2XMLFilterImpl::setLexicalHandler(LexicalHandler* const /*handler*/) +{ +} + +inline void SAX2XMLFilterImpl::setDeclarationHandler(DeclHandler* const /*handler*/) +{ +} + +inline void SAX2XMLFilterImpl::installAdvDocHandler(XMLDocumentHandler* const /*toInstall*/) +{ +} + +inline bool SAX2XMLFilterImpl::removeAdvDocHandler(XMLDocumentHandler* const /*toRemove*/) +{ + return false; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/parsers/SAX2XMLReaderImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/parsers/SAX2XMLReaderImpl.hpp new file mode 100644 index 000000000000..dcac0b7729f3 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/parsers/SAX2XMLReaderImpl.hpp @@ -0,0 +1,1749 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SAX2XMLREADERIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_SAX2XMLREADERIMPL_HPP + +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class ContentHandler; +class LexicalHandler; +class DeclHandler; +class GrammarResolver; +class XMLGrammarPool; +class XMLResourceIdentifier; +class PSVIHandler; + +/** + * This class implements the SAX2 'XMLReader' interface and should be + * used by applications wishing to parse the XML files using SAX2. + * It allows the client program to install SAX2 handlers for event + * callbacks. + * + *

It can be used to instantiate a validating or non-validating + * parser, by setting a member flag.

+ * + * we basically re-use the existing SAX1 parser code, but provide a + * new implementation of XMLContentHandler that raises the new + * SAX2 style events + * + */ + +class PARSERS_EXPORT SAX2XMLReaderImpl : + public XMemory + , public SAX2XMLReader + , public XMLDocumentHandler + , public XMLErrorReporter + , public XMLEntityHandler + , public DocTypeHandler +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** The default constructor */ + SAX2XMLReaderImpl( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , XMLGrammarPool* const gramPool = 0 + ); + + /** The destructor */ + ~SAX2XMLReaderImpl() ; + //@} + + //----------------------------------------------------------------------- + // Implementation of SAX2XMLReader Interface + //----------------------------------------------------------------------- + //----------------------------------------------------------------------- + // The XMLReader interface + //----------------------------------------------------------------------- + /** @name Implementation of SAX 2.0 XMLReader interface's. */ + //@{ + + /** + * This method returns the installed content handler. + * + * @return A pointer to the installed content handler object. + */ + virtual ContentHandler* getContentHandler() const ; + + /** + * This method returns the installed DTD handler. + * + * @return A pointer to the installed DTD handler object. + */ + virtual DTDHandler* getDTDHandler() const ; + + /** + * This method returns the installed entity resolver. + * + * @return A pointer to the installed entity resolver object. + */ + virtual EntityResolver* getEntityResolver() const ; + + /** + * This method returns the installed entity resolver. + * + * @return A pointer to the installed entity resolver object. + */ + virtual XMLEntityResolver* getXMLEntityResolver() const ; + + /** + * This method returns the installed error handler. + * + * @return A pointer to the installed error handler object. + */ + virtual ErrorHandler* getErrorHandler() const ; + + /** + * This method returns the installed PSVI handler. + * + * @return A pointer to the installed PSVI handler object. + */ + virtual PSVIHandler* getPSVIHandler() const ; + + /** + * Query the current state of any feature in a SAX2 XMLReader. + * + * @param name The unique identifier (URI) of the feature being set. + * @return The current state of the feature. + * @exception SAXNotRecognizedException If the requested feature is not known. + */ + virtual bool getFeature(const XMLCh* const name) const ; + + /** + * Query the current value of a property in a SAX2 XMLReader. + * + * The parser owns the returned pointer. The memory allocated for + * the returned pointer will be destroyed when the parser is deleted. + * + * To ensure accessibility of the returned information after the parser + * is deleted, callers need to copy and store the returned information + * somewhere else; otherwise you may get unexpected result. Since the returned + * pointer is a generic void pointer, see the SAX2 Programming Guide to learn + * exactly what type of property value each property returns for replication. + * + * @param name The unique identifier (URI) of the property being set. + * @return The current value of the property. The pointer spans the same + * life-time as the parser. A null pointer is returned if nothing + * was specified externally. + * @exception SAXNotRecognizedException If the requested property is not known. + */ + virtual void* getProperty(const XMLCh* const name) const ; + + /** + * Allow an application to register a document event handler. + * + * If the application does not register a document handler, all + * document events reported by the SAX parser will be silently + * ignored (this is the default behaviour implemented by + * HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The document handler. + * @see DocumentHandler#DocumentHandler + * @see HandlerBase#HandlerBase + */ + virtual void setContentHandler(ContentHandler* const handler) ; + + /** + * Allow an application to register a DTD event handler. + * + * If the application does not register a DTD handler, all DTD + * events reported by the SAX parser will be silently ignored (this + * is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the middle + * of a parse, and the SAX parser must begin using the new handler + * immediately. + * + * @param handler The DTD handler. + * @see DTDHandler#DTDHandler + * @see HandlerBase#HandlerBase + */ + virtual void setDTDHandler(DTDHandler* const handler) ; + + /** + * Allow an application to register a custom entity resolver. + * + * If the application does not register an entity resolver, the + * SAX parser will resolve system identifiers and open connections + * to entities itself (this is the default behaviour implemented in + * DefaultHandler). + * + * Applications may register a new or different entity resolver + * in the middle of a parse, and the SAX parser must begin using + * the new resolver immediately. + * + * Any previously set entity resolver is merely dropped, since the parser + * does not own them. If both setEntityResolver and setXMLEntityResolver + * are called, then the last one is used. + * + * @param resolver The object for resolving entities. + * @see EntityResolver#EntityResolver + * @see DefaultHandler#DefaultHandler + */ + virtual void setEntityResolver(EntityResolver* const resolver) ; + + /** Set the entity resolver + * + * This method allows applications to install their own entity + * resolver. By installing an entity resolver, the applications + * can trap and potentially redirect references to external + * entities. + * + * Any previously set entity resolver is merely dropped, since the parser + * does not own them. If both setEntityResolver and setXMLEntityResolver + * are called, then the last one is used. + * + * @param resolver A const pointer to the user supplied entity + * resolver. + * + * @see #getXMLEntityResolver + */ + virtual void setXMLEntityResolver(XMLEntityResolver* const resolver) ; + + /** + * Allow an application to register an error event handler. + * + * If the application does not register an error event handler, + * all error events reported by the SAX parser will be silently + * ignored, except for fatalError, which will throw a SAXException + * (this is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The error handler. + * @see ErrorHandler#ErrorHandler + * @see SAXException#SAXException + * @see HandlerBase#HandlerBase + */ + virtual void setErrorHandler(ErrorHandler* const handler) ; + + /** + * This method installs the user specified PSVI handler on + * the parser. + * + * @param handler A pointer to the PSVI handler to be called + * when the parser comes across 'PSVI' events + * as per the schema specification. + */ + virtual void setPSVIHandler(PSVIHandler* const handler); + + /** + * Set the state of any feature in a SAX2 XMLReader. + * Supported features in SAX2 for xerces-c are: + *
(See the SAX2 Programming Guide for detail description). + * + *
http://xml.org/sax/features/validation (default: false) + *
http://xml.org/sax/features/namespaces (default: true) + *
http://xml.org/sax/features/namespace-prefixes (default: false) + *
http://apache.org/xml/features/validation/dynamic (default: false) + *
http://apache.org/xml/features/validation/reuse-grammar (default: false) + *
http://apache.org/xml/features/validation/schema (default: true) + *
http://apache.org/xml/features/validation/schema-full-checking (default: false) + *
http://apache.org/xml/features/validating/load-schema (default: true) + *
http://apache.org/xml/features/nonvalidating/load-external-dtd (default: true) + *
http://apache.org/xml/features/continue-after-fatal-error (default: false) + *
http://apache.org/xml/features/validation-error-as-fatal (default: false) + * + * @param name The unique identifier (URI) of the feature. + * @param value The requested state of the feature (true or false). + * @exception SAXNotRecognizedException If the requested feature is not known. + * @exception SAXNotSupportedException Feature modification is not supported during parse + * + */ + virtual void setFeature(const XMLCh* const name, const bool value) ; + + /** + * Set the value of any property in a SAX2 XMLReader. + * Supported properties in SAX2 for xerces-c are: + *
(See the SAX2 Programming Guide for detail description). + * + *
http://apache.org/xml/properties/schema/external-schemaLocation + *
http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation. + * + * It takes a void pointer as the property value. Application is required to initialize this void + * pointer to a correct type. See the SAX2 Programming Guide + * to learn exactly what type of property value each property expects for processing. + * Passing a void pointer that was initialized with a wrong type will lead to unexpected result. + * If the same property is set more than once, the last one takes effect. + * + * @param name The unique identifier (URI) of the property being set. + * @param value The requested value for the property. See + * the SAX2 Programming Guide to learn + * exactly what type of property value each property expects for processing. + * Passing a void pointer that was initialized with a wrong type will lead + * to unexpected result. + * @exception SAXNotRecognizedException If the requested property is not known. + * @exception SAXNotSupportedException Property modification is not supported during parse + */ + virtual void setProperty(const XMLCh* const name, void* value) ; + + /** + * Parse an XML document. + * + * The application can use this method to instruct the SAX parser + * to begin parsing an XML document from any valid input + * source (a character stream, a byte stream, or a URI). + * + * Applications may not invoke this method while a parse is in + * progress (they should create a new Parser instead for each + * additional XML document). Once a parse is complete, an + * application may reuse the same Parser object, possibly with a + * different input source. + * + * @param source The input source for the top-level of the + * XML document. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see InputSource#InputSource + * @see #setEntityResolver + * @see #setDTDHandler + * @see #setDocumentHandler + * @see #setErrorHandler + */ + virtual void parse + ( + const InputSource& source + ) ; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(InputSource) + */ + virtual void parse + ( + const XMLCh* const systemId + ) ; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(InputSource) + */ + virtual void parse + ( + const char* const systemId + ) ; + + //@} + + // ----------------------------------------------------------------------- + // SAX 2.0-ext + // ----------------------------------------------------------------------- + /** @name SAX 2.0-ext */ + //@{ + /** + * This method returns the installed declaration handler. + * + * @return A pointer to the installed declaration handler object. + */ + virtual DeclHandler* getDeclarationHandler() const ; + + /** + * This method returns the installed lexical handler. + * + * @return A pointer to the installed lexical handler object. + */ + virtual LexicalHandler* getLexicalHandler() const ; + + /** + * Allow an application to register a declaration event handler. + * + * If the application does not register a declaration handler, + * all events reported by the SAX parser will be silently + * ignored. (this is the default behaviour implemented by DefaultHandler). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The DTD declaration handler. + * @see DeclHandler#DeclHandler + * @see SAXException#SAXException + * @see DefaultHandler#DefaultHandler + */ + virtual void setDeclarationHandler(DeclHandler* const handler) ; + + /** + * Allow an application to register a lexical event handler. + * + * If the application does not register a lexical handler, + * all events reported by the SAX parser will be silently + * ignored. (this is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The error handler. + * @see LexicalHandler#LexicalHandler + * @see SAXException#SAXException + * @see HandlerBase#HandlerBase + */ + virtual void setLexicalHandler(LexicalHandler* const handler) ; + + //@} + + // ----------------------------------------------------------------------- + // Getter Methods + // ----------------------------------------------------------------------- + /** @name Getter Methods (Xerces-C specific) */ + //@{ + /** + * This method is used to get the current validator. + * + * SAX2XMLReader assumes responsibility for the validator. It will be + * deleted when the XMLReader is destroyed. + * + * @return A pointer to the validator. An application should not deleted + * the object returned. + * + */ + virtual XMLValidator* getValidator() const ; + //@} + + /** Get error count from the last parse operation. + * + * This method returns the error count from the last parse + * operation. Note that this count is actually stored in the + * scanner, so this method simply returns what the + * scanner reports. + * + * @return number of errors encountered during the latest + * parse operation. + */ + virtual XMLSize_t getErrorCount() const ; + + /** + * This method returns the state of the parser's + * exit-on-First-Fatal-Error flag. + * + *

Or you can query the feature "http://apache.org/xml/features/continue-after-fatal-error" + * which indicates the opposite state.

+ * + * @return true, if the parser is currently configured to + * exit on the first fatal error, false otherwise. + * + * @see #setExitOnFirstFatalError + * @see #getFeature + */ + virtual bool getExitOnFirstFatalError() const ; + + /** + * This method returns the state of the parser's + * validation-constraint-fatal flag. + * + *

Or you can query the feature "http://apache.org/xml/features/validation-error-as-fatal" + * which means the same thing. + * + * @return true, if the parser is currently configured to + * set validation constraint errors as fatal, false + * otherwise. + * + * @see #setValidationContraintFatal + * @see #getFeature + */ + virtual bool getValidationConstraintFatal() const ; + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param nameSpaceKey Namespace key + * @return Grammar associated with the Namespace key. + */ + virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey); + + /** + * Retrieve the grammar where the root element is declared. + * + * @return Grammar where root element declared + */ + virtual Grammar* getRootGrammar(); + + /** + * Returns the string corresponding to a URI id from the URI string pool. + * + * @param uriId id of the string in the URI string pool. + * @return URI string corresponding to the URI id. + */ + virtual const XMLCh* getURIText(unsigned int uriId) const; + + /** + * Returns the current src offset within the input source. + * To be used only while parsing is in progress. + * + * @return offset within the input source + */ + virtual XMLFilePos getSrcOffset() const; + + //@} + + // ----------------------------------------------------------------------- + // Setter Methods + // ----------------------------------------------------------------------- + /** @name Setter Methods (Xerces-C specific) */ + //@{ + /** + * This method is used to set a validator. + * + * SAX2XMLReader assumes responsibility for the validator. It will be + * deleted when the XMLReader is destroyed. + * + * @param valueToAdopt A pointer to the validator that the reader should use. + * + */ + virtual void setValidator(XMLValidator* valueToAdopt) ; + + /** + * This method allows users to set the parser's behaviour when it + * encounters the first fatal error. If set to true, the parser + * will exit at the first fatal error. If false, then it will + * report the error and continue processing. + * + *

The default value is 'true' and the parser exits on the + * first fatal error.

+ * + *

Or you can set the feature "http://apache.org/xml/features/continue-after-fatal-error" + * which has the opposite behaviour.

+ * + *

If both the feature above and this function are used, the latter takes effect.

+ * + * @param newState The value specifying whether the parser should + * continue or exit when it encounters the first + * fatal error. + * + * @see #getExitOnFirstFatalError + * @see #setFeature + */ + virtual void setExitOnFirstFatalError(const bool newState) ; + + /** + * This method allows users to set the parser's behaviour when it + * encounters a validation constraint error. If set to true, and the + * the parser will treat validation error as fatal and will exit depends on the + * state of "getExitOnFirstFatalError". If false, then it will + * report the error and continue processing. + * + * Note: setting this true does not mean the validation error will be printed with + * the word "Fatal Error". It is still printed as "Error", but the parser + * will exit if "setExitOnFirstFatalError" is set to true. + * + *

The default value is 'false'.

+ * + *

Or you can set the feature "http://apache.org/xml/features/validation-error-as-fatal" + * which means the same thing.

+ * + *

If both the feature above and this function are used, the latter takes effect.

+ * + * @param newState If true, the parser will exit if "setExitOnFirstFatalError" + * is set to true. + * + * @see #getValidationConstraintFatal + * @see #setExitOnFirstFatalError + * @see #setFeature + */ + virtual void setValidationConstraintFatal(const bool newState) ; + //@} + + + // ----------------------------------------------------------------------- + // Progressive scan methods + // ----------------------------------------------------------------------- + + /** @name Progressive scan methods */ + //@{ + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a Unicode string representing the path + * to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could parse the + * prolog (which means the token will not be valid.) + * + * @see #parseNext + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseFirst + ( + const XMLCh* const systemId + , XMLPScanToken& toFill + ) ; + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a regular native string representing + * the path to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseFirst + ( + const char* const systemId + , XMLPScanToken& toFill + ) ; + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param source A const reference to the InputSource object which + * points to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + */ + virtual bool parseFirst + ( + const InputSource& source + , XMLPScanToken& toFill + ) ; + + /** Continue a progressive parse operation + * + * This method is used to continue with progressive parsing of + * XML files started by a call to 'parseFirst' method. + * + * It parses the XML file and stops as soon as it comes across + * a XML token (as defined in the XML specification). Relevant + * callback handlers are invoked as required by the SAX + * specification. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the next XML token. + * It indicates the user can go ahead with parsing the rest + * of the file. It returns 'false' to indicate that the parser + * could not find next token as per the XML specification + * production rule. + * + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseNext(XMLPScanToken& token) ; + + /** Reset the parser after a progressive parse + * + * If a progressive parse loop exits before the end of the document + * is reached, the parser has no way of knowing this. So it will leave + * open any files or sockets or memory buffers that were in use at + * the time that the parse loop exited. + * + * The next parse operation will cause these open files and such to + * be closed, but the next parse operation might occur at some unknown + * future point. To avoid this problem, you should reset the parser if + * you exit the loop early. + * + * If you exited because of an error, then this cleanup will be done + * for you. Its only when you exit the file prematurely of your own + * accord, because you've found what you wanted in the file most + * likely. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + */ + virtual void parseReset(XMLPScanToken& token) ; + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the grammar preparsing interface + // ----------------------------------------------------------------------- + + /** @name Implementation of Grammar preparsing interface's. */ + //@{ + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via an input source + * object. + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the SAX InputSource parameter. + * + * + * @param source A const reference to the SAX InputSource object which + * points to the schema grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * + * @see InputSource#InputSource + */ + virtual Grammar* loadGrammar(const InputSource& source, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. + * + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML grammar file to be + * preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const XMLCh* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. + * + * + * @param systemId A const char pointer to a native string which contains + * the path to the XML grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const char* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Clear the cached grammar pool + */ + virtual void resetCachedGrammarPool(); + + /** Set maximum input buffer size + * + * This method allows users to limit the size of buffers used in parsing + * XML character data. The effect of setting this size is to limit the + * size of a ContentHandler::characters() call. + * + * The parser's default input buffer size is 1 megabyte. + * + * @param bufferSize The maximum input buffer size + */ + virtual void setInputBufferSize(const XMLSize_t bufferSize); + + //@} + + + // ----------------------------------------------------------------------- + // Advanced document handler list maintenance methods + // ----------------------------------------------------------------------- + + /** @name Advanced document handler list maintenance methods */ + //@{ + /** + * This method installs the specified 'advanced' document callback + * handler, thereby allowing the user to customize the processing, + * if they choose to do so. Any number of advanced callback handlers + * maybe installed. + * + *

The methods in the advanced callback interface represent + * Xerces-C extensions. There is no specification for this interface.

+ * + * @param toInstall A pointer to the users advanced callback handler. + * + * @see #removeAdvDocHandler + */ + virtual void installAdvDocHandler(XMLDocumentHandler* const toInstall) ; + + /** + * This method removes the 'advanced' document handler callback from + * the underlying parser scanner. If no handler is installed, advanced + * callbacks are not invoked by the scanner. + * @param toRemove A pointer to the advanced callback handler which + * should be removed. + * + * @see #installAdvDocHandler + */ + virtual bool removeAdvDocHandler(XMLDocumentHandler* const toRemove) ; + //@} + + // ----------------------------------------------------------------------- + // Implementation of the XMLDocumentHandler interface + // ----------------------------------------------------------------------- + /** @name Implementation of the XMLDocumentHandler Interface. */ + //@{ + /** + * This method is used to report all the characters scanned + * by the parser. The driver will invoke the 'characters' + * method of the user installed SAX Document Handler. + * + *

If any advanced callback handlers are installed, the + * corresponding 'docCharacters' method will also be invoked.

+ * + * @param chars A const pointer to a Unicode string representing the + * character data. + * @param length The length of the Unicode string returned in 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + * @see DocumentHandler#characters + */ + virtual void docCharacters + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + /** + * This method is used to report any comments scanned by the parser. + * This method is a no-op unless, unless an advanced callback handler + * is installed, in which case the corresponding 'docComment' method + * is invoked. + * + * @param comment A const pointer to a null terminated Unicode + * string representing the comment text. + */ + virtual void docComment + ( + const XMLCh* const comment + ); + + /** + * This method is used to report any PI scanned by the parser. + * + *

Any PI's occurring before any 'content' are not reported + * to any SAX handler as per the specification. However, all + * PI's within content are reported via the SAX Document Handler's + * 'processingInstruction' method. + * + *

If any advanced callback handlers are installed, the + * corresponding 'docPI' method will be invoked.

+ * + * @param target A const pointer to a Unicode string representing the + * target of the PI declaration. + * @param data A const pointer to a Unicode string representing the + * data of the PI declaration. See the PI production rule + * in the XML specification for details. + * + * @see DocumentHandler#processingInstruction + */ + virtual void docPI + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** + * This method is used to indicate the end of root element + * was just scanned by the parser. Corresponding 'endDocument' + * method of the user installed SAX Document Handler will also + * be invoked. + * + *

In addition, if any advanced callback handlers are installed, + * the corresponding 'endDocument' method is invoked.

+ * + * @see DocumentHandler#endDocument + */ + virtual void endDocument(); + + /** + * This method is used to indicate the end tag of an element. + * The driver will invoke the corresponding 'endElement' method of + * the SAX Document Handler interface. + * + *

If any advanced callback handlers are installed, the + * corresponding 'endElement' method is also invoked.

+ * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param isRoot A flag indicating whether this element was the + * root element. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + * @see DocumentHandler#endElement + */ + virtual void endElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const bool isRoot + , const XMLCh* const elemPrefix=0 + ); + + /** + * This method is used to indicate that an end of an entity reference + * was just scanned. + * + *

If any advanced callback handlers are installed, the + * corresponding 'endEntityReference' method is invoked.

+ * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void endEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** + * This method is used to report all the whitespace characters, + * which are determined to be 'ignorable'. This distinction + * between characters is only made, if validation is enabled. + * Corresponding 'ignorableWhitespace' method of the user installed + * SAX Document Handler interface is called. + * + *

Any whitespace before content is not reported to the SAX + * Document Handler method, as per the SAX specification. + * However, if any advanced callback handlers are installed, the + * corresponding 'ignorableWhitespace' method is invoked.

+ * + * @param chars A const pointer to a Unicode string representing the + * ignorable whitespace character data. + * @param length The length of the Unicode string 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + * @see DocumentHandler#ignorableWhitespace + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + /** + * This method allows the user installed Document Handler and + * any advanced callback handlers to 'reset' themselves. + */ + virtual void resetDocument(); + + /** + * This method is used to report the start of the parsing process. + * The corresponding user installed SAX Document Handler's method + * 'startDocument' is invoked. + * + *

If any advanced callback handlers are installed, then the + * corresponding 'startDocument' method is also called.

+ * + * @see DocumentHandler#startDocument + */ + virtual void startDocument(); + + /** + * This method is used to report the start of an element. It is + * called at the end of the element, by which time all attributes + * specified are also parsed. The corresponding user installed + * SAX Document Handler's method 'startElement' is invoked. + * + *

If any advanced callback handlers are installed, then the + * corresponding 'startElement' method is also called.

+ * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + * @param attrList A const reference to the object containing the + * list of attributes just scanned for this element. + * @param attrCount A count of number of attributes in the list + * specified by the parameter 'attrList'. + * @param isEmpty A flag indicating whether this is an empty element + * or not. + * @param isRoot A flag indicating whether this element was the + * root element. + * @see DocumentHandler#startElement + */ + virtual void startElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const XMLCh* const elemPrefix + , const RefVectorOf& attrList + , const XMLSize_t attrCount + , const bool isEmpty + , const bool isRoot + ); + + /** + * This method is used to indicate the start of an entity reference. + * + *

If any advanced callback handlers are installed, the + * corresponding 'endEntityReference' method is invoked.

+ * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void startEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** + * This method is used to report the XML decl scanned by the parser. + * Refer to the XML specification to see the meaning of parameters. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param versionStr A const pointer to a Unicode string representing + * version string value. + * @param encodingStr A const pointer to a Unicode string representing + * the encoding string value. + * @param standaloneStr A const pointer to a Unicode string + * representing the standalone string value. + * @param actualEncodingStr A const pointer to a Unicode string + * representing the actual encoding string + * value. + */ + virtual void XMLDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + , const XMLCh* const standaloneStr + , const XMLCh* const actualEncodingStr + ); + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the XMLErrorReporter interface + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLErrorReporter Interface. */ + //@{ + /** + * This method is used to report back errors found while parsing the + * XML file. The driver will call the corresponding user installed + * SAX Error Handler methods: 'fatal', 'error', 'warning' depending + * on the severity of the error. This classification is defined by + * the XML specification. + * + * @param errCode An integer code for the error. + * @param msgDomain A const pointer to an Unicode string representing + * the message domain to use. + * @param errType An enumeration classifying the severity of the error. + * @param errorText A const pointer to an Unicode string representing + * the text of the error message. + * @param systemId A const pointer to an Unicode string representing + * the system id of the XML file where this error + * was discovered. + * @param publicId A const pointer to an Unicode string representing + * the public id of the XML file where this error + * was discovered. + * @param lineNum The line number where the error occurred. + * @param colNum The column number where the error occurred. + * @see ErrorHandler + */ + virtual void error + ( + const unsigned int errCode + , const XMLCh* const msgDomain + , const XMLErrorReporter::ErrTypes errType + , const XMLCh* const errorText + , const XMLCh* const systemId + , const XMLCh* const publicId + , const XMLFileLoc lineNum + , const XMLFileLoc colNum + ); + + /** + * This method allows the user installed Error Handler + * callback to 'reset' itself. + * + * This method is a no-op for this SAX driver + * implementation. + * + */ + virtual void resetErrors(); + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the XMLEntityHandler interface + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLEntityHandler Interface. */ + //@{ + /** + * This method is used to indicate the end of parsing of an external + * entity file. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the XML file being parsed. + * @see InputSource + */ + virtual void endInputSource(const InputSource& inputSource); + + /** + * This method allows an installed XMLEntityHandler to further + * process any system id's of external entities encountered in + * the XML file being parsed, such as redirection etc. + * + * This method always returns 'false' + * for this SAX driver implementation. + * + * @param systemId A const pointer to an Unicode string representing + * the system id scanned by the parser. + * @param toFill A pointer to a buffer in which the application + * processed system id is stored. + * @return 'true', if any processing is done, 'false' otherwise. + */ + virtual bool expandSystemId + ( + const XMLCh* const systemId + , XMLBuffer& toFill + ); + + /** + * This method allows the installed XMLEntityHandler to reset + * itself. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void resetEntities(); + + /** Resolve a public/system id + * + * This method allows a user installed entity handler to further + * process any pointers to external entities. The applications can + * implement 'redirection' via this callback. + * + * @param resourceIdentifier An object containing the type of + * resource to be resolved and the associated data members + * corresponding to this type. + * @return The value returned by the user installed resolveEntity + * method or NULL otherwise to indicate no processing was done. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @see XMLEntityHandler + * @see XMLEntityResolver + */ + virtual InputSource* resolveEntity + ( + XMLResourceIdentifier* resourceIdentifier + ); + + /** + * This method is used to indicate the start of parsing an + * external entity file. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the external entity + * being parsed. + */ + virtual void startInputSource(const InputSource& inputSource); + //@} + + // ----------------------------------------------------------------------- + // Implementation of the Deprecated DocTypeHandler Interface + // ----------------------------------------------------------------------- + + /** @name Implementation of the deprecated DocTypeHandler Interface */ + //@{ + /** + * This method is used to report an attribute definition. + * + * This method is a no-op for this SAX + * driver implementation. + * + * @param elemDecl A const reference to the object containing information + * about the element whose attribute definition was just + * parsed. + * @param attDef A const reference to the object containing information + * attribute definition. + * @param ignore The flag indicating whether this attribute definition + * was ignored by the parser or not. + */ + virtual void attDef + ( + const DTDElementDecl& elemDecl + , const DTDAttDef& attDef + , const bool ignoring + ); + + /** + * This method is used to report a comment occurring within the DTD. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param comment A const pointer to a Unicode string representing the + * text of the comment just parsed. + */ + virtual void doctypeComment + ( + const XMLCh* const comment + ); + + /** + * This method is used to report the DOCTYPE declaration. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param elemDecl A const reference to the object containing information + * about the root element definition declaration of the + * XML document being parsed. + * @param publicId A const pointer to a Unicode string representing the + * public id of the DTD file. + * @param systemId A const pointer to a Unicode string representing the + * system id of the DTD file. + * @param hasIntSubset A flag indicating if this XML file contains any + * internal subset. + * @param hasExtSubset A flag indicating if this XML file contains any + * external subset. Default is false. + */ + virtual void doctypeDecl + ( + const DTDElementDecl& elemDecl + , const XMLCh* const publicId + , const XMLCh* const systemId + , const bool hasIntSubset + , const bool hasExtSubset = false + ); + + /** + * This method is used to report any PI declarations + * occurring inside the DTD definition block. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param target A const pointer to a Unicode string representing the + * target of the PI declaration. + * @param data A const pointer to a Unicode string representing the + * data of the PI declaration. See the PI production rule + * in the XML specification for details. + */ + virtual void doctypePI + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** + * This method is used to report any whitespaces + * occurring inside the DTD definition block. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param chars A const pointer to a Unicode string representing the + * whitespace characters. + * @param length The length of the whitespace Unicode string. + */ + virtual void doctypeWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * This method is used to report an element declarations + * successfully scanned by the parser. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param decl A const reference to the object containing element + * declaration information. + * @param isIgnored The flag indicating whether this definition was + * ignored by the parser or not. + */ + virtual void elementDecl + ( + const DTDElementDecl& decl + , const bool isIgnored + ); + + /** + * This method is used to report the end of an attribute + * list declaration for an element. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param elemDecl A const reference to the object containing element + * declaration information. + */ + virtual void endAttList + ( + const DTDElementDecl& elemDecl + ); + + /** + * This method is used to report the end of the internal subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void endIntSubset(); + + /** + * This method is used to report the end of the external subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void endExtSubset(); + + /** + * This method is used to report any entity declarations. + * For unparsed entities, this driver will invoke the + * SAX DTDHandler::unparsedEntityDecl callback. + * + * @param entityDecl A const reference to the object containing + * the entity declaration information. + * @param isPEDecl The flag indicating whether this was a + * parameter entity declaration or not. + * @param isIgnored The flag indicating whether this definition + * was ignored by the parser or not. + * + * @see DTDHandler#unparsedEntityDecl + */ + virtual void entityDecl + ( + const DTDEntityDecl& entityDecl + , const bool isPEDecl + , const bool isIgnored + ); + + /** + * This method allows the user installed DTD handler to + * reset itself. + */ + virtual void resetDocType(); + + /** + * This method is used to report any notation declarations. + * If there is a user installed DTDHandler, then the driver will + * invoke the SAX DTDHandler::notationDecl callback. + * + * @param notDecl A const reference to the object containing the notation + * declaration information. + * @param isIgnored The flag indicating whether this definition was ignored + * by the parser or not. + * + * @see DTDHandler#notationDecl + */ + virtual void notationDecl + ( + const XMLNotationDecl& notDecl + , const bool isIgnored + ); + + /** + * This method is used to indicate the start of an element's attribute + * list declaration. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param elemDecl A const reference to the object containing element + * declaration information. + */ + virtual void startAttList + ( + const DTDElementDecl& elemDecl + ); + + /** + * This method is used indicate the start of the internal subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void startIntSubset(); + + /** + * This method is used indicate the start of the external subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void startExtSubset(); + + /** + * This method is used to report the TextDecl. Refer to the XML + * specification for the syntax of a TextDecl. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param versionStr A const pointer to a Unicode string representing + * the version number of the 'version' clause. + * @param encodingStr A const pointer to a Unicode string representing + * the encoding name of the 'encoding' clause. + */ + virtual void TextDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + ); + //@} + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SAX2XMLReaderImpl(const SAX2XMLReaderImpl&); + SAX2XMLReaderImpl& operator=(const SAX2XMLReaderImpl&); + + // ----------------------------------------------------------------------- + // Initialize/Cleanup methods + // ----------------------------------------------------------------------- + void initialize(); + void cleanUp(); + void resetInProgress(); + + // ----------------------------------------------------------------------- + // Private data members + // + // fAttrList + // A temporary implementation of the basic SAX2 Attributes + // interface. We use this one over and over on each startElement + // event to allow SAX-like access to the element attributes. + // + // fDocHandler + // The installed SAX content handler, if any. Null if none. + // + // fnamespacePrefix + // Indicates whether the namespace-prefix feature is on or off. + // + // fautoValidation + // Indicates whether automatic validation is on or off + // + // fValidation + // Indicates whether the 'validation' core features is on or off + // + // fReuseGrammar + // Tells the parser whether it should reuse the grammar or not. + // If true, there cannot be any internal subset. + // + // fPrefixesStorage + // the namespace prefixes will be allocated from this pool + // + // fPrefixes + // A Stack of the current namespace prefixes that need calls to + // endPrefixMapping + // + // fPrefixCounts + // A Stack of the number of prefixes that need endPrefixMapping + // calls for that element + // + // fDTDHandler + // The installed SAX DTD handler, if any. Null if none. + // + // fElemDepth + // This is used to track the element nesting depth, so that we can + // know when we are inside content. This is so we can ignore char + // data outside of content. + // + // fEntityResolver + // The installed SAX entity handler, if any. Null if none. + // + // fErrorHandler + // The installed SAX error handler, if any. Null if none. + // + // fLexicalHandler + // The installed SAX lexical handler, if any. Null if none. + // + // fDecllHandler + // The installed SAX declaration handler, if any. Null if none. + // + // fAdvDHCount + // fAdvDHList + // fAdvDHListSize + // This is an array of pointers to XMLDocumentHandlers, which is + // how we see installed advanced document handlers. There will + // usually not be very many at all, so a simple array is used + // instead of a collection, for performance. It will grow if needed, + // but that is unlikely. + // + // The count is how many handlers are currently installed. The size + // is how big the array itself is (for expansion purposes.) When + // count == size, is time to expand. + // + // fParseInProgress + // This flag is set once a parse starts. It is used to prevent + // multiple entrance or reentrance of the parser. + // + // fScanner + // The scanner being used by this parser. It is created internally + // during construction. + // + // fHasExternalSubset + // Indicate if the document has external DTD subset. + // + // fGrammarPool + // The grammar pool passed from external application (through derivatives). + // which could be 0, not owned. + // + // ----------------------------------------------------------------------- + bool fNamespacePrefix; + bool fAutoValidation; + bool fValidation; + bool fParseInProgress; + bool fHasExternalSubset; + XMLSize_t fElemDepth; + XMLSize_t fAdvDHCount; + XMLSize_t fAdvDHListSize; + VecAttributesImpl fAttrList ; + ContentHandler* fDocHandler ; + RefVectorOf* fTempAttrVec ; + XMLStringPool* fPrefixesStorage ; + ValueStackOf* fPrefixes ; + ValueStackOf* fPrefixCounts ; + XMLBuffer* fTempQName; + DTDHandler* fDTDHandler; + EntityResolver* fEntityResolver; + XMLEntityResolver* fXMLEntityResolver; + ErrorHandler* fErrorHandler; + PSVIHandler* fPSVIHandler; + LexicalHandler* fLexicalHandler; + DeclHandler* fDeclHandler; + XMLDocumentHandler** fAdvDHList; + XMLScanner* fScanner; + GrammarResolver* fGrammarResolver; + XMLStringPool* fURIStringPool; + XMLValidator* fValidator; + MemoryManager* fMemoryManager; + XMLGrammarPool* fGrammarPool; + + // ----------------------------------------------------------------------- + // internal function used to set the state of the parser + // ----------------------------------------------------------------------- + void setValidationScheme(const ValSchemes newScheme); + void setDoNamespaces(const bool newState); + bool getDoNamespaces() const; + void setDoSchema(const bool newState); + bool getDoSchema() const; +}; + + +// --------------------------------------------------------------------------- +// SAX2XMLReader: Getter methods +// --------------------------------------------------------------------------- +inline ContentHandler* SAX2XMLReaderImpl::getContentHandler() const +{ + return fDocHandler; +} + +inline DTDHandler* SAX2XMLReaderImpl::getDTDHandler() const +{ + return fDTDHandler ; +} + +inline EntityResolver* SAX2XMLReaderImpl::getEntityResolver() const +{ + return fEntityResolver; +} + +inline XMLEntityResolver* SAX2XMLReaderImpl::getXMLEntityResolver() const +{ + return fXMLEntityResolver; +} + +inline ErrorHandler* SAX2XMLReaderImpl::getErrorHandler() const +{ + return fErrorHandler; +} + +inline PSVIHandler* SAX2XMLReaderImpl::getPSVIHandler() const +{ + return fPSVIHandler; +} + +inline LexicalHandler* SAX2XMLReaderImpl::getLexicalHandler() const +{ + return fLexicalHandler; +} + +inline DeclHandler* SAX2XMLReaderImpl::getDeclarationHandler() const +{ + return fDeclHandler; +} + +inline bool SAX2XMLReaderImpl::getExitOnFirstFatalError() const +{ + return fScanner->getExitOnFirstFatal(); +} + +inline bool SAX2XMLReaderImpl::getValidationConstraintFatal() const +{ + return fScanner->getValidationConstraintFatal(); +} + +inline Grammar* SAX2XMLReaderImpl::getRootGrammar() +{ + return fScanner->getRootGrammar(); +} + +inline const XMLCh* SAX2XMLReaderImpl::getURIText(unsigned int uriId) const +{ + return fScanner->getURIText(uriId); +} + +inline XMLFilePos SAX2XMLReaderImpl::getSrcOffset() const +{ + return fScanner->getSrcOffset(); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/parsers/SAXParser.hpp b/src/libs/xerces-c/msvc/include/xercesc/parsers/SAXParser.hpp new file mode 100644 index 000000000000..5590f2070672 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/parsers/SAXParser.hpp @@ -0,0 +1,2204 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SAXPARSER_HPP) +#define XERCESC_INCLUDE_GUARD_SAXPARSER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +XERCES_CPP_NAMESPACE_BEGIN + + +class DocumentHandler; +class EntityResolver; +class XMLPScanToken; +class XMLScanner; +class XMLValidator; +class GrammarResolver; +class XMLGrammarPool; +class XMLEntityResolver; +class XMLResourceIdentifier; +class PSVIHandler; + +/** + * This class implements the SAX 'Parser' interface and should be + * used by applications wishing to parse the XML files using SAX. + * It allows the client program to install SAX handlers for event + * callbacks. + * + *

It can be used to instantiate a validating or non-validating + * parser, by setting a member flag.

+ * + * @deprecated This interface has been replaced by the SAX2 + * interface, which includes Namespace support. + * See SAX2XMLReader for more information. + * + * Note - XMLDocumentHandler calls, when used with SAXParser, will not provide correct namespace information. This is becaue the SAX parser does not support namespace aware processing. + * + * + */ + +class PARSERS_EXPORT SAXParser : + + public XMemory + , public Parser + , public XMLDocumentHandler + , public XMLErrorReporter + , public XMLEntityHandler + , public DocTypeHandler +{ +public : + // ----------------------------------------------------------------------- + // Class types + // ----------------------------------------------------------------------- + /** ValScheme enum used in setValidationScheme + * Val_Never: Do not report validation errors. + * Val_Always: The parser will always report validation errors. + * Val_Auto: The parser will report validation errors only if a grammar is specified. + * + * @see #setValidationScheme + */ + + enum ValSchemes + { + Val_Never + , Val_Always + , Val_Auto + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** Constructor with an instance of validator class to use for + * validation. + * @param valToAdopt Pointer to the validator instance to use. The + * parser is responsible for freeing the memory. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @param gramPool The collection of cached grammars. + */ + SAXParser + ( + XMLValidator* const valToAdopt = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , XMLGrammarPool* const gramPool = 0 + ); + + /** + * Destructor + */ + ~SAXParser(); + //@} + + + // ----------------------------------------------------------------------- + // Getter Methods + // ----------------------------------------------------------------------- + /** @name Getter methods */ + //@{ + /** + * This method returns the installed document handler. Suitable + * for 'lvalue' usages. + * + * @return The pointer to the installed document handler object. + */ + DocumentHandler* getDocumentHandler(); + + /** + * This method returns the installed document handler. Suitable + * only for 'rvalue' usages. + * + * @return A const pointer to the installed document handler object. + */ + const DocumentHandler* getDocumentHandler() const; + + /** + * This method returns the installed entity resolver. Suitable + * for 'lvalue' usages. + * + * @return The pointer to the installed entity resolver object. + */ + EntityResolver* getEntityResolver(); + + /** + * This method returns the installed entity resolver. Suitable + * for 'rvalue' usages. + * + * @return A const pointer to the installed entity resolver object. + */ + const EntityResolver* getEntityResolver() const; + + /** + * This method returns the installed entity resolver. Suitable + * for 'lvalue' usages. + * + * @return The pointer to the installed entity resolver object. + */ + XMLEntityResolver* getXMLEntityResolver(); + + /** + * This method returns the installed entity resolver. Suitable + * for 'rvalue' usages. + * + * @return A const pointer to the installed entity resolver object. + */ + const XMLEntityResolver* getXMLEntityResolver() const; + + /** + * This method returns the installed error handler. Suitable + * for 'lvalue' usages. + * + * @return The pointer to the installed error handler object. + */ + ErrorHandler* getErrorHandler(); + + /** + * This method returns the installed error handler. Suitable + * for 'rvalue' usages. + * + * @return A const pointer to the installed error handler object. + */ + const ErrorHandler* getErrorHandler() const; + + /** + * This method returns the installed PSVI handler. Suitable + * for 'lvalue' usages. + * + * @return The pointer to the installed PSVI handler object. + */ + PSVIHandler* getPSVIHandler(); + + /** + * This method returns the installed PSVI handler. Suitable + * for 'rvalue' usages. + * + * @return A const pointer to the installed PSVI handler object. + */ + const PSVIHandler* getPSVIHandler() const; + + /** + * This method returns a reference to the parser's installed + * validator. + * + * @return A const reference to the installed validator object. + */ + const XMLValidator& getValidator() const; + + /** + * This method returns an enumerated value that indicates the current + * validation scheme set on this parser. + * + * @return The ValSchemes value current set on this parser. + * @see #setValidationScheme + */ + ValSchemes getValidationScheme() const; + + /** Get the 'do schema' flag + * + * This method returns the state of the parser's schema processing + * flag. + * + * @return true, if the parser is currently configured to + * understand schema, false otherwise. + * + * @see #setDoSchema + */ + bool getDoSchema() const; + + /** Get the 'full schema constraint checking' flag + * + * This method returns the state of the parser's full schema constraint + * checking flag. + * + * @return true, if the parser is currently configured to + * have full schema constraint checking, false otherwise. + * + * @see #setValidationSchemaFullChecking + */ + bool getValidationSchemaFullChecking() const; + + /** Get the 'identity constraint checking' flag + * + * This method returns the state of the parser's identity constraint + * checking flag. + * + * @return true, if the parser is currently configured to + * have identity constraint checking, false otherwise. + * + * @see #setIdentityConstraintChecking + */ + bool getIdentityConstraintChecking() const; + + /** Get error count from the last parse operation. + * + * This method returns the error count from the last parse + * operation. Note that this count is actually stored in the + * scanner, so this method simply returns what the + * scanner reports. + * + * @return number of errors encountered during the latest + * parse operation. + */ + int getErrorCount() const; + + /** + * This method returns the state of the parser's namespace + * handling capability. + * + * @return true, if the parser is currently configured to + * understand namespaces, false otherwise. + * + * @see #setDoNamespaces + */ + bool getDoNamespaces() const; + + /** + * This method returns the state of the parser's + * exit-on-First-Fatal-Error flag. + * + * @return true, if the parser is currently configured to + * exit on the first fatal error, false otherwise. + * + * @see #setExitOnFirstFatalError + */ + bool getExitOnFirstFatalError() const; + + /** + * This method returns the state of the parser's + * validation-constraint-fatal flag. + * + * @return true, if the parser is currently configured to + * set validation constraint errors as fatal, false + * otherwise. + * + * @see #setValidationConstraintFatal + */ + bool getValidationConstraintFatal() const; + + /** Get the set of Namespace/SchemaLocation that is specified externally. + * + * This method returns the list of Namespace/SchemaLocation that was + * specified using setExternalSchemaLocation. + * + * The parser owns the returned string, and the memory allocated for + * the returned string will be destroyed when the parser is deleted. + * + * To ensure accessibility of the returned information after the parser + * is deleted, callers need to copy and store the returned information + * somewhere else. + * + * @return a pointer to the list of Namespace/SchemaLocation that was + * specified externally. The pointer spans the same life-time as + * the parser. A null pointer is returned if nothing + * was specified externally. + * + * @see #setExternalSchemaLocation(const XMLCh* const) + */ + XMLCh* getExternalSchemaLocation() const; + + /** Get the noNamespace SchemaLocation that is specified externally. + * + * This method returns the no target namespace XML Schema Location + * that was specified using setExternalNoNamespaceSchemaLocation. + * + * The parser owns the returned string, and the memory allocated for + * the returned string will be destroyed when the parser is deleted. + * + * To ensure accessibility of the returned information after the parser + * is deleted, callers need to copy and store the returned information + * somewhere else. + * + * @return a pointer to the no target namespace Schema Location that was + * specified externally. The pointer spans the same life-time as + * the parser. A null pointer is returned if nothing + * was specified externally. + * + * @see #setExternalNoNamespaceSchemaLocation(const XMLCh* const) + */ + XMLCh* getExternalNoNamespaceSchemaLocation() const; + + /** Get the SecurityManager instance attached to this parser. + * + * This method returns the security manager + * that was specified using setSecurityManager. + * + * The SecurityManager instance must have been specified by the application; + * this should not be deleted until after the parser has been deleted (or + * a new SecurityManager instance has been supplied to the parser). + * + * @return a pointer to the SecurityManager instance + * specified externally. A null pointer is returned if nothing + * was specified externally. + * + * @see #setSecurityManager(SecurityManager* const) + */ + SecurityManager* getSecurityManager() const; + + /** Get the raw buffer low water mark for this parser. + * + * If the number of available bytes in the raw buffer is less than + * the low water mark the parser will attempt to read more data before + * continuing parsing. By default the value for this parameter is 100 + * bytes. You may want to set this parameter to 0 if you would like + * the parser to parse the available data immediately without + * potentially blocking while waiting for more date. + * + * @return current low water mark + * + * @see #setSecurityManager + */ + XMLSize_t getLowWaterMark() const; + + /** Get the 'Loading External DTD' flag + * + * This method returns the state of the parser's loading external DTD + * flag. + * + * @return false, if the parser is currently configured to + * ignore external DTD completely, true otherwise. + * + * @see #setLoadExternalDTD + * @see #getValidationScheme + */ + bool getLoadExternalDTD() const; + + /** Get the 'Loading Schema' flag + * + * This method returns the state of the parser's loading schema + * flag. + * + * @return true, if the parser is currently configured to + * automatically load schemas that are not in the + * grammar pool, false otherwise. + * + * @see #setLoadSchema + */ + bool getLoadSchema() const; + + /** Get the 'Grammar caching' flag + * + * This method returns the state of the parser's grammar caching when + * parsing an XML document. + * + * @return true, if the parser is currently configured to + * cache grammars, false otherwise. + * + * @see #cacheGrammarFromParse + */ + bool isCachingGrammarFromParse() const; + + /** Get the 'Use cached grammar' flag + * + * This method returns the state of the parser's use of cached grammar + * when parsing an XML document. + * + * @return true, if the parser is currently configured to + * use cached grammars, false otherwise. + * + * @see #useCachedGrammarInParse + */ + bool isUsingCachedGrammarInParse() const; + + /** + * Get the 'calculate src offset flag' + * + * This method returns the state of the parser's src offset calculation + * when parsing an XML document. + * + * @return true, if the parser is currently configured to + * calculate src offsets, false otherwise. + * + * @see #setCalculateSrcOfs + */ + bool getCalculateSrcOfs() const; + + /** + * Get the 'force standard uri flag' + * + * This method returns the state if the parser forces standard uri + * + * @return true, if the parser is currently configured to + * force standard uri, i.e. malformed uri will be rejected. + * + * @see #setStandardUriConformant + */ + bool getStandardUriConformant() const; + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param nameSpaceKey Namespace key + * @return Grammar associated with the Namespace key. + */ + Grammar* getGrammar(const XMLCh* const nameSpaceKey); + + /** + * Retrieve the grammar where the root element is declared. + * + * @return Grammar where root element declared + */ + Grammar* getRootGrammar(); + + /** + * Returns the string corresponding to a URI id from the URI string pool. + * + * @param uriId id of the string in the URI string pool. + * @return URI string corresponding to the URI id. + */ + const XMLCh* getURIText(unsigned int uriId) const; + + /** + * Returns the current src offset within the input source. + * To be used only while parsing is in progress. + * + * @return offset within the input source + */ + XMLFilePos getSrcOffset() const; + + /** Get the 'generate synthetic annotations' flag + * + * @return true, if the parser is currently configured to + * generate synthetic annotations, false otherwise. + * A synthetic XSAnnotation is created when a schema + * component has non-schema attributes but has no + * child annotations so that the non-schema attributes + * can be recovered under PSVI. + * + * @see #setGenerateSyntheticAnnotations + */ + bool getGenerateSyntheticAnnotations() const; + + /** Get the 'validate annotations' flag + * + * @return true, if the parser is currently configured to + * validate annotations, false otherwise. + * + * @see #setValidateAnnotations + */ + bool getValidateAnnotations() const; + + /** Get the 'ignore cached DTD grammar' flag + * + * @return true, if the parser is currently configured to + * ignore cached DTD, false otherwise. + * + * @see #setIgnoreCachedDTD + */ + bool getIgnoreCachedDTD() const; + + /** Get the 'ignore annotations' flag + * + * @return true, if the parser is currently configured to + * ignore annotations, false otherwise. + * + * @see #setIgnoreAnnotations + */ + bool getIgnoreAnnotations() const; + + /** Get the 'disable default entity resolution' flag + * + * @return true, if the parser is currently configured to + * not perform default entity resolution, false otherwise. + * + * @see #setDisableDefaultEntityResolution + */ + bool getDisableDefaultEntityResolution() const; + + /** Get the 'skip DTD validation' flag + * + * @return true, if the parser is currently configured to + * skip DTD validation, false otherwise. + * + * @see #setSkipDTDValidation + */ + bool getSkipDTDValidation() const; + + /** Get the 'handle multiple schema imports' flag + * + * @return true, if the parser is currently configured to + * import multiple schemas with the same namespace, false otherwise. + * + * @see #setHandleMultipleImports + */ + bool getHandleMultipleImports() const; + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + /** set the 'generate synthetic annotations' flag + * + * @param newValue The value for specifying whether Synthetic Annotations + * should be generated or not. + * A synthetic XSAnnotation is created when a schema + * component has non-schema attributes but has no + * child annotations. + * + * @see #getGenerateSyntheticAnnotations + */ + void setGenerateSyntheticAnnotations(const bool newValue); + + /** set the 'validate annotations' flag + * + * @param newValue The value for specifying whether annotations + * should be validate or not. + * + * @see #getValidateAnnotations + */ + void setValidateAnnotations(const bool newValue); + + /** + * This method allows users to enable or disable the parser's + * namespace processing. When set to true, parser starts enforcing + * all the constraints / rules specified by the NameSpace + * specification. + * + *

The parser's default state is: false.

+ * + * @param newState The value specifying whether NameSpace rules should + * be enforced or not. + * + * @see #getDoNamespaces + */ + void setDoNamespaces(const bool newState); + + /** + * This method allows users to set the validation scheme to be used + * by this parser. The value is one of the ValSchemes enumerated values + * defined by this class: + * + *
Val_Never - turn off validation + *
Val_Always - turn on validation + *
Val_Auto - turn on validation if any internal/external + * DTD subset have been seen + * + *

The parser's default state is: Val_Never.

+ * + * @param newScheme The new validation scheme to use. + * + * @see #getValidationScheme + */ + void setValidationScheme(const ValSchemes newScheme); + + /** Set the 'schema support' flag + * + * This method allows users to enable or disable the parser's + * schema processing. When set to false, parser will not process + * any schema found. + * + * The parser's default state is: false. + * + * Note: If set to true, namespace processing must also be turned on. + * + * @param newState The value specifying whether schema support should + * be enforced or not. + * + * @see #getDoSchema + */ + void setDoSchema(const bool newState); + + /** + * This method allows the user to turn full Schema constraint checking on/off. + * Only takes effect if Schema validation is enabled. + * If turned off, partial constraint checking is done. + * + * Full schema constraint checking includes those checking that may + * be time-consuming or memory intensive. Currently, particle unique + * attribution constraint checking and particle derivation restriction checking + * are controlled by this option. + * + * The parser's default state is: false. + * + * @param schemaFullChecking True to turn on full schema constraint checking. + * + * @see #getValidationSchemaFullChecking + */ + void setValidationSchemaFullChecking(const bool schemaFullChecking); + + /** + * This method allows the user to turn identity constraint checking on/off. + * Only takes effect if Schema validation is enabled. + * If turned off, identity constraint checking is not done. + * + * The parser's default state is: true. + * + * @param identityConstraintChecking True to turn on identity constraint checking. + * + * @see #getIdentityConstraintChecking + */ + void setIdentityConstraintChecking(const bool identityConstraintChecking); + + /** + * This method allows users to set the parser's behaviour when it + * encounters the first fatal error. If set to true, the parser + * will exit at the first fatal error. If false, then it will + * report the error and continue processing. + * + *

The default value is 'true' and the parser exits on the + * first fatal error.

+ * + * @param newState The value specifying whether the parser should + * continue or exit when it encounters the first + * fatal error. + * + * @see #getExitOnFirstFatalError + */ + void setExitOnFirstFatalError(const bool newState); + + /** + * This method allows users to set the parser's behaviour when it + * encounters a validation constraint error. If set to true, and the + * the parser will treat validation error as fatal and will exit depends on the + * state of "getExitOnFirstFatalError". If false, then it will + * report the error and continue processing. + * + * Note: setting this true does not mean the validation error will be printed with + * the word "Fatal Error". It is still printed as "Error", but the parser + * will exit if "setExitOnFirstFatalError" is set to true. + * + *

The default value is 'false'.

+ * + * @param newState If true, the parser will exit if "setExitOnFirstFatalError" + * is set to true. + * + * @see #getValidationConstraintFatal + * @see #setExitOnFirstFatalError + */ + void setValidationConstraintFatal(const bool newState); + + /** + * This method allows the user to specify a list of schemas to use. + * If the targetNamespace of a schema specified using this method matches + * the targetNamespace of a schema occurring in the instance document in + * the schemaLocation attribute, or if the targetNamespace matches the + * namespace attribute of the "import" element, the schema specified by the + * user using this method will be used (i.e., the schemaLocation attribute + * in the instance document or on the "import" element will be effectively ignored). + * + * If this method is called more than once, only the last one takes effect. + * + * The syntax is the same as for schemaLocation attributes in instance + * documents: e.g, "http://www.example.com file_name.xsd". The user can + * specify more than one XML Schema in the list. + * + * @param schemaLocation the list of schemas to use + * + * @see #getExternalSchemaLocation + */ + + void setExternalSchemaLocation(const XMLCh* const schemaLocation); + + /** + * This method is same as setExternalSchemaLocation(const XMLCh* const). + * It takes native char string as parameter + * + * @param schemaLocation the list of schemas to use + * + * @see #setExternalSchemaLocation(const XMLCh* const) + */ + void setExternalSchemaLocation(const char* const schemaLocation); + + /** + * This method allows the user to specify the no target namespace XML + * Schema Location externally. If specified, the instance document's + * noNamespaceSchemaLocation attribute will be effectively ignored. + * + * If this method is called more than once, only the last one takes effect. + * + * The syntax is the same as for the noNamespaceSchemaLocation attribute + * that may occur in an instance document: e.g."file_name.xsd". + * + * @param noNamespaceSchemaLocation the XML Schema Location with no target namespace + * + * @see #getExternalNoNamespaceSchemaLocation + */ + void setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation); + + /** + * This method is same as setExternalNoNamespaceSchemaLocation(const XMLCh* const). + * It takes native char string as parameter + * + * @param noNamespaceSchemaLocation the XML Schema Location with no target namespace + * + * @see #setExternalNoNamespaceSchemaLocation(const XMLCh* const) + */ + void setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation); + + /** + * This allows an application to set a SecurityManager on + * the parser; this object stores information that various + * components use to limit their consumption of system + * resources while processing documents. + * + * If this method is called more than once, only the last one takes effect. + * It may not be reset during a parse. + * + * + * @param securityManager the SecurityManager instance to + * be used by this parser + * + * @see #getSecurityManager + */ + void setSecurityManager(SecurityManager* const securityManager); + + /** Set the raw buffer low water mark for this parser. + * + * If the number of available bytes in the raw buffer is less than + * the low water mark the parser will attempt to read more data before + * continuing parsing. By default the value for this parameter is 100 + * bytes. You may want to set this parameter to 0 if you would like + * the parser to parse the available data immediately without + * potentially blocking while waiting for more date. + * + * @param lwm new low water mark + * + * @see #getSecurityManager + */ + void setLowWaterMark(XMLSize_t lwm); + + /** Set the 'Loading External DTD' flag + * + * This method allows users to enable or disable the loading of external DTD. + * When set to false, the parser will ignore any external DTD completely + * if the validationScheme is set to Val_Never. + * + * The parser's default state is: true. + * + * This flag is ignored if the validationScheme is set to Val_Always or Val_Auto. + * + * @param newState The value specifying whether external DTD should + * be loaded or not. + * + * @see #getLoadExternalDTD + * @see #setValidationScheme + */ + void setLoadExternalDTD(const bool newState); + + /** Set the 'Loading Schema' flag + * + * This method allows users to enable or disable the loading of schemas. + * When set to false, the parser not attempt to load schemas beyond + * querying the grammar pool for them. + * + * The parser's default state is: true. + * + * @param newState The value specifying whether schemas should + * be loaded if they're not found in the grammar + * pool. + * + * @see #getLoadSchema + * @see #setDoSchema + */ + void setLoadSchema(const bool newState); + + /** Set the 'Grammar caching' flag + * + * This method allows users to enable or disable caching of grammar when + * parsing XML documents. When set to true, the parser will cache the + * resulting grammar for use in subsequent parses. + * + * If the flag is set to true, the 'Use cached grammar' flag will also be + * set to true. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether we should cache grammars + * or not. + * + * @see #isCachingGrammarFromParse + * @see #useCachedGrammarInParse + */ + void cacheGrammarFromParse(const bool newState); + + /** Set the 'Use cached grammar' flag + * + * This method allows users to enable or disable the use of cached + * grammars. When set to true, the parser will use the cached grammar, + * instead of building the grammar from scratch, to validate XML + * documents. + * + * If the 'Grammar caching' flag is set to true, this method ignores the + * value passed in. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether we should use the cached + * grammar or not. + * + * @see #isUsingCachedGrammarInParse + * @see #cacheGrammarFromParse + */ + void useCachedGrammarInParse(const bool newState); + + /** Enable/disable src offset calculation + * + * This method allows users to enable/disable src offset calculation. + * Disabling the calculation will improve performance. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether we should enable or + * disable src offset calculation + * + * @see #getCalculateSrcOfs + */ + void setCalculateSrcOfs(const bool newState); + + /** Force standard uri + * + * This method allows users to tell the parser to force standard uri conformance. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether the parser should reject malformed URI. + * + * @see #getStandardUriConformant + */ + void setStandardUriConformant(const bool newState); + + /** Set the scanner to use when scanning the XML document + * + * This method allows users to set the scanner to use + * when scanning a given XML document. + * + * @param scannerName The name of the desired scanner + */ + void useScanner(const XMLCh* const scannerName); + + /** Set maximum input buffer size + * + * This method allows users to limit the size of buffers used in parsing + * XML character data. The effect of setting this size is to limit the + * size of a ContentHandler::characters() call. + * + * The parser's default input buffer size is 1 megabyte. + * + * @param bufferSize The maximum input buffer size + */ + void setInputBufferSize(const XMLSize_t bufferSize); + + /** Set the 'ignore cached DTD grammar' flag + * + * This method gives users the option to ignore a cached DTD grammar, when + * an XML document contains both an internal and external DTD, and the use + * cached grammar from parse option is enabled. Currently, we do not allow + * using cached DTD grammar when an internal subset is present in the + * document. This option will only affect the behavior of the parser when + * an internal and external DTD both exist in a document (i.e. no effect + * if document has no internal subset). + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setIgnoreCachedDTD(const bool newValue); + + /** Set the 'ignore annotation' flag + * + * This method gives users the option to not generate XSAnnotations + * when "traversing" a schema. + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setIgnoreAnnotations(const bool newValue); + + /** Set the 'disable default entity resolution' flag + * + * This method gives users the option to not perform default entity + * resolution. If the user's resolveEntity method returns NULL the + * parser will try to resolve the entity on its own. When this option + * is set to true, the parser will not attempt to resolve the entity + * when the resolveEntity method returns NULL. + * + * The parser's default state is false + * + * @param newValue The state to set + * + * @see #EntityResolver + */ + void setDisableDefaultEntityResolution(const bool newValue); + + /** Set the 'skip DTD validation' flag + * + * This method gives users the option to skip DTD validation only when + * schema validation is on (i.e. when performing validation, we will + * ignore the DTD, except for entities, when schema validation is enabled). + * + * NOTE: This option is ignored if schema validation is disabled. + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setSkipDTDValidation(const bool newValue); + + /** Set the 'handle multiple schema imports' flag + * + * This method gives users the ability to import multiple schemas that + * have the same namespace. + * + * NOTE: This option is ignored if schema validation is disabled. + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setHandleMultipleImports(const bool newValue); + //@} + + + // ----------------------------------------------------------------------- + // Advanced document handler list maintenance methods + // ----------------------------------------------------------------------- + + /** @name Advanced document handler list maintenance methods */ + //@{ + /** + * This method installs the specified 'advanced' document callback + * handler, thereby allowing the user to customize the processing, + * if they choose to do so. Any number of advanced callback handlers + * maybe installed. + * + *

The methods in the advanced callback interface represent + * Xerces-C extensions. There is no specification for this interface.

+ * + * Note - XMLDocumentHandler calls, when used with SAXParser, will not provide correct namespace information. This is becaue the SAX parser does not support namespace aware processing. + * + * @param toInstall A pointer to the users advanced callback handler. + * + * @see #removeAdvDocHandler + */ + void installAdvDocHandler(XMLDocumentHandler* const toInstall); + + /** + * This method removes the 'advanced' document handler callback from + * the underlying parser scanner. If no handler is installed, advanced + * callbacks are not invoked by the scanner. + * @param toRemove A pointer to the advanced callback handler which + * should be removed. + * + * Note - XMLDocumentHandler calls, when used with SAXParser, will not provide correct namespace information. This is becaue the SAX parser does not support namespace aware processing. + * + * @see #installAdvDocHandler + */ + bool removeAdvDocHandler(XMLDocumentHandler* const toRemove); + //@} + + + // ----------------------------------------------------------------------- + // Progressive scan methods + // ----------------------------------------------------------------------- + + /** @name Progressive scan methods */ + //@{ + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a Unicode string representing the path + * to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could parse the + * prolog (which means the token will not be valid.) + * + * @see #parseNext + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + bool parseFirst + ( + const XMLCh* const systemId + , XMLPScanToken& toFill + ); + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a regular native string representing + * the path to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(InputSource&,...) + */ + bool parseFirst + ( + const char* const systemId + , XMLPScanToken& toFill + ); + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param source A const reference to the InputSource object which + * points to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + */ + bool parseFirst + ( + const InputSource& source + , XMLPScanToken& toFill + ); + + /** Continue a progressive parse operation + * + * This method is used to continue with progressive parsing of + * XML files started by a call to 'parseFirst' method. + * + * It parses the XML file and stops as soon as it comes across + * a XML token (as defined in the XML specification). Relevant + * callback handlers are invoked as required by the SAX + * specification. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the next XML token. + * It indicates the user can go ahead with parsing the rest + * of the file. It returns 'false' to indicate that the parser + * could not find next token as per the XML specification + * production rule. + * + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + bool parseNext(XMLPScanToken& token); + + /** Reset the parser after a progressive parse + * + * If a progressive parse loop exits before the end of the document + * is reached, the parser has no way of knowing this. So it will leave + * open any files or sockets or memory buffers that were in use at + * the time that the parse loop exited. + * + * The next parse operation will cause these open files and such to + * be closed, but the next parse operation might occur at some unknown + * future point. To avoid this problem, you should reset the parser if + * you exit the loop early. + * + * If you exited because of an error, then this cleanup will be done + * for you. Its only when you exit the file prematurely of your own + * accord, because you've found what you wanted in the file most + * likely. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + */ + void parseReset(XMLPScanToken& token); + + //@} + + // ----------------------------------------------------------------------- + // Grammar preparsing interface + // ----------------------------------------------------------------------- + + /** @name Implementation of Grammar preparsing interface's. */ + //@{ + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via an input source + * object. + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the SAX InputSource parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param source A const reference to the SAX InputSource object which + * points to the schema grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * + * @see InputSource#InputSource + */ + Grammar* loadGrammar(const InputSource& source, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML grammar file to be + * preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + Grammar* loadGrammar(const XMLCh* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const char pointer to a native string which contains + * the path to the XML grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + Grammar* loadGrammar(const char* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * This method allows the user to reset the pool of cached grammars. + */ + void resetCachedGrammarPool(); + + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the SAX Parser interface + // ----------------------------------------------------------------------- + + /** @name Implementation of SAX 1.0 Parser interface's. */ + //@{ + /** + * This method invokes the parsing process on the XML file specified + * by the InputSource parameter. + * + * @param source A const reference to the InputSource object which + * points to the XML file to be parsed. + * + * @see Parser#parse(InputSource) + */ + virtual void parse(const InputSource& source); + + /** + * This method invokes the parsing process on the XML file specified by + * the Unicode string parameter 'systemId'. + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML file to be parsed. + * + * @see Parser#parse(XMLCh*) + */ + virtual void parse(const XMLCh* const systemId); + + /** + * This method invokes the parsing process on the XML file specified by + * the native char* string parameter 'systemId'. + * + * @param systemId A const char pointer to a native string which + * contains the path to the XML file to be parsed. + */ + virtual void parse(const char* const systemId); + + /** + * This method installs the user specified SAX Document Handler + * callback function on parser. + * + * @param handler A pointer to the document handler to be called + * when the parser comes across 'document' events + * as per the SAX specification. + * + * @see Parser#parse(char*) + */ + virtual void setDocumentHandler(DocumentHandler* const handler); + + /** + * This method installs the user specified DTD handler on the parser. + * + * @param handler A pointer to the DTD handler to be called + * when the parser comes across 'DTD' events + * as per the SAX specification. + * + * @see Parser#setDTDHandler + */ + virtual void setDTDHandler(DTDHandler* const handler); + + /** + * This method installs the user specified error handler on + * the parser. + * + * @param handler A pointer to the error handler to be called + * when the parser comes across 'error' events + * as per the SAX specification. + * + * @see Parser#setErrorHandler + */ + virtual void setErrorHandler(ErrorHandler* const handler); + + /** + * This method installs the user specified PSVI handler on + * the parser. + * + * @param handler A pointer to the PSVI handler to be called + * when the parser comes across 'PSVI' events + * as per the schema specification. + * + * @see Parser#setPSVIHandler + */ + virtual void setPSVIHandler(PSVIHandler* const handler); + + /** + * This method installs the user specified entity resolver on the + * parser. It allows applications to trap and redirect calls to + * external entities. + * + * Any previously set entity resolver is merely dropped, since the parser + * does not own them. If both setEntityResolver and setXMLEntityResolver + * are called, then the last one is used. + * + * @param resolver A pointer to the entity resolver to be called + * when the parser comes across references to + * entities in the XML file. + * + * @see Parser#setEntityResolver + */ + virtual void setEntityResolver(EntityResolver* const resolver); + + /** + * This method installs the user specified entity resolver on the + * parser. It allows applications to trap and redirect calls to + * external entities. + * + * Any previously set entity resolver is merely dropped, since the parser + * does not own them. If both setEntityResolver and setXMLEntityResolver + * are called, then the last one is used. + * + * @param resolver A pointer to the entity resolver to be called + * when the parser comes across references to + * entities in the XML file. + * + * @see Parser#setXMLEntityResolver + */ + virtual void setXMLEntityResolver(XMLEntityResolver* const resolver); + + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the XMLDocumentHandler interface + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLDocumentHandler Interface. */ + //@{ + /** + * This method is used to report all the characters scanned + * by the parser. The driver will invoke the 'characters' + * method of the user installed SAX Document Handler. + * + *

If any advanced callback handlers are installed, the + * corresponding 'docCharacters' method will also be invoked.

+ * + * @param chars A const pointer to a Unicode string representing the + * character data. + * @param length The length of the Unicode string returned in 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + * @see DocumentHandler#characters + */ + virtual void docCharacters + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + /** + * This method is used to report any comments scanned by the parser. + * This method is a no-op unless, unless an advanced callback handler + * is installed, in which case the corresponding 'docComment' method + * is invoked. + * + * @param comment A const pointer to a null terminated Unicode + * string representing the comment text. + */ + virtual void docComment + ( + const XMLCh* const comment + ); + + /** + * This method is used to report any PI scanned by the parser. + * + *

Any PI's occurring before any 'content' are not reported + * to any SAX handler as per the specification. However, all + * PI's within content are reported via the SAX Document Handler's + * 'processingInstruction' method. + * + *

If any advanced callback handlers are installed, the + * corresponding 'docPI' method will be invoked.

+ * + * @param target A const pointer to a Unicode string representing the + * target of the PI declaration. + * @param data A const pointer to a Unicode string representing the + * data of the PI declaration. See the PI production rule + * in the XML specification for details. + * + * @see DocumentHandler#processingInstruction + */ + virtual void docPI + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** + * This method is used to indicate the end of root element + * was just scanned by the parser. Corresponding 'endDocument' + * method of the user installed SAX Document Handler will also + * be invoked. + * + *

In addition, if any advanced callback handlers are installed, + * the corresponding 'endDocument' method is invoked.

+ * + * @see DocumentHandler#endDocument + */ + virtual void endDocument(); + + /** + * This method is used to indicate the end tag of an element. + * The driver will invoke the corresponding 'endElement' method of + * the SAX Document Handler interface. + * + *

If any advanced callback handlers are installed, the + * corresponding 'endElement' method is also invoked.

+ * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param isRoot A flag indicating whether this element was the + * root element. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + * @see DocumentHandler#endElement + */ + virtual void endElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const bool isRoot + , const XMLCh* const elemPrefix + ); + + /** + * This method is used to indicate that an end of an entity reference + * was just scanned. + * + *

If any advanced callback handlers are installed, the + * corresponding 'endEntityReference' method is invoked.

+ * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void endEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** + * This method is used to report all the whitespace characters, + * which are determined to be 'ignorable'. This distinction + * between characters is only made, if validation is enabled. + * Corresponding 'ignorableWhitespace' method of the user installed + * SAX Document Handler interface is called. + * + *

Any whitespace before content is not reported to the SAX + * Document Handler method, as per the SAX specification. + * However, if any advanced callback handlers are installed, the + * corresponding 'ignorableWhitespace' method is invoked.

+ * + * @param chars A const pointer to a Unicode string representing the + * ignorable whitespace character data. + * @param length The length of the Unicode string 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + * @see DocumentHandler#ignorableWhitespace + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + /** + * This method allows the user installed Document Handler and + * any advanced callback handlers to 'reset' themselves. + */ + virtual void resetDocument(); + + /** + * This method is used to report the start of the parsing process. + * The corresponding user installed SAX Document Handler's method + * 'startDocument' is invoked. + * + *

If any advanced callback handlers are installed, then the + * corresponding 'startDocument' method is also called.

+ * + * @see DocumentHandler#startDocument + */ + virtual void startDocument(); + + /** + * This method is used to report the start of an element. It is + * called at the end of the element, by which time all attributes + * specified are also parsed. The corresponding user installed + * SAX Document Handler's method 'startElement' is invoked. + * + *

If any advanced callback handlers are installed, then the + * corresponding 'startElement' method is also called.

+ * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + * @param attrList A const reference to the object containing the + * list of attributes just scanned for this element. + * @param attrCount A count of number of attributes in the list + * specified by the parameter 'attrList'. + * @param isEmpty A flag indicating whether this is an empty element + * or not. + * @param isRoot A flag indicating whether this element was the + * root element. + * @see DocumentHandler#startElement + */ + virtual void startElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const XMLCh* const elemPrefix + , const RefVectorOf& attrList + , const XMLSize_t attrCount + , const bool isEmpty + , const bool isRoot + ); + + /** + * This method is used to indicate the start of an entity reference. + * + *

If any advanced callback handlers are installed, the + * corresponding 'endEntityReference' method is invoked.

+ * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void startEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** + * This method is used to report the XML decl scanned by the parser. + * Refer to the XML specification to see the meaning of parameters. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param versionStr A const pointer to a Unicode string representing + * version string value. + * @param encodingStr A const pointer to a Unicode string representing + * the encoding string value. + * @param standaloneStr A const pointer to a Unicode string + * representing the standalone string value. + * @param actualEncodingStr A const pointer to a Unicode string + * representing the actual encoding string + * value. + */ + virtual void XMLDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + , const XMLCh* const standaloneStr + , const XMLCh* const actualEncodingStr + ); + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the XMLErrorReporter interface + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLErrorReporter Interface. */ + //@{ + /** + * This method is used to report back errors found while parsing the + * XML file. The driver will call the corresponding user installed + * SAX Error Handler methods: 'fatal', 'error', 'warning' depending + * on the severity of the error. This classification is defined by + * the XML specification. + * + * @param errCode An integer code for the error. + * @param msgDomain A const pointer to an Unicode string representing + * the message domain to use. + * @param errType An enumeration classifying the severity of the error. + * @param errorText A const pointer to an Unicode string representing + * the text of the error message. + * @param systemId A const pointer to an Unicode string representing + * the system id of the XML file where this error + * was discovered. + * @param publicId A const pointer to an Unicode string representing + * the public id of the XML file where this error + * was discovered. + * @param lineNum The line number where the error occurred. + * @param colNum The column number where the error occurred. + * @see ErrorHandler + */ + virtual void error + ( + const unsigned int errCode + , const XMLCh* const msgDomain + , const XMLErrorReporter::ErrTypes errType + , const XMLCh* const errorText + , const XMLCh* const systemId + , const XMLCh* const publicId + , const XMLFileLoc lineNum + , const XMLFileLoc colNum + ); + + /** + * This method allows the user installed Error Handler + * callback to 'reset' itself. + * + * This method is a no-op for this SAX driver + * implementation. + * + */ + virtual void resetErrors(); + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the XMLEntityHandler interface + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLEntityHandler Interface. */ + //@{ + /** + * This method is used to indicate the end of parsing of an external + * entity file. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the XML file being parsed. + * @see InputSource + */ + virtual void endInputSource(const InputSource& inputSource); + + /** + * This method allows an installed XMLEntityHandler to further + * process any system id's of external entities encountered in + * the XML file being parsed, such as redirection etc. + * + * This method always returns 'false' + * for this SAX driver implementation. + * + * @param systemId A const pointer to an Unicode string representing + * the system id scanned by the parser. + * @param toFill A pointer to a buffer in which the application + * processed system id is stored. + * @return 'true', if any processing is done, 'false' otherwise. + */ + virtual bool expandSystemId + ( + const XMLCh* const systemId + , XMLBuffer& toFill + ); + + /** + * This method allows the installed XMLEntityHandler to reset + * itself. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void resetEntities(); + + /** Resolve a public/system id + * + * This method allows a user installed entity handler to further + * process any pointers to external entities. The applications can + * implement 'redirection' via this callback. + * + * @param resourceIdentifier An object containing the type of + * resource to be resolved and the associated data members + * corresponding to this type. + * @return The value returned by the user installed resolveEntity + * method or NULL otherwise to indicate no processing was done. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @see XMLEntityHandler + * @see XMLEntityResolver + */ + virtual InputSource* resolveEntity + ( + XMLResourceIdentifier* resourceIdentifier + ); + + /** + * This method is used to indicate the start of parsing an + * external entity file. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the external entity + * being parsed. + */ + virtual void startInputSource(const InputSource& inputSource); + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the Deprecated DocTypeHandler Interface + // ----------------------------------------------------------------------- + /** @name Implementation of the deprecated DocTypeHandler Interface */ + //@{ + /** + * This method is used to report an attribute definition. + * + * This method is a no-op for this SAX + * driver implementation. + * + * @param elemDecl A const reference to the object containing information + * about the element whose attribute definition was just + * parsed. + * @param attDef A const reference to the object containing information + * attribute definition. + * @param ignore The flag indicating whether this attribute definition + * was ignored by the parser or not. + */ + virtual void attDef + ( + const DTDElementDecl& elemDecl + , const DTDAttDef& attDef + , const bool ignore + ); + + /** + * This method is used to report a comment occurring within the DTD. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param comment A const pointer to a Unicode string representing the + * text of the comment just parsed. + */ + virtual void doctypeComment + ( + const XMLCh* const comment + ); + + /** + * This method is used to report the DOCTYPE declaration. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param elemDecl A const reference to the object containing information + * about the root element definition declaration of the + * XML document being parsed. + * @param publicId A const pointer to a Unicode string representing the + * public id of the DTD file. + * @param systemId A const pointer to a Unicode string representing the + * system id of the DTD file. + * @param hasIntSubset A flag indicating if this XML file contains any + * internal subset. + * @param hasExtSubset A flag indicating if this XML file contains any + * external subset. Default is false. + */ + virtual void doctypeDecl + ( + const DTDElementDecl& elemDecl + , const XMLCh* const publicId + , const XMLCh* const systemId + , const bool hasIntSubset + , const bool hasExtSubset = false + ); + + /** + * This method is used to report any PI declarations + * occurring inside the DTD definition block. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param target A const pointer to a Unicode string representing the + * target of the PI declaration. + * @param data A const pointer to a Unicode string representing the + * data of the PI declaration. See the PI production rule + * in the XML specification for details. + */ + virtual void doctypePI + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** + * This method is used to report any whitespaces + * occurring inside the DTD definition block. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param chars A const pointer to a Unicode string representing the + * whitespace characters. + * @param length The length of the whitespace Unicode string. + */ + virtual void doctypeWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * This method is used to report an element declarations + * successfully scanned by the parser. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param decl A const reference to the object containing element + * declaration information. + * @param isIgnored The flag indicating whether this definition was + * ignored by the parser or not. + */ + virtual void elementDecl + ( + const DTDElementDecl& decl + , const bool isIgnored + ); + + /** + * This method is used to report the end of an attribute + * list declaration for an element. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param elemDecl A const reference to the object containing element + * declaration information. + */ + virtual void endAttList + ( + const DTDElementDecl& elemDecl + ); + + /** + * This method is used to report the end of the internal subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void endIntSubset(); + + /** + * This method is used to report the end of the external subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void endExtSubset(); + + /** + * This method is used to report any entity declarations. + * For unparsed entities, this driver will invoke the + * SAX DTDHandler::unparsedEntityDecl callback. + * + * @param entityDecl A const reference to the object containing + * the entity declaration information. + * @param isPEDecl The flag indicating whether this was a + * parameter entity declaration or not. + * @param isIgnored The flag indicating whether this definition + * was ignored by the parser or not. + * + * @see DTDHandler#unparsedEntityDecl + */ + virtual void entityDecl + ( + const DTDEntityDecl& entityDecl + , const bool isPEDecl + , const bool isIgnored + ); + + /** + * This method allows the user installed DTD handler to + * reset itself. + */ + virtual void resetDocType(); + + /** + * This method is used to report any notation declarations. + * If there is a user installed DTDHandler, then the driver will + * invoke the SAX DTDHandler::notationDecl callback. + * + * @param notDecl A const reference to the object containing the notation + * declaration information. + * @param isIgnored The flag indicating whether this definition was ignored + * by the parser or not. + * + * @see DTDHandler#notationDecl + */ + virtual void notationDecl + ( + const XMLNotationDecl& notDecl + , const bool isIgnored + ); + + /** + * This method is used to indicate the start of an element's attribute + * list declaration. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param elemDecl A const reference to the object containing element + * declaration information. + */ + virtual void startAttList + ( + const DTDElementDecl& elemDecl + ); + + /** + * This method is used indicate the start of the internal subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void startIntSubset(); + + /** + * This method is used indicate the start of the external subset. + * + * This method is a no-op for this SAX driver + * implementation. + */ + virtual void startExtSubset(); + + /** + * This method is used to report the TextDecl. Refer to the XML + * specification for the syntax of a TextDecl. + * + * This method is a no-op for this SAX driver + * implementation. + * + * @param versionStr A const pointer to a Unicode string representing + * the version number of the 'version' clause. + * @param encodingStr A const pointer to a Unicode string representing + * the encoding name of the 'encoding' clause. + */ + virtual void TextDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + ); + //@} + +protected : + // ----------------------------------------------------------------------- + // Protected Methods + // ----------------------------------------------------------------------- + /** + * This method returns a reference to the underlying scanner object. + * It allows read only access to data maintained in the scanner. + * + * @return A const reference to the underlying scanner object. + */ + const XMLScanner& getScanner() const; + + /** Get the Grammar resolver + * + * This provides derived classes with access to the grammar resolver. + */ + GrammarResolver* getGrammarResolver() const; + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SAXParser(const SAXParser&); + SAXParser& operator=(const SAXParser&); + + // ----------------------------------------------------------------------- + // Initialize/Cleanup methods + // ----------------------------------------------------------------------- + void initialize(); + void cleanUp(); + void resetInProgress(); + + // ----------------------------------------------------------------------- + // Private data members + // + // fAttrList + // A temporary implementation of the basic SAX attribute list + // interface. We use this one over and over on each startElement + // event to allow SAX-like access to the element attributes. + // + // fDocHandler + // The installed SAX doc handler, if any. Null if none. + // + // fDTDHandler + // The installed SAX DTD handler, if any. Null if none. + // + // fElemDepth + // This is used to track the element nesting depth, so that we can + // know when we are inside content. This is so we can ignore char + // data outside of content. + // + // fEntityResolver + // The installed SAX entity handler, if any. Null if none. + // + // fErrorHandler + // The installed SAX error handler, if any. Null if none. + // + // fPSVIHandler + // The installed PSVI handler, if any. Null if none. + // + // fAdvDHCount + // fAdvDHList + // fAdvDHListSize + // This is an array of pointers to XMLDocumentHandlers, which is + // how we see installed advanced document handlers. There will + // usually not be very many at all, so a simple array is used + // instead of a collection, for performance. It will grow if needed, + // but that is unlikely. + // + // The count is how many handlers are currently installed. The size + // is how big the array itself is (for expansion purposes.) When + // count == size, is time to expand. + // + // fParseInProgress + // This flag is set once a parse starts. It is used to prevent + // multiple entrance or reentrance of the parser. + // + // fScanner + // The scanner being used by this parser. It is created internally + // during construction. + // + // fGrammarPool + // The grammar pool passed from external application (through derivatives). + // which could be 0, not owned. + // + // ----------------------------------------------------------------------- + bool fParseInProgress; + XMLSize_t fElemDepth; + XMLSize_t fAdvDHCount; + XMLSize_t fAdvDHListSize; + VecAttrListImpl fAttrList; + DocumentHandler* fDocHandler; + DTDHandler* fDTDHandler; + EntityResolver* fEntityResolver; + XMLEntityResolver* fXMLEntityResolver; + ErrorHandler* fErrorHandler; + PSVIHandler* fPSVIHandler; + XMLDocumentHandler** fAdvDHList; + XMLScanner* fScanner; + GrammarResolver* fGrammarResolver; + XMLStringPool* fURIStringPool; + XMLValidator* fValidator; + MemoryManager* fMemoryManager; + XMLGrammarPool* fGrammarPool; + XMLBuffer fElemQNameBuf; +}; + + +// --------------------------------------------------------------------------- +// SAXParser: Getter methods +// --------------------------------------------------------------------------- +inline DocumentHandler* SAXParser::getDocumentHandler() +{ + return fDocHandler; +} + +inline const DocumentHandler* SAXParser::getDocumentHandler() const +{ + return fDocHandler; +} + +inline EntityResolver* SAXParser::getEntityResolver() +{ + return fEntityResolver; +} + +inline XMLEntityResolver* SAXParser::getXMLEntityResolver() +{ + return fXMLEntityResolver; +} + +inline const XMLEntityResolver* SAXParser::getXMLEntityResolver() const +{ + return fXMLEntityResolver; +} + +inline const EntityResolver* SAXParser::getEntityResolver() const +{ + return fEntityResolver; +} + +inline ErrorHandler* SAXParser::getErrorHandler() +{ + return fErrorHandler; +} + +inline const ErrorHandler* SAXParser::getErrorHandler() const +{ + return fErrorHandler; +} + +inline PSVIHandler* SAXParser::getPSVIHandler() +{ + return fPSVIHandler; +} + +inline const PSVIHandler* SAXParser::getPSVIHandler() const +{ + return fPSVIHandler; +} + +inline const XMLScanner& SAXParser::getScanner() const +{ + return *fScanner; +} + +inline GrammarResolver* SAXParser::getGrammarResolver() const +{ + return fGrammarResolver; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/parsers/XercesDOMParser.hpp b/src/libs/xerces-c/msvc/include/xercesc/parsers/XercesDOMParser.hpp new file mode 100644 index 000000000000..f257d2e76f1e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/parsers/XercesDOMParser.hpp @@ -0,0 +1,696 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XERCESDOMPARSER_HPP) +#define XERCESC_INCLUDE_GUARD_XERCESDOMPARSER_HPP + + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +class EntityResolver; +class ErrorHandler; +class XMLEntityResolver; +class XMLResourceIdentifier; + + /** + * This class implements the Document Object Model (DOM) interface. + * It should be used by applications which choose to parse and + * process the XML document using the DOM api's. This implementation + * also allows the applications to install an error and an entity + * handler (useful extensions to the DOM specification). + * + *

It can be used to instantiate a validating or non-validating + * parser, by setting a member flag.

+ */ +class PARSERS_EXPORT XercesDOMParser : public AbstractDOMParser +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors and Destructor */ + //@{ + /** Construct a XercesDOMParser, with an optional validator + * + * Constructor with an instance of validator class to use for + * validation. If you don't provide a validator, a default one will + * be created for you in the scanner. + * + * @param gramPool Pointer to the grammar pool instance from + * external application. + * The parser does NOT own it. + * + * @param valToAdopt Pointer to the validator instance to use. The + * parser is responsible for freeing the memory. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + XercesDOMParser + ( + XMLValidator* const valToAdopt = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , XMLGrammarPool* const gramPool = 0 + ); + + /** + * Destructor + */ + virtual ~XercesDOMParser(); + + //@} + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** Get a pointer to the error handler + * + * This method returns the installed error handler. If no handler + * has been installed, then it will be a zero pointer. + * + * @return The pointer to the installed error handler object. + */ + ErrorHandler* getErrorHandler(); + + /** Get a const pointer to the error handler + * + * This method returns the installed error handler. If no handler + * has been installed, then it will be a zero pointer. + * + * @return A const pointer to the installed error handler object. + */ + const ErrorHandler* getErrorHandler() const; + + /** Get a pointer to the entity resolver + * + * This method returns the installed entity resolver. If no resolver + * has been installed, then it will be a zero pointer. + * + * @return The pointer to the installed entity resolver object. + */ + EntityResolver* getEntityResolver(); + + /** Get a const pointer to the entity resolver + * + * This method returns the installed entity resolver. If no resolver + * has been installed, then it will be a zero pointer. + * + * @return A const pointer to the installed entity resolver object. + */ + const EntityResolver* getEntityResolver() const; + + /** + * Get a pointer to the entity resolver + * + * This method returns the installed entity resolver. If no resolver + * has been installed, then it will be a zero pointer. + * + * @return The pointer to the installed entity resolver object. + */ + XMLEntityResolver* getXMLEntityResolver(); + + /** + * Get a const pointer to the entity resolver + * + * This method returns the installed entity resolver. If no resolver + * has been installed, then it will be a zero pointer. + * + * @return A const pointer to the installed entity resolver object. + */ + const XMLEntityResolver* getXMLEntityResolver() const; + + /** Get the 'Grammar caching' flag + * + * This method returns the state of the parser's grammar caching when + * parsing an XML document. + * + * @return true, if the parser is currently configured to + * cache grammars, false otherwise. + * + * @see #cacheGrammarFromParse + */ + bool isCachingGrammarFromParse() const; + + /** Get the 'Use cached grammar' flag + * + * This method returns the state of the parser's use of cached grammar + * when parsing an XML document. + * + * @return true, if the parser is currently configured to + * use cached grammars, false otherwise. + * + * @see #useCachedGrammarInParse + */ + bool isUsingCachedGrammarInParse() const; + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param nameSpaceKey Namespace key + * @return Grammar associated with the Namespace key. + */ + Grammar* getGrammar(const XMLCh* const nameSpaceKey); + + /** + * Retrieve the grammar where the root element is declared. + * + * @return Grammar where root element declared + */ + Grammar* getRootGrammar(); + + /** + * Returns the string corresponding to a URI id from the URI string pool. + * + * @param uriId id of the string in the URI string pool. + * @return URI string corresponding to the URI id. + */ + const XMLCh* getURIText(unsigned int uriId) const; + + /** + * Returns the current src offset within the input source. + * To be used only while parsing is in progress. + * + * @return offset within the input source + */ + XMLFilePos getSrcOffset() const; + + /** Get the 'ignore cached DTD grammar' flag + * + * @return true, if the parser is currently configured to + * ignore cached DTD, false otherwise. + * + * @see #setIgnoreCachedDTD + */ + bool getIgnoreCachedDTD() const; + + //@} + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + + /** Set the error handler + * + * This method allows applications to install their own error handler + * to trap error and warning messages. + * + * Any previously set handler is merely dropped, since the parser + * does not own them. + * + * @param handler A const pointer to the user supplied error + * handler. + * + * @see #getErrorHandler + */ + void setErrorHandler(ErrorHandler* const handler); + + /** Set the entity resolver + * + * This method allows applications to install their own entity + * resolver. By installing an entity resolver, the applications + * can trap and potentially redirect references to external + * entities. + * + * Any previously set entity resolver is merely dropped, since the parser + * does not own them. If both setEntityResolver and setXMLEntityResolver + * are called, then the last one is used. + * + * @param handler A const pointer to the user supplied entity + * resolver. + * + * @see #getEntityResolver + */ + void setEntityResolver(EntityResolver* const handler); + + /** + * Set the entity resolver + * + * This method allows applications to install their own entity + * resolver. By installing an entity resolver, the applications + * can trap and potentially redirect references to external + * entities. + * + * Any previously set entity resolver is merely dropped, since the parser + * does not own them. If both setEntityResolver and setXMLEntityResolver + * are called, then the last one set is used. + * + * @param handler A const pointer to the user supplied entity + * resolver. + * + * @see #getXMLEntityResolver + */ + void setXMLEntityResolver(XMLEntityResolver* const handler); + + /** Set the 'Grammar caching' flag + * + * This method allows users to enable or disable caching of grammar when + * parsing XML documents. When set to true, the parser will cache the + * resulting grammar for use in subsequent parses. + * + * If the flag is set to true, the 'Use cached grammar' flag will also be + * set to true. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether we should cache grammars + * or not. + * + * @see #isCachingGrammarFromParse + * @see #useCachedGrammarInParse + */ + void cacheGrammarFromParse(const bool newState); + + /** Set the 'Use cached grammar' flag + * + * This method allows users to enable or disable the use of cached + * grammars. When set to true, the parser will use the cached grammar, + * instead of building the grammar from scratch, to validate XML + * documents. + * + * If the 'Grammar caching' flag is set to true, this method ignore the + * value passed in. + * + * The parser's default state is: false. + * + * @param newState The value specifying whether we should use the cached + * grammar or not. + * + * @see #isUsingCachedGrammarInParse + * @see #cacheGrammarFromParse + */ + void useCachedGrammarInParse(const bool newState); + + /** Set the 'ignore cached DTD grammar' flag + * + * This method gives users the option to ignore a cached DTD grammar, when + * an XML document contains both an internal and external DTD, and the use + * cached grammar from parse option is enabled. Currently, we do not allow + * using cached DTD grammar when an internal subset is present in the + * document. This option will only affect the behavior of the parser when + * an internal and external DTD both exist in a document (i.e. no effect + * if document has no internal subset). + * + * The parser's default state is false + * + * @param newValue The state to set + */ + void setIgnoreCachedDTD(const bool newValue); + + //@} + + // ----------------------------------------------------------------------- + // Utility methods + // ----------------------------------------------------------------------- + + /** @name Utility methods */ + //@{ + /** Reset the documents vector pool and release all the associated memory + * back to the system. + * + * When parsing a document using a DOM parser, all memory allocated + * for a DOM tree is associated to the DOM document. + * + * If you do multiple parse using the same DOM parser instance, then + * multiple DOM documents will be generated and saved in a vector pool. + * All these documents (and thus all the allocated memory) + * won't be deleted until the parser instance is destroyed. + * + * If you don't need these DOM documents anymore and don't want to + * destroy the DOM parser instance at this moment, then you can call this method + * to reset the document vector pool and release all the allocated memory + * back to the system. + * + * It is an error to call this method if you are in the middle of a + * parse (e.g. in the mid of a progressive parse). + * + * @exception IOException An exception from the parser if this function + * is called when a parse is in progress. + * + */ + void resetDocumentPool(); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the XMLErrorReporter interface. + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLErrorReporter interface. */ + //@{ + + /** Handle errors reported from the parser + * + * This method is used to report back errors found while parsing the + * XML file. This method is also borrowed from the SAX specification. + * It calls the corresponding user installed Error Handler method: + * 'fatal', 'error', 'warning' depending on the severity of the error. + * This classification is defined by the XML specification. + * + * @param errCode An integer code for the error. + * @param msgDomain A const pointer to an Unicode string representing + * the message domain to use. + * @param errType An enumeration classifying the severity of the error. + * @param errorText A const pointer to an Unicode string representing + * the text of the error message. + * @param systemId A const pointer to an Unicode string representing + * the system id of the XML file where this error + * was discovered. + * @param publicId A const pointer to an Unicode string representing + * the public id of the XML file where this error + * was discovered. + * @param lineNum The line number where the error occurred. + * @param colNum The column number where the error occurred. + * @see ErrorHandler + */ + virtual void error + ( + const unsigned int errCode + , const XMLCh* const msgDomain + , const XMLErrorReporter::ErrTypes errType + , const XMLCh* const errorText + , const XMLCh* const systemId + , const XMLCh* const publicId + , const XMLFileLoc lineNum + , const XMLFileLoc colNum + ); + + /** Reset any error data before a new parse + * + * This method allows the user installed Error Handler callback to + * 'reset' itself. + * + * This method is a no-op for this DOM + * implementation. + */ + virtual void resetErrors(); + //@} + + + // ----------------------------------------------------------------------- + // Implementation of the XMLEntityHandler interface. + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLEntityHandler interface. */ + //@{ + + /** Handle an end of input source event + * + * This method is used to indicate the end of parsing of an external + * entity file. + * + * This method is a no-op for this DOM + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the XML file being parsed. + * @see InputSource + */ + virtual void endInputSource(const InputSource& inputSource); + + /** Expand a system id + * + * This method allows an installed XMLEntityHandler to further + * process any system id's of external entities encountered in + * the XML file being parsed, such as redirection etc. + * + * This method always returns 'false' + * for this DOM implementation. + * + * @param systemId A const pointer to an Unicode string representing + * the system id scanned by the parser. + * @param toFill A pointer to a buffer in which the application + * processed system id is stored. + * @return 'true', if any processing is done, 'false' otherwise. + */ + virtual bool expandSystemId + ( + const XMLCh* const systemId + , XMLBuffer& toFill + ); + + /** Reset any entity handler information + * + * This method allows the installed XMLEntityHandler to reset + * itself. + * + * This method is a no-op for this DOM + * implementation. + */ + virtual void resetEntities(); + + /** Resolve a public/system id + * + * This method allows a user installed entity handler to further + * process any pointers to external entities. The applications can + * implement 'redirection' via this callback. + * + * @param resourceIdentifier An object containing the type of + * resource to be resolved and the associated data members + * corresponding to this type. + * @return The value returned by the user installed resolveEntity + * method or NULL otherwise to indicate no processing was done. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @see XMLEntityHandler + * @see XMLEntityResolver + */ + virtual InputSource* resolveEntity + ( + XMLResourceIdentifier* resourceIdentifier + ); + + /** Handle a 'start input source' event + * + * This method is used to indicate the start of parsing an external + * entity file. + * + * This method is a no-op for this DOM parse + * implementation. + * + * @param inputSource A const reference to the InputSource object + * which points to the external entity + * being parsed. + */ + virtual void startInputSource(const InputSource& inputSource); + + //@} + + // ----------------------------------------------------------------------- + // Grammar preparsing interface + // ----------------------------------------------------------------------- + + /** @name Implementation of Grammar preparsing interface's. */ + //@{ + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via an input source + * object. + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the SAX InputSource parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param source A const reference to the SAX InputSource object which + * points to the schema grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * + * @see InputSource#InputSource + */ + Grammar* loadGrammar(const InputSource& source, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML grammar file to be + * preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + Grammar* loadGrammar(const XMLCh* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const char pointer to a native string which contains + * the path to the XML grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + Grammar* loadGrammar(const char* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false); + + /** + * This method allows the user to reset the pool of cached grammars. + */ + void resetCachedGrammarPool(); + + //@} + + +private : + // ----------------------------------------------------------------------- + // Initialize/Cleanup methods + // ----------------------------------------------------------------------- + void resetParse(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XercesDOMParser(const XercesDOMParser&); + XercesDOMParser& operator=(const XercesDOMParser&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fEntityResolver + // The installed SAX entity resolver, if any. Null if none. + // + // fErrorHandler + // The installed SAX error handler, if any. Null if none. + //----------------------------------------------------------------------- + EntityResolver* fEntityResolver; + XMLEntityResolver* fXMLEntityResolver; + ErrorHandler* fErrorHandler; +}; + + + +// --------------------------------------------------------------------------- +// XercesDOMParser: Handlers for the XMLEntityHandler interface +// --------------------------------------------------------------------------- +inline void XercesDOMParser::endInputSource(const InputSource&) +{ + // The DOM entity resolver doesn't handle this +} + +inline bool XercesDOMParser::expandSystemId(const XMLCh* const, XMLBuffer&) +{ + // The DOM entity resolver doesn't handle this + return false; +} + +inline void XercesDOMParser::resetEntities() +{ + // Nothing to do on this one +} + +inline void XercesDOMParser::startInputSource(const InputSource&) +{ + // The DOM entity resolver doesn't handle this +} + + +// --------------------------------------------------------------------------- +// XercesDOMParser: Getter methods +// --------------------------------------------------------------------------- +inline ErrorHandler* XercesDOMParser::getErrorHandler() +{ + return fErrorHandler; +} + +inline const ErrorHandler* XercesDOMParser::getErrorHandler() const +{ + return fErrorHandler; +} + +inline EntityResolver* XercesDOMParser::getEntityResolver() +{ + return fEntityResolver; +} + +inline const EntityResolver* XercesDOMParser::getEntityResolver() const +{ + return fEntityResolver; +} + +inline XMLEntityResolver* XercesDOMParser::getXMLEntityResolver() +{ + return fXMLEntityResolver; +} + +inline const XMLEntityResolver* XercesDOMParser::getXMLEntityResolver() const +{ + return fXMLEntityResolver; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax/AttributeList.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax/AttributeList.hpp new file mode 100644 index 000000000000..34ccc819ecfc --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax/AttributeList.hpp @@ -0,0 +1,229 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ATTRIBUTELIST_HPP) +#define XERCESC_INCLUDE_GUARD_ATTRIBUTELIST_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Interface for an element's attribute specifications. + * + * The SAX parser implements this interface and passes an instance + * to the SAX application as the second argument of each startElement + * event. + * + * The instance provided will return valid results only during the + * scope of the startElement invocation (to save it for future + * use, the application must make a copy: the AttributeListImpl + * helper class provides a convenient constructor for doing so). + * + * An AttributeList includes only attributes that have been + * specified or defaulted: \#IMPLIED attributes will not be included. + * + * There are two ways for the SAX application to obtain information + * from the AttributeList. First, it can iterate through the entire + * list: + * + * + * public void startElement (String name, AttributeList atts) {
+ *  for (XMLSize_t i = 0; i < atts.getLength(); i++) {
+ *   String name = atts.getName(i);
+ *   String type = atts.getType(i);
+ *   String value = atts.getValue(i);
+ *   [...]
+ *  }
+ * } + *
+ * + * (Note that the result of getLength() will be zero if there + * are no attributes.) + * + * As an alternative, the application can request the value or + * type of specific attributes: + * + * + * public void startElement (String name, AttributeList atts) {
+ *  String identifier = atts.getValue("id");
+ *  String label = atts.getValue("label");
+ *  [...]
+ * } + *
+ * + * The AttributeListImpl helper class provides a convenience + * implementation for use by parser or application writers. + * + * @see DocumentHandler#startElement + * @see AttributeListImpl#AttributeListImpl + */ + +class SAX_EXPORT AttributeList +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + AttributeList() + { + } + + /** Destructor */ + virtual ~AttributeList() + { + } + //@} + + /** @name The virtual attribute list interface */ + //@{ + /** + * Return the number of attributes in this list. + * + * The SAX parser may provide attributes in any + * arbitrary order, regardless of the order in which they were + * declared or specified. The number of attributes may be + * zero. + * + * @return The number of attributes in the list. + */ + virtual XMLSize_t getLength() const = 0; + + /** + * Return the name of an attribute in this list (by position). + * + * The names must be unique: the SAX parser shall not include the + * same attribute twice. Attributes without values (those declared + * \#IMPLIED without a value specified in the start tag) will be + * omitted from the list. + * + * If the attribute name has a namespace prefix, the prefix + * will still be attached. + * + * @param index The index of the attribute in the list (starting at 0). + * @return The name of the indexed attribute, or null + * if the index is out of range. + * @see #getLength + */ + virtual const XMLCh* getName(const XMLSize_t index) const = 0; + + /** + * Return the type of an attribute in the list (by position). + * + * The attribute type is one of the strings "CDATA", "ID", + * "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES", + * or "NOTATION" (always in upper case). + * + * If the parser has not read a declaration for the attribute, + * or if the parser does not report attribute types, then it must + * return the value "CDATA" as stated in the XML 1.0 Recommendation + * (clause 3.3.3, "Attribute-Value Normalization"). + * + * For an enumerated attribute that is not a notation, the + * parser will report the type as "NMTOKEN". + * + * @param index The index of the attribute in the list (starting at 0). + * @return The attribute type as a string, or + * null if the index is out of range. + * @see #getLength + * @see #getType + */ + virtual const XMLCh* getType(const XMLSize_t index) const = 0; + + /** + * Return the value of an attribute in the list (by position). + * + * If the attribute value is a list of tokens (IDREFS, + * ENTITIES, or NMTOKENS), the tokens will be concatenated + * into a single string separated by whitespace. + * + * @param index The index of the attribute in the list (starting at 0). + * @return The attribute value as a string, or + * null if the index is out of range. + * @see #getLength + * @see #getValue + */ + virtual const XMLCh* getValue(const XMLSize_t index) const = 0; + + /** + * Return the type of an attribute in the list (by name). + * + * The return value is the same as the return value for + * getType(XMLSize_t). + * + * If the attribute name has a namespace prefix in the document, + * the application must include the prefix here. + * + * @param name The name of the attribute. + * @return The attribute type as a string, or null if no + * such attribute exists. + * @see #getType + */ + virtual const XMLCh* getType(const XMLCh* const name) const = 0; + + /** + * Return the value of an attribute in the list (by name). + * + * The return value is the same as the return value for + * getValue(XMLSize_t). + * + * If the attribute name has a namespace prefix in the document, + * the application must include the prefix here. + * + * @param name The name of the attribute in the list. + * @return The attribute value as a string, or null if + * no such attribute exists. + * @see #getValue + */ + virtual const XMLCh* getValue(const XMLCh* const name) const = 0; + + /** + * Return the value of an attribute in the list (by name). + * + * The return value is the same as the return value for + * getValue(XMLSize_t). + * + * If the attribute name has a namespace prefix in the document, + * the application must include the prefix here. + * + * @param name The name of the attribute in the list. + * @return The attribute value as a string, or null if + * no such attribute exists. + * @see #getValue + */ + virtual const XMLCh* getValue(const char* const name) const = 0; + //@} + +private : + /* Constructors and operators */ + /* Copy constructor */ + AttributeList(const AttributeList&); + /* Assignment operator */ + AttributeList& operator=(const AttributeList&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax/DTDHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax/DTDHandler.hpp new file mode 100644 index 000000000000..70eb79ac96bf --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax/DTDHandler.hpp @@ -0,0 +1,159 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DTDHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Receive notification of basic DTD-related events. + * + *

If a SAX application needs information about notations and + * unparsed entities, then the application implements this + * interface and registers an instance with the SAX parser using + * the parser's setDTDHandler method. The parser uses the + * instance to report notation and unparsed entity declarations to + * the application.

+ * + *

The SAX parser may report these events in any order, regardless + * of the order in which the notations and unparsed entities were + * declared; however, all DTD events must be reported after the + * document handler's startDocument event, and before the first + * startElement event.

+ * + *

It is up to the application to store the information for + * future use (perhaps in a hash table or object tree). + * If the application encounters attributes of type "NOTATION", + * "ENTITY", or "ENTITIES", it can use the information that it + * obtained through this interface to find the entity and/or + * notation corresponding with the attribute value.

+ * + *

The HandlerBase class provides a default implementation + * of this interface, which simply ignores the events.

+ * + * @see Parser#setDTDHandler + * @see HandlerBase#HandlerBase + */ + +class SAX_EXPORT DTDHandler +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** Default Constructor */ + DTDHandler() + { + } + + /** Destructor */ + virtual ~DTDHandler() + { + } + + //@} + + /** @name The DTD handler interface */ + //@{ + /** + * Receive notification of a notation declaration event. + * + *

It is up to the application to record the notation for later + * reference, if necessary.

+ * + *

If a system identifier is present, and it is a URL, the SAX + * parser must resolve it fully before passing it to the + * application.

+ * + * @param name The notation name. + * @param publicId The notation's public identifier, or null if + * none was given. + * @param systemId The notation's system identifier, or null if + * none was given. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #unparsedEntityDecl + * @see AttributeList#AttributeList + */ + virtual void notationDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ) = 0; + + /** + * Receive notification of an unparsed entity declaration event. + * + *

Note that the notation name corresponds to a notation + * reported by the notationDecl() event. It is up to the + * application to record the entity for later reference, if + * necessary.

+ * + *

If the system identifier is a URL, the parser must resolve it + * fully before passing it to the application.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @param name The unparsed entity's name. + * @param publicId The entity's public identifier, or null if none + * was given. + * @param systemId The entity's system identifier (it must always + * have one). + * @param notationName The name of the associated notation. + * @see #notationDecl + * @see AttributeList#AttributeList + */ + virtual void unparsedEntityDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + , const XMLCh* const notationName + ) = 0; + + /** + * Reset the DocType object on its reuse + * + *

This method helps in reseting the DTD object implementation + * defaults each time the DTD is begun.

+ * + */ + virtual void resetDocType() = 0; + + //@} + +private : + /* Unimplemented constructors and operators */ + + /* Copy constructor */ + DTDHandler(const DTDHandler&); + + /* Assignment operator */ + DTDHandler& operator=(const DTDHandler&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax/DocumentHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax/DocumentHandler.hpp new file mode 100644 index 000000000000..6aecddb64b73 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax/DocumentHandler.hpp @@ -0,0 +1,283 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOCUMENTHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DOCUMENTHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class AttributeList; +class Locator; + +/** + * Receive notification of general document events. + * + *

This is the main interface that most SAX applications + * implement: if the application needs to be informed of basic parsing + * events, it implements this interface and registers an instance with + * the SAX parser using the setDocumentHandler method. The parser + * uses the instance to report basic document-related events like + * the start and end of elements and character data.

+ * + *

The order of events in this interface is very important, and + * mirrors the order of information in the document itself. For + * example, all of an element's content (character data, processing + * instructions, and/or subelements) will appear, in order, between + * the startElement event and the corresponding endElement event.

+ * + *

Application writers who do not want to implement the entire + * interface while can derive a class from HandlerBase, which implements + * the default functionality; parser writers can instantiate + * HandlerBase to obtain a default handler. The application can find + * the location of any document event using the Locator interface + * supplied by the Parser through the setDocumentLocator method.

+ * + * @see Parser#setDocumentHandler + * @see Locator#Locator + * @see HandlerBase#HandlerBase + */ + +class SAX_EXPORT DocumentHandler +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + DocumentHandler() + { + } + + /** Destructor */ + virtual ~DocumentHandler() + { + } + //@} + + /** @name The virtual document handler interface */ + + //@{ + /** + * Receive notification of character data. + * + *

The Parser will call this method to report each chunk of + * character data. SAX parsers may return all contiguous character + * data in a single chunk, or they may split it into several + * chunks; however, all of the characters in any single event + * must come from the same external entity, so that the Locator + * provides useful information.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + *

Note that some parsers will report whitespace using the + * ignorableWhitespace() method rather than this one (validating + * parsers must do so).

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #ignorableWhitespace + * @see Locator#Locator + */ + virtual void characters + ( + const XMLCh* const chars + , const XMLSize_t length + ) = 0; + + /** + * Receive notification of the end of a document. + * + *

The SAX parser will invoke this method only once, and it will + * be the last method invoked during the parse. The parser shall + * not invoke this method until it has either abandoned parsing + * (because of an unrecoverable error) or reached the end of + * input.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endDocument () = 0; + + /** + * Receive notification of the end of an element. + * + *

The SAX parser will invoke this method at the end of every + * element in the XML document; there will be a corresponding + * startElement() event for every endElement() event (even when the + * element is empty).

+ * + *

If the element name has a namespace prefix, the prefix will + * still be attached to the name.

+ * + * @param name The element type name + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endElement(const XMLCh* const name) = 0; + + /** + * Receive notification of ignorable whitespace in element content. + * + *

Validating Parsers must use this method to report each chunk + * of ignorable whitespace (see the W3C XML 1.0 recommendation, + * section 2.10): non-validating parsers may also use this method + * if they are capable of parsing and using content models.

+ * + *

SAX parsers may return all contiguous whitespace in a single + * chunk, or they may split it into several chunks; however, all of + * the characters in any single event must come from the same + * external entity, so that the Locator provides useful + * information.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #characters + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ) = 0; + + /** + * Receive notification of a processing instruction. + * + *

The Parser will invoke this method once for each processing + * instruction found: note that processing instructions may occur + * before or after the main document element.

+ * + *

A SAX parser should never report an XML declaration (XML 1.0, + * section 2.8) or a text declaration (XML 1.0, section 4.3.1) + * using this method.

+ * + * @param target The processing instruction target. + * @param data The processing instruction data, or null if + * none was supplied. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void processingInstruction + ( + const XMLCh* const target + , const XMLCh* const data + ) = 0; + + /** + * Reset the Document object on its reuse + * + *

This method helps in reseting the document implementation + * defaults each time the document is begun.

+ * + */ + virtual void resetDocument() = 0; + + /** + * Receive an object for locating the origin of SAX document events. + * + * SAX parsers are strongly encouraged (though not absolutely + * required) to supply a locator: if it does so, it must supply + * the locator to the application by invoking this method before + * invoking any of the other methods in the DocumentHandler + * interface. + * + * The locator allows the application to determine the end + * position of any document-related event, even if the parser is + * not reporting an error. Typically, the application will + * use this information for reporting its own errors (such as + * character content that does not match an application's + * business rules). The information returned by the locator + * is probably not sufficient for use with a search engine. + * + * Note that the locator will return correct information only + * during the invocation of the events in this interface. The + * application should not attempt to use it at any other time. + * + * @param locator An object that can return the location of + * any SAX document event. The object is only + * 'on loan' to the client code and they are not + * to attempt to delete or modify it in any way! + * + * @see Locator#Locator + */ + virtual void setDocumentLocator(const Locator* const locator) = 0; + + /** + * Receive notification of the beginning of a document. + * + *

The SAX parser will invoke this method only once, before any + * other methods in this interface or in DTDHandler (except for + * setDocumentLocator).

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startDocument() = 0; + + /** + * Receive notification of the beginning of an element. + * + *

The Parser will invoke this method at the beginning of every + * element in the XML document; there will be a corresponding + * endElement() event for every startElement() event (even when the + * element is empty). All of the element's content will be + * reported, in order, before the corresponding endElement() + * event.

+ * + *

If the element name has a namespace prefix, the prefix will + * still be attached. Note that the attribute list provided will + * contain only attributes with explicit values (specified or + * defaulted): \#IMPLIED attributes will be omitted.

+ * + * @param name The element type name. + * @param attrs The attributes attached to the element, if any. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #endElement + * @see AttributeList#AttributeList + */ + virtual void startElement + ( + const XMLCh* const name + , AttributeList& attrs + ) = 0; + + //@} + +private : + /* Unimplemented Constructors and operators */ + /* Copy constructor */ + DocumentHandler(const DocumentHandler&); + /** Assignment operator */ + DocumentHandler& operator=(const DocumentHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax/EntityResolver.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax/EntityResolver.hpp new file mode 100644 index 000000000000..1b1a122189d7 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax/EntityResolver.hpp @@ -0,0 +1,165 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ENTITYRESOLVER_HPP) +#define XERCESC_INCLUDE_GUARD_ENTITYRESOLVER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class InputSource; + +/** + * Basic interface for resolving entities. + * + *

If a SAX application needs to implement customized handling + * for external entities, it must implement this interface and + * register an instance with the SAX parser using the parser's + * setEntityResolver method.

+ * + *

The parser will then allow the application to intercept any + * external entities (including the external DTD subset and external + * parameter entities, if any) before including them.

+ * + *

Many SAX applications will not need to implement this interface, + * but it will be especially useful for applications that build + * XML documents from databases or other specialised input sources, + * or for applications that use URI types other than URLs.

+ * + *

The following resolver would provide the application + * with a special character stream for the entity with the system + * identifier "http://www.myhost.com/today":

+ * + * + *\#include
+ *\#include
+ *
+ *class MyResolver : public EntityResolver {
+ * public:
  + * InputSource* resolveEntity (const XMLCh* const publicId, const XMLCh* const systemId);
   + *
+ * ...
   + * };
  + *
+ * MyResolver::resolveEntity {
+ *  if (XMLString::compareString(systemId, "http://www.myhost.com/today")) {
+ *   MyReader* reader = new MyReader();
+ *   return new InputSource(reader);
+ *  } else {
+ *   return null;
+ *  }
+ * }
+ *
+ *
+ * + *

The application can also use this interface to redirect system + * identifiers to local URIs or to look up replacements in a catalog + * (possibly by using the public identifier).

+ * + *

The HandlerBase class implements the default behaviour for + * this interface, which is simply always to return null (to request + * that the parser use the default system identifier).

+ * + * @see Parser#setEntityResolver + * @see InputSource#InputSource + * @see HandlerBase#HandlerBase + */ +class SAX_EXPORT EntityResolver +{ +public: + /** @name Constructors and Destructor */ + //@{ + + /** Default Constructor */ + EntityResolver() + { + } + + /** Destructor */ + virtual ~EntityResolver() + { + } + + //@} + + /** @name The EntityResolver interface */ + //@{ + + /** + * Allow the application to resolve external entities. + * + *

The Parser will call this method before opening any external + * entity except the top-level document entity (including the + * external DTD subset, external entities referenced within the + * DTD, and external entities referenced within the document + * element): the application may request that the parser resolve + * the entity itself, that it use an alternative URI, or that it + * use an entirely different input source.

+ * + *

Application writers can use this method to redirect external + * system identifiers to secure and/or local URIs, to look up + * public identifiers in a catalogue, or to read an entity from a + * database or other input source (including, for example, a dialog + * box).

+ * + *

If the system identifier is a URL, the SAX parser must + * resolve it fully before reporting it to the application.

+ * + * @param publicId The public identifier of the external entity + * being referenced, or null if none was supplied. + * @param systemId The system identifier of the external entity + * being referenced. + * @return An InputSource object describing the new input source, + * or null to request that the parser open a regular + * URI connection to the system identifier. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception IOException An IO exception, + * possibly the result of creating a new InputStream + * or Reader for the InputSource. + * @see InputSource#InputSource + */ + virtual InputSource* resolveEntity + ( + const XMLCh* const publicId + , const XMLCh* const systemId + ) = 0; + + //@} + +private : + /* Unimplemented constructors and operators */ + + + /* Copy constructor */ + EntityResolver(const EntityResolver&); + + /* Assignment operator */ + EntityResolver& operator=(const EntityResolver&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax/ErrorHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax/ErrorHandler.hpp new file mode 100644 index 000000000000..eb517fc6e822 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax/ErrorHandler.hpp @@ -0,0 +1,168 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ERRORHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_ERRORHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class SAXParseException; + + +/** + * Basic interface for SAX error handlers. + * + *

If a SAX application needs to implement customized error + * handling, it must implement this interface and then register an + * instance with the SAX parser using the parser's setErrorHandler + * method. The parser will then report all errors and warnings + * through this interface.

+ * + *

The parser shall use this interface instead of throwing an + * exception: it is up to the application whether to throw an + * exception for different types of errors and warnings. Note, + * however, that there is no requirement that the parser continue to + * provide useful information after a call to fatalError (in other + * words, a SAX driver class could catch an exception and report a + * fatalError).

+ * + *

The HandlerBase class provides a default implementation of this + * interface, ignoring warnings and recoverable errors and throwing a + * SAXParseException for fatal errors. An application may extend + * that class rather than implementing the complete interface + * itself.

+ * + * @see Parser#setErrorHandler + * @see SAXParseException#SAXParseException + * @see HandlerBase#HandlerBase + */ + +class SAX_EXPORT ErrorHandler +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + ErrorHandler() + { + } + + /** Destructor */ + virtual ~ErrorHandler() + { + } + //@} + + /** @name The error handler interface */ + //@{ + /** + * Receive notification of a warning. + * + *

SAX parsers will use this method to report conditions that + * are not errors or fatal errors as defined by the XML 1.0 + * recommendation. The default behaviour is to take no action.

+ * + *

The SAX parser must continue to provide normal parsing events + * after invoking this method: it should still be possible for the + * application to process the document through to the end.

+ * + * @param exc The warning information encapsulated in a + * SAX parse exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see SAXParseException#SAXParseException + */ + virtual void warning(const SAXParseException& exc) = 0; + + /** + * Receive notification of a recoverable error. + * + *

This corresponds to the definition of "error" in section 1.2 + * of the W3C XML 1.0 Recommendation. For example, a validating + * parser would use this callback to report the violation of a + * validity constraint. The default behaviour is to take no + * action.

+ * + *

The SAX parser must continue to provide normal parsing events + * after invoking this method: it should still be possible for the + * application to process the document through to the end. If the + * application cannot do so, then the parser should report a fatal + * error even if the XML 1.0 recommendation does not require it to + * do so.

+ * + * @param exc The error information encapsulated in a + * SAX parse exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see SAXParseException#SAXParseException + */ + virtual void error(const SAXParseException& exc) = 0; + + /** + * Receive notification of a non-recoverable error. + * + *

This corresponds to the definition of "fatal error" in + * section 1.2 of the W3C XML 1.0 Recommendation. For example, a + * parser would use this callback to report the violation of a + * well-formedness constraint.

+ * + *

The application must assume that the document is unusable + * after the parser has invoked this method, and should continue + * (if at all) only for the sake of collecting addition error + * messages: in fact, SAX parsers are free to stop reporting any + * other events once this method has been invoked.

+ * + * @param exc The error information encapsulated in a + * SAX parse exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see SAXParseException#SAXParseException + */ + virtual void fatalError(const SAXParseException& exc) = 0; + + /** + * Reset the Error handler object on its reuse + * + *

This method helps in reseting the Error handler object + * implementation defaults each time the Error handler is begun.

+ * + */ + virtual void resetErrors() = 0; + + + //@} + +private : + /* Unimplemented constructors and operators */ + + /* Copy constructor */ + ErrorHandler(const ErrorHandler&); + + /* Assignment operator */ + ErrorHandler& operator=(const ErrorHandler&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax/HandlerBase.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax/HandlerBase.hpp new file mode 100644 index 000000000000..12a5cbe2aed6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax/HandlerBase.hpp @@ -0,0 +1,466 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_HANDLERBASE_HPP) +#define XERCESC_INCLUDE_GUARD_HANDLERBASE_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class Locator; +class AttributeList; + +/** + * Default base class for handlers. + * + *

This class implements the default behaviour for four SAX + * interfaces: EntityResolver, DTDHandler, DocumentHandler, + * and ErrorHandler.

+ * + *

Application writers can extend this class when they need to + * implement only part of an interface; parser writers can + * instantiate this class to provide default handlers when the + * application has not supplied its own.

+ * + *

Note that the use of this class is optional.

+ * + * @see EntityResolver#EntityResolver + * @see DTDHandler#DTDHandler + * @see DocumentHandler#DocumentHandler + * @see ErrorHandler#ErrorHandler + */ + +class SAX_EXPORT HandlerBase : + + public EntityResolver, public DTDHandler, public DocumentHandler + , public ErrorHandler +{ +public: + /** @name Default handlers for the DocumentHandler interface */ + //@{ + /** + * Receive notification of character data inside an element. + * + *

By default, do nothing. Application writers may override this + * method to take specific actions for each chunk of character data + * (such as adding the data to a node or buffer, or printing it to + * a file).

+ * + * @param chars The characters. + * @param length The number of characters to use from the + * character array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#characters + */ + virtual void characters + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * Receive notification of the end of the document. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the beginning + * of a document (such as finalising a tree or closing an output + * file).

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#endDocument + */ + virtual void endDocument(); + + /** + * Receive notification of the end of an element. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the end of + * each element (such as finalising a tree node or writing + * output to a file).

+ * + * @param name The element type name. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#endElement + */ + virtual void endElement(const XMLCh* const name); + + /** + * Receive notification of ignorable whitespace in element content. + * + *

By default, do nothing. Application writers may override this + * method to take specific actions for each chunk of ignorable + * whitespace (such as adding data to a node or buffer, or printing + * it to a file).

+ * + * @param chars The whitespace characters. + * @param length The number of characters to use from the + * character array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#ignorableWhitespace + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * Receive notification of a processing instruction. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions for each + * processing instruction, such as setting status variables or + * invoking other methods.

+ * + * @param target The processing instruction target. + * @param data The processing instruction data, or null if + * none is supplied. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#processingInstruction + */ + virtual void processingInstruction + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** + * Reset the Document object on its reuse + * + * @see DocumentHandler#resetDocument + */ + virtual void resetDocument(); + //@} + + /** @name Default implementation of DocumentHandler interface */ + + //@{ + /** + * Receive a Locator object for document events. + * + *

By default, do nothing. Application writers may override this + * method in a subclass if they wish to store the locator for use + * with other document events.

+ * + * @param locator A locator for all SAX document events. + * @see DocumentHandler#setDocumentLocator + * @see Locator + */ + virtual void setDocumentLocator(const Locator* const locator); + + /** + * Receive notification of the beginning of the document. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the beginning + * of a document (such as allocating the root node of a tree or + * creating an output file).

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#startDocument + */ + virtual void startDocument(); + + /** + * Receive notification of the start of an element. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the start of + * each element (such as allocating a new tree node or writing + * output to a file).

+ * + * @param name The element type name. + * @param attributes The specified or defaulted attributes. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#startElement + */ + virtual void startElement + ( + const XMLCh* const name + , AttributeList& attributes + ); + + //@} + + /** @name Default implementation of the EntityResolver interface. */ + + //@{ + /** + * Resolve an external entity. + * + *

Always return null, so that the parser will use the system + * identifier provided in the XML document. This method implements + * the SAX default behaviour: application writers can override it + * in a subclass to do special translations such as catalog lookups + * or URI redirection.

+ * + * @param publicId The public identifier, or null if none is + * available. + * @param systemId The system identifier provided in the XML + * document. + * @return The new input source, or null to require the + * default behaviour. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see EntityResolver#resolveEntity + */ + virtual InputSource* resolveEntity + ( + const XMLCh* const publicId + , const XMLCh* const systemId + ); + + //@} + + /** @name Default implementation of the ErrorHandler interface */ + //@{ + /** + * Receive notification of a recoverable parser error. + * + *

The default implementation does nothing. Application writers + * may override this method in a subclass to take specific actions + * for each error, such as inserting the message in a log file or + * printing it to the console.

+ * + * @param exc The warning information encoded as an exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see ErrorHandler#warning + * @see SAXParseException#SAXParseException + */ + virtual void error(const SAXParseException& exc); + + /** + * Report a fatal XML parsing error. + * + *

The default implementation throws a SAXParseException. + * Application writers may override this method in a subclass if + * they need to take specific actions for each fatal error (such as + * collecting all of the errors into a single report): in any case, + * the application must stop all regular processing when this + * method is invoked, since the document is no longer reliable, and + * the parser may no longer report parsing events.

+ * + * @param exc The error information encoded as an exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see ErrorHandler#fatalError + * @see SAXParseException#SAXParseException + */ + virtual void fatalError(const SAXParseException& exc); + + /** + * Receive notification of a parser warning. + * + *

The default implementation does nothing. Application writers + * may override this method in a subclass to take specific actions + * for each warning, such as inserting the message in a log file or + * printing it to the console.

+ * + * @param exc The warning information encoded as an exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see ErrorHandler#warning + * @see SAXParseException#SAXParseException + */ + virtual void warning(const SAXParseException& exc); + + /** + * Reset the Error handler object on its reuse + * + * @see ErrorHandler#resetErrors + */ + virtual void resetErrors(); + + //@} + + + /** @name Default implementation of DTDHandler interface. */ + //@{ + + /** + * Receive notification of a notation declaration. + * + *

By default, do nothing. Application writers may override this + * method in a subclass if they wish to keep track of the notations + * declared in a document.

+ * + * @param name The notation name. + * @param publicId The notation public identifier, or null if not + * available. + * @param systemId The notation system identifier. + * @see DTDHandler#notationDecl + */ + virtual void notationDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ); + + /** + * Reset the DTD object on its reuse + * + * @see DTDHandler#resetDocType + */ + virtual void resetDocType(); + + /** + * Receive notification of an unparsed entity declaration. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to keep track of the unparsed entities + * declared in a document.

+ * + * @param name The entity name. + * @param publicId The entity public identifier, or null if not + * available. + * @param systemId The entity system identifier. + * @param notationName The name of the associated notation. + * @see DTDHandler#unparsedEntityDecl + */ + virtual void unparsedEntityDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + , const XMLCh* const notationName + ); + //@} + + HandlerBase() {}; + virtual ~HandlerBase() {}; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + HandlerBase(const HandlerBase&); + HandlerBase& operator=(const HandlerBase&); +}; + + +// --------------------------------------------------------------------------- +// HandlerBase: Inline default implementations +// --------------------------------------------------------------------------- +inline void HandlerBase::characters(const XMLCh* const + , const XMLSize_t) +{ +} + +inline void HandlerBase::endDocument() +{ +} + +inline void HandlerBase::endElement(const XMLCh* const) +{ +} + +inline void HandlerBase::error(const SAXParseException&) +{ +} + +inline void HandlerBase::fatalError(const SAXParseException& exc) +{ + throw exc; +} + +inline void +HandlerBase::ignorableWhitespace( const XMLCh* const + , const XMLSize_t) +{ +} + +inline void HandlerBase::notationDecl( const XMLCh* const + , const XMLCh* const + , const XMLCh* const) +{ +} + +inline void +HandlerBase::processingInstruction( const XMLCh* const + , const XMLCh* const) +{ +} + +inline void HandlerBase::resetErrors() +{ +} + +inline void HandlerBase::resetDocument() +{ +} + +inline void HandlerBase::resetDocType() +{ +} + +inline InputSource* +HandlerBase::resolveEntity( const XMLCh* const + , const XMLCh* const) +{ + return 0; +} + +inline void +HandlerBase::unparsedEntityDecl(const XMLCh* const + , const XMLCh* const + , const XMLCh* const + , const XMLCh* const) +{ +} + +inline void HandlerBase::setDocumentLocator(const Locator* const) +{ +} + +inline void HandlerBase::startDocument() +{ +} + +inline void +HandlerBase::startElement( const XMLCh* const + , AttributeList&) +{ +} + +inline void HandlerBase::warning(const SAXParseException&) +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax/InputSource.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax/InputSource.hpp new file mode 100644 index 000000000000..58334b7a1713 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax/InputSource.hpp @@ -0,0 +1,337 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_INPUTSOURCE_HPP) +#define XERCESC_INCLUDE_GUARD_INPUTSOURCE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class BinInputStream; + + +/** + * A single input source for an XML entity. + * + *

This class encapsulates information about an input source in a + * single object, which may include a public identifier or a system + * identifier

+ * + *

There are two places that the application will deliver this input + * source to the parser: as the argument to the Parser::parse method, or as + * the return value of the EntityResolver::resolveEntity method.

+ * + *

InputSource is never used directly, but is the base class for a number + * of derived classes for particular types of input sources. Derivatives are + * provided (in the framework/ directory) for URL input sources, memory buffer + * input sources, and so on.

+ * + *

When it is time to parse the input described by an input source, it + * will be asked to create a binary stream for that source. That stream will + * be used to input the data of the source. The derived class provides the + * implementation of the makeStream() method, and provides a type of stream + * of the correct type for the input source it represents. + * + *

An InputSource object belongs to the application: the parser never + * modifies them in any way. They are always passed by const reference so + * the parser will make a copy of any input sources that it must keep + * around beyond the call.

+ * + * @see Parser#parse + * @see EntityResolver#resolveEntity + */ +class SAX_EXPORT InputSource : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~InputSource(); + //@} + + + // ----------------------------------------------------------------------- + /** @name Virtual input source interface */ + //@{ + /** + * Makes the byte stream for this input source. + * + *

The derived class must create and return a binary input stream of an + * appropriate type for its kind of data source. The returned stream must + * be dynamically allocated and becomes the parser's property. + *

+ * + * @see BinInputStream + */ + virtual BinInputStream* makeStream() const = 0; + + //@} + + + // ----------------------------------------------------------------------- + /** @name Getter methods */ + //@{ + /** + * An input source can be set to force the parser to assume a particular + * encoding for the data that input source represents, via the setEncoding() + * method. This method returns name of the encoding that is to be forced. + * If the encoding has never been forced, it returns a null pointer. + * + * @return The forced encoding, or null if none was supplied. + * @see #setEncoding + */ + virtual const XMLCh* getEncoding() const; + + + /** + * Get the public identifier for this input source. + * + * @return The public identifier, or null if none was supplied. + * @see #setPublicId + */ + virtual const XMLCh* getPublicId() const; + + + /** + * Get the system identifier for this input source. + * + *

If the system ID is a URL, it will be fully resolved.

+ * + * @return The system identifier. + * @see #setSystemId + */ + virtual const XMLCh* getSystemId() const; + + /** + * Get the flag that indicates if the parser should issue fatal error if this input source + * is not found. + * + * @return True if the parser should issue fatal error if this input source is not found. + * False if the parser issue warning message instead. + * @see #setIssueFatalErrorIfNotFound + */ + virtual bool getIssueFatalErrorIfNotFound() const; + + MemoryManager* getMemoryManager() const; + + //@} + + + // ----------------------------------------------------------------------- + /** @name Setter methods */ + //@{ + + /** + * Set the encoding which will be required for use with the XML text read + * via a stream opened by this input source. + * + *

This is usually not set, allowing the encoding to be sensed in the + * usual XML way. However, in some cases, the encoding in the file is known + * to be incorrect because of intermediate transcoding, for instance + * encapsulation within a MIME document. + * + * @param encodingStr The name of the encoding to force. + */ + virtual void setEncoding(const XMLCh* const encodingStr); + + + /** + * Set the public identifier for this input source. + * + *

The public identifier is always optional: if the application writer + * includes one, it will be provided as part of the location information.

+ * + * @param publicId The public identifier as a string. + * @see Locator#getPublicId + * @see SAXParseException#getPublicId + * @see #getPublicId + */ + virtual void setPublicId(const XMLCh* const publicId); + + /** + * Set the system identifier for this input source. + * + *

Set the system identifier for this input source. + * + *

The system id is always required. The public id may be used to map + * to another system id, but the system id must always be present as a fall + * back. + * + *

If the system ID is a URL, it must be fully resolved.

+ * + * @param systemId The system identifier as a string. + * @see #getSystemId + * @see Locator#getSystemId + * @see SAXParseException#getSystemId + */ + virtual void setSystemId(const XMLCh* const systemId); + + /** + * Indicates if the parser should issue fatal error if this input source + * is not found. If set to false, the parser issue warning message instead. + * + * @param flag True if the parser should issue fatal error if this input source is not found. + * If set to false, the parser issue warning message instead. (Default: true) + * + * @see #getIssueFatalErrorIfNotFound + */ + virtual void setIssueFatalErrorIfNotFound(const bool flag); + + //@} + + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + InputSource(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Constructor with a system identifier as XMLCh type. + * @param systemId The system identifier (URI). + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + InputSource(const XMLCh* const systemId, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Constructor with a system and public identifiers + * @param systemId The system identifier (URI). + * @param publicId The public identifier as in the entity definition. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + InputSource + ( + const XMLCh* const systemId + , const XMLCh* const publicId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Constructor witha system identifier as string + * @param systemId The system identifier (URI). + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + InputSource(const char* const systemId, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Constructor witha system and public identifiers. Both as string + * @param systemId The system identifier (URI). + * @param publicId The public identifier as in the entity definition. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + InputSource + ( + const char* const systemId + , const char* const publicId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + + + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + InputSource(const InputSource&); + InputSource& operator=(const InputSource&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fEncoding + // This is the encoding to use. Usually this is null, which means + // to use the information found in the file itself. But, if set, + // this encoding will be used without question. + // + // fPublicId + // This is the optional public id for the input source. It can be + // null if none is desired. + // + // fSystemId + // This is the system id for the input source. This is what is + // actually used to open the source. + // + // fFatalErrorIfNotFound + // ----------------------------------------------------------------------- + MemoryManager* const fMemoryManager; + XMLCh* fEncoding; + XMLCh* fPublicId; + XMLCh* fSystemId; + bool fFatalErrorIfNotFound; +}; + + +// --------------------------------------------------------------------------- +// InputSource: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh* InputSource::getEncoding() const +{ + return fEncoding; +} + +inline const XMLCh* InputSource::getPublicId() const +{ + return fPublicId; +} + +inline const XMLCh* InputSource::getSystemId() const +{ + return fSystemId; +} + +inline bool InputSource::getIssueFatalErrorIfNotFound() const +{ + return fFatalErrorIfNotFound; +} + +inline MemoryManager* InputSource::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// InputSource: Setter methods +// --------------------------------------------------------------------------- +inline void InputSource::setIssueFatalErrorIfNotFound(const bool flag) +{ + fFatalErrorIfNotFound = flag; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax/Locator.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax/Locator.hpp new file mode 100644 index 000000000000..68eb188f20e2 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax/Locator.hpp @@ -0,0 +1,125 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_LOCATOR_HPP) +#define XERCESC_INCLUDE_GUARD_LOCATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Interface for associating a SAX event with a document location. + * + *

If a SAX parser provides location information to the SAX + * application, it does so by implementing this interface and then + * passing an instance to the application using the document + * handler's setDocumentLocator method. The application can use the + * object to obtain the location of any other document handler event + * in the XML source document.

+ * + *

Note that the results returned by the object will be valid only + * during the scope of each document handler method: the application + * will receive unpredictable results if it attempts to use the + * locator at any other time.

+ * + *

SAX parsers are not required to supply a locator, but they are + * very strong encouraged to do so. If the parser supplies a + * locator, it must do so before reporting any other document events. + * If no locator has been set by the time the application receives + * the startDocument event, the application should assume that a + * locator is not available.

+ * + * @see DocumentHandler#setDocumentLocator + */ + +class SAX_EXPORT Locator +{ +public: + + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + Locator() + { + } + + /** Destructor */ + virtual ~Locator() + { + } + + //@} + + /** @name The locator interface */ + //@{ + /** + * Return the public identifier for the current document event. + *

This will be the public identifier + * @return A string containing the public identifier, or + * null if none is available. + * @see #getSystemId + */ + virtual const XMLCh* getPublicId() const = 0; + + /** + * Return the system identifier for the current document event. + * + *

If the system identifier is a URL, the parser must resolve it + * fully before passing it to the application.

+ * + * @return A string containing the system identifier, or null + * if none is available. + * @see #getPublicId + */ + virtual const XMLCh* getSystemId() const = 0; + + /** + * Return the line number where the current document event ends. + * Note that this is the line position of the first character + * after the text associated with the document event. + * @return The line number, or 0 if none is available. + * @see #getColumnNumber + */ + virtual XMLFileLoc getLineNumber() const = 0; + + /** + * Return the column number where the current document event ends. + * Note that this is the column number of the first + * character after the text associated with the document + * event. The first column in a line is position 1. + * @return The column number, or 0 if none is available. + * @see #getLineNumber + */ + virtual XMLFileLoc getColumnNumber() const = 0; + //@} + +private : + /* Copy constructor */ + Locator(const Locator&); + + /* Assignment operator */ + Locator& operator=(const Locator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax/Parser.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax/Parser.hpp new file mode 100644 index 000000000000..16772ebabced --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax/Parser.hpp @@ -0,0 +1,245 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PARSER_HPP) +#define XERCESC_INCLUDE_GUARD_PARSER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DTDHandler; +class EntityResolver; +class DocumentHandler; +class ErrorHandler; +class InputSource; + +/** + * Basic interface for SAX (Simple API for XML) parsers. + * + * All SAX parsers must implement this basic interface: it allows + * applications to register handlers for different types of events + * and to initiate a parse from a URI, or a character stream. + * + * All SAX parsers must also implement a zero-argument constructor + * (though other constructors are also allowed). + * + * SAX parsers are reusable but not re-entrant: the application + * may reuse a parser object (possibly with a different input source) + * once the first parse has completed successfully, but it may not + * invoke the parse() methods recursively within a parse. + * + * @see EntityResolver#EntityResolver + * @see DTDHandler#DTDHandler + * @see DocumentHandler#DocumentHandler + * @see ErrorHandler#ErrorHandler + * @see HandlerBase#HandlerBase + * @see InputSource#InputSource + */ + +#include + +class SAX_EXPORT Parser +{ +public: + /** @name Constructors and Destructor */ + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + //@{ + /** The default constructor */ + Parser() + { + } + /** The destructor */ + virtual ~Parser() + { + } + //@} + + //----------------------------------------------------------------------- + // The parser interface + //----------------------------------------------------------------------- + /** @name The parser interfaces */ + //@{ + /** + * Allow an application to register a custom entity resolver. + * + * If the application does not register an entity resolver, the + * SAX parser will resolve system identifiers and open connections + * to entities itself (this is the default behaviour implemented in + * HandlerBase). + * + * Applications may register a new or different entity resolver + * in the middle of a parse, and the SAX parser must begin using + * the new resolver immediately. + * + * @param resolver The object for resolving entities. + * @see EntityResolver#EntityResolver + * @see HandlerBase#HandlerBase + */ + virtual void setEntityResolver(EntityResolver* const resolver) = 0; + + /** + * Allow an application to register a DTD event handler. + * + * If the application does not register a DTD handler, all DTD + * events reported by the SAX parser will be silently ignored (this + * is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the middle + * of a parse, and the SAX parser must begin using the new handler + * immediately. + * + * @param handler The DTD handler. + * @see DTDHandler#DTDHandler + * @see HandlerBase#HandlerBase + */ + virtual void setDTDHandler(DTDHandler* const handler) = 0; + + /** + * Allow an application to register a document event handler. + * + * If the application does not register a document handler, all + * document events reported by the SAX parser will be silently + * ignored (this is the default behaviour implemented by + * HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The document handler. + * @see DocumentHandler#DocumentHandler + * @see HandlerBase#HandlerBase + */ + virtual void setDocumentHandler(DocumentHandler* const handler) = 0; + + /** + * Allow an application to register an error event handler. + * + * If the application does not register an error event handler, + * all error events reported by the SAX parser will be silently + * ignored, except for fatalError, which will throw a SAXException + * (this is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The error handler. + * @see ErrorHandler#ErrorHandler + * @see SAXException#SAXException + * @see HandlerBase#HandlerBase + */ + virtual void setErrorHandler(ErrorHandler* const handler) = 0; + + /** + * Parse an XML document. + * + * The application can use this method to instruct the SAX parser + * to begin parsing an XML document from any valid input + * source (a character stream, a byte stream, or a URI). + * + * Applications may not invoke this method while a parse is in + * progress (they should create a new Parser instead for each + * additional XML document). Once a parse is complete, an + * application may reuse the same Parser object, possibly with a + * different input source. + * + * @param source The input source for the top-level of the + * XML document. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see InputSource#InputSource + * @see #setEntityResolver + * @see #setDTDHandler + * @see #setDocumentHandler + * @see #setErrorHandler + */ + virtual void parse + ( + const InputSource& source + ) = 0; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(const InputSource&) + */ + virtual void parse + ( + const XMLCh* const systemId + ) = 0; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(const InputSource&) + */ + virtual void parse + ( + const char* const systemId + ) = 0; + //@} + + +private : + /* The copy constructor, you cannot call this directly */ + Parser(const Parser&); + + /* The assignment operator, you cannot call this directly */ + Parser& operator=(const Parser&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax/SAXException.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax/SAXException.hpp new file mode 100644 index 000000000000..95098a37bf23 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax/SAXException.hpp @@ -0,0 +1,230 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SAXEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_SAXEXCEPTION_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * Encapsulate a general SAX error or warning. + * + *

This class can contain basic error or warning information from + * either the XML SAX parser or the application: a parser writer or + * application writer can subclass it to provide additional + * functionality. SAX handlers may throw this exception or + * any exception subclassed from it.

+ * + *

If the application needs to pass through other types of + * exceptions, it must wrap those exceptions in a SAXException + * or an exception derived from a SAXException.

+ * + *

If the parser or application needs to include information + * about a specific location in an XML document, it should use the + * SAXParseException subclass.

+ * + * @see SAXParseException#SAXParseException + */ +class SAX_EXPORT SAXException : public XMemory +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** Default constructor + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + SAXException(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) : + + fMsg(XMLString::replicate(XMLUni::fgZeroLenString, manager)) + , fMemoryManager(manager) + { + } + + /** + * Create a new SAXException. + * + * @param msg The error or warning message. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + SAXException(const XMLCh* const msg, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) : + + fMsg(XMLString::replicate(msg, manager)) + , fMemoryManager(manager) + { + } + + /** + * Create a new SAXException. + * + * @param msg The error or warning message. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + SAXException(const char* const msg, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) : + + fMsg(XMLString::transcode(msg, manager)) + , fMemoryManager(manager) + { + } + + /** + * Copy constructor + * + * @param toCopy The exception to be copy constructed + */ + SAXException(const SAXException& toCopy) : + XMemory(toCopy) + , fMsg(XMLString::replicate(toCopy.fMsg, toCopy.fMemoryManager)) + , fMemoryManager(toCopy.fMemoryManager) + { + } + + /** Destructor */ + virtual ~SAXException() + { + fMemoryManager->deallocate(fMsg);//delete [] fMsg; + } + + //@} + + + /** @name Public Operators */ + //@{ + /** + * Assignment operator + * + * @param toCopy The object to be copied + */ + SAXException& operator=(const SAXException& toCopy) + { + if (this == &toCopy) + return *this; + + fMemoryManager->deallocate(fMsg);//delete [] fMsg; + fMsg = XMLString::replicate(toCopy.fMsg, toCopy.fMemoryManager); + fMemoryManager = toCopy.fMemoryManager; + return *this; + } + //@} + + /** @name Getter Methods */ + //@{ + /** + * Get the contents of the message + * + */ + virtual const XMLCh* getMessage() const + { + return fMsg; + } + //@} + + +protected : + // ----------------------------------------------------------------------- + // Protected data members + // + // fMsg + // This is the text of the error that is being thrown. + // ----------------------------------------------------------------------- + XMLCh* fMsg; + MemoryManager* fMemoryManager; +}; + +class SAX_EXPORT SAXNotSupportedException : public SAXException +{ + +public: + SAXNotSupportedException(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Create a new SAXException. + * + * @param msg The error or warning message. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + SAXNotSupportedException(const XMLCh* const msg, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Create a new SAXException. + * + * @param msg The error or warning message. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + SAXNotSupportedException(const char* const msg, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Copy constructor + * + * @param toCopy The exception to be copy constructed + */ + SAXNotSupportedException(const SAXException& toCopy); +}; + +class SAX_EXPORT SAXNotRecognizedException : public SAXException +{ +public: + SAXNotRecognizedException(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Create a new SAXException. + * + * @param msg The error or warning message. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + SAXNotRecognizedException(const XMLCh* const msg, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Create a new SAXException. + * + * @param msg The error or warning message. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + SAXNotRecognizedException(const char* const msg, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Copy constructor + * + * @param toCopy The exception to be copy constructed + */ + SAXNotRecognizedException(const SAXException& toCopy); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax/SAXParseException.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax/SAXParseException.hpp new file mode 100644 index 000000000000..a9df4493c181 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax/SAXParseException.hpp @@ -0,0 +1,185 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SAXPARSEEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_SAXPARSEEXCEPTION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class Locator; + +/** + * Encapsulate an XML parse error or warning. + * + *

This exception will include information for locating the error + * in the original XML document. Note that although the application + * will receive a SAXParseException as the argument to the handlers + * in the ErrorHandler interface, the application is not actually + * required to throw the exception; instead, it can simply read the + * information in it and take a different action.

+ * + *

Since this exception is a subclass of SAXException, it + * inherits the ability to wrap another exception.

+ * + * @see SAXException#SAXException + * @see Locator#Locator + * @see ErrorHandler#ErrorHandler + */ +class SAX_EXPORT SAXParseException : public SAXException +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** + * Create a new SAXParseException from a message and a Locator. + * + *

This constructor is especially useful when an application is + * creating its own exception from within a DocumentHandler + * callback.

+ * + * @param message The error or warning message. + * @param locator The locator object for the error or warning. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @see Locator#Locator + * @see Parser#setLocale + */ + SAXParseException(const XMLCh* const message, const Locator& locator, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + + /** + * Create a new SAXParseException. + * + *

This constructor is most useful for parser writers.

+ * + *

If the system identifier is a URL, the parser must resolve it + * fully before creating the exception.

+ * + * @param message The error or warning message. + * @param publicId The public identifier of the entity that generated + * the error or warning. + * @param systemId The system identifier of the entity that generated + * the error or warning. + * @param lineNumber The line number of the end of the text that + * caused the error or warning. + * @param columnNumber The column number of the end of the text that + * caused the error or warning. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @see Parser#setLocale + */ + SAXParseException + ( + const XMLCh* const message + , const XMLCh* const publicId + , const XMLCh* const systemId + , const XMLFileLoc lineNumber + , const XMLFileLoc columnNumber + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Copy constructor + * + * @param toCopy The object to be copied + */ + SAXParseException(const SAXParseException& toCopy); + + /** + * Destructor + */ + ~SAXParseException(); + + //@} + + /** @name Assignment operator */ + //@{ + /** + * Assignment operator + * + * @param toAssign The object to be copied through assignment + * + */ + SAXParseException& operator=(const SAXParseException& toAssign); + //@} + + /** @name Getter methods */ + //@{ + /** + * The column number of the end of the text where the exception occurred. + * + *

The first column in a line is position 1.

+ * + * @return An integer representing the column number, or 0 + * if none is available. + * @see Locator#getColumnNumber + */ + XMLFileLoc getColumnNumber() const; + /** + * The line number of the end of the text where the exception occurred. + * + * @return An integer representing the line number, or 0 + * if none is available. + * @see Locator#getLineNumber + */ + XMLFileLoc getLineNumber() const; + /** + * Get the public identifier of the entity where the exception occurred. + * + * @return A string containing the public identifier, or null + * if none is available. + * @see Locator#getPublicId + */ + const XMLCh* getPublicId() const; + /** + * Get the system identifier of the entity where the exception occurred. + * + *

If the system identifier is a URL, it will be resolved + * fully.

+ * + * @return A string containing the system identifier, or null + * if none is available. + * @see Locator#getSystemId + */ + const XMLCh* getSystemId() const; + //@} + +private: + /* Data Members */ + + /* The column in the source text where the error occured. */ + XMLFileLoc fColumnNumber; + /* The line in the source text where the error occured. */ + XMLFileLoc fLineNumber; + /* The public id of the file where the error occured. */ + XMLCh* fPublicId; + /* The system id of the file where the error occured. */ + XMLCh* fSystemId; + + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax2/Attributes.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax2/Attributes.hpp new file mode 100644 index 000000000000..2c482a2d19cf --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax2/Attributes.hpp @@ -0,0 +1,313 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ATTRIBUTES_HPP) +#define XERCESC_INCLUDE_GUARD_ATTRIBUTES_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Interface for an element's attribute specifications. + * + * The SAX2 parser implements this interface and passes an instance + * to the SAX2 application as the last argument of each startElement + * event. + * + * The instance provided will return valid results only during the + * scope of the startElement invocation (to save it for future + * use, the application must make a copy: the AttributesImpl + * helper class provides a convenient constructor for doing so). + * + * An Attributes includes only attributes that have been + * specified or defaulted: \#IMPLIED attributes will not be included. + * + * There are two ways for the SAX application to obtain information + * from the Attributes. First, it can iterate through the entire + * list: + * + * + * public void startElement (String uri, String localpart, String qName, Attributes atts) {
+ *  for (XMLSize_t i = 0; i < atts.getLength(); i++) {
+ *   String Qname = atts.getQName(i);
+ *   String URI = atts.getURI(i)
+ *   String local = atts.GetLocalName(i)
+ *   String type = atts.getType(i);
+ *   String value = atts.getValue(i);
+ *   [...]
+ *  }
+ * } + *
+ * + * (Note that the result of getLength() will be zero if there + * are no attributes.) + * + * As an alternative, the application can request the value or + * type of specific attributes: + * + * + * public void startElement (String uri, String localpart, String qName, Attributes atts) {
+ *  String identifier = atts.getValue("id");
+ *  String label = atts.getValue("label");
+ *  [...]
+ * } + *
+ * + * The AttributesImpl helper class provides a convenience + * implementation for use by parser or application writers. + * + * @see Sax2DocumentHandler#startElement + * @see AttributesImpl#AttributesImpl + */ + +class SAX2_EXPORT Attributes +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + Attributes() + { + } + + /** Destructor */ + virtual ~Attributes() + { + } + //@} + + /** @name The virtual attribute list interface */ + //@{ + /** + * Return the number of attributes in this list. + * + * The SAX parser may provide attributes in any + * arbitrary order, regardless of the order in which they were + * declared or specified. The number of attributes may be + * zero. + * + * @return The number of attributes in the list. + */ + virtual XMLSize_t getLength() const = 0; + + /** + * Return the namespace URI of an attribute in this list (by position). + * + * The QNames must be unique: the SAX parser shall not include the + * same attribute twice. Attributes without values (those declared + * \#IMPLIED without a value specified in the start tag) will be + * omitted from the list. + * + * @param index The index of the attribute in the list (starting at 0). + * @return The URI of the indexed attribute, or null + * if the index is out of range. + * @see #getLength + */ + virtual const XMLCh* getURI(const XMLSize_t index) const = 0; + + /** + * Return the local name of an attribute in this list (by position). + * + * The QNames must be unique: the SAX parser shall not include the + * same attribute twice. Attributes without values (those declared + * \#IMPLIED without a value specified in the start tag) will be + * omitted from the list. + * + * @param index The index of the attribute in the list (starting at 0). + * @return The local name of the indexed attribute, or null + * if the index is out of range. + * @see #getLength + */ + virtual const XMLCh* getLocalName(const XMLSize_t index) const = 0; + + /** + * Return the qName of an attribute in this list (by position). + * + * The QNames must be unique: the SAX parser shall not include the + * same attribute twice. Attributes without values (those declared + * \#IMPLIED without a value specified in the start tag) will be + * omitted from the list. + * + * @param index The index of the attribute in the list (starting at 0). + * @return The qName of the indexed attribute, or null + * if the index is out of range. + * @see #getLength + */ + virtual const XMLCh* getQName(const XMLSize_t index) const = 0; + + /** + * Return the type of an attribute in the list (by position). + * + * The attribute type is one of the strings "CDATA", "ID", + * "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES", + * or "NOTATION" (always in upper case). + * + * If the parser has not read a declaration for the attribute, + * or if the parser does not report attribute types, then it must + * return the value "CDATA" as stated in the XML 1.0 Recommendation + * (clause 3.3.3, "Attribute-Value Normalization"). + * + * For an enumerated attribute that is not a notation, the + * parser will report the type as "NMTOKEN". + * + * @param index The index of the attribute in the list (starting at 0). + * @return The attribute type as a string, or + * null if the index is out of range. + * @see #getLength + * @see #getType + */ + virtual const XMLCh* getType(const XMLSize_t index) const = 0; + + /** + * Return the value of an attribute in the list (by position). + * + * If the attribute value is a list of tokens (IDREFS, + * ENTITIES, or NMTOKENS), the tokens will be concatenated + * into a single string separated by whitespace. + * + * @param index The index of the attribute in the list (starting at 0). + * @return The attribute value as a string, or + * null if the index is out of range. + * @see #getLength + * @see #getValue + */ + virtual const XMLCh* getValue(const XMLSize_t index) const = 0; + + //////////////////////////////////////////////////////////////////// + // Name-based query. + //////////////////////////////////////////////////////////////////// + + /** + * Look up the index of an attribute by Namespace name. Non-standard + * extension. + * + * @param uri The Namespace URI, or the empty string if + * the name has no Namespace URI. + * @param localPart The attribute's local name. + * @param index Reference to the variable where the index will be stored. + * @return true if the attribute is found and false otherwise. + */ + virtual bool getIndex(const XMLCh* const uri, + const XMLCh* const localPart, + XMLSize_t& index) const = 0 ; + + /** + * Look up the index of an attribute by Namespace name. + * + * @param uri The Namespace URI, or the empty string if + * the name has no Namespace URI. + * @param localPart The attribute's local name. + * @return The index of the attribute, or -1 if it does not + * appear in the list. + */ + virtual int getIndex(const XMLCh* const uri, + const XMLCh* const localPart ) const = 0 ; + + /** + * Look up the index of an attribute by XML 1.0 qualified name. + * Non-standard extension. + * + * @param qName The qualified (prefixed) name. + * @param index Reference to the variable where the index will be stored. + * @return true if the attribute is found and false otherwise. + */ + virtual bool getIndex(const XMLCh* const qName, + XMLSize_t& index) const = 0 ; + + /** + * Look up the index of an attribute by XML 1.0 qualified name. + * + * @param qName The qualified (prefixed) name. + * @return The index of the attribute, or -1 if it does not + * appear in the list. + */ + virtual int getIndex(const XMLCh* const qName ) const = 0 ; + + /** + * Look up an attribute's type by Namespace name. + * + *

See #getType for a description of the possible types.

+ * + * @param uri The Namespace URI, or the empty String if the + * name has no Namespace URI. + * @param localPart The local name of the attribute. + * @return The attribute type as a string, or null if the + * attribute is not in the list or if Namespace + * processing is not being performed. + */ + virtual const XMLCh* getType(const XMLCh* const uri, + const XMLCh* const localPart ) const = 0 ; + + /** + * Look up an attribute's type by XML 1.0 qualified name. + * + *

See #getType for a description of the possible types.

+ * + * @param qName The XML 1.0 qualified name. + * @return The attribute type as a string, or null if the + * attribute is not in the list or if qualified names + * are not available. + */ + virtual const XMLCh* getType(const XMLCh* const qName) const = 0; + + /** + * Look up an attribute's value by Namespace name. + * + *

See #getValue for a description of the possible values.

+ * + * @param uri The Namespace URI, or the empty String if the + * name has no Namespace URI. + * @param localPart The local name of the attribute. + * @return The attribute value as a string, or null if the + * attribute is not in the list. + */ + virtual const XMLCh* getValue(const XMLCh* const uri, const XMLCh* const localPart ) const = 0 ; + + /** + * Look up an attribute's value by XML 1.0 qualified name. + * + *

See #getValue for a description of the possible values.

+ * + * @param qName The XML 1.0 qualified name. + * @return The attribute value as a string, or null if the + * attribute is not in the list or if qualified names + * are not available. + */ + virtual const XMLCh* getValue(const XMLCh* const qName) const = 0; + + //@} + +private : + /* Constructors and operators */ + /* Copy constructor */ + Attributes(const Attributes&); + /* Assignment operator */ + Attributes& operator=(const Attributes&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax2/ContentHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax2/ContentHandler.hpp new file mode 100644 index 000000000000..4224fd54f962 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax2/ContentHandler.hpp @@ -0,0 +1,340 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CONTENTHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_CONTENTHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class Attributes; +class Locator; + +/** + * Receive notification of general document events. + * + *

This is the main interface that most SAX2 applications + * implement: if the application needs to be informed of basic parsing + * events, it implements this interface and registers an instance with + * the SAX2 parser using the setDocumentHandler method. The parser + * uses the instance to report basic document-related events like + * the start and end of elements and character data.

+ * + *

The order of events in this interface is very important, and + * mirrors the order of information in the document itself. For + * example, all of an element's content (character data, processing + * instructions, and/or subelements) will appear, in order, between + * the startElement event and the corresponding endElement event.

+ * + *

Application writers who do not want to implement the entire + * interface while can derive a class from Sax2HandlerBase, which implements + * the default functionality; parser writers can instantiate + * Sax2HandlerBase to obtain a default handler. The application can find + * the location of any document event using the Locator interface + * supplied by the Parser through the setDocumentLocator method.

+ * + * @see Parser#setDocumentHandler + * @see Locator#Locator + * @see Sax2HandlerBase#Sax2HandlerBase + */ + +class SAX2_EXPORT ContentHandler +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + ContentHandler() + { + } + + /** Destructor */ + virtual ~ContentHandler() + { + } + //@} + + /** @name The virtual document handler interface */ + + //@{ + /** + * Receive notification of character data. + * + *

The Parser will call this method to report each chunk of + * character data. SAX parsers may return all contiguous character + * data in a single chunk, or they may split it into several + * chunks; however, all of the characters in any single event + * must come from the same external entity, so that the Locator + * provides useful information.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + *

Note that some parsers will report whitespace using the + * ignorableWhitespace() method rather than this one (validating + * parsers must do so).

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #ignorableWhitespace + * @see Locator#Locator + */ + virtual void characters + ( + const XMLCh* const chars + , const XMLSize_t length + ) = 0; + + /** + * Receive notification of the end of a document. + * + *

The SAX parser will invoke this method only once, and it will + * be the last method invoked during the parse. The parser shall + * not invoke this method until it has either abandoned parsing + * (because of an unrecoverable error) or reached the end of + * input.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endDocument () = 0; + + /** + * Receive notification of the end of an element. + * + *

The SAX parser will invoke this method at the end of every + * element in the XML document; there will be a corresponding + * startElement() event for every endElement() event (even when the + * element is empty).

+ * + * @param uri The URI of the associated namespace for this element + * @param localname The local part of the element name + * @param qname The QName of this element + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endElement + ( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname + ) = 0; + + /** + * Receive notification of ignorable whitespace in element content. + * + *

Validating Parsers must use this method to report each chunk + * of ignorable whitespace (see the W3C XML 1.0 recommendation, + * section 2.10): non-validating parsers may also use this method + * if they are capable of parsing and using content models.

+ * + *

SAX parsers may return all contiguous whitespace in a single + * chunk, or they may split it into several chunks; however, all of + * the characters in any single event must come from the same + * external entity, so that the Locator provides useful + * information.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #characters + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ) = 0; + + /** + * Receive notification of a processing instruction. + * + *

The Parser will invoke this method once for each processing + * instruction found: note that processing instructions may occur + * before or after the main document element.

+ * + *

A SAX parser should never report an XML declaration (XML 1.0, + * section 2.8) or a text declaration (XML 1.0, section 4.3.1) + * using this method.

+ * + * @param target The processing instruction target. + * @param data The processing instruction data, or null if + * none was supplied. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void processingInstruction + ( + const XMLCh* const target + , const XMLCh* const data + ) = 0; + + /** + * Receive an object for locating the origin of SAX document events. + * + * SAX parsers are strongly encouraged (though not absolutely + * required) to supply a locator: if it does so, it must supply + * the locator to the application by invoking this method before + * invoking any of the other methods in the DocumentHandler + * interface. + * + * The locator allows the application to determine the end + * position of any document-related event, even if the parser is + * not reporting an error. Typically, the application will + * use this information for reporting its own errors (such as + * character content that does not match an application's + * business rules). The information returned by the locator + * is probably not sufficient for use with a search engine. + * + * Note that the locator will return correct information only + * during the invocation of the events in this interface. The + * application should not attempt to use it at any other time. + * + * @param locator An object that can return the location of + * any SAX document event. The object is only + * 'on loan' to the client code and they are not + * to attempt to delete or modify it in any way! + * + * @see Locator#Locator + */ + virtual void setDocumentLocator(const Locator* const locator) = 0; + + /** + * Receive notification of the beginning of a document. + * + *

The SAX parser will invoke this method only once, before any + * other methods in this interface or in DTDHandler (except for + * setDocumentLocator).

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startDocument() = 0; + + /** + * Receive notification of the beginning of an element. + * + *

The Parser will invoke this method at the beginning of every + * element in the XML document; there will be a corresponding + * endElement() event for every startElement() event (even when the + * element is empty). All of the element's content will be + * reported, in order, before the corresponding endElement() + * event.

+ * + *

Note that the attribute list provided will + * contain only attributes with explicit values (specified or + * defaulted): \#IMPLIED attributes will be omitted.

+ * + * @param uri The URI of the associated namespace for this element + * @param localname The local part of the element name + * @param qname The QName of this element + * @param attrs The attributes attached to the element, if any. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see #endElement + * @see Attributes#Attributes + */ + virtual void startElement + ( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname, + const Attributes& attrs + ) = 0; + + /** + * Receive notification of the start of an namespace prefix mapping. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the start of + * each namespace prefix mapping.

+ * + * @param prefix The namespace prefix used + * @param uri The namespace URI used. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startPrefixMapping + ( + const XMLCh* const prefix, + const XMLCh* const uri + ) = 0 ; + + /** + * Receive notification of the end of an namespace prefix mapping. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the end of + * each namespace prefix mapping.

+ * + * @param prefix The namespace prefix used + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endPrefixMapping + ( + const XMLCh* const prefix + ) = 0 ; + + /** + * Receive notification of a skipped entity + * + *

The parser will invoke this method once for each entity + * skipped. All processors may skip external entities, + * depending on the values of the features:
+ * http://xml.org/sax/features/external-general-entities
+ * http://xml.org/sax/features/external-parameter-entities

+ * + *

Note: Xerces (specifically) never skips any entities, regardless + * of the above features. This function is never called in the + * Xerces implementation of SAX2.

+ * + *

Introduced with SAX2

+ * + * @param name The name of the skipped entity. If it is a parameter entity, + * the name will begin with %, and if it is the external DTD subset, + * it will be the string [dtd]. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void skippedEntity + ( + const XMLCh* const name + ) = 0 ; + + //@} +private : + /* Unimplemented Constructors and operators */ + /* Copy constructor */ + ContentHandler(const ContentHandler&); + /** Assignment operator */ + ContentHandler& operator=(const ContentHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax2/DeclHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax2/DeclHandler.hpp new file mode 100644 index 000000000000..5ed01059f4c5 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax2/DeclHandler.hpp @@ -0,0 +1,163 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DECLHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DECLHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Receive notification of DTD declaration events. + * + *

This is an optional extension handler for SAX2 to provide more + * complete information about DTD declarations in an XML document. + * XML readers are not required to recognize this handler, and it is not + * part of core-only SAX2 distributions.

+ * + *

Note that data-related DTD declarations (unparsed entities and + * notations) are already reported through the DTDHandler interface.

+ * + *

If you are using the declaration handler together with a lexical + * handler, all of the events will occur between the startDTD and the endDTD + * events.

+ * + * @see SAX2XMLReader#setLexicalHandler + * @see SAX2XMLReader#setDeclarationHandler + */ + +class SAX2_EXPORT DeclHandler +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + DeclHandler() + { + } + + /** Destructor */ + virtual ~DeclHandler() + { + } + //@} + + /** @name The virtual declaration handler interface */ + + //@{ + /** + * Report an element type declaration. + * + *

The content model will consist of the string "EMPTY", the string + * "ANY", or a parenthesised group, optionally followed by an occurrence + * indicator. The model will be normalized so that all parameter entities + * are fully resolved and all whitespace is removed,and will include the + * enclosing parentheses. Other normalization (such as removing redundant + * parentheses or simplifying occurrence indicators) is at the discretion + * of the parser.

+ * + * @param name The element type name. + * @param model The content model as a normalized string. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void elementDecl + ( + const XMLCh* const name + , const XMLCh* const model + ) = 0; + + /** + * Report an attribute type declaration. + * + *

The Parser will call this method to report each occurrence of + * a comment in the XML document.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + * @param eName The name of the associated element. + * @param aName The name of the attribute. + * @param type A string representing the attribute type. + * @param mode A string representing the attribute defaulting mode ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if none of these applies. + * @param value A string representing the attribute's default value, or null if there is none. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void attributeDecl + ( + const XMLCh* const eName + , const XMLCh* const aName + , const XMLCh* const type + , const XMLCh* const mode + , const XMLCh* const value + ) = 0; + + /** + * Report an internal entity declaration. + * + *

Only the effective (first) declaration for each entity will be + * reported. All parameter entities in the value will be expanded, but + * general entities will not.

+ * + * @param name The name of the entity. If it is a parameter entity, the name will begin with '%'. + * @param value The replacement text of the entity. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void internalEntityDecl + ( + const XMLCh* const name + , const XMLCh* const value + ) = 0; + + /** + * Report a parsed external entity declaration. + * + *

Only the effective (first) declaration for each entity will + * be reported.

+ * + * @param name The name of the entity. If it is a parameter entity, the name will begin with '%'. + * @param publicId The The declared public identifier of the entity, or null if none was declared. + * @param systemId The declared system identifier of the entity. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void externalEntityDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ) = 0; + + //@} +private : + /* Unimplemented Constructors and operators */ + /* Copy constructor */ + DeclHandler(const DeclHandler&); + /** Assignment operator */ + DeclHandler& operator=(const DeclHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax2/DefaultHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax2/DefaultHandler.hpp new file mode 100644 index 000000000000..528d44eeab42 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax2/DefaultHandler.hpp @@ -0,0 +1,806 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DEFAULTHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DEFAULTHANDLER_HPP + +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class Locator; +class Attributes; + +/** + * Default base class for SAX2 handlers. + * + *

This class implements the default behaviour for SAX2 + * interfaces: EntityResolver, DTDHandler, ContentHandler, + * ErrorHandler, LexicalHandler, and DeclHandler.

+ * + *

Application writers can extend this class when they need to + * implement only part of an interface; parser writers can + * instantiate this class to provide default handlers when the + * application has not supplied its own.

+ * + *

Note that the use of this class is optional.

+ * + * @see EntityResolver#EntityResolver + * @see DTDHandler#DTDHandler + * @see ContentHandler#ContentHandler + * @see ErrorHandler#ErrorHandler + * @see LexicalHandler#LexicalHandler + * @see DeclHandler#DeclHandler + */ + +class SAX2_EXPORT DefaultHandler : + + public EntityResolver, + public DTDHandler, + public ContentHandler, + public ErrorHandler, + public LexicalHandler, + public DeclHandler +{ +public: + /** @name Default handlers for the DocumentHandler interface */ + //@{ + /** + * Receive notification of character data inside an element. + * + *

By default, do nothing. Application writers may override this + * method to take specific actions for each chunk of character data + * (such as adding the data to a node or buffer, or printing it to + * a file).

+ * + * @param chars The characters. + * @param length The number of characters to use from the + * character array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#characters + */ + virtual void characters + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * Receive notification of the end of the document. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the beginning + * of a document (such as finalising a tree or closing an output + * file).

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#endDocument + */ + virtual void endDocument(); + + /** + * Receive notification of the end of an element. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the end of + * each element (such as finalising a tree node or writing + * output to a file).

+ * + * @param uri The URI of the associated namespace for this element + * @param localname The local part of the element name + * @param qname The QName of this element + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#endElement + */ + virtual void endElement + ( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname + ); + + /** + * Receive notification of ignorable whitespace in element content. + * + *

By default, do nothing. Application writers may override this + * method to take specific actions for each chunk of ignorable + * whitespace (such as adding data to a node or buffer, or printing + * it to a file).

+ * + * @param chars The whitespace characters. + * @param length The number of characters to use from the + * character array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#ignorableWhitespace + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * Receive notification of a processing instruction. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions for each + * processing instruction, such as setting status variables or + * invoking other methods.

+ * + * @param target The processing instruction target. + * @param data The processing instruction data, or null if + * none is supplied. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#processingInstruction + */ + virtual void processingInstruction + ( + const XMLCh* const target + , const XMLCh* const data + ); + + /** + * Reset the Document object on its reuse + * + * @see DocumentHandler#resetDocument + */ + virtual void resetDocument(); + //@} + + /** @name Default implementation of DocumentHandler interface */ + + //@{ + /** + * Receive a Locator object for document events. + * + *

By default, do nothing. Application writers may override this + * method in a subclass if they wish to store the locator for use + * with other document events.

+ * + * @param locator A locator for all SAX document events. + * @see DocumentHandler#setDocumentLocator + * @see Locator + */ + virtual void setDocumentLocator(const Locator* const locator); + + /** + * Receive notification of the beginning of the document. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the beginning + * of a document (such as allocating the root node of a tree or + * creating an output file).

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#startDocument + */ + virtual void startDocument(); + + /** + * Receive notification of the start of an element. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the start of + * each element (such as allocating a new tree node or writing + * output to a file).

+ * + * @param uri The URI of the associated namespace for this element + * @param localname the local part of the element name + * @param qname the QName of this element + * @param attrs The specified or defaulted attributes. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#startElement + */ + virtual void startElement + ( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname + , const Attributes& attrs + ); + + /** + * Receive notification of the start of an namespace prefix mapping. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the start of + * each namespace prefix mapping.

+ * + * @param prefix The namespace prefix used + * @param uri The namespace URI used. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#startPrefixMapping + */ + virtual void startPrefixMapping + ( + const XMLCh* const prefix, + const XMLCh* const uri + ) ; + + /** + * Receive notification of the end of an namespace prefix mapping. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to take specific actions at the end of + * each namespace prefix mapping.

+ * + * @param prefix The namespace prefix used + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see DocumentHandler#endPrefixMapping + */ + virtual void endPrefixMapping + ( + const XMLCh* const prefix + ) ; + + /** + * Receive notification of a skipped entity + * + *

The parser will invoke this method once for each entity + * skipped. All processors may skip external entities, + * depending on the values of the features:
+ * http://xml.org/sax/features/external-general-entities
+ * http://xml.org/sax/features/external-parameter-entities

+ * + *

Introduced with SAX2

+ * + * @param name The name of the skipped entity. If it is a parameter entity, + * the name will begin with %, and if it is the external DTD subset, + * it will be the string [dtd]. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void skippedEntity + ( + const XMLCh* const name + ) ; + + //@} + + /** @name Default implementation of the EntityResolver interface. */ + + //@{ + /** + * Resolve an external entity. + * + *

Always return null, so that the parser will use the system + * identifier provided in the XML document. This method implements + * the SAX default behaviour: application writers can override it + * in a subclass to do special translations such as catalog lookups + * or URI redirection.

+ * + * @param publicId The public identifier, or null if none is + * available. + * @param systemId The system identifier provided in the XML + * document. + * @return The new input source, or null to require the + * default behaviour. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see EntityResolver#resolveEntity + */ + virtual InputSource* resolveEntity + ( + const XMLCh* const publicId + , const XMLCh* const systemId + ); + + //@} + + /** @name Default implementation of the ErrorHandler interface */ + //@{ + /** + * Receive notification of a recoverable parser error. + * + *

The default implementation does nothing. Application writers + * may override this method in a subclass to take specific actions + * for each error, such as inserting the message in a log file or + * printing it to the console.

+ * + * @param exc The warning information encoded as an exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see ErrorHandler#warning + * @see SAXParseException#SAXParseException + */ + virtual void error(const SAXParseException& exc); + + /** + * Report a fatal XML parsing error. + * + *

The default implementation throws a SAXParseException. + * Application writers may override this method in a subclass if + * they need to take specific actions for each fatal error (such as + * collecting all of the errors into a single report): in any case, + * the application must stop all regular processing when this + * method is invoked, since the document is no longer reliable, and + * the parser may no longer report parsing events.

+ * + * @param exc The error information encoded as an exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see ErrorHandler#fatalError + * @see SAXParseException#SAXParseException + */ + virtual void fatalError(const SAXParseException& exc); + + /** + * Receive notification of a parser warning. + * + *

The default implementation does nothing. Application writers + * may override this method in a subclass to take specific actions + * for each warning, such as inserting the message in a log file or + * printing it to the console.

+ * + * @param exc The warning information encoded as an exception. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @see ErrorHandler#warning + * @see SAXParseException#SAXParseException + */ + virtual void warning(const SAXParseException& exc); + + /** + * Reset the Error handler object on its reuse + * + * @see ErrorHandler#resetErrors + */ + virtual void resetErrors(); + + //@} + + + /** @name Default implementation of DTDHandler interface. */ + //@{ + + /** + * Receive notification of a notation declaration. + * + *

By default, do nothing. Application writers may override this + * method in a subclass if they wish to keep track of the notations + * declared in a document.

+ * + * @param name The notation name. + * @param publicId The notation public identifier, or null if not + * available. + * @param systemId The notation system identifier. + * @see DTDHandler#notationDecl + */ + virtual void notationDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ); + + /** + * Reset the DTD object on its reuse + * + * @see DTDHandler#resetDocType + */ + virtual void resetDocType(); + + /** + * Receive notification of an unparsed entity declaration. + * + *

By default, do nothing. Application writers may override this + * method in a subclass to keep track of the unparsed entities + * declared in a document.

+ * + * @param name The entity name. + * @param publicId The entity public identifier, or null if not + * available. + * @param systemId The entity system identifier. + * @param notationName The name of the associated notation. + * @see DTDHandler#unparsedEntityDecl + */ + virtual void unparsedEntityDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + , const XMLCh* const notationName + ); + //@} + + + /** @name Default implementation of LexicalHandler interface. */ + + //@{ + /** + * Receive notification of comments. + * + *

The Parser will call this method to report each occurrence of + * a comment in the XML document.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void comment + ( + const XMLCh* const chars + , const XMLSize_t length + ); + + /** + * Receive notification of the end of a CDATA section. + * + *

The SAX parser will invoke this method at the end of + * each CDATA parsed.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endCDATA (); + + /** + * Receive notification of the end of the DTD declarations. + * + *

The SAX parser will invoke this method at the end of the + * DTD

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endDTD (); + + /** + * Receive notification of the end of an entity. + * + *

The SAX parser will invoke this method at the end of an + * entity

+ * + * @param name The name of the entity that is ending. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endEntity (const XMLCh* const name); + + /** + * Receive notification of the start of a CDATA section. + * + *

The SAX parser will invoke this method at the start of + * each CDATA parsed.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startCDATA (); + + /** + * Receive notification of the start of the DTD declarations. + * + *

The SAX parser will invoke this method at the start of the + * DTD

+ * + * @param name The document type name. + * @param publicId The declared public identifier for the external DTD subset, or null if none was declared. + * @param systemId The declared system identifier for the external DTD subset, or null if none was declared. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startDTD + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ); + + /** + * Receive notification of the start of an entity. + * + *

The SAX parser will invoke this method at the start of an + * entity

+ * + * @param name The name of the entity that is starting. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startEntity (const XMLCh* const name); + + //@} + + /** @name Default implementation of DeclHandler interface. */ + + //@{ + + /** + * Report an element type declaration. + * + *

The content model will consist of the string "EMPTY", the string + * "ANY", or a parenthesised group, optionally followed by an occurrence + * indicator. The model will be normalized so that all parameter entities + * are fully resolved and all whitespace is removed,and will include the + * enclosing parentheses. Other normalization (such as removing redundant + * parentheses or simplifying occurrence indicators) is at the discretion + * of the parser.

+ * + * @param name The element type name. + * @param model The content model as a normalized string. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void elementDecl + ( + const XMLCh* const name + , const XMLCh* const model + ); + + /** + * Report an attribute type declaration. + * + *

Only the effective (first) declaration for an attribute will + * be reported.

+ * + * @param eName The name of the associated element. + * @param aName The name of the attribute. + * @param type A string representing the attribute type. + * @param mode A string representing the attribute defaulting mode ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if none of these applies. + * @param value A string representing the attribute's default value, or null if there is none. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void attributeDecl + ( + const XMLCh* const eName + , const XMLCh* const aName + , const XMLCh* const type + , const XMLCh* const mode + , const XMLCh* const value + ); + + /** + * Report an internal entity declaration. + * + *

Only the effective (first) declaration for each entity will be + * reported. All parameter entities in the value will be expanded, but + * general entities will not.

+ * + * @param name The name of the entity. If it is a parameter entity, the name will begin with '%'. + * @param value The replacement text of the entity. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void internalEntityDecl + ( + const XMLCh* const name + , const XMLCh* const value + ); + + /** + * Report a parsed external entity declaration. + * + *

Only the effective (first) declaration for each entity will + * be reported.

+ * + * @param name The name of the entity. If it is a parameter entity, the name will begin with '%'. + * @param publicId The The declared public identifier of the entity, or null if none was declared. + * @param systemId The declared system identifier of the entity. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void externalEntityDecl + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ); + + //@} + + DefaultHandler() {}; + virtual ~DefaultHandler() {}; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DefaultHandler(const DefaultHandler&); + DefaultHandler& operator=(const DefaultHandler&); +}; + + +// --------------------------------------------------------------------------- +// HandlerBase: Inline default implementations +// --------------------------------------------------------------------------- +inline void DefaultHandler::characters(const XMLCh* const + ,const XMLSize_t) +{ +} + +inline void DefaultHandler::endDocument() +{ +} + +inline void DefaultHandler::endElement(const XMLCh* const + , const XMLCh* const + , const XMLCh* const) +{ +} + +inline void DefaultHandler::error(const SAXParseException&) +{ +} + +inline void DefaultHandler::fatalError(const SAXParseException& exc) +{ + throw exc; +} + +inline void +DefaultHandler::ignorableWhitespace( const XMLCh* const + , const XMLSize_t) +{ +} + +inline void DefaultHandler::notationDecl( const XMLCh* const + , const XMLCh* const + , const XMLCh* const) +{ +} + +inline void +DefaultHandler::processingInstruction( const XMLCh* const + , const XMLCh* const) +{ +} + +inline void DefaultHandler::resetErrors() +{ +} + +inline void DefaultHandler::resetDocument() +{ +} + +inline void DefaultHandler::resetDocType() +{ +} + +inline InputSource* +DefaultHandler::resolveEntity( const XMLCh* const + , const XMLCh* const) +{ + return 0; +} + +inline void +DefaultHandler::unparsedEntityDecl(const XMLCh* const + , const XMLCh* const + , const XMLCh* const + , const XMLCh* const) +{ +} + +inline void DefaultHandler::setDocumentLocator(const Locator* const) +{ +} + +inline void DefaultHandler::startDocument() +{ +} + +inline void +DefaultHandler::startElement( const XMLCh* const + , const XMLCh* const + , const XMLCh* const + , const Attributes& +) +{ +} + +inline void DefaultHandler::warning(const SAXParseException&) +{ +} + +inline void DefaultHandler::startPrefixMapping ( const XMLCh* const + ,const XMLCh* const) +{ +} + +inline void DefaultHandler::endPrefixMapping ( const XMLCh* const) +{ +} + +inline void DefaultHandler::skippedEntity ( const XMLCh* const) +{ +} + +inline void DefaultHandler::comment( const XMLCh* const + , const XMLSize_t) +{ +} + +inline void DefaultHandler::endCDATA () +{ +} + +inline void DefaultHandler::endDTD () +{ +} + +inline void DefaultHandler::endEntity (const XMLCh* const) +{ +} + +inline void DefaultHandler::startCDATA () +{ +} + +inline void DefaultHandler::startDTD( const XMLCh* const + , const XMLCh* const + , const XMLCh* const) +{ +} + +inline void DefaultHandler::startEntity (const XMLCh* const) +{ +} + +inline void DefaultHandler::attributeDecl(const XMLCh* const, + const XMLCh* const, + const XMLCh* const, + const XMLCh* const, + const XMLCh* const) +{ +} + +inline void DefaultHandler::elementDecl(const XMLCh* const, + const XMLCh* const) +{ +} + +inline void DefaultHandler::externalEntityDecl(const XMLCh* const, + const XMLCh* const, + const XMLCh* const) +{ +} + +inline void DefaultHandler::internalEntityDecl(const XMLCh* const, + const XMLCh* const) +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif // ! DEFAULTHANDLER_HPP diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax2/LexicalHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax2/LexicalHandler.hpp new file mode 100644 index 000000000000..e6ac3e477633 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax2/LexicalHandler.hpp @@ -0,0 +1,172 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_LEXICALHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_LEXICALHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Receive notification of lexical events. + * + *

This is an extension handler for that provides lexical information + * about an XML document. It does not provide information about document + * content. For those events, an application must register an instance of + * a ContentHandler.

+ * + *

The order of events in this interface is very important, and + * mirrors the order of information in the document itself. For + * example, startDTD() and endDTD() events will occur before the + * first element in the document.

+ * + * @see SAX2XMLReader#setLexicalHandler + * @see SAX2XMLReader#setContentHandler + */ + +class SAX2_EXPORT LexicalHandler +{ +public: + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + LexicalHandler() + { + } + + /** Destructor */ + virtual ~LexicalHandler() + { + } + //@} + + /** @name The virtual document handler interface */ + + //@{ + /** + * Receive notification of comments. + * + *

The Parser will call this method to report each occurrence of + * a comment in the XML document.

+ * + *

The application must not attempt to read from the array + * outside of the specified range.

+ * + * @param chars The characters from the XML document. + * @param length The number of characters to read from the array. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void comment + ( + const XMLCh* const chars + , const XMLSize_t length + ) = 0; + + /** + * Receive notification of the end of a CDATA section. + * + *

The SAX parser will invoke this method at the end of + * each CDATA parsed.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endCDATA () = 0; + + /** + * Receive notification of the end of the DTD declarations. + * + *

The SAX parser will invoke this method at the end of the + * DTD

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endDTD () = 0; + + /** + * Receive notification of the end of an entity. + * + *

The SAX parser will invoke this method at the end of an + * entity

+ * + * @param name The name of the entity that is ending. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void endEntity (const XMLCh* const name) = 0; + + /** + * Receive notification of the start of a CDATA section. + * + *

The SAX parser will invoke this method at the start of + * each CDATA parsed.

+ * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startCDATA () = 0; + + /** + * Receive notification of the start of the DTD declarations. + * + *

The SAX parser will invoke this method at the start of the + * DTD

+ * + * @param name The document type name. + * @param publicId The declared public identifier for the external DTD subset, or null if none was declared. + * @param systemId The declared system identifier for the external DTD subset, or null if none was declared. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startDTD + ( + const XMLCh* const name + , const XMLCh* const publicId + , const XMLCh* const systemId + ) = 0; + + /** + * Receive notification of the start of an entity. + * + *

The SAX parser will invoke this method at the start of an + * entity

+ * + * @param name The name of the entity that is starting. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + */ + virtual void startEntity (const XMLCh* const name) = 0; + + //@} +private : + /* Unimplemented Constructors and operators */ + /* Copy constructor */ + LexicalHandler(const LexicalHandler&); + /** Assignment operator */ + LexicalHandler& operator=(const LexicalHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax2/SAX2XMLFilter.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax2/SAX2XMLFilter.hpp new file mode 100644 index 000000000000..1ea221297d1d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax2/SAX2XMLFilter.hpp @@ -0,0 +1,82 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SAX2XMLFILTER_HPP) +#define XERCESC_INCLUDE_GUARD_SAX2XMLFILTER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class SAX2_EXPORT SAX2XMLFilter : public SAX2XMLReader +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** The default constructor */ + SAX2XMLFilter() + { + } + /** The destructor */ + virtual ~SAX2XMLFilter() + { + } + //@} + + //----------------------------------------------------------------------- + // The XMLFilter interface + //----------------------------------------------------------------------- + /** @name Implementation of SAX 2.0 XMLFilter interface's. */ + //@{ + + /** + * This method returns the parent XMLReader object. + * + * @return A pointer to the parent XMLReader object. + */ + virtual SAX2XMLReader* getParent() const = 0 ; + + /** + * Sets the parent XMLReader object; parse requests will be forwarded to this + * object, and callback notifications coming from it will be postprocessed + * + * @param parent The new XMLReader parent. + * @see SAX2XMLReader#SAX2XMLReader + */ + virtual void setParent(SAX2XMLReader* parent) = 0; + + //@} + +private : + /* The copy constructor, you cannot call this directly */ + SAX2XMLFilter(const SAX2XMLFilter&); + + /* The assignment operator, you cannot call this directly */ + SAX2XMLFilter& operator=(const SAX2XMLFilter&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax2/SAX2XMLReader.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax2/SAX2XMLReader.hpp new file mode 100644 index 000000000000..b50fadb27251 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax2/SAX2XMLReader.hpp @@ -0,0 +1,896 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SAX2XMLREADER_HPP) +#define XERCESC_INCLUDE_GUARD_SAX2XMLREADER_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentHandler ; +class DTDHandler; +class EntityResolver; +class ErrorHandler; +class InputSource; +class LexicalHandler; +class DeclHandler; +class XMLDocumentHandler; + +class SAX2_EXPORT SAX2XMLReader +{ +public: + // ----------------------------------------------------------------------- + // Class types + // ----------------------------------------------------------------------- + /** @name Public constants */ + //@{ + + /** ValScheme enum used in setValidationScheme + * Val_Never: Do not report validation errors. + * Val_Always: The parser will always report validation errors. + * Val_Auto: The parser will report validation errors only if a grammar is specified. + * + * The schemes map to these feature values: + * Val_Never: + * parser->setFeature(XMLUni::fgSAX2CoreValidation, false); + * + * Val_Always: + * parser->setFeature(XMLUni::fgSAX2CoreValidation, true); + * parser->setFeature(XMLUni::fgXercesDynamic, false); + * + * Val_Auto: + * parser->setFeature(XMLUni::fgSAX2CoreValidation, true); + * parser->setFeature(XMLUni::fgXercesDynamic, true); + * + * @see #setFeature + */ + enum ValSchemes + { + Val_Never + , Val_Always + , Val_Auto + }; + //@} + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + /** The default constructor */ + SAX2XMLReader() + { + } + /** The destructor */ + virtual ~SAX2XMLReader() + { + } + //@} + + //----------------------------------------------------------------------- + // The XMLReader interface + //----------------------------------------------------------------------- + /** @name Implementation of SAX 2.0 XMLReader interface's. */ + //@{ + + /** + * This method returns the installed content handler. + * + * @return A pointer to the installed content handler object. + */ + virtual ContentHandler* getContentHandler() const = 0 ; + + /** + * This method returns the installed DTD handler. + * + * @return A pointer to the installed DTD handler object. + */ + virtual DTDHandler* getDTDHandler() const = 0; + + /** + * This method returns the installed entity resolver. + * + * @return A pointer to the installed entity resolver object. + */ + virtual EntityResolver* getEntityResolver() const = 0 ; + + /** + * This method returns the installed error handler. + * + * @return A pointer to the installed error handler object. + */ + virtual ErrorHandler* getErrorHandler() const = 0 ; + + /** + * Query the current state of any feature in a SAX2 XMLReader. + * + * @param name The unique identifier (URI) of the feature being set. + * @return The current state of the feature. + * @exception SAXNotRecognizedException If the requested feature is not known. + */ + virtual bool getFeature(const XMLCh* const name) const = 0; + + /** + * Query the current value of a property in a SAX2 XMLReader. + * + * The parser owns the returned pointer. The memory allocated for + * the returned pointer will be destroyed when the parser is deleted. + * + * To ensure accessibility of the returned information after the parser + * is deleted, callers need to copy and store the returned information + * somewhere else; otherwise you may get unexpected result. Since the returned + * pointer is a generic void pointer, see the SAX2 Programming Guide to learn + * exactly what type of property value each property returns for replication. + * + * @param name The unique identifier (URI) of the property being set. + * @return The current value of the property. The pointer spans the same + * life-time as the parser. A null pointer is returned if nothing + * was specified externally. + * @exception SAXNotRecognizedException If the requested property is not known. + */ + virtual void* getProperty(const XMLCh* const name) const = 0 ; + + /** + * Allow an application to register a document event handler. + * + * If the application does not register a document handler, all + * document events reported by the SAX parser will be silently + * ignored (this is the default behaviour implemented by + * HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The document handler. + * @see ContentHandler#ContentHandler + * @see HandlerBase#HandlerBase + */ + virtual void setContentHandler(ContentHandler* const handler) = 0; + + /** + * Allow an application to register a DTD event handler. + * + * If the application does not register a DTD handler, all DTD + * events reported by the SAX parser will be silently ignored (this + * is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the middle + * of a parse, and the SAX parser must begin using the new handler + * immediately. + * + * @param handler The DTD handler. + * @see DTDHandler#DTDHandler + * @see HandlerBase#HandlerBase + */ + virtual void setDTDHandler(DTDHandler* const handler) = 0; + + /** + * Allow an application to register a custom entity resolver. + * + * If the application does not register an entity resolver, the + * SAX parser will resolve system identifiers and open connections + * to entities itself (this is the default behaviour implemented in + * DefaultHandler). + * + * Applications may register a new or different entity resolver + * in the middle of a parse, and the SAX parser must begin using + * the new resolver immediately. + * + * @param resolver The object for resolving entities. + * @see EntityResolver#EntityResolver + * @see DefaultHandler#DefaultHandler + */ + virtual void setEntityResolver(EntityResolver* const resolver) = 0; + + /** + * Allow an application to register an error event handler. + * + * If the application does not register an error event handler, + * all error events reported by the SAX parser will be silently + * ignored, except for fatalError, which will throw a SAXException + * (this is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The error handler. + * @see ErrorHandler#ErrorHandler + * @see SAXException#SAXException + * @see HandlerBase#HandlerBase + */ + virtual void setErrorHandler(ErrorHandler* const handler) = 0; + + /** + * Set the state of any feature in a SAX2 XMLReader. + * Supported features in SAX2 for xerces-c are: + *
(See the SAX2 Programming Guide for detail description). + * + *
http://xml.org/sax/features/validation (default: true) + *
http://xml.org/sax/features/namespaces (default: true) + *
http://xml.org/sax/features/namespace-prefixes (default: false) + *
http://apache.org/xml/features/validation/dynamic (default: false) + *
http://apache.org/xml/features/validation/reuse-grammar (default: false) + *
http://apache.org/xml/features/validation/schema (default: true) + *
http://apache.org/xml/features/validation/schema-full-checking (default: false) + *
http://apache.org/xml/features/validating/load-schema (default: true) + *
http://apache.org/xml/features/nonvalidating/load-external-dtd (default: true) + *
http://apache.org/xml/features/continue-after-fatal-error (default: false) + *
http://apache.org/xml/features/validation-error-as-fatal (default: false) + * + * @param name The unique identifier (URI) of the feature. + * @param value The requested state of the feature (true or false). + * @exception SAXNotRecognizedException If the requested feature is not known. + * @exception SAXNotSupportedException Feature modification is not supported during parse + * + */ + virtual void setFeature(const XMLCh* const name, const bool value) = 0; + + /** + * Set the value of any property in a SAX2 XMLReader. + * Supported properties in SAX2 for xerces-c are: + *
(See the SAX2 Programming Guide for detail description). + * + *
http://apache.org/xml/properties/schema/external-schemaLocation + *
http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation + *
http://apache.org/xml/properties/security-manager + *
http://apache.org/xml/properties/low-water-mark + *
http://apache.org/xml/properties/scannerName + * + * It takes a void pointer as the property value. Application is required to initialize this void + * pointer to a correct type. See the SAX2 Programming Guide + * to learn exactly what type of property value each property expects for processing. + * Passing a void pointer that was initialized with a wrong type will lead to unexpected result. + * If the same property is set more than once, the last one takes effect. + * + * @param name The unique identifier (URI) of the property being set. + * @param value The requested value for the property. See + * the SAX2 Programming Guide to learn + * exactly what type of property value each property expects for processing. + * Passing a void pointer that was initialized with a wrong type will lead + * to unexpected result. + * @exception SAXNotRecognizedException If the requested property is not known. + * @exception SAXNotSupportedException Property modification is not supported during parse + */ + virtual void setProperty(const XMLCh* const name, void* value) = 0 ; + + /** + * Parse an XML document. + * + * The application can use this method to instruct the SAX parser + * to begin parsing an XML document from any valid input + * source (a character stream, a byte stream, or a URI). + * + * Applications may not invoke this method while a parse is in + * progress (they should create a new Parser instead for each + * additional XML document). Once a parse is complete, an + * application may reuse the same Parser object, possibly with a + * different input source. + * + * @param source The input source for the top-level of the + * XML document. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see InputSource#InputSource + * @see #setEntityResolver + * @see #setDTDHandler + * @see #setContentHandler + * @see #setErrorHandler + */ + virtual void parse + ( + const InputSource& source + ) = 0; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(const InputSource&) + */ + virtual void parse + ( + const XMLCh* const systemId + ) = 0; + + /** + * Parse an XML document from a system identifier (URI). + * + * This method is a shortcut for the common case of reading a + * document from a system identifier. It is the exact equivalent + * of the following: + * + * parse(new URLInputSource(systemId)); + * + * If the system identifier is a URL, it must be fully resolved + * by the application before it is passed to the parser. + * + * @param systemId The system identifier (URI). + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @see #parse(const InputSource&) + */ + virtual void parse + ( + const char* const systemId + ) = 0; + + //@} + + // ----------------------------------------------------------------------- + // SAX 2.0-ext + // ----------------------------------------------------------------------- + /** @name SAX 2.0-ext */ + //@{ + /** + * This method returns the installed declaration handler. + * + * @return A pointer to the installed declaration handler object. + */ + virtual DeclHandler* getDeclarationHandler() const = 0 ; + + /** + * This method returns the installed lexical handler. + * + * @return A pointer to the installed lexical handler object. + */ + virtual LexicalHandler* getLexicalHandler() const = 0 ; + + /** + * Allow an application to register a declaration event handler. + * + * If the application does not register a declaration handler, + * all events reported by the SAX parser will be silently + * ignored. (this is the default behaviour implemented by DefaultHandler). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The DTD declaration handler. + * @see DeclHandler#DeclHandler + * @see SAXException#SAXException + * @see DefaultHandler#DefaultHandler + */ + virtual void setDeclarationHandler(DeclHandler* const handler) = 0; + + /** + * Allow an application to register a lexical event handler. + * + * If the application does not register a lexical handler, + * all events reported by the SAX parser will be silently + * ignored. (this is the default behaviour implemented by HandlerBase). + * + * Applications may register a new or different handler in the + * middle of a parse, and the SAX parser must begin using the new + * handler immediately. + * + * @param handler The error handler. + * @see LexicalHandler#LexicalHandler + * @see SAXException#SAXException + * @see HandlerBase#HandlerBase + */ + virtual void setLexicalHandler(LexicalHandler* const handler) = 0; + + //@} + + // ----------------------------------------------------------------------- + // Getter Methods + // ----------------------------------------------------------------------- + /** @name Getter Methods (Xerces-C specific) */ + //@{ + /** + * This method is used to get the current validator. + * + * SAX2XMLReader assumes responsibility for the validator. It will be + * deleted when the XMLReader is destroyed. + * + * @return A pointer to the validator. An application should not deleted + * the object returned. + * + */ + virtual XMLValidator* getValidator() const = 0; + + /** Get error count from the last parse operation. + * + * This method returns the error count from the last parse + * operation. Note that this count is actually stored in the + * scanner, so this method simply returns what the + * scanner reports. + * + * @return number of errors encountered during the latest + * parse operation. + */ + virtual XMLSize_t getErrorCount() const = 0 ; + + /** + * This method returns the state of the parser's + * exit-on-First-Fatal-Error flag. + * + *

Or you can query the feature "http://apache.org/xml/features/continue-after-fatal-error" + * which indicates the opposite state.

+ * + * @return true, if the parser is currently configured to + * exit on the first fatal error, false otherwise. + * + * @see #setExitOnFirstFatalError + * @see #getFeature + */ + virtual bool getExitOnFirstFatalError() const = 0; + + /** + * This method returns the state of the parser's + * validation-constraint-fatal flag. + * + *

Or you can query the feature "http://apache.org/xml/features/validation-error-as-fatal" + * which means the same thing. + * + * @return true, if the parser is currently configured to + * set validation constraint errors as fatal, false + * otherwise. + * + * @see #setValidationConstraintFatal + * @see #getFeature + */ + virtual bool getValidationConstraintFatal() const = 0; + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param nameSpaceKey Namespace key + * @return Grammar associated with the Namespace key. + */ + virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey) = 0; + + /** + * Retrieve the grammar where the root element is declared. + * + * @return Grammar where root element declared + */ + virtual Grammar* getRootGrammar() = 0; + + /** + * Returns the string corresponding to a URI id from the URI string pool. + * + * @param uriId id of the string in the URI string pool. + * @return URI string corresponding to the URI id. + */ + virtual const XMLCh* getURIText(unsigned int uriId) const = 0; + + /** + * Returns the current src offset within the input source. + * To be used only while parsing is in progress. + * + * @return offset within the input source + */ + virtual XMLFilePos getSrcOffset() const = 0; + + //@} + + // ----------------------------------------------------------------------- + // Setter Methods + // ----------------------------------------------------------------------- + /** @name Setter Methods (Xerces-C specific) */ + //@{ + /** + * This method is used to set a validator. + * + * SAX2XMLReader assumes responsibility for the validator. It will be + * deleted when the XMLReader is destroyed. + * + * @param valueToAdopt A pointer to the validator that the reader should use. + * + */ + virtual void setValidator(XMLValidator* valueToAdopt) = 0; + + /** + * This method allows users to set the parser's behaviour when it + * encounters the first fatal error. If set to true, the parser + * will exit at the first fatal error. If false, then it will + * report the error and continue processing. + * + *

The default value is 'true' and the parser exits on the + * first fatal error.

+ * + *

Or you can set the feature "http://apache.org/xml/features/continue-after-fatal-error" + * which has the opposite behaviour.

+ * + *

If both the feature above and this function are used, the latter takes effect.

+ * + * @param newState The value specifying whether the parser should + * continue or exit when it encounters the first + * fatal error. + * + * @see #getExitOnFirstFatalError + * @see #setFeature + */ + virtual void setExitOnFirstFatalError(const bool newState) = 0; + + /** + * This method allows users to set the parser's behaviour when it + * encounters a validation constraint error. If set to true, and the + * the parser will treat validation error as fatal and will exit depends on the + * state of "getExitOnFirstFatalError". If false, then it will + * report the error and continue processing. + * + * Note: setting this true does not mean the validation error will be printed with + * the word "Fatal Error". It is still printed as "Error", but the parser + * will exit if "setExitOnFirstFatalError" is set to true. + * + *

The default value is 'false'.

+ * + *

Or you can set the feature "http://apache.org/xml/features/validation-error-as-fatal" + * which means the same thing.

+ * + *

If both the feature above and this function are used, the latter takes effect.

+ * + * @param newState If true, the parser will exit if "setExitOnFirstFatalError" + * is set to true. + * + * @see #getValidationConstraintFatal + * @see #setExitOnFirstFatalError + * @see #setFeature + */ + virtual void setValidationConstraintFatal(const bool newState) = 0; + //@} + + + // ----------------------------------------------------------------------- + // Progressive scan methods + // ----------------------------------------------------------------------- + + /** @name Progressive scan methods */ + //@{ + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a Unicode string representing the path + * to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could parse the + * prolog (which means the token will not be valid.) + * + * @see #parseNext + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseFirst + ( + const XMLCh* const systemId + , XMLPScanToken& toFill + ) = 0; + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param systemId A pointer to a regular native string representing + * the path to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseFirst + ( + const char* const systemId + , XMLPScanToken& toFill + ) = 0; + + /** Begin a progressive parse operation + * + * This method is used to start a progressive parse on a XML file. + * To continue parsing, subsequent calls must be to the parseNext + * method. + * + * It scans through the prolog and returns a token to be used on + * subsequent scanNext() calls. If the return value is true, then the + * token is legal and ready for further use. If it returns false, then + * the scan of the prolog failed and the token is not going to work on + * subsequent scanNext() calls. + * + * @param source A const reference to the InputSource object which + * points to the XML file to be parsed. + * @param toFill A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the prolog. It indicates the + * user can go ahead with parsing the rest of the file. It + * returns 'false' to indicate that the parser could not parse + * the prolog. + * + * @see #parseNext + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + */ + virtual bool parseFirst + ( + const InputSource& source + , XMLPScanToken& toFill + ) = 0; + + /** Continue a progressive parse operation + * + * This method is used to continue with progressive parsing of + * XML files started by a call to 'parseFirst' method. + * + * It parses the XML file and stops as soon as it comes across + * a XML token (as defined in the XML specification). Relevant + * callback handlers are invoked as required by the SAX + * specification. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + * + * @return 'true', if successful in parsing the next XML token. + * It indicates the user can go ahead with parsing the rest + * of the file. It returns 'false' to indicate that the parser + * could not find next token as per the XML specification + * production rule. + * + * @see #parseFirst(XMLCh*,...) + * @see #parseFirst(char*,...) + * @see #parseFirst(InputSource&,...) + */ + virtual bool parseNext(XMLPScanToken& token) = 0; + + /** Reset the parser after a progressive parse + * + * If a progressive parse loop exits before the end of the document + * is reached, the parser has no way of knowing this. So it will leave + * open any files or sockets or memory buffers that were in use at + * the time that the parse loop exited. + * + * The next parse operation will cause these open files and such to + * be closed, but the next parse operation might occur at some unknown + * future point. To avoid this problem, you should reset the parser if + * you exit the loop early. + * + * If you exited because of an error, then this cleanup will be done + * for you. Its only when you exit the file prematurely of your own + * accord, because you've found what you wanted in the file most + * likely. + * + * @param token A token maintaing state information to maintain + * internal consistency between invocation of 'parseNext' + * calls. + */ + virtual void parseReset(XMLPScanToken& token) = 0; + + //@} + + // ----------------------------------------------------------------------- + // Grammar preparsing interface + // ----------------------------------------------------------------------- + + /** @name Grammar preparsing interface's. */ + //@{ + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via an input source + * object. + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the SAX InputSource parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param source A const reference to the SAX InputSource object which + * points to the schema grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * + * @see InputSource#InputSource + */ + virtual Grammar* loadGrammar(const InputSource& source, + const Grammar::GrammarType grammarType, + const bool toCache = false) = 0; + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML grammar file to be + * preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const XMLCh* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false) = 0; + + /** + * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL + * + * This method invokes the preparsing process on a schema grammar XML + * file specified by the file path parameter. If the 'toCache' flag + * is enabled, the parser will cache the grammars for re-use. If a grammar + * key is found in the pool, no caching of any grammar will take place. + * + * + * @param systemId A const char pointer to a native string which contains + * the path to the XML grammar file to be preparsed. + * @param grammarType The grammar type (Schema or DTD). + * @param toCache If true, we cache the preparsed grammar, + * otherwise, no caching. Default is false. + * @return The preparsed schema grammar object (SchemaGrammar or + * DTDGrammar). That grammar object is owned by the parser. + * + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + */ + virtual Grammar* loadGrammar(const char* const systemId, + const Grammar::GrammarType grammarType, + const bool toCache = false) = 0; + + /** + * Clear the cached grammar pool + */ + virtual void resetCachedGrammarPool() = 0; + + /** Set maximum input buffer size + * + * This method allows users to limit the size of buffers used in parsing + * XML character data. The effect of setting this size is to limit the + * size of a ContentHandler::characters() call. + * + * The parser's default input buffer size is 1 megabyte. + * + * @param bufferSize The maximum input buffer size + */ + virtual void setInputBufferSize(const XMLSize_t bufferSize); + + //@} + + + // ----------------------------------------------------------------------- + // Advanced document handler list maintenance methods + // ----------------------------------------------------------------------- + + /** @name Advanced document handler list maintenance methods */ + //@{ + /** + * This method installs the specified 'advanced' document callback + * handler, thereby allowing the user to customize the processing, + * if they choose to do so. Any number of advanced callback handlers + * maybe installed. + * + *

The methods in the advanced callback interface represent + * Xerces-C extensions. There is no specification for this interface.

+ * + * @param toInstall A pointer to the users advanced callback handler. + * + * @see #removeAdvDocHandler + */ + virtual void installAdvDocHandler(XMLDocumentHandler* const toInstall) = 0; + + /** + * This method removes the 'advanced' document handler callback from + * the underlying parser scanner. If no handler is installed, advanced + * callbacks are not invoked by the scanner. + * @param toRemove A pointer to the advanced callback handler which + * should be removed. + * + * @see #installAdvDocHandler + */ + virtual bool removeAdvDocHandler(XMLDocumentHandler* const toRemove) = 0; + //@} + +private : + /* The copy constructor, you cannot call this directly */ + SAX2XMLReader(const SAX2XMLReader&); + + /* The assignment operator, you cannot call this directly */ + SAX2XMLReader& operator=(const SAX2XMLReader&); + +}; + +inline void SAX2XMLReader::setInputBufferSize(const XMLSize_t /*bufferSize*/) +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/sax2/XMLReaderFactory.hpp b/src/libs/xerces-c/msvc/include/xercesc/sax2/XMLReaderFactory.hpp new file mode 100644 index 000000000000..a63bcacee066 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/sax2/XMLReaderFactory.hpp @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLREADERFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_XMLREADERFACTORY_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class MemoryManager; +class XMLGrammarPool; + +/** + * Creates a SAX2 parser (SAX2XMLReader). + * + *

Note: The parser object returned by XMLReaderFactory is owned by the + * calling users, and it's the responsibility of the users to delete that + * parser object, once they no longer need it.

+ * + * @see SAX2XMLReader#SAX2XMLReader + */ +class SAX2_EXPORT XMLReaderFactory +{ +protected: // really should be private, but that causes compiler warnings. + XMLReaderFactory() ; + ~XMLReaderFactory() ; + +public: + static SAX2XMLReader * createXMLReader( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , XMLGrammarPool* const gramPool = 0 + ) ; + static SAX2XMLReader * createXMLReader(const XMLCh* className) ; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLReaderFactory(const XMLReaderFactory&); + XMLReaderFactory& operator=(const XMLReaderFactory&); +}; + +inline SAX2XMLReader * XMLReaderFactory::createXMLReader(const XMLCh *) +{ + throw SAXNotSupportedException(); + // unimplemented + return 0; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp new file mode 100644 index 000000000000..4fc2e388d524 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/ArrayIndexOutOfBoundsException.hpp @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ARRAYINDEXOUTOFBOUNDSEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_ARRAYINDEXOUTOFBOUNDSEXCEPTION_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(ArrayIndexOutOfBoundsException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/Base64.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/Base64.hpp new file mode 100644 index 000000000000..4104de724230 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/Base64.hpp @@ -0,0 +1,266 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BASE64_HPP) +#define XERCESC_INCLUDE_GUARD_BASE64_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides encode/decode for RFC 2045 Base64 as +// defined by RFC 2045, N. Freed and N. Borenstein. +// RFC 2045: Multipurpose Internet Mail Extensions (MIME) +// Part One: Format of Internet Message Bodies. Reference +// 1996 Available at: http://www.ietf.org/rfc/rfc2045.txt +// This class is used by XML Schema binary format validation +// +// +class XMLUTIL_EXPORT Base64 +{ +public : + + enum Conformance + { + Conf_RFC2045 + , Conf_Schema + }; + + //@{ + + /** + * Encodes octets into Base64 data + * + * NOTE: The returned buffer is dynamically allocated and is the + * responsibility of the caller to delete it when not longer needed. + * Use the memory manager to release the returned buffer or + * operator delete() if none was provided. + * + * @param inputData Binary data in XMLByte stream. + * @param inputLength Length of the XMLByte stream. + * @param outputLength Length of the encoded Base64 byte stream. + * @param memMgr client provided memory manager + * @return Encoded Base64 data in XMLByte stream, + * or NULL if input data can not be encoded. + */ + static XMLByte* encode(const XMLByte* const inputData + , const XMLSize_t inputLength + , XMLSize_t* outputLength + , MemoryManager* const memMgr = 0); + + /** + * Decodes Base64 data into octets + * + * NOTE: The returned buffer is dynamically allocated and is the + * responsibility of the caller to delete it when not longer needed. + * Use the memory manager to release the returned buffer or + * operator delete() if none was provided. + * + * @param inputData Base64 data in XMLByte stream. + * @param decodedLength Length of decoded XMLByte stream. + * @param memMgr client provided memory manager + * @param conform conformance specified: if the input data conforms to the + * RFC 2045 it is allowed to have any number of whitespace + * characters inside; if it conforms to the XMLSchema specs, + * it is allowed to have at most one whitespace character + * between the quartets + * @return Decoded binary data in XMLByte stream, + * or NULL if input data can not be decoded. + */ + static XMLByte* decode( + const XMLByte* const inputData + , XMLSize_t* decodedLength + , MemoryManager* const memMgr = 0 + , Conformance conform = Conf_RFC2045 + ); + + /** + * Decodes Base64 data into octets + * + * NOTE: The returned buffer is dynamically allocated and is the + * responsibility of the caller to delete it when not longer needed. + * Use the memory manager to release the returned buffer or + * operator delete() if none was provided. + * + * @param inputData Base64 data in XMLCh stream. + * @param decodedLength Length of decoded XMLByte stream. + * @param memMgr client provided memory manager + * @param conform conformance specified: if the input data conforms to the + * RFC 2045 it is allowed to have any number of whitespace + * characters inside; if it conforms to the XMLSchema specs, + * it is allowed to have at most one whitespace character + * between the quartets + * @return Decoded binary data in XMLByte stream, + * or NULL if input data can not be decoded. + */ + static XMLByte* decodeToXMLByte( + const XMLCh* const inputData + , XMLSize_t* decodedLength + , MemoryManager* const memMgr = 0 + , Conformance conform = Conf_RFC2045 + ); + /** + * Get data length + * + * Returns length of decoded data given an array + * containing encoded data. + * + * @param inputData Base64 data in XMLCh stream. + * @param memMgr client provided memory manager + * @param conform conformance specified + * @return Length of decoded data, + * or -1 if input data can not be decoded. + */ + static int getDataLength( + const XMLCh* const inputData + , MemoryManager* const memMgr = 0 + , Conformance conform = Conf_RFC2045 + ); + + //@} + + /** + * get canonical representation + * + * Caller is responsible for the proper deallocation + * of the string returned. + * + * @param inputData A string containing the Base64 + * @param memMgr client provided memory manager + * @param conform conformance specified + * + * return: the canonical representation of the Base64 + * if it is a valid Base64 + * 0 otherwise + */ + + static XMLCh* getCanonicalRepresentation + ( + const XMLCh* const inputData + , MemoryManager* const memMgr = 0 + , Conformance conform = Conf_RFC2045 + ); + +private : + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + + static XMLByte* decode( + const XMLByte* const inputData + , XMLSize_t* outputLength + , XMLByte*& canRepData + , MemoryManager* const memMgr = 0 + , Conformance conform = Conf_RFC2045 + ); + + static bool isData(const XMLByte& octet); + static bool isPad(const XMLByte& octet); + + static XMLByte set1stOctet(const XMLByte&, const XMLByte&); + static XMLByte set2ndOctet(const XMLByte&, const XMLByte&); + static XMLByte set3rdOctet(const XMLByte&, const XMLByte&); + + static void split1stOctet(const XMLByte&, XMLByte&, XMLByte&); + static void split2ndOctet(const XMLByte&, XMLByte&, XMLByte&); + static void split3rdOctet(const XMLByte&, XMLByte&, XMLByte&); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Base64(); + Base64(const Base64&); + + // ----------------------------------------------------------------------- + // Private data members + // + // base64Alphabet + // The Base64 alphabet (see RFC 2045). + // + // base64Padding + // Padding character (see RFC 2045). + // + // base64Inverse + // Table used in decoding base64. + // + // isInitialized + // Set once base64Inverse is initialized. + // + // quadsPerLine + // Number of quadruplets per one line. The encoded output + // stream must be represented in lines of no more + // than 19 quadruplets each. + // + // ----------------------------------------------------------------------- + + static const XMLByte base64Alphabet[]; + static const XMLByte base64Padding; + + static const XMLByte base64Inverse[]; + + static const unsigned int quadsPerLine; +}; + +// ----------------------------------------------------------------------- +// Helper methods +// ----------------------------------------------------------------------- +inline bool Base64::isPad(const XMLByte& octet) +{ + return ( octet == base64Padding ); +} + +inline XMLByte Base64::set1stOctet(const XMLByte& b1, const XMLByte& b2) +{ + return (( b1 << 2 ) | ( b2 >> 4 )); +} + +inline XMLByte Base64::set2ndOctet(const XMLByte& b2, const XMLByte& b3) +{ + return (( b2 << 4 ) | ( b3 >> 2 )); +} + +inline XMLByte Base64::set3rdOctet(const XMLByte& b3, const XMLByte& b4) +{ + return (( b3 << 6 ) | b4 ); +} + +inline void Base64::split1stOctet(const XMLByte& ch, XMLByte& b1, XMLByte& b2) { + b1 = ch >> 2; + b2 = ( ch & 0x3 ) << 4; +} + +inline void Base64::split2ndOctet(const XMLByte& ch, XMLByte& b2, XMLByte& b3) { + b2 |= ch >> 4; // combine with previous value + b3 = ( ch & 0xf ) << 2; +} + +inline void Base64::split3rdOctet(const XMLByte& ch, XMLByte& b3, XMLByte& b4) { + b3 |= ch >> 6; // combine with previous value + b4 = ( ch & 0x3f ); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/BaseRefVectorOf.c b/src/libs/xerces-c/msvc/include/xercesc/util/BaseRefVectorOf.c new file mode 100644 index 000000000000..31e03bff99bc --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/BaseRefVectorOf.c @@ -0,0 +1,344 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// BaseRefVectorOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +BaseRefVectorOf::BaseRefVectorOf( const XMLSize_t maxElems + , const bool adoptElems + , MemoryManager* const manager) : + + fAdoptedElems(adoptElems) + , fCurCount(0) + , fMaxCount(maxElems) + , fElemList(0) + , fMemoryManager(manager) +{ + // Allocate and initialize the array + fElemList = (TElem**) fMemoryManager->allocate(maxElems * sizeof(TElem*));//new TElem*[maxElems]; + for (XMLSize_t index = 0; index < maxElems; index++) + fElemList[index] = 0; +} + + +//implemented so code will link +template BaseRefVectorOf::~BaseRefVectorOf() +{ +} + + +// --------------------------------------------------------------------------- +// BaseRefVectorOf: Element management +// --------------------------------------------------------------------------- +template void BaseRefVectorOf::addElement(TElem* const toAdd) +{ + ensureExtraCapacity(1); + fElemList[fCurCount] = toAdd; + fCurCount++; +} + + +template void +BaseRefVectorOf::setElementAt(TElem* const toSet, const XMLSize_t setAt) +{ + if (setAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + + if (fAdoptedElems) + delete fElemList[setAt]; + fElemList[setAt] = toSet; +} + +template void BaseRefVectorOf:: +insertElementAt(TElem* const toInsert, const XMLSize_t insertAt) +{ + if (insertAt == fCurCount) + { + addElement(toInsert); + return; + } + + if (insertAt > fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + + ensureExtraCapacity(1); + + // Make room for the newbie + for (XMLSize_t index = fCurCount; index > insertAt; index--) + fElemList[index] = fElemList[index-1]; + + // And stick it in and bump the count + fElemList[insertAt] = toInsert; + fCurCount++; +} + +template TElem* BaseRefVectorOf:: +orphanElementAt(const XMLSize_t orphanAt) +{ + if (orphanAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + + // Get the element we are going to orphan + TElem* retVal = fElemList[orphanAt]; + + // Optimize if its the last element + if (orphanAt == fCurCount-1) + { + fElemList[orphanAt] = 0; + fCurCount--; + return retVal; + } + + // Copy down every element above orphan point + for (XMLSize_t index = orphanAt; index < fCurCount-1; index++) + fElemList[index] = fElemList[index+1]; + + // Keep unused elements zero for sanity's sake + fElemList[fCurCount-1] = 0; + + // And bump down count + fCurCount--; + + return retVal; +} + +template void BaseRefVectorOf::removeAllElements() +{ + for (XMLSize_t index = 0; index < fCurCount; index++) + { + if (fAdoptedElems) + delete fElemList[index]; + + // Keep unused elements zero for sanity's sake + fElemList[index] = 0; + } + fCurCount = 0; +} + +template void BaseRefVectorOf:: +removeElementAt(const XMLSize_t removeAt) +{ + if (removeAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + + if (fAdoptedElems) + delete fElemList[removeAt]; + + // Optimize if its the last element + if (removeAt == fCurCount-1) + { + fElemList[removeAt] = 0; + fCurCount--; + return; + } + + // Copy down every element above remove point + for (XMLSize_t index = removeAt; index < fCurCount-1; index++) + fElemList[index] = fElemList[index+1]; + + // Keep unused elements zero for sanity's sake + fElemList[fCurCount-1] = 0; + + // And bump down count + fCurCount--; +} + +template void BaseRefVectorOf::removeLastElement() +{ + if (!fCurCount) + return; + fCurCount--; + + if (fAdoptedElems) + delete fElemList[fCurCount]; +} + +template +bool BaseRefVectorOf::containsElement(const TElem* const toCheck) { + + for (XMLSize_t i = 0; i < fCurCount; i++) { + if (fElemList[i] == toCheck) { + return true; + } + } + + return false; +} + +// +// cleanup(): +// similar to destructor +// called to cleanup the memory, in case destructor cannot be called +// +template void BaseRefVectorOf::cleanup() +{ + if (fAdoptedElems) + { + for (XMLSize_t index = 0; index < fCurCount; index++) + delete fElemList[index]; + } + fMemoryManager->deallocate(fElemList);//delete [] fElemList; +} + +// +// reinitialize(): +// similar to constructor +// called to re-construct the fElemList from scratch again +// +template void BaseRefVectorOf::reinitialize() +{ + // reinitialize the array + if (fElemList) + cleanup(); + + fElemList = (TElem**) fMemoryManager->allocate(fMaxCount * sizeof(TElem*));//new TElem*[fMaxCount]; + for (XMLSize_t index = 0; index < fMaxCount; index++) + fElemList[index] = 0; + +} + +template +MemoryManager* BaseRefVectorOf::getMemoryManager() const +{ + return fMemoryManager; +} + + +// --------------------------------------------------------------------------- +// BaseRefVectorOf: Getter methods +// --------------------------------------------------------------------------- +template XMLSize_t BaseRefVectorOf::curCapacity() const +{ + return fMaxCount; +} + +template const TElem* BaseRefVectorOf:: +elementAt(const XMLSize_t getAt) const +{ + if (getAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + return fElemList[getAt]; +} + +template TElem* +BaseRefVectorOf::elementAt(const XMLSize_t getAt) +{ + if (getAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + return fElemList[getAt]; +} + +template XMLSize_t BaseRefVectorOf::size() const +{ + return fCurCount; +} + + +// --------------------------------------------------------------------------- +// BaseRefVectorOf: Miscellaneous +// --------------------------------------------------------------------------- +template void BaseRefVectorOf:: +ensureExtraCapacity(const XMLSize_t length) +{ + XMLSize_t newMax = fCurCount + length; + + if (newMax <= fMaxCount) + return; + + // Choose how much bigger based on the current size. + // This will grow half as much again. + if (newMax < fMaxCount + fMaxCount/2) + newMax = fMaxCount + fMaxCount/2; + + // Allocate the new array and copy over the existing stuff + TElem** newList = (TElem**) fMemoryManager->allocate + ( + newMax * sizeof(TElem*) + );//new TElem*[newMax]; + XMLSize_t index = 0; + for (; index < fCurCount; index++) + newList[index] = fElemList[index]; + + // Zero out the rest of them + for (; index < newMax; index++) + newList[index] = 0; + + // Clean up the old array and update our members + fMemoryManager->deallocate(fElemList);//delete [] fElemList; + fElemList = newList; + fMaxCount = newMax; +} + + + +// --------------------------------------------------------------------------- +// AbstractBaseRefVectorEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template BaseRefVectorEnumerator:: +BaseRefVectorEnumerator( BaseRefVectorOf* const toEnum + , const bool adopt) : + fAdopted(adopt) + , fCurIndex(0) + , fToEnum(toEnum) +{ +} + +template BaseRefVectorEnumerator::~BaseRefVectorEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + +template BaseRefVectorEnumerator:: +BaseRefVectorEnumerator(const BaseRefVectorEnumerator& toCopy) : + XMLEnumerator(toCopy) + , XMemory(toCopy) + , fAdopted(toCopy.fAdopted) + , fCurIndex(toCopy.fCurIndex) + , fToEnum(toCopy.fToEnum) +{ +} +// --------------------------------------------------------------------------- +// RefBaseRefVectorEnumerator: Enum interface +// --------------------------------------------------------------------------- +template bool BaseRefVectorEnumerator::hasMoreElements() const +{ + if (fCurIndex >= fToEnum->size()) + return false; + return true; +} + +template TElem& BaseRefVectorEnumerator::nextElement() +{ + return *(fToEnum->elementAt(fCurIndex++)); +} + +template void BaseRefVectorEnumerator::Reset() +{ + fCurIndex = 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/BaseRefVectorOf.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/BaseRefVectorOf.hpp new file mode 100644 index 000000000000..360b99c91021 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/BaseRefVectorOf.hpp @@ -0,0 +1,158 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ABSTRACTVECTOROF_HPP) +#define XERCESC_INCLUDE_GUARD_ABSTRACTVECTOROF_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Abstract base class for the xerces internal representation of Vector. + * + * The destructor is abstract, forcing each of RefVectorOf and + * RefArrayVectorOf to implement their own appropriate one. + * + */ +template class BaseRefVectorOf : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + BaseRefVectorOf + ( + const XMLSize_t maxElems + , const bool adoptElems = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~BaseRefVectorOf(); + + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + void addElement(TElem* const toAdd); + virtual void setElementAt(TElem* const toSet, const XMLSize_t setAt); + void insertElementAt(TElem* const toInsert, const XMLSize_t insertAt); + TElem* orphanElementAt(const XMLSize_t orphanAt); + virtual void removeAllElements(); + virtual void removeElementAt(const XMLSize_t removeAt); + virtual void removeLastElement(); + bool containsElement(const TElem* const toCheck); + virtual void cleanup(); + void reinitialize(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t curCapacity() const; + const TElem* elementAt(const XMLSize_t getAt) const; + TElem* elementAt(const XMLSize_t getAt); + XMLSize_t size() const; + MemoryManager* getMemoryManager() const; + + + // ----------------------------------------------------------------------- + // Miscellaneous + // ----------------------------------------------------------------------- + void ensureExtraCapacity(const XMLSize_t length); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + BaseRefVectorOf(const BaseRefVectorOf& copy); + BaseRefVectorOf& operator=(const BaseRefVectorOf& copy); + +protected: + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + bool fAdoptedElems; + XMLSize_t fCurCount; + XMLSize_t fMaxCount; + TElem** fElemList; + MemoryManager* fMemoryManager; +}; + + +// +// An enumerator for a vector. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template class BaseRefVectorEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + BaseRefVectorEnumerator + ( + BaseRefVectorOf* const toEnum + , const bool adopt = false + ); + virtual ~BaseRefVectorEnumerator(); + + BaseRefVectorEnumerator(const BaseRefVectorEnumerator& copy); + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TElem& nextElement(); + void Reset(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + BaseRefVectorEnumerator& operator=(const BaseRefVectorEnumerator& copy); + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed vector. If so then + // we delete the vector when we are destroyed. + // + // fCurIndex + // This is the current index into the vector. + // + // fToEnum + // The reference vector being enumerated. + // ----------------------------------------------------------------------- + bool fAdopted; + XMLSize_t fCurIndex; + BaseRefVectorOf* fToEnum; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/BinFileInputStream.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/BinFileInputStream.hpp new file mode 100644 index 000000000000..3b4ba03d348a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/BinFileInputStream.hpp @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BINFILEINPUTSTREAM_HPP) +#define XERCESC_INCLUDE_GUARD_BINFILEINPUTSTREAM_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BinFileInputStream : public BinInputStream +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + BinFileInputStream + ( + const XMLCh* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + BinFileInputStream + ( + const char* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + BinFileInputStream + ( + const FileHandle toUse + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~BinFileInputStream(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getIsOpen() const; + XMLFilePos getSize() const; + void reset(); + + + // ----------------------------------------------------------------------- + // Implementation of the input stream interface + // ----------------------------------------------------------------------- + virtual XMLFilePos curPos() const; + + virtual XMLSize_t readBytes + ( + XMLByte* const toFill + , const XMLSize_t maxToRead + ); + + virtual const XMLCh* getContentType() const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + BinFileInputStream(const BinFileInputStream&); + BinFileInputStream& operator=(const BinFileInputStream&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fSource + // The source file that we represent. The FileHandle type is defined + // per platform. + // ----------------------------------------------------------------------- + FileHandle fSource; + MemoryManager* const fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// BinFileInputStream: Getter methods +// --------------------------------------------------------------------------- +inline bool BinFileInputStream::getIsOpen() const +{ + return (fSource != (FileHandle) XERCES_Invalid_File_Handle); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/BinInputStream.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/BinInputStream.hpp new file mode 100644 index 000000000000..6023f48972df --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/BinInputStream.hpp @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BININPUTSTREAM_HPP) +#define XERCESC_INCLUDE_GUARD_BININPUTSTREAM_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BinInputStream : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Virtual destructor for derived classes + // ----------------------------------------------------------------------- + virtual ~BinInputStream(); + + + // ----------------------------------------------------------------------- + // The virtual input stream interface + // ----------------------------------------------------------------------- + virtual XMLFilePos curPos() const = 0; + + virtual XMLSize_t readBytes + ( + XMLByte* const toFill + , const XMLSize_t maxToRead + ) = 0; + + /** + * Return the "out-of-band" content type for the data supplied by this + * input stream in the form of the media-type production (mime type + * with optional parameters such as encoding) as defined by the HTTP 1.1 + * specification. If no such content type is provided for the data, 0 is + * returned. This function is expected to return the correct value at + * any time after the construction of the stream. + * + * An example of the stream that may return non-0 from this function is + * an HTTP stream with the value returned taken from the "Content-Type" + * HTTP header. Note also that if the encoding of the data is known + * to the application by some other means then the setEncoding function + * in the InputSource object should be used instead. The getContentType + * function should only be used to return information that is intrinsic + * to the stream. + * + * @return The content type, or 0 if one is not available. + */ + virtual const XMLCh* getContentType() const = 0; + + /** + * Return the "out-of-band" encoding for the data supplied by this + * input stream. If no such content type is provided for the data, 0 is + * returned. This function is expected to return the correct value at + * any time after the construction of the stream. + * + * An example of the stream that may return non-0 from this function is + * an HTTP stream with the value returned taken from the "Content-Type" + * HTTP header. Note also that if the encoding of the data is known + * to the application by some other means then the setEncoding function + * in the InputSource object should be used instead. The getEncoding + * function should only be used to return information that is intrinsic + * to the stream. + * + * @return The name of the encoding, or 0 if one is not available. + */ + virtual const XMLCh *getEncoding() const; + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + BinInputStream(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented Constructors + // ----------------------------------------------------------------------- + BinInputStream(const BinInputStream&); + BinInputStream& operator=(const BinInputStream&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/BinMemInputStream.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/BinMemInputStream.hpp new file mode 100644 index 000000000000..1617b65d0590 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/BinMemInputStream.hpp @@ -0,0 +1,134 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BINMEMINPUTSTREAM_HPP) +#define XERCESC_INCLUDE_GUARD_BINMEMINPUTSTREAM_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BinMemInputStream : public BinInputStream +{ +public : + // ----------------------------------------------------------------------- + // Class specific types + // ----------------------------------------------------------------------- + enum BufOpts + { + BufOpt_Adopt + , BufOpt_Copy + , BufOpt_Reference + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + BinMemInputStream + ( + const XMLByte* const initData + , const XMLSize_t capacity + , const BufOpts bufOpt = BufOpt_Copy + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~BinMemInputStream(); + + + // ----------------------------------------------------------------------- + // Stream management methods + // ----------------------------------------------------------------------- + void reset(); + + + // ----------------------------------------------------------------------- + // Implementation of the input stream interface + // ----------------------------------------------------------------------- + virtual XMLFilePos curPos() const; + + virtual XMLSize_t readBytes + ( + XMLByte* const toFill + , const XMLSize_t maxToRead + ); + + virtual const XMLCh* getContentType() const; + + inline XMLSize_t getSize() const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + BinMemInputStream(const BinMemInputStream&); + BinMemInputStream& operator=(const BinMemInputStream&); + // ----------------------------------------------------------------------- + // Private data members + // + // fBuffer + // The buffer of bytes that we are streaming. + // + // fBufOpt + // Indicates the ownership status of the buffer. The caller can have + // us adopt it (we delete it), reference it, or just make our own + // copy of it. + // + // fCapacity + // The size of the buffer being streamed. + // + // fCurIndex + // The current index where the next byte will be read from. When it + // hits fCapacity, we are done. + // ----------------------------------------------------------------------- + const XMLByte* fBuffer; + BufOpts fBufOpt; + XMLSize_t fCapacity; + XMLSize_t fCurIndex; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// BinMemInputStream: Stream management methods +// --------------------------------------------------------------------------- +inline void BinMemInputStream::reset() +{ + fCurIndex = 0; +} + + +// --------------------------------------------------------------------------- +// BinMemInputStream: Implementation of the input stream interface +// --------------------------------------------------------------------------- +inline XMLFilePos BinMemInputStream::curPos() const +{ + return fCurIndex; +} + +inline XMLSize_t BinMemInputStream::getSize() const +{ + return fCapacity; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/BitOps.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/BitOps.hpp new file mode 100644 index 000000000000..1b3d4204c5f3 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/BitOps.hpp @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BITOPS_HPP) +#define XERCESC_INCLUDE_GUARD_BITOPS_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BitOps +{ +public: + // ----------------------------------------------------------------------- + // Public static methods + // ----------------------------------------------------------------------- + static inline XMLCh swapBytes(const XMLUInt16 toSwap) + { + //The mask is required to overcome a compiler error on solaris + return XMLCh(((toSwap >> 8) | (toSwap << 8)) & 0xFFFF); + } + + static inline unsigned int swapBytes(const XMLUInt32 toSwap) + { + return + ( + (toSwap >> 24) + | (toSwap << 24) + | ((toSwap & 0xFF00) << 8) + | ((toSwap & 0xFF0000) >> 8) + ); + } + + + +protected : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators. (These ought to be private, + // but that produces spurious compiler warnings + // on some platforms.) + // ----------------------------------------------------------------------- + BitOps(); + BitOps(const BitOps&); + BitOps& operator=(const BitOps&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/BitSet.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/BitSet.hpp new file mode 100644 index 000000000000..684a328bd719 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/BitSet.hpp @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BITSET_HPP) +#define XERCESC_INCLUDE_GUARD_BITSET_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BitSet : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + BitSet( const XMLSize_t size + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + BitSet(const BitSet& toCopy); + ~BitSet(); + + + // ----------------------------------------------------------------------- + // Equality methods + // ----------------------------------------------------------------------- + bool equals(const BitSet& other) const; + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool allAreCleared() const; + bool allAreSet() const; + XMLSize_t size() const; + bool get(const XMLSize_t index) const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void clear(const XMLSize_t index); + void clearAll(); + void set(const XMLSize_t index); + + + // ----------------------------------------------------------------------- + // Bitwise logical operations + // ----------------------------------------------------------------------- + void andWith(const BitSet& other); + void orWith(const BitSet& other); + void xorWith(const BitSet& other); + + + // ----------------------------------------------------------------------- + // Miscellaneous + // ----------------------------------------------------------------------- + XMLSize_t hash(const XMLSize_t hashModulus) const; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors + // ----------------------------------------------------------------------- + BitSet(); + BitSet& operator=(const BitSet&); + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + void ensureCapacity(const XMLSize_t bits); + + + // ----------------------------------------------------------------------- + // Data members + // + // fBits + // The array of unsigned longs used to store the bits. + // + // fUnitLen + // The length of the storage array, in storage units not bits. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + unsigned long* fBits; + XMLSize_t fUnitLen; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/CountedPointer.c b/src/libs/xerces-c/msvc/include/xercesc/util/CountedPointer.c new file mode 100644 index 000000000000..5eefd7140ca4 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/CountedPointer.c @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// CountedPointerTo: Constructors and Destructor +// --------------------------------------------------------------------------- +template CountedPointerTo:: +CountedPointerTo(const CountedPointerTo& toCopy) : + + fPtr(toCopy.fPtr) +{ + if (fPtr) + fPtr->addRef(); +} + +template CountedPointerTo::CountedPointerTo(T* p) : + + fPtr(p) +{ + if (fPtr) + fPtr->addRef(); +} + +template CountedPointerTo::~CountedPointerTo() +{ + if (fPtr) + fPtr->removeRef(); +} + + +// --------------------------------------------------------------------------- +// CountedPointerTo: Operators +// --------------------------------------------------------------------------- +template CountedPointerTo& +CountedPointerTo::operator=(const CountedPointerTo& other) +{ + if (this == &other) + return *this; + + if (other.fPtr) + other.fPtr->addRef(); + + if (fPtr) + fPtr->removeRef(); + + fPtr = other.fPtr; + return *this; +} + +template CountedPointerTo::operator T*() +{ + return fPtr; +} + +template const T* CountedPointerTo::operator->() const +{ + return fPtr; +} + +template T* CountedPointerTo::operator->() +{ + return fPtr; +} + +template const T& CountedPointerTo::operator*() const +{ + if (!fPtr) + ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, 0); + return *fPtr; +} + +template T& CountedPointerTo::operator*() +{ + if (!fPtr) + ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, 0); + return *fPtr; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/CountedPointer.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/CountedPointer.hpp new file mode 100644 index 000000000000..a8f3cd8c8eda --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/CountedPointer.hpp @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_COUNTEDPOINTERTO_HPP) +#define XERCESC_INCLUDE_GUARD_COUNTEDPOINTERTO_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class CountedPointerTo : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + CountedPointerTo(const CountedPointerTo& toCopy); + CountedPointerTo(T* p = 0); + ~CountedPointerTo(); + + + // ----------------------------------------------------------------------- + // Operators + // ----------------------------------------------------------------------- + CountedPointerTo& operator=(const CountedPointerTo& other); + operator T*(); + const T* operator->() const; + T* operator->(); + const T& operator*() const; + T& operator*(); + + +private: + // ----------------------------------------------------------------------- + // Data members + // + // fPtr + // The pointer that we are counting. The T type must implement the + // addRef() and removeRef() APIs but it doesn't have to derive from + // any particular type. + // ----------------------------------------------------------------------- + T* fPtr; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/DefaultPanicHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/DefaultPanicHandler.hpp new file mode 100644 index 000000000000..dd00c26f36b1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/DefaultPanicHandler.hpp @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DEFAULT_PANICHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DEFAULT_PANICHANDLER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Receive notification of panic. + * + *

This is Xerces' default implementation of the PanicHanlder + * interface, which will be instantiated and used in the + * absence of an application's panic handler. + *

+ */ + +class XMLUTIL_EXPORT DefaultPanicHandler : public XMemory, public PanicHandler +{ +public: + + /** @name hidden Constructors */ + //@{ + /** Default constructor */ + DefaultPanicHandler(){}; + + /** Destructor */ + virtual ~DefaultPanicHandler(){}; + //@} + + /** @name Implement virtual panic handler interface */ + //@{ + /** + * Receive notification of panic + * + *

Upon invocation, a corresponding error message will be output + * to the stderr, and program exit. + *

+ * + * @param reason The reason of panic + * + */ + virtual void panic(const PanicHandler::PanicReasons reason); + //@} + +private: + + /* Unimplemented Constructors and operators */ + /* Copy constructor */ + DefaultPanicHandler(const PanicHandler&); + + /** Assignment operator */ + DefaultPanicHandler& operator=(const DefaultPanicHandler&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/EmptyStackException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/EmptyStackException.hpp new file mode 100644 index 000000000000..3e1ba275cba1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/EmptyStackException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_EMPTYSTACKEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_EMPTYSTACKEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(EmptyStackException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/EncodingValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/EncodingValidator.hpp new file mode 100644 index 000000000000..340e67e5c0ef --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/EncodingValidator.hpp @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ENCODINGVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ENCODINGVALIDATOR_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * A singleton class that checks whether an encoding name is a valid IANA + * encoding + */ + +class XMLUTIL_EXPORT EncodingValidator { + +public: + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + bool isValidEncoding(const XMLCh* const encName); + + // ----------------------------------------------------------------------- + // Instance methods + // ----------------------------------------------------------------------- + static EncodingValidator* instance(); + +private: + // ----------------------------------------------------------------------- + // Constructor and destructors + // ----------------------------------------------------------------------- + EncodingValidator(); + ~EncodingValidator(); + + // ----------------------------------------------------------------------- + // Private Helpers methods + // ----------------------------------------------------------------------- + /* + * Initializes the registry with a set of valid IANA encoding names + */ + void initializeRegistry(); + + // ----------------------------------------------------------------------- + // Private data members + // + // fEncodingRegistry + // Contains a set of IANA encoding names + // + // fInstance + // An EncodingValidator singleton instance + // ----------------------------------------------------------------------- + ValueHashTableOf* fEncodingRegistry; + static EncodingValidator* fInstance; + friend class XMLInitializer; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file EncodingValidator.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/FileManagers/WindowsFileMgr.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/FileManagers/WindowsFileMgr.hpp new file mode 100644 index 000000000000..ae086700595d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/FileManagers/WindowsFileMgr.hpp @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_WINDOWSFILEMGR_HPP) +#define XERCESC_INCLUDE_GUARD_WINDOWSFILEMGR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Concrete implementation of XMLFileMgr, implementing +// file access on Windows systems. +class WindowsFileMgr : public XMLFileMgr +{ + public: + WindowsFileMgr(); + virtual ~WindowsFileMgr(); + + // File access + virtual FileHandle fileOpen(const XMLCh* path, bool toWrite, MemoryManager* const manager); + virtual FileHandle fileOpen(const char* path, bool toWrite, MemoryManager* const manager); + virtual FileHandle openStdIn(MemoryManager* const manager); + + virtual void fileClose(FileHandle f, MemoryManager* const manager); + virtual void fileReset(FileHandle f, MemoryManager* const manager); + + virtual XMLFilePos curPos(FileHandle f, MemoryManager* const manager); + virtual XMLFilePos fileSize(FileHandle f, MemoryManager* const manager); + + virtual XMLSize_t fileRead(FileHandle f, XMLSize_t byteCount, XMLByte* buffer, MemoryManager* const manager); + virtual void fileWrite(FileHandle f, XMLSize_t byteCount, const XMLByte* buffer, MemoryManager* const manager); + + // Ancillary path handling routines + virtual XMLCh* getFullPath(const XMLCh* const srcPath, MemoryManager* const manager); + virtual XMLCh* getCurrentDirectory(MemoryManager* const manager); + virtual bool isRelative(const XMLCh* const toCheck, MemoryManager* const manager); + + private: + bool _onNT; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/FlagJanitor.c b/src/libs/xerces-c/msvc/include/xercesc/util/FlagJanitor.c new file mode 100644 index 000000000000..b8ea1cdfeebe --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/FlagJanitor.c @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Constructors and Destructor +// --------------------------------------------------------------------------- +template FlagJanitor::FlagJanitor(T* const valPtr, const T newVal) +: fValPtr(valPtr) +{ + // Store the pointer, save the org value, and store the new value + if (fValPtr) + { + fOldVal = *fValPtr; + *fValPtr = newVal; + } +} + +template FlagJanitor::~FlagJanitor() +{ + // Restore the old value + if (fValPtr) + *fValPtr = fOldVal; +} + + +// --------------------------------------------------------------------------- +// Value management methods +// --------------------------------------------------------------------------- +template void FlagJanitor::release() +{ + fValPtr = 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/FlagJanitor.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/FlagJanitor.hpp new file mode 100644 index 000000000000..76b91db1b2ca --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/FlagJanitor.hpp @@ -0,0 +1,73 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_FLAGJANITOR_HPP) +#define XERCESC_INCLUDE_GUARD_FLAGJANITOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class FlagJanitor +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + FlagJanitor(T* const valPtr, const T newVal); + ~FlagJanitor(); + + + // ----------------------------------------------------------------------- + // Value management methods + // ----------------------------------------------------------------------- + void release(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + FlagJanitor(); + FlagJanitor(const FlagJanitor&); + FlagJanitor& operator=(const FlagJanitor&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fOldVal + // The old value that was in the flag when we were constructed. + // + // fValPtr + // A pointer to the flag that we are to restore the value of + // ----------------------------------------------------------------------- + T fOldVal; + T* fValPtr; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/Hash2KeysSetOf.c b/src/libs/xerces-c/msvc/include/xercesc/util/Hash2KeysSetOf.c new file mode 100644 index 000000000000..607a8b7a8e17 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/Hash2KeysSetOf.c @@ -0,0 +1,591 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Hash2KeysSetOf: Constructors and Destructor +// --------------------------------------------------------------------------- + +template +Hash2KeysSetOf::Hash2KeysSetOf( + const XMLSize_t modulus, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fBucketList(0) + , fHashModulus(modulus) + , fCount(0) + , fAvailable(0) +{ + initialize(modulus); +} + +template +Hash2KeysSetOf::Hash2KeysSetOf( + const XMLSize_t modulus, + const THasher& hasher, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fBucketList(0) + , fHashModulus(modulus) + , fCount(0) + , fAvailable(0) + , fHasher (hasher) +{ + initialize(modulus); +} + +template +void Hash2KeysSetOf::initialize(const XMLSize_t modulus) +{ + if (modulus == 0) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); + + // Allocate the bucket list and zero them + fBucketList = (Hash2KeysSetBucketElem**) fMemoryManager->allocate + ( + fHashModulus * sizeof(Hash2KeysSetBucketElem*) + ); //new Hash2KeysSetBucketElem*[fHashModulus]; + memset(fBucketList, 0, sizeof(fBucketList[0]) * fHashModulus); +} + +template +Hash2KeysSetOf::~Hash2KeysSetOf() +{ + Hash2KeysSetBucketElem* nextElem; + if(!isEmpty()) + { + // Clean up the buckets first + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + // Get the bucket list head for this entry + Hash2KeysSetBucketElem* curElem = fBucketList[buckInd]; + while (curElem) + { + // Save the next element before we hose this one + nextElem = curElem->fNext; + fMemoryManager->deallocate(curElem); + curElem = nextElem; + } + + // Clean out this entry + fBucketList[buckInd] = 0; + } + } + // Then delete the list of available blocks + Hash2KeysSetBucketElem* curElem = fAvailable; + while (curElem) + { + // Save the next element before we hose this one + nextElem = curElem->fNext; + fMemoryManager->deallocate(curElem); + curElem = nextElem; + } + fAvailable = 0; + + // Then delete the bucket list & hasher + fMemoryManager->deallocate(fBucketList); //delete [] fBucketList; + fBucketList = 0; +} + + +// --------------------------------------------------------------------------- +// Hash2KeysSetOf: Element management +// --------------------------------------------------------------------------- +template +bool Hash2KeysSetOf::isEmpty() const +{ + return (fCount==0); +} + +template +bool Hash2KeysSetOf::containsKey(const void* const key1, const int key2) const +{ + XMLSize_t hashVal; + const Hash2KeysSetBucketElem* findIt = findBucketElem(key1, key2, hashVal); + return (findIt != 0); +} + +template +void Hash2KeysSetOf::removeKey(const void* const key1, const int key2) +{ + // Hash the key + XMLSize_t hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + Hash2KeysSetBucketElem* curElem = fBucketList[hashVal]; + Hash2KeysSetBucketElem* lastElem = 0; + + while (curElem) + { + if((key2==curElem->fKey2) && (fHasher.equals(key1, curElem->fKey1))) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + // Move the current element to the list of available blocks + curElem->fNext=fAvailable; + fAvailable=curElem; + + fCount--; + return; + } + + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + + // We never found that key + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, fMemoryManager); +} + +template +void Hash2KeysSetOf:: +removeKey(const void* const key1) +{ + // Hash the key + XMLSize_t hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + Hash2KeysSetBucketElem* curElem = fBucketList[hashVal]; + Hash2KeysSetBucketElem* lastElem = 0; + + while (curElem) + { + if(fHasher.equals(key1, curElem->fKey1)) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + Hash2KeysSetBucketElem* toBeDeleted=curElem; + curElem = curElem->fNext; + + // Move the current element to the list of available blocks + toBeDeleted->fNext=fAvailable; + fAvailable=toBeDeleted; + + fCount--; + } + else + { + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + } +} + +template +void Hash2KeysSetOf::removeAll() +{ + if(isEmpty()) + return; + + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + if(fBucketList[buckInd]!=0) + { + // Advance to the end of the chain, and connect it to the list of + // available blocks + Hash2KeysSetBucketElem* curElem = fBucketList[buckInd]; + while (curElem->fNext) + curElem = curElem->fNext; + curElem->fNext=fAvailable; + fAvailable=fBucketList[buckInd]; + fBucketList[buckInd] = 0; + } + } + fCount=0; +} + +// --------------------------------------------------------------------------- +// Hash2KeysSetOf: Getters +// --------------------------------------------------------------------------- +template +MemoryManager* Hash2KeysSetOf::getMemoryManager() const +{ + return fMemoryManager; +} + +template +XMLSize_t Hash2KeysSetOf::getHashModulus() const +{ + return fHashModulus; +} + +// --------------------------------------------------------------------------- +// Hash2KeysSetOf: Putters +// --------------------------------------------------------------------------- +template +void Hash2KeysSetOf::put(const void* key1, int key2) +{ + // Apply 4 load factor to find threshold. + XMLSize_t threshold = fHashModulus * 4; + + // If we've grown too big, expand the table and rehash. + if (fCount >= threshold) + rehash(); + + // First see if the key exists already + XMLSize_t hashVal; + Hash2KeysSetBucketElem* newBucket = findBucketElem(key1, key2, hashVal); + + // + // If so,then update its value. If not, then we need to add it to + // the right bucket + // + if (newBucket) + { + newBucket->fKey1 = key1; + newBucket->fKey2 = key2; + } + else + { + if(fAvailable==0) + newBucket = (Hash2KeysSetBucketElem*)fMemoryManager->allocate(sizeof(Hash2KeysSetBucketElem)); + else + { + newBucket = fAvailable; + fAvailable = fAvailable->fNext; + } + newBucket->fKey1 = key1; + newBucket->fKey2 = key2; + newBucket->fNext = fBucketList[hashVal]; + fBucketList[hashVal] = newBucket; + fCount++; + } +} + +template +bool Hash2KeysSetOf::putIfNotPresent(const void* key1, int key2) +{ + // First see if the key exists already + XMLSize_t hashVal; + Hash2KeysSetBucketElem* newBucket = findBucketElem(key1, key2, hashVal); + + // + // If so,then update its value. If not, then we need to add it to + // the right bucket + // + if (newBucket) + return false; + + // Apply 4 load factor to find threshold. + XMLSize_t threshold = fHashModulus * 4; + + // If we've grown too big, expand the table and rehash. + if (fCount >= threshold) + rehash(); + + if(fAvailable==0) + newBucket = (Hash2KeysSetBucketElem*)fMemoryManager->allocate(sizeof(Hash2KeysSetBucketElem)); + else + { + newBucket = fAvailable; + fAvailable = fAvailable->fNext; + } + newBucket->fKey1 = key1; + newBucket->fKey2 = key2; + newBucket->fNext = fBucketList[hashVal]; + fBucketList[hashVal] = newBucket; + fCount++; + return true; +} + + +// --------------------------------------------------------------------------- +// Hash2KeysSetOf: Private methods +// --------------------------------------------------------------------------- +template +inline Hash2KeysSetBucketElem* Hash2KeysSetOf:: +findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal) +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + Hash2KeysSetBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if((key2==curElem->fKey2) && (fHasher.equals(key1, curElem->fKey1))) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + +template +inline const Hash2KeysSetBucketElem* Hash2KeysSetOf:: +findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal) const +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + const Hash2KeysSetBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if((key2==curElem->fKey2) && (fHasher.equals(key1, curElem->fKey1))) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + + +template +void Hash2KeysSetOf:: +rehash() +{ + const XMLSize_t newMod = (fHashModulus * 8)+1; + + Hash2KeysSetBucketElem** newBucketList = + (Hash2KeysSetBucketElem**) fMemoryManager->allocate + ( + newMod * sizeof(Hash2KeysSetBucketElem*) + );//new Hash2KeysSetBucketElem*[fHashModulus]; + + // Make sure the new bucket list is destroyed if an + // exception is thrown. + ArrayJanitor guard(newBucketList, fMemoryManager); + + memset(newBucketList, 0, newMod * sizeof(newBucketList[0])); + + // Rehash all existing entries. + for (XMLSize_t index = 0; index < fHashModulus; index++) + { + // Get the bucket list head for this entry + Hash2KeysSetBucketElem* curElem = fBucketList[index]; + while (curElem) + { + // Save the next element before we detach this one + Hash2KeysSetBucketElem* nextElem = curElem->fNext; + + const XMLSize_t hashVal = fHasher.getHashVal(curElem->fKey1, newMod); + assert(hashVal < newMod); + + Hash2KeysSetBucketElem* newHeadElem = newBucketList[hashVal]; + + // Insert at the start of this bucket's list. + curElem->fNext = newHeadElem; + newBucketList[hashVal] = curElem; + + curElem = nextElem; + } + } + + Hash2KeysSetBucketElem** const oldBucketList = fBucketList; + + // Everything is OK at this point, so update the + // member variables. + fBucketList = guard.release(); + fHashModulus = newMod; + + // Delete the old bucket list. + fMemoryManager->deallocate(oldBucketList);//delete[] oldBucketList; + +} + + + +// --------------------------------------------------------------------------- +// Hash2KeysSetOfEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template +Hash2KeysSetOfEnumerator:: +Hash2KeysSetOfEnumerator(Hash2KeysSetOf* const toEnum + , const bool adopt + , MemoryManager* const manager) + : fAdopted(adopt), fCurElem(0), fCurHash((XMLSize_t)-1), fToEnum(toEnum) + , fMemoryManager(manager) + , fLockPrimaryKey(0) +{ + if (!toEnum) + ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, fMemoryManager); + + // + // Find the next available bucket element in the hash table. If it + // comes back zero, that just means the table is empty. + // + // Note that the -1 in the current hash tells it to start + // from the beginning. + // + findNext(); +} + +template +Hash2KeysSetOfEnumerator::~Hash2KeysSetOfEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// Hash2KeysSetOfEnumerator: Enum interface +// --------------------------------------------------------------------------- +template +bool Hash2KeysSetOfEnumerator::hasMoreElements() const +{ + // + // If our current has is at the max and there are no more elements + // in the current bucket, then no more elements. + // + if (!fCurElem && (fCurHash == fToEnum->fHashModulus)) + return false; + return true; +} + +template +void Hash2KeysSetOfEnumerator::nextElementKey(const void*& retKey1, int& retKey2) +{ + // Make sure we have an element to return + if (!hasMoreElements()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + Hash2KeysSetBucketElem* saveElem = fCurElem; + findNext(); + + retKey1 = saveElem->fKey1; + retKey2 = saveElem->fKey2; + + return; +} + +template +void Hash2KeysSetOfEnumerator::Reset() +{ + if(fLockPrimaryKey) + fCurHash=fToEnum->fHasher.getHashVal(fLockPrimaryKey, fToEnum->fHashModulus); + else + fCurHash = (XMLSize_t)-1; + + fCurElem = 0; + findNext(); +} + + +template +void Hash2KeysSetOfEnumerator::setPrimaryKey(const void* key) +{ + fLockPrimaryKey=key; + Reset(); +} + +// --------------------------------------------------------------------------- +// Hash2KeysSetOfEnumerator: Private helper methods +// --------------------------------------------------------------------------- +template +void Hash2KeysSetOfEnumerator::findNext() +{ + // Code to execute if we have to return only values with the primary key + if(fLockPrimaryKey) + { + if(!fCurElem) + fCurElem = fToEnum->fBucketList[fCurHash]; + else + fCurElem = fCurElem->fNext; + while (fCurElem && (!fToEnum->fHasher.equals(fLockPrimaryKey, fCurElem->fKey1))) + fCurElem = fCurElem->fNext; + // if we didn't found it, make so hasMoreElements() returns false + if(!fCurElem) + fCurHash = fToEnum->fHashModulus; + return; + } + // + // If there is a current element, move to its next element. If this + // hits the end of the bucket, the next block will handle the rest. + // + if (fCurElem) + fCurElem = fCurElem->fNext; + + // + // If the current element is null, then we have to move up to the + // next hash value. If that is the hash modulus, then we cannot + // go further. + // + if (!fCurElem) + { + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + + // Else find the next non-empty bucket + while (fToEnum->fBucketList[fCurHash]==0) + { + // Bump to the next hash value. If we max out return + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + } + fCurElem = fToEnum->fBucketList[fCurHash]; + } +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/Hash2KeysSetOf.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/Hash2KeysSetOf.hpp new file mode 100644 index 000000000000..5fb86f430d2f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/Hash2KeysSetOf.hpp @@ -0,0 +1,223 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_HASH2KEYSSETOF_HPP) +#define XERCESC_INCLUDE_GUARD_HASH2KEYSSETOF_HPP + + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// This hash table is similar to Hash2KeysSetOf with an additional integer as key2 + +// Forward declare the enumerator so it can be our friend. +// +template +class Hash2KeysSetOfEnumerator; + +// +// This should really be a nested class, but some of the compilers we +// have to support cannot deal with that! +// +struct Hash2KeysSetBucketElem +{ + Hash2KeysSetBucketElem* fNext; + const void* fKey1; + int fKey2; +}; + + +template +class Hash2KeysSetOf : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + Hash2KeysSetOf( + const XMLSize_t modulus, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + Hash2KeysSetOf( + const XMLSize_t modulus, + const THasher& hasher, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~Hash2KeysSetOf(); + + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + bool isEmpty() const; + bool containsKey(const void* const key1, const int key2) const; + void removeKey(const void* const key1, const int key2); + void removeKey(const void* const key1); + void removeAll(); + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + MemoryManager* getMemoryManager() const; + XMLSize_t getHashModulus() const; + + // ----------------------------------------------------------------------- + // Putters + // ----------------------------------------------------------------------- + void put(const void* key1, int key2); + bool putIfNotPresent(const void* key1, int key2); + +private : + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class Hash2KeysSetOfEnumerator; + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Hash2KeysSetOf(const Hash2KeysSetOf&); + Hash2KeysSetOf& operator=(const Hash2KeysSetOf&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + Hash2KeysSetBucketElem* findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal); + const Hash2KeysSetBucketElem* findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal) const; + void initialize(const XMLSize_t modulus); + void rehash(); + + + // ----------------------------------------------------------------------- + // Data members + // + // fBucketList + // This is the array that contains the heads of all of the list + // buckets, one for each possible hash value. + // + // fHashModulus + // The modulus used for this hash table, to hash the keys. This is + // also the number of elements in the bucket list. + // + // fCount + // The number of elements currently in the map + // + // fHash + // The hasher for the key1 data type. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + Hash2KeysSetBucketElem** fBucketList; + XMLSize_t fHashModulus; + XMLSize_t fCount; + Hash2KeysSetBucketElem* fAvailable; + THasher fHasher; +}; + + + +// +// An enumerator for a value array. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template +class Hash2KeysSetOfEnumerator : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + Hash2KeysSetOfEnumerator(Hash2KeysSetOf* const toEnum + , const bool adopt = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~Hash2KeysSetOfEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + void Reset(); + + // ----------------------------------------------------------------------- + // New interface + // ----------------------------------------------------------------------- + void nextElementKey(const void*&, int&); + void setPrimaryKey(const void* key); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Hash2KeysSetOfEnumerator(const Hash2KeysSetOfEnumerator&); + Hash2KeysSetOfEnumerator& operator=(const Hash2KeysSetOfEnumerator&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + void findNext(); + + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed vector. If so then + // we delete the vector when we are destroyed. + // + // fCurElem + // This is the current bucket bucket element that we are on. + // + // fCurHash + // The is the current hash buck that we are working on. Once we hit + // the end of the bucket that fCurElem is in, then we have to start + // working this one up to the next non-empty bucket. + // + // fToEnum + // The value array being enumerated. + // + // fLockPrimaryKey + // Indicates that we are requested to iterate over the secondary keys + // associated with the given primary key + // + // ----------------------------------------------------------------------- + bool fAdopted; + Hash2KeysSetBucketElem* fCurElem; + XMLSize_t fCurHash; + Hash2KeysSetOf* fToEnum; + MemoryManager* const fMemoryManager; + const void* fLockPrimaryKey; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/Hashers.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/Hashers.hpp new file mode 100644 index 000000000000..cf0dbb2081bd --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/Hashers.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_HASHERS_HPP) +#define XERCESC_INCLUDE_GUARD_HASHERS_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// Common hashers. Only widely-used hashers should be placed here. +// + +/** + * Hasher for keys that are const XMLCh*. + */ +struct StringHasher +{ + /** + * Returns a hash value based on the key + * + * @param key the key to be hashed + * @param mod the modulus the hasher should use + */ + XMLSize_t getHashVal(const void* key, XMLSize_t mod) const + { + return XMLString::hash ((const XMLCh*)key, mod); + } + + /** + * Compares two keys and determines if they are semantically equal + * + * @param key1 the first key to be compared + * @param key2 the second key to be compared + * + * @return true if they are equal + */ + bool equals(const void *const key1, const void *const key2) const + { + return XMLString::equals ((const XMLCh*)key1, (const XMLCh*)key2); + } +}; + +/** + * Hasher for keys that are pointers. + */ +struct PtrHasher +{ + /** + * Returns a hash value based on the key + * + * @param key the key to be hashed + * @param mod the modulus the hasher should use + */ + XMLSize_t getHashVal(const void* key, XMLSize_t mod) const + { + return ((XMLSize_t)key) % mod; + } + + /** + * Compares two keys and determines if they are semantically equal + * + * @param key1 the first key to be compared + * @param key2 the second key to be compared + * + * @return true if they are equal + */ + bool equals(const void *const key1, const void *const key2) const + { + return key1 == key2; + } +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/HexBin.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/HexBin.hpp new file mode 100644 index 000000000000..0b3df788f208 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/HexBin.hpp @@ -0,0 +1,128 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_HEXBIN_HPP) +#define XERCESC_INCLUDE_GUARD_HEXBIN_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT HexBin +{ +public : + //@{ + + /** + * return the length of hexData in terms of HexBinary. + * + * @param hexData A string containing the HexBinary + * + * return: -1 if it contains any invalid HexBinary + * the length of the HexNumber otherwise. + */ + + static int getDataLength(const XMLCh* const hexData); + + /** + * check an array of data against the Hex table. + * + * @param hexData A string containing the HexBinary + * + * return: false if it contains any invalid HexBinary + * true otherwise. + */ + + static bool isArrayByteHex(const XMLCh* const hexData); + + /** + * get canonical representation + * + * Caller is responsible for the proper deallocation + * of the string returned. + * + * @param hexData A string containing the HexBinary + * @param manager The MemoryManager to use to allocate the string + * + * return: the canonical representation of the HexBinary + * if it is a valid HexBinary, + * 0 otherwise + */ + + static XMLCh* getCanonicalRepresentation + ( + const XMLCh* const hexData + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Decodes HexBinary data into XMLByte + * + * NOTE: The returned buffer is dynamically allocated and is the + * responsibility of the caller to delete it when not longer needed. + * Use the memory manager to release the returned buffer. + * + * @param hexData HexBinary data in XMLCh stream. + * @param manager client provided memory manager + * @return Decoded binary data in XMLByte stream, + * or NULL if input data can not be decoded. + */ + static XMLByte* decodeToXMLByte( + const XMLCh* const hexData + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + + //@} + +private : + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + + static bool isHex(const XMLCh& octet); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + HexBin(); + HexBin(const HexBin&); + HexBin& operator=(const HexBin&); + + // ----------------------------------------------------------------------- + // Private data members + // + // isInitialized + // + // set once hexNumberTable is initialized. + // + // hexNumberTable + // + // arrany holding valid hexNumber character. + // + // ----------------------------------------------------------------------- + static const XMLByte hexNumberTable[]; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/IOException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/IOException.hpp new file mode 100644 index 000000000000..33534f56c5fe --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/IOException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IOEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_IOEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(IOException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/IllegalArgumentException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/IllegalArgumentException.hpp new file mode 100644 index 000000000000..960c6ec11cc9 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/IllegalArgumentException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ILLEGALARGUMENTEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_ILLEGALARGUMENTEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(IllegalArgumentException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/InvalidCastException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/InvalidCastException.hpp new file mode 100644 index 000000000000..f68fda930892 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/InvalidCastException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_INVALIDCASTEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_INVALIDCASTEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(InvalidCastException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/Janitor.c b/src/libs/xerces-c/msvc/include/xercesc/util/Janitor.c new file mode 100644 index 000000000000..1f289b4a0bb4 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/Janitor.c @@ -0,0 +1,248 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Janitor: Constructors and Destructor +// --------------------------------------------------------------------------- +template Janitor::Janitor(T* const toDelete) : + fData(toDelete) +{ +} + + +template Janitor::~Janitor() +{ + reset(); +} + + +// --------------------------------------------------------------------------- +// Janitor: Public, non-virtual methods +// --------------------------------------------------------------------------- +template void +Janitor::orphan() +{ + release(); +} + + +template T& +Janitor::operator*() const +{ + return *fData; +} + + +template T* +Janitor::operator->() const +{ + return fData; +} + + +template T* +Janitor::get() const +{ + return fData; +} + + +template T* +Janitor::release() +{ + T* p = fData; + fData = 0; + return p; +} + + +template void Janitor::reset(T* p) +{ + if (fData) + delete fData; + + fData = p; +} + +template bool Janitor::isDataNull() +{ + return (fData == 0); +} + + +// ----------------------------------------------------------------------- +// ArrayJanitor: Constructors and Destructor +// ----------------------------------------------------------------------- +template ArrayJanitor::ArrayJanitor(T* const toDelete) : + fData(toDelete) + , fMemoryManager(0) +{ +} + +template +ArrayJanitor::ArrayJanitor(T* const toDelete, + MemoryManager* const manager) : + fData(toDelete) + , fMemoryManager(manager) +{ +} + + +template ArrayJanitor::~ArrayJanitor() +{ + reset(); +} + + +// ----------------------------------------------------------------------- +// ArrayJanitor: Public, non-virtual methods +// ----------------------------------------------------------------------- +template void +ArrayJanitor::orphan() +{ + release(); +} + + +// Look, Ma! No hands! Don't call this with null data! +template T& +ArrayJanitor::operator[](XMLSize_t index) const +{ + // TODO: Add appropriate exception + return fData[index]; +} + + +template T* +ArrayJanitor::get() const +{ + return fData; +} + + +template T* +ArrayJanitor::release() +{ + T* p = fData; + fData = 0; + return p; +} + + +template void +ArrayJanitor::reset(T* p) +{ + if (fData) { + + if (fMemoryManager) + fMemoryManager->deallocate((void*)fData); + else + delete [] fData; + } + + fData = p; + fMemoryManager = 0; +} + +template void +ArrayJanitor::reset(T* p, MemoryManager* const manager) +{ + if (fData) { + + if (fMemoryManager) + fMemoryManager->deallocate((void*)fData); + else + delete [] fData; + } + + fData = p; + fMemoryManager = manager; +} + +// +// JanitorMemFunCall +// + +template +JanitorMemFunCall::JanitorMemFunCall( + T* object, + MFPT toCall) : + fObject(object), + fToCall(toCall) +{ +} + +template +JanitorMemFunCall::~JanitorMemFunCall() +{ + reset (); +} + +template +T& JanitorMemFunCall::operator*() const +{ + return *fObject; +} + + +template +T* JanitorMemFunCall::operator->() const +{ + return fObject; +} + + +template +T* JanitorMemFunCall::get() const +{ + return fObject; +} + + +template +T* JanitorMemFunCall::release() +{ + T* p = fObject; + fObject = 0; + return p; +} + +template +void JanitorMemFunCall::reset(T* p) +{ + if (fObject != 0 && fToCall != 0) + (fObject->*fToCall)(); + + fObject = p; +} + + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/Janitor.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/Janitor.hpp new file mode 100644 index 000000000000..cf06e6762e94 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/Janitor.hpp @@ -0,0 +1,168 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_JANITOR_HPP) +#define XERCESC_INCLUDE_GUARD_JANITOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class Janitor : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + Janitor(T* const toDelete); + ~Janitor(); + + // ----------------------------------------------------------------------- + // Public, non-virtual methods + // ----------------------------------------------------------------------- + void orphan(); + + // small amount of auto_ptr compatibility + T& operator*() const; + T* operator->() const; + T* get() const; + T* release(); + void reset(T* p = 0); + bool isDataNull(); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Janitor(); + Janitor(const Janitor&); + Janitor& operator=(const Janitor&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fData + // This is the pointer to the object or structure that must be + // destroyed when this object is destroyed. + // ----------------------------------------------------------------------- + T* fData; +}; + + + +template class ArrayJanitor : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ArrayJanitor(T* const toDelete); + ArrayJanitor(T* const toDelete, MemoryManager* const manager); + ~ArrayJanitor(); + + + // ----------------------------------------------------------------------- + // Public, non-virtual methods + // ----------------------------------------------------------------------- + void orphan(); + + // small amount of auto_ptr compatibility + T& operator[](XMLSize_t index) const; + T* get() const; + T* release(); + void reset(T* p = 0); + void reset(T* p, MemoryManager* const manager); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ArrayJanitor(); + ArrayJanitor(const ArrayJanitor& copy); + ArrayJanitor& operator=(const ArrayJanitor& copy); + + // ----------------------------------------------------------------------- + // Private data members + // + // fData + // This is the pointer to the object or structure that must be + // destroyed when this object is destroyed. + // ----------------------------------------------------------------------- + T* fData; + MemoryManager* fMemoryManager; +}; + + + +template class JanitorMemFunCall +{ +public : + + typedef void (T::*MFPT) (); + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + JanitorMemFunCall( + T* object, + MFPT toCall); + + ~JanitorMemFunCall(); + + // small amount of auto_ptr compatibility + T& operator*() const; + T* operator->() const; + T* get() const; + T* release(); + void reset(T* p = 0); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + JanitorMemFunCall(); + JanitorMemFunCall(const JanitorMemFunCall&); + JanitorMemFunCall& operator=(const JanitorMemFunCall&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fObject + // This is the pointer to the object for which we will call the + // member function when this object is destroyed. + // ----------------------------------------------------------------------- + T* fObject; + MFPT fToCall; +}; + +#if defined(__GNUC__) || (! defined(_AIX) && ! defined(__hpux) && ! defined(__sun)) +XERCES_TEMPLATE_EXTERN template class XMLUTIL_EXPORT ArrayJanitor; +XERCES_TEMPLATE_EXTERN template class XMLUTIL_EXPORT ArrayJanitor; +#endif + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/KVStringPair.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/KVStringPair.hpp new file mode 100644 index 000000000000..aeb787ae15fc --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/KVStringPair.hpp @@ -0,0 +1,223 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_KVSTRINGPAIR_HPP) +#define XERCESC_INCLUDE_GUARD_KVSTRINGPAIR_HPP + +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides a commonly used data structure, which is that of +// a pair of strings which represent a 'key=value' type mapping. It works +// only in terms of XMLCh type raw strings. +// +class XMLUTIL_EXPORT KVStringPair : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + KVStringPair(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + KVStringPair + ( + const XMLCh* const key + , const XMLCh* const value + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + KVStringPair + ( + const XMLCh* const key + , const XMLCh* const value + , const XMLSize_t valueLength + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + KVStringPair + ( + const XMLCh* const key + , const XMLSize_t keyLength + , const XMLCh* const value + , const XMLSize_t valueLength + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + KVStringPair(const KVStringPair& toCopy); + ~KVStringPair(); + + + // ----------------------------------------------------------------------- + // Getters + // + // We support the + // ----------------------------------------------------------------------- + const XMLCh* getKey() const; + XMLCh* getKey(); + const XMLCh* getValue() const; + XMLCh* getValue(); + + + // ----------------------------------------------------------------------- + // Setters + // ----------------------------------------------------------------------- + void setKey(const XMLCh* const newKey); + void setValue(const XMLCh* const newValue); + void setKey + ( + const XMLCh* const newKey + , const XMLSize_t newKeyLength + ); + void setValue + ( + const XMLCh* const newValue + , const XMLSize_t newValueLength + ); + void set + ( + const XMLCh* const newKey + , const XMLCh* const newValue + ); + void set + ( + const XMLCh* const newKey + , const XMLSize_t newKeyLength + , const XMLCh* const newValue + , const XMLSize_t newValueLength + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(KVStringPair) + +private : + // unimplemented: + + KVStringPair& operator=(const KVStringPair&); + // ----------------------------------------------------------------------- + // Private data members + // + // fKey + // The string that represents the key field of this object. + // + // fKeyAllocSize + // The amount of memory allocated for fKey. + // + // fValue + // The string that represents the value of this pair object. + // + // fValueAllocSize + // The amount of memory allocated for fValue. + // + // ----------------------------------------------------------------------- + XMLSize_t fKeyAllocSize; + XMLSize_t fValueAllocSize; + XMLCh* fKey; + XMLCh* fValue; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// KVStringPair: Getters +// --------------------------------------------------------------------------- +inline const XMLCh* KVStringPair::getKey() const +{ + return fKey; +} + +inline XMLCh* KVStringPair::getKey() +{ + return fKey; +} + +inline const XMLCh* KVStringPair::getValue() const +{ + return fValue; +} + +inline XMLCh* KVStringPair::getValue() +{ + return fValue; +} + +// --------------------------------------------------------------------------- +// KVStringPair: Setters +// --------------------------------------------------------------------------- +inline void KVStringPair::setKey(const XMLCh* const newKey) +{ + setKey(newKey, XMLString::stringLen(newKey)); +} + +inline void KVStringPair::setValue(const XMLCh* const newValue) +{ + setValue(newValue, XMLString::stringLen(newValue)); +} + +inline void KVStringPair::setKey( const XMLCh* const newKey + , const XMLSize_t newKeyLength) +{ + if (newKeyLength >= fKeyAllocSize) + { + fMemoryManager->deallocate(fKey); //delete [] fKey; + fKey = 0; + fKeyAllocSize = newKeyLength + 1; + fKey = (XMLCh*) fMemoryManager->allocate(fKeyAllocSize * sizeof(XMLCh)); //new XMLCh[fKeyAllocSize]; + } + + memcpy(fKey, newKey, (newKeyLength+1) * sizeof(XMLCh)); // len+1 because of the 0 at the end +} + +inline void KVStringPair::setValue( const XMLCh* const newValue + , const XMLSize_t newValueLength) +{ + if (newValueLength >= fValueAllocSize) + { + fMemoryManager->deallocate(fValue); //delete [] fValue; + fValue = 0; + fValueAllocSize = newValueLength + 1; + fValue = (XMLCh*) fMemoryManager->allocate(fValueAllocSize * sizeof(XMLCh)); //new XMLCh[fValueAllocSize]; + } + + memcpy(fValue, newValue, (newValueLength+1) * sizeof(XMLCh)); // len+1 because of the 0 at the end +} + +inline void KVStringPair::set( const XMLCh* const newKey + , const XMLCh* const newValue) +{ + setKey(newKey, XMLString::stringLen(newKey)); + setValue(newValue, XMLString::stringLen(newValue)); +} + +inline void KVStringPair::set( const XMLCh* const newKey + , const XMLSize_t newKeyLength + , const XMLCh* const newValue + , const XMLSize_t newValueLength) +{ + setKey(newKey, newKeyLength); + setValue(newValue, newValueLength); +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/KeyRefPair.c b/src/libs/xerces-c/msvc/include/xercesc/util/KeyRefPair.c new file mode 100644 index 000000000000..ce062fa949ee --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/KeyRefPair.c @@ -0,0 +1,113 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// KeyRefPair: Constructors and Destructor +// --------------------------------------------------------------------------- +template KeyRefPair::KeyRefPair() +{ +} + +template KeyRefPair:: +KeyRefPair(TKey* key, TValue* value) : + + fKey(key) + , fValue(value) +{ +} + +template KeyRefPair:: +KeyRefPair(const KeyRefPair* toCopy) : + + fKey(toCopy->fKey) + , fValue(toCopy->fValue) +{ +} + +template KeyRefPair:: +KeyRefPair(const KeyRefPair& toCopy) : + + fKey(toCopy.fKey) + , fValue(toCopy.fValue) +{ +} + + +template KeyRefPair::~KeyRefPair() +{ +} + + +// --------------------------------------------------------------------------- +// KeyRefPair: Getters +// --------------------------------------------------------------------------- +template const TKey* +KeyRefPair::getKey() const +{ + return fKey; + +} + +template TKey* KeyRefPair::getKey() +{ + return fKey; +} + +template const TValue* +KeyRefPair::getValue() const +{ + return fValue; +} + +template TValue* KeyRefPair::getValue() +{ + return fValue; +} + + +// --------------------------------------------------------------------------- +// KeyRefPair: Setters +// --------------------------------------------------------------------------- +template TKey* +KeyRefPair::setKey(TKey* newKey) +{ + fKey = newKey; + return fKey; +} + +template TValue* +KeyRefPair::setValue(TValue* newValue) +{ + fValue = newValue; + return fValue; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/KeyRefPair.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/KeyRefPair.hpp new file mode 100644 index 000000000000..3568c2763aae --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/KeyRefPair.hpp @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_KEYREFPAIR_HPP) +#define XERCESC_INCLUDE_GUARD_KEYREFPAIR_HPP + + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class KeyRefPair : public XMemory +{ + public : + // ------------------------------------------------------------------- + // Constructors and Destructor + // ------------------------------------------------------------------- + KeyRefPair(); + KeyRefPair(TKey* key, TValue* value); + KeyRefPair(const KeyRefPair* toCopy); + KeyRefPair(const KeyRefPair& toCopy); + ~KeyRefPair(); + + + // ------------------------------------------------------------------- + // Getters + // ------------------------------------------------------------------- + const TKey* getKey() const; + TKey* getKey(); + const TValue* getValue() const; + TValue* getValue(); + + + // ------------------------------------------------------------------- + // Setters + // ------------------------------------------------------------------- + TKey* setKey(TKey* newKey); + TValue* setValue(TValue* newValue); + + + private : + // unimplemented: + KeyRefPair& operator=(const KeyRefPair&); + // ------------------------------------------------------------------- + // Private data members + // + // fKey + // The object that represents the key of the pair + // + // fValue + // The object that represents the value of the pair + // ------------------------------------------------------------------- + TKey* fKey; + TValue* fValue; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/KeyValuePair.c b/src/libs/xerces-c/msvc/include/xercesc/util/KeyValuePair.c new file mode 100644 index 000000000000..c83bceda3968 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/KeyValuePair.c @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// KeyValuePair: Constructors and Destructor +// --------------------------------------------------------------------------- +template KeyValuePair::KeyValuePair() +{ +} + +template KeyValuePair:: +KeyValuePair(const TKey& key, const TValue& value) : + + fKey(key) + , fValue(value) +{ +} + +template KeyValuePair:: +KeyValuePair(const KeyValuePair& toCopy) : + + fKey(toCopy.fKey) + , fValue(toCopy.fValue) +{ +} + +template KeyValuePair::~KeyValuePair() +{ +} + + +// --------------------------------------------------------------------------- +// KeyValuePair: Getters +// --------------------------------------------------------------------------- +template const TKey& +KeyValuePair::getKey() const +{ + return fKey; + +} + +template TKey& KeyValuePair::getKey() +{ + return fKey; +} + +template const TValue& +KeyValuePair::getValue() const +{ + return fValue; +} + +template TValue& KeyValuePair::getValue() +{ + return fValue; +} + + +// --------------------------------------------------------------------------- +// KeyValuePair: Setters +// --------------------------------------------------------------------------- +template TKey& +KeyValuePair::setKey(const TKey& newKey) +{ + fKey = newKey; + return fKey; +} + +template TValue& +KeyValuePair::setValue(const TValue& newValue) +{ + fValue = newValue; + return fValue; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/KeyValuePair.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/KeyValuePair.hpp new file mode 100644 index 000000000000..2abb171991f4 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/KeyValuePair.hpp @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_KEYVALUEPAIR_HPP) +#define XERCESC_INCLUDE_GUARD_KEYVALUEPAIR_HPP + + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class KeyValuePair : public XMemory +{ + public : + // ------------------------------------------------------------------- + // Constructors and Destructor + // ------------------------------------------------------------------- + KeyValuePair(); + KeyValuePair(const TKey& key, const TValue& value); + KeyValuePair(const KeyValuePair& toCopy); + ~KeyValuePair(); + + + // ------------------------------------------------------------------- + // Getters + // ------------------------------------------------------------------- + const TKey& getKey() const; + TKey& getKey(); + const TValue& getValue() const; + TValue& getValue(); + + + // ------------------------------------------------------------------- + // Setters + // ------------------------------------------------------------------- + TKey& setKey(const TKey& newKey); + TValue& setValue(const TValue& newValue); + + + private : + // unimplemented: + KeyValuePair& operator=(const KeyValuePair&); + + // ------------------------------------------------------------------- + // Private data members + // + // fKey + // The object that represents the key of the pair + // + // fValue + // The object that represents the value of the pair + // ------------------------------------------------------------------- + TKey fKey; + TValue fValue; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/LogicalPath.c b/src/libs/xerces-c/msvc/include/xercesc/util/LogicalPath.c new file mode 100644 index 000000000000..97782abf4393 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/LogicalPath.c @@ -0,0 +1,275 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_WEAVEPATH_CPP) +#define XERCESC_INCLUDE_GUARD_WEAVEPATH_CPP + +/*** + * + * Previously, each PlatformUtils.cpp has its onw copy of the + * method weavePaths(), and almost of them implemented the same logic, + * with few platform specific difference, and unfortunately that + * implementation was wrong. + * + * The only platform specific issue is slash character. + * On all platforms other than Windows, chForwardSlash and chBackSlash + * are considered slash, while on Windows, two additional characters, + * chYenSign and chWonSign are slash as well. + * + * The idea is to maintain a SINGLE copy of this method rather than + * each PlatformUtils.cpp has its own copy, we introduce a new + * method, XMLPlatformUtils::isAnySlash(), to replace the direct checking + * code ( if ( c == chForwardSlash || c == chBackSlash). + * + * With this approach, we might have a performance hit since isAnySlash() + * is so frequently used in this implementation, so we intend to make it + * inline. Then we face a complier issue. + * + * There are two compilation units involved, one is PlatformUtils.cpp and + * the other PlatformUtils.cpp. When PlatformUtils.cp get compiled, + * the weavePath(), remove**Slash() have dependency upon isAnySlash() which + * is in PlatformUtils.cpp (and what is worse, it is inlined), so we have + * undefined/unresolved symbol: isAnySlash() on AIX/xlc_r, Solaris/cc and + * Linux/gcc, while MSVC and HP/aCC are fine with this. + * + * That means we can not place these new methods in PlatformUtils.cpp with + * inlined XMLPlatformUtils::isAnySlash() in PlatformUtils.cpp. + * + * The solution to this is PlatformUtils.cpp will include this file so that + * we have only one copy of these methods while get compiled in PlatformUtils + * inlined isAnySlash(). + * + ***/ +XMLCh* XMLPlatformUtils::weavePaths(const XMLCh* const basePath + , const XMLCh* const relativePath + , MemoryManager* const manager) + +{ + // Create a buffer as large as both parts and empty it + XMLCh* tmpBuf = (XMLCh*) manager->allocate + ( + (XMLString::stringLen(basePath) + + XMLString::stringLen(relativePath) + 2) * sizeof(XMLCh) + );//new XMLCh[XMLString::stringLen(basePath) + XMLString::stringLen(relativePath) + 2]; + *tmpBuf = 0; + + // + // If we have no base path, then just take the relative path as is. + // + if ((!basePath) || (!*basePath)) + { + XMLString::copyString(tmpBuf, relativePath); + return tmpBuf; + } + + // + // Remove anything after the last slash + // + const XMLCh* basePtr = basePath + (XMLString::stringLen(basePath) - 1); + while ((basePtr >= basePath) && ((isAnySlash(*basePtr) == false))) + { + basePtr--; + } + + // There is no relevant base path, so just take the relative part + if (basePtr < basePath) + { + XMLString::copyString(tmpBuf, relativePath); + return tmpBuf; + } + + // + // 1. concatenate the base and relative + // 2. remove all occurrences of "/./" + // 3. remove all occurrences of segment/../ where segment is not ../ + // + + XMLString::subString(tmpBuf, basePath, 0, (basePtr - basePath + 1), manager); + tmpBuf[basePtr - basePath + 1] = 0; + XMLString::catString(tmpBuf, relativePath); + + removeDotSlash(tmpBuf, manager); + + removeDotDotSlash(tmpBuf, manager); + + return tmpBuf; + +} + +// +// Remove all occurrences of './' when it is part of '/./' +// +// Since it could be '.\' or other combination on windows ( eg, '.'+chYanSign) +// we can't make use of patterMatch(). +// +// +void XMLPlatformUtils::removeDotSlash(XMLCh* const path + , MemoryManager* const manager) +{ + if ((!path) || (!*path)) + return; + + XMLCh* srcPtr = XMLString::replicate(path, manager); + int srcLen = XMLString::stringLen(srcPtr); + ArrayJanitor janName(srcPtr, manager); + XMLCh* tarPtr = path; + + while (*srcPtr) + { + if ( 3 <= srcLen ) + { + if ( (isAnySlash(*srcPtr)) && + (chPeriod == *(srcPtr+1)) && + (isAnySlash(*(srcPtr+2))) ) + { + // "\.\x" seen + // skip the first two, and start from the 3rd, + // since "\x" could be another "\." + srcPtr+=2; + srcLen-=2; + } + else + { + *tarPtr++ = *srcPtr++; // eat the current char + srcLen--; + } + } + else if ( 1 == srcLen ) + { + *tarPtr++ = *srcPtr++; + } + else if ( 2 == srcLen) + { + *tarPtr++ = *srcPtr++; + *tarPtr++ = *srcPtr++; + } + + } + + *tarPtr = 0; + + return; +} + +// +// Remove all occurrences of '/segment/../' when segment is not '..' +// +// Cases with extra /../ is left to the underlying file system. +// +void XMLPlatformUtils::removeDotDotSlash(XMLCh* const path + , MemoryManager* const manager) +{ + int pathLen = XMLString::stringLen(path); + XMLCh* tmp1 = (XMLCh*) manager->allocate + ( + (pathLen+1) * sizeof(XMLCh) + );//new XMLCh [pathLen+1]; + ArrayJanitor tmp1Name(tmp1, manager); + + XMLCh* tmp2 = (XMLCh*) manager->allocate + ( + (pathLen+1) * sizeof(XMLCh) + );//new XMLCh [pathLen+1]; + ArrayJanitor tmp2Name(tmp2, manager); + + // remove all "/../" where "" is a complete + // path segment not equal to ".." + int index = -1; + int segIndex = -1; + int offset = 1; + + while ((index = searchSlashDotDotSlash(&(path[offset]))) != -1) + { + // Undo offset + index += offset; + + // Find start of within substring ending at found point. + XMLString::subString(tmp1, path, 0, index-1, manager); + segIndex = index - 1; + while ((segIndex >= 0) && (!isAnySlash(tmp1[segIndex]))) + { + segIndex--; + } + + // Ensure exists and != ".." + if (segIndex >= 0 && + (path[segIndex+1] != chPeriod || + path[segIndex+2] != chPeriod || + segIndex + 3 != index)) + { + + XMLString::subString(tmp1, path, 0, segIndex, manager); + XMLString::subString(tmp2, path, index+3, XMLString::stringLen(path), manager); + + path[0] = 0; + XMLString::catString(path, tmp1); + XMLString::catString(path, tmp2); + + offset = (segIndex == 0 ? 1 : segIndex); + } + else + { + offset += 4; + } + + }// while + +} + +int XMLPlatformUtils::searchSlashDotDotSlash(XMLCh* const srcPath) +{ + if ((!srcPath) || (!*srcPath)) + return -1; + + XMLCh* srcPtr = srcPath; + int srcLen = XMLString::stringLen(srcPath); + int retVal = -1; + + while (*srcPtr) + { + if ( 4 <= srcLen ) + { + if ( (isAnySlash(*srcPtr)) && + (chPeriod == *(srcPtr+1)) && + (chPeriod == *(srcPtr+2)) && + (isAnySlash(*(srcPtr+3))) ) + { + retVal = (srcPtr - srcPath); + break; + } + else + { + srcPtr++; + srcLen--; + } + } + else + { + break; + } + + } // while + + return retVal; + +} + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp new file mode 100644 index 000000000000..d8e5603fa1e6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_INMEMMSGLOADER_HPP) +#define XERCESC_INCLUDE_GUARD_INMEMMSGLOADER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This is a simple in memory message loader implementation. For those +// folks who just want a single language and want something very fast and +// efficient, can basically just provide a couple of arrays of Unicode +// strings that can be looked up by the message id. +// +class XMLUTIL_EXPORT InMemMsgLoader : public XMLMsgLoader +{ +public : + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + InMemMsgLoader(const XMLCh* const msgDomain); + ~InMemMsgLoader(); + + + // ----------------------------------------------------------------------- + // Implementation of the virtual message loader API + // ----------------------------------------------------------------------- + virtual bool loadMsg + ( + const XMLMsgLoader::XMLMsgId msgToLoad + , XMLCh* const toFill + , const XMLSize_t maxChars + ); + + virtual bool loadMsg + ( + const XMLMsgLoader::XMLMsgId msgToLoad + , XMLCh* const toFill + , const XMLSize_t maxChars + , const XMLCh* const repText1 + , const XMLCh* const repText2 = 0 + , const XMLCh* const repText3 = 0 + , const XMLCh* const repText4 = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual bool loadMsg + ( + const XMLMsgLoader::XMLMsgId msgToLoad + , XMLCh* const toFill + , const XMLSize_t maxChars + , const char* const repText1 + , const char* const repText2 = 0 + , const char* const repText3 = 0 + , const char* const repText4 = 0 + , MemoryManager * const manager = XMLPlatformUtils::fgMemoryManager + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + InMemMsgLoader(); + InMemMsgLoader(const InMemMsgLoader&); + InMemMsgLoader& operator=(const InMemMsgLoader&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fMsgDomain + // This is the message domain that we are for loading message from. + // ----------------------------------------------------------------------- + XMLCh* fMsgDomain; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp new file mode 100644 index 000000000000..08fdabc86b56 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp @@ -0,0 +1,1501 @@ +// ---------------------------------------------------------------- +// This file was generated from the XML error message source. +// so do not edit this file directly!! +// ---------------------------------------------------------------- + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +const XMLCh gXMLErrArray[][128] = +{ + { 0x0057,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } + , { 0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0062,0x0065,0x0065,0x006E,0x0020,0x0064,0x0065,0x0063, + 0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0062,0x0065,0x0065,0x006E,0x0020,0x0064,0x0065, + 0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0058,0x004D,0x004C,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E, + 0x0020,0x006F,0x0072,0x0020,0x006D,0x0061,0x006E,0x0075,0x0061,0x006C,0x006C,0x0079,0x0020,0x0073,0x0065,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0072,0x0061,0x0064,0x0069,0x0063,0x0074,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x0061,0x0075, + 0x0074,0x006F,0x002D,0x0073,0x0065,0x006E,0x0073,0x0065,0x0064,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x003B,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0069,0x006E,0x0067,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0061,0x0020,0x0063,0x006F, + 0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0062,0x0075,0x0074,0x0020,0x0077,0x0061,0x0073,0x0020,0x006E,0x0065,0x0076,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0061,0x006E,0x0020,0x0041, + 0x0054,0x0054,0x004C,0x0049,0x0053,0x0054,0x0020,0x0062,0x0075,0x0074,0x0020,0x0077,0x0061,0x0073,0x0020,0x006E,0x0065,0x0076,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } + , { 0x007B,0x0030,0x007D,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0074,0x0065,0x0078,0x0074,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0072,0x0065,0x0073,0x006F,0x0075,0x0072,0x0063,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0057,0x005F,0x0045,0x006E,0x0064,0x00 } + , { 0x0045,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } + , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E, + 0x0074,0x0020,0x006F,0x0066,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x003B,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x006C,0x0069,0x0073,0x0074,0x002C,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x002C,0x0020, + 0x0061,0x006E,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0061,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } + , { 0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x002D,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020, + 0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } + , { 0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x002D,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061, + 0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006E,0x0061,0x006D, + 0x0065,0x0020,0x006F,0x0072,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020, + 0x006F,0x0072,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072, + 0x0020,0x0061,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076, + 0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0061,0x006E,0x006F,0x006E,0x0079,0x006D,0x006F,0x0075,0x0073,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } + , { 0x0061,0x006E,0x006F,0x006E,0x0079,0x006D,0x006F,0x0075,0x0073,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074, + 0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002C,0x0020,0x0028,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x007C,0x0020, + 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0029,0x003F,0x002C,0x0020,0x0028,0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x0020,0x007C,0x0020,0x006B,0x0065,0x0079,0x0020,0x007C,0x0020,0x006B,0x0065,0x0079,0x0072, + 0x0065,0x0066,0x0029,0x002A,0x0029,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D, + 0x0027,0x003B,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x006C,0x0069,0x0073,0x0074,0x002C,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x002C,0x0020,0x0061,0x006E,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F, + 0x006E,0x0020,0x0061,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x006C,0x0069,0x0073,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074, + 0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006C,0x0069,0x0073,0x0074,0x002C,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x002C,0x0020,0x006F,0x0072,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074, + 0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x006C,0x0069,0x0073,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020, + 0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020, + 0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069, + 0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073, + 0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069, + 0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0066,0x006F, + 0x0072,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069, + 0x006F,0x006E,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069, + 0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0027,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0027,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074, + 0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0064,0x0020,0x0074,0x006F, + 0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0055,0x0052,0x0049,0x00 } + , { 0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x003A,0x007B,0x0031,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079, + 0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D, + 0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0043,0x006F,0x006E, + 0x0074,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0043,0x006F, + 0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0066,0x0069, + 0x0078,0x0065,0x0064,0x0020,0x0061,0x006E,0x0064,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020, + 0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006F,0x0070,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020, + 0x006F,0x006E,0x0063,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0073,0x0063,0x006F,0x0070,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0027,0x0074, + 0x0079,0x0070,0x0065,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E, + 0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x003A,0x007B,0x0031,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020, + 0x0027,0x007B,0x0032,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0066,0x0069,0x0078,0x0065, + 0x0064,0x0020,0x0061,0x006E,0x0064,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x007B,0x0030,0x007D,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0027,0x0074,0x0079,0x0070, + 0x0065,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x002F,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078, + 0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006F,0x0072,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020, + 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x006F,0x0072, + 0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x00 } + , { 0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0064,0x0073, + 0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0066,0x0069,0x006E,0x0061,0x006C,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065, + 0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0065,0x0072,0x006D,0x0069,0x0074,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0061,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0069,0x006E, + 0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020, + 0x0068,0x0061,0x0076,0x0065,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0063,0x0061,0x006E, + 0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0062,0x0079,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069, + 0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069, + 0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C, + 0x0065,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069, + 0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C, + 0x0065,0x0078,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x00 } + , { 0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0069,0x0074,0x0073,0x0020,0x006F,0x0077, + 0x006E,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x002C,0x0020,0x006C,0x0069,0x0073,0x0074,0x002C,0x0020,0x006F,0x0072,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E, + 0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0062,0x006C,0x006F,0x0063,0x006B,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x00 } + , { 0x0066,0x0069,0x006E,0x0061,0x006C,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0070,0x0061,0x0072,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065, + 0x0020,0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0068,0x0065,0x0061,0x0064,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020,0x0064,0x006F,0x0065,0x0073, + 0x0020,0x006E,0x006F,0x0074,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x006C, + 0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0068,0x0065,0x0061,0x0064,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069, + 0x006F,0x006E,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E, + 0x0063,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0073,0x0063,0x006F,0x0070,0x0065,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027, + 0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072, + 0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0069,0x006E,0x006C,0x0069,0x006E,0x0065,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074, + 0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0027,0x0066,0x006F,0x0072,0x006D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0074,0x0079,0x0070,0x0065,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x003A, + 0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0064,0x0065,0x0072,0x0069,0x0076,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0062,0x0079,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0066,0x006F,0x0072,0x0062,0x0069,0x0064, + 0x0064,0x0065,0x006E,0x0020,0x0062,0x0079,0x0020,0x0065,0x0069,0x0074,0x0068,0x0065,0x0072,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0067,0x006C, + 0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x00 } + , { 0x0064,0x0065,0x0072,0x0069,0x0076,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0062,0x0079,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065, + 0x006E,0x0020,0x0062,0x0079,0x0020,0x0065,0x0069,0x0074,0x0068,0x0065,0x0072,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0067,0x006C,0x006F,0x0062, + 0x0061,0x006C,0x006C,0x0079,0x00 } + , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0043,0x006F,0x006E,0x0074,0x0065, + 0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070, + 0x0065,0x00 } + , { 0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074, + 0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x003B,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027, + 0x007B,0x0032,0x007D,0x0027,0x00 } + , { 0x0027,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x004C,0x006F,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020, + 0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0064,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074, + 0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0061,0x0074,0x0020,0x006D,0x006F,0x0073,0x0074,0x0020,0x006F,0x006E,0x0065,0x0020,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006D,0x0061,0x0074, + 0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002C,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x003F,0x0029,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x0067,0x006C,0x006F,0x0062, + 0x0061,0x006C,0x0020,0x007B,0x0031,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x006C,0x006F,0x0063,0x0061, + 0x006C,0x0020,0x007B,0x0031,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x0067,0x006C, + 0x006F,0x0062,0x0061,0x006C,0x0020,0x007B,0x0031,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x006C,0x006F, + 0x0063,0x0061,0x006C,0x0020,0x007B,0x0031,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } + , { 0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067, + 0x0072,0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0061,0x006E,0x0079,0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074, + 0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x007B,0x0030,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006E,0x0061, + 0x006D,0x0065,0x00 } + , { 0x0063,0x0069,0x0072,0x0063,0x0075,0x006C,0x0061,0x0072,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x003A,0x007B,0x0031,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065, + 0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0063,0x0065,0x0020,0x006F,0x0072,0x0020,0x0061,0x006C,0x0073,0x006F,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0061,0x0073,0x0020,0x007B,0x0032,0x007D,0x00 } + , { 0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x007B,0x0030,0x007D,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E, + 0x0020,0x006F,0x006E,0x0063,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020, + 0x0066,0x0061,0x0063,0x0065,0x0074,0x003B,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x0063,0x006F,0x006C,0x006C,0x0061,0x0070,0x0073,0x0065,0x0027,0x00 } + , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073, + 0x0074,0x0020,0x0062,0x0065,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063, + 0x0065,0x0020,0x006F,0x0066,0x0020,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x00 } + , { 0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E, + 0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0069,0x0066,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0069,0x006E,0x0020,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0020,0x0064,0x0065,0x0063, + 0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0063,0x006F,0x006E, + 0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x0066,0x0020,0x0069,0x0074,0x0073,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065, + 0x0064,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0049,0x0044,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x002F,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006F,0x0066,0x0020,0x004E,0x004F,0x0054,0x0041,0x0054, + 0x0049,0x004F,0x004E,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070, + 0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0027,0x0073,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0020,0x006D, + 0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x006D,0x0070,0x0074,0x0069,0x0061,0x0062,0x006C,0x0065,0x00 } + , { 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0068,0x0061,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0063,0x006F, + 0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0062,0x0075,0x0074,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x006F,0x0072, + 0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0065,0x006D,0x0070,0x0074,0x0069,0x0061,0x0062,0x006C,0x0065,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0073,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0061,0x006E, + 0x0064,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0062,0x0065,0x0020,0x006D, + 0x0069,0x0078,0x0065,0x0064,0x0020,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x002D,0x006F,0x006E,0x006C,0x0079,0x00 } + , { 0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064, + 0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0064,0x0065,0x0072,0x0069,0x0076,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0062,0x0079,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074, + 0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065,0x006E,0x0020,0x0062,0x0079,0x0020,0x0065,0x0069,0x0074,0x0068,0x0065,0x0072,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070, + 0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x00 } + , { 0x0069,0x0074,0x0065,0x006D,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0076,0x0061,0x0072,0x0069, + 0x0065,0x0074,0x0079,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x006F,0x006D,0x0069,0x0063,0x0020,0x006F,0x0072,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x0077,0x0068,0x0065,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x006D,0x0065, + 0x006D,0x0062,0x0065,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0074,0x006F,0x006D,0x0069,0x0063,0x00 } + , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0061,0x006C,0x006C,0x002C,0x0020,0x0063,0x0068,0x006F,0x0069,0x0063, + 0x0065,0x002C,0x0020,0x006F,0x0072,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073, + 0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002C,0x0020,0x0028,0x0028,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x007C, + 0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0029,0x002A,0x002C,0x0020,0x0061,0x006E,0x0079,0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x003F,0x0029,0x0029,0x00 } + , { 0x0074,0x006F,0x0070,0x002D,0x006C,0x0065,0x0076,0x0065,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0061,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x006D,0x0075,0x0073, + 0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0027,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072, + 0x0073,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0027,0x007B,0x0031,0x007D,0x003A,0x007B,0x0032,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020, + 0x006F,0x006E,0x006C,0x0079,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0061,0x0073,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0063,0x006F, + 0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074, + 0x0069,0x0074,0x0075,0x0074,0x0069,0x006E,0x0067,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C, + 0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0061,0x006E, + 0x0064,0x0020,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0031,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070, + 0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0061,0x0078,0x004F, + 0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0030,0x0020,0x006F,0x0072,0x0020,0x0031,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020, + 0x0069,0x006E,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0069,0x006E,0x0074,0x0065,0x0072,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075, + 0x0074,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x0062,0x006C,0x0065,0x00 } + , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x006E,0x0079,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075, + 0x0074,0x0065,0x0073,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0069,0x006E,0x0063,0x006F,0x006D,0x0070,0x0061,0x0074,0x0069,0x0062,0x006C,0x0065,0x0020,0x0075,0x0073, + 0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0064,0x0065,0x0072, + 0x0069,0x0076,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068, + 0x0065,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061, + 0x0073,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x0066,0x0069,0x0078, + 0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0072,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0076, + 0x0061,0x006C,0x0075,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020, + 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0072,0x0065,0x0073,0x0070,0x0065,0x0063,0x0074,0x0020,0x0074,0x006F,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020, + 0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x006F,0x0072,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x006F,0x0020, + 0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x0073,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068, + 0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0062,0x0075,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0074, + 0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0069, + 0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065, + 0x006E,0x0074,0x0020,0x0075,0x0073,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x0066, + 0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0075,0x0073,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x0070, + 0x0072,0x006F,0x0068,0x0069,0x0062,0x0069,0x0074,0x0065,0x0064,0x0027,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0074, + 0x0079,0x0070,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0063,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006F,0x0072,0x0020,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0065, + 0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020, + 0x0074,0x0068,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x003B,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0061, + 0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } + , { 0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072, + 0x0065,0x006E,0x0074,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020, + 0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069, + 0x006E,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x0072,0x0069,0x0067,0x0069,0x006E,0x0061,0x006C,0x0020,0x0074,0x0079,0x0070,0x0065, + 0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } + , { 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061, + 0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F, + 0x006E,0x00 } + , { 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066, + 0x0069,0x006E,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x0072,0x0069,0x0067,0x0069,0x006E,0x0061,0x006C,0x0020,0x0074,0x0079,0x0070, + 0x0065,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } + , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0061,0x006E,0x0064, + 0x0020,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0031,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x006E,0x0064,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073, + 0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0062,0x0065,0x0069,0x006E,0x0067,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067, + 0x0020,0x0074,0x006F,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0020,0x006D,0x0061,0x0079,0x0020,0x006F, + 0x006E,0x006C,0x0079,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x006F,0x0020,0x0069,0x0074,0x0073,0x0065,0x006C,0x0066, + 0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066, + 0x0069,0x006E,0x0065,0x0020,0x006D,0x0061,0x0079,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020, + 0x0074,0x006F,0x0020,0x0069,0x0074,0x0073,0x0065,0x006C,0x0066,0x00 } + , { 0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E, + 0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x003A,0x007B,0x0031,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020, + 0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0068, + 0x0061,0x0073,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073, + 0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002C,0x0020,0x0073,0x0065,0x006C,0x0065,0x0063,0x0074,0x006F,0x0072,0x002C,0x0020,0x0066,0x0069,0x0065, + 0x006C,0x0064,0x002B,0x0029,0x00 } + , { 0x006B,0x0065,0x0079,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0072,0x0065,0x0066, + 0x0065,0x0072,0x0073,0x0020,0x0074,0x006F,0x0020,0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x006B,0x0065,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0066,0x0069,0x0065,0x006C,0x0064,0x0020,0x0063,0x0061,0x0072,0x0064,0x0069,0x006E,0x0061,0x006C,0x0069,0x0074,0x0069,0x0065,0x0073,0x0020,0x0066,0x006F,0x0072,0x0020,0x006B,0x0065,0x0079,0x0072,0x0065,0x0066,0x0020,0x0027,0x007B,0x0030,0x007D, + 0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x006B,0x0065,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x00 } + , { 0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x006F,0x0072,0x0020,0x0065,0x006D,0x0070,0x0074, + 0x0079,0x00 } + , { 0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x006E,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020, + 0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0065,0x0074,0x0020,0x006F,0x0072,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0073,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0066,0x0069,0x0078,0x0065, + 0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0066,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006F,0x0066,0x0020,0x0049,0x0044,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0072,0x0020,0x0074,0x0079, + 0x0070,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0049,0x0044,0x0020,0x0061,0x006E,0x0064,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020, + 0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x002F,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0074, + 0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0061,0x0020, + 0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0049,0x0044,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0074, + 0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0077,0x0069,0x0074,0x0068, + 0x0020,0x0061,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0049,0x0044,0x00 } + , { 0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x004E,0x0061,0x006D,0x0065, + 0x0073,0x0070,0x0061,0x0063,0x0065,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x003B,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020, + 0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0062,0x0073,0x0065,0x006E,0x0074,0x0020,0x006F,0x0072,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x006E,0x006F,0x006E,0x002D,0x0065,0x006D,0x0070,0x0074,0x0079, + 0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x007B,0x0030,0x007D,0x00 } + , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0062,0x0065,0x0065,0x006E,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0064,0x0020,0x006F,0x0072,0x0020, + 0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x00 } + , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x006F, + 0x0075,0x0074,0x0020,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0069,0x0073,0x0020,0x0070,0x0061,0x0072,0x0074,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0063,0x006F, + 0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0069,0x0074,0x0075, + 0x0074,0x0065,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x006E,0x0074,0x0069,0x0072,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069, + 0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0061,0x0070,0x0070,0x0069,0x006E,0x0066,0x006F, + 0x0020,0x0061,0x006E,0x0064,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0066,0x0020,0x0058,0x004D,0x004C,0x0020,0x0053,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0064,0x006F,0x0063, + 0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0027,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0027,0x00 } + , { 0x0063,0x0069,0x0072,0x0063,0x0075,0x006C,0x0061,0x0072,0x0020,0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D, + 0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0058,0x004D,0x004C,0x0020, + 0x0053,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027, + 0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0068,0x0074,0x0074,0x0070,0x003A,0x002F,0x002F,0x0077,0x0077,0x0077,0x002E,0x0077,0x0033,0x002E,0x006F,0x0072,0x0067,0x002F,0x0032,0x0030,0x0030,0x0031,0x002F,0x0058, + 0x004D,0x004C,0x0053,0x0063,0x0068,0x0065,0x006D,0x0061,0x002D,0x0069,0x006E,0x0073,0x0074,0x0061,0x006E,0x0063,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0066,0x0069,0x0078,0x002D,0x0075,0x0070,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0070,0x0065,0x0072,0x0066,0x006F,0x0072,0x006D,0x0065, + 0x0064,0x0020,0x006F,0x006E,0x0020,0x0044,0x004F,0x004D,0x0020,0x004C,0x0065,0x0076,0x0065,0x006C,0x0020,0x0031,0x0020,0x006E,0x006F,0x0064,0x0065,0x00 } + , { 0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0061,0x006E,0x0079,0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074, + 0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069, + 0x006F,0x006E,0x00 } + , { 0x0061,0x006E,0x0079,0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062, + 0x0079,0x0020,0x006F,0x0074,0x0068,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } + , { 0x0045,0x005F,0x0045,0x006E,0x0064,0x00 } + , { 0x0046,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } + , { 0x0070,0x0061,0x0072,0x0073,0x0065,0x0072,0x0020,0x0068,0x0061,0x0073,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0065,0x0078,0x0070,0x0061,0x006E,0x0073,0x0069,0x006F,0x006E,0x0073,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065, + 0x006E,0x0074,0x003B,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0069,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x006C,0x0069,0x006D,0x0069,0x0074,0x0020,0x0069,0x006D,0x0070,0x006F,0x0073,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0074,0x0068, + 0x0065,0x0020,0x0061,0x0070,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x0020,0x006F,0x0072,0x0020,0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0072,0x0065,0x0070,0x0065,0x0074,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0069,0x006E,0x0020,0x006D, + 0x0069,0x0078,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x00 } + , { 0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063, + 0x0074,0x0065,0x0064,0x00 } + , { 0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0073,0x0069,0x0067,0x006E,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x003C,0x0021,0x002D,0x002D,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0075,0x0072,0x0065,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0076,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x002C,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x002C,0x0020,0x006F,0x0072,0x0020,0x0073,0x0074,0x0061,0x006E, + 0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0058,0x004D,0x004C,0x0020,0x0076,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0075,0x006E,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0058,0x004D,0x004C,0x0020,0x0076,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0058,0x004D,0x004C,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0058,0x004D,0x004C,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065, + 0x0064,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0069,0x006F,0x006E, + 0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0030,0x0078,0x007B,0x0030,0x007D,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0074,0x0061,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x0074,0x0061,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006F, + 0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0074,0x0061,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0074,0x0061,0x0067,0x0020,0x006E,0x0061,0x006D,0x0065,0x002C,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x002C,0x0020,0x0050,0x0049,0x002C,0x0020,0x006F,0x0072,0x0020, + 0x006F,0x0074,0x0068,0x0065,0x0072,0x0020,0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0027, + 0x0073,0x0020,0x0065,0x006E,0x0064,0x0020,0x0074,0x0061,0x0067,0x00 } + , { 0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x0020,0x006F,0x0072,0x0020,0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0065, + 0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0044,0x004F,0x0043,0x0054,0x0059,0x0050,0x0045,0x0020,0x0064,0x0065, + 0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0071,0x0075,0x006F,0x0074,0x0065,0x0064,0x0020,0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0070,0x0075,0x0062,0x006C,0x0069,0x0063,0x0020,0x0069,0x0064,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0030,0x0078,0x007B,0x0030,0x007D,0x0020,0x0069,0x006E,0x0020,0x0070,0x0075,0x0062,0x006C,0x0069,0x0063,0x0020,0x0069, + 0x0064,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0044,0x004F,0x0043,0x0054,0x0059,0x0050,0x0045,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0030,0x0078,0x007B,0x0030,0x007D,0x0020,0x0069,0x006E,0x0020,0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C, + 0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0030,0x0078,0x007B,0x0031,0x007D,0x0020,0x0069,0x006E,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074, + 0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0054,0x0045,0x0058,0x0054,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073, + 0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x00 } + , { 0x0063,0x006F,0x006E,0x0064,0x0069,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0073,0x0075,0x0062, + 0x0073,0x0065,0x0074,0x00 } + , { 0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0075,0x006E,0x0070,0x0061,0x0072,0x0073,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020, + 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027, + 0x00 } + , { 0x0072,0x0065,0x0063,0x0075,0x0072,0x0073,0x0069,0x0076,0x0065,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0065,0x0078,0x0070,0x0061,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0070,0x0061,0x0072,0x0074,0x0069,0x0061,0x006C,0x0020,0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x0020,0x0069,0x006E,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020, + 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0027,0x002A,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0074,0x0065,0x0072,0x006D,0x0069, + 0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0070,0x0072,0x006F,0x0070,0x0065,0x0072,0x006C,0x0079,0x00 } + , { 0x0073,0x0079,0x0073,0x0074,0x0065,0x006D,0x0020,0x006F,0x0072,0x0020,0x0070,0x0075,0x0062,0x006C,0x0069,0x0063,0x0020,0x0069,0x0064,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x002C,0x0027,0x002C,0x0020,0x0027,0x007C,0x0027,0x002C,0x0020,0x006F,0x0072,0x0020,0x0027,0x0029,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x007C,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0029,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x002C,0x0027,0x002C,0x0020,0x0027,0x007C,0x0027,0x002C,0x0020,0x006F,0x0072,0x0020,0x0027,0x0029,0x0027,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E, + 0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0075,0x006D,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072, + 0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x007C,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0029,0x0027,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x006C,0x0069,0x0074,0x0065,0x0072,0x0061,0x006C,0x00 } + , { 0x0075,0x006E,0x006D,0x0061,0x0074,0x0063,0x0068,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x0074,0x0061,0x0067,0x0020,0x0064,0x0065,0x0074,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0027,0x0028,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065, + 0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0027,0x003C,0x0027,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0061,0x0074,0x0074, + 0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x0075,0x0073,0x0065,0x0020,0x0026,0x006C,0x0074,0x003B,0x0020,0x0069,0x006E,0x0073,0x0074,0x0065,0x0061, + 0x0064,0x00 } + , { 0x006C,0x0065,0x0061,0x0064,0x0069,0x006E,0x0067,0x0020,0x0073,0x0075,0x0072,0x0072,0x006F,0x0067,0x0061,0x0074,0x0065,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020, + 0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0061,0x0020,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0073,0x0065,0x0063,0x006F,0x006E,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065, + 0x0072,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x005D,0x005D,0x003E,0x0027,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x006F,0x0020,0x0065,0x006E,0x0064,0x0020,0x0063,0x006F,0x006E,0x0064, + 0x0069,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0049,0x004E,0x0043,0x004C,0x0055,0x0044,0x0045,0x0020,0x006F,0x0072,0x0020,0x0049,0x0047,0x004E,0x004F,0x0052,0x0045,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020, + 0x0070,0x006F,0x0069,0x006E,0x0074,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x005B,0x0027,0x0020,0x0074,0x006F,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0020,0x0049,0x004E,0x0043,0x004C,0x0055,0x0044,0x0045,0x0020,0x006F,0x0072,0x0020,0x0049, + 0x0047,0x004E,0x004F,0x0052,0x0045,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0070,0x0072,0x006F,0x0070,0x0061,0x0067,0x0061,0x0074,0x0065,0x0064,0x0020,0x006F,0x0075,0x0074,0x0020,0x006F,0x0066,0x0020, + 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x002F,0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x00 } + , { 0x0075,0x006E,0x006D,0x0061,0x0074,0x0063,0x0068,0x0065,0x0064,0x0020,0x0027,0x005D,0x0027,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0064,0x0065,0x0074,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x006E,0x006F,0x0074, + 0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0069,0x006E,0x0073,0x0069,0x0064,0x0065,0x0020,0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x0020,0x0069,0x006E,0x0020,0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020, + 0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x00 } + , { 0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0070,0x0072,0x006F,0x0070,0x0061,0x0067,0x0061,0x0074,0x0065,0x0064,0x0020,0x006F,0x0075,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E, + 0x0074,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0074,0x006F,0x0020,0x006D,0x0069,0x0073,0x0063,0x0065,0x006C,0x006C,0x0061,0x006E,0x0065,0x006F,0x0075,0x0073,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0026,0x0023,0x0020,0x0074,0x006F,0x0020,0x0062,0x0065,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0061,0x0020,0x006E,0x0075,0x006D, + 0x0065,0x0072,0x0069,0x0063,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0027,0x005B,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0027,0x005D,0x005D,0x003E,0x0027,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0063,0x0068, + 0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0064,0x0061,0x0074,0x0061,0x00 } + , { 0x0027,0x002D,0x002D,0x0027,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074, + 0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x004E,0x0044,0x0041,0x0054,0x0041,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x004E,0x0044,0x0041,0x0054,0x0041,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0066,0x006F,0x0072,0x0020,0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069, + 0x0074,0x0069,0x0065,0x0073,0x00 } + , { 0x0068,0x0065,0x0078,0x0020,0x0072,0x0061,0x0064,0x0069,0x0078,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074, + 0x0020,0x0075,0x0073,0x0065,0x0020,0x0027,0x0078,0x0027,0x002C,0x0020,0x006E,0x006F,0x0074,0x0020,0x0027,0x0058,0x0027,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0073,0x0065,0x0065,0x006E,0x00 } + , { 0x0058,0x004D,0x004C,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x006F,0x0072, + 0x0064,0x0065,0x0072,0x003A,0x0020,0x0076,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x002C,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x002C,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x00 } + , { 0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0072,0x0065,0x0064,0x0020, + 0x0074,0x006F,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0058,0x004D,0x004C,0x0020,0x006F,0x0072,0x0020,0x0054,0x0045,0x0058,0x0054,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020, + 0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x003C,0x003F,0x0078,0x006D,0x006C,0x0020,0x0027,0x002C,0x0020,0x006E,0x006F,0x0074,0x0020,0x0027,0x003C,0x003F,0x0058,0x004D,0x004C,0x0020,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x006C,0x0069,0x0074,0x0065,0x0072,0x0061,0x006C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0072,0x0020,0x0070,0x0075, + 0x0062,0x006C,0x0069,0x0063,0x002F,0x0073,0x0079,0x0073,0x0074,0x0065,0x006D,0x0020,0x0069,0x0064,0x00 } + , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0064,0x0069,0x0067,0x0069,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0068,0x0065,0x0020, + 0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0072,0x0061,0x0064,0x0069,0x0078,0x00 } + , { 0x0069,0x006E,0x0070,0x0075,0x0074,0x0020,0x0065,0x006E,0x0064,0x0065,0x0064,0x0020,0x0062,0x0065,0x0066,0x006F,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0065,0x0064,0x0020,0x0074,0x0061,0x0067,0x0073, + 0x0020,0x0077,0x0065,0x0072,0x0065,0x0020,0x0065,0x006E,0x0064,0x0065,0x0064,0x003B,0x0020,0x006C,0x0061,0x0073,0x0074,0x0020,0x0074,0x0061,0x0067,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0065,0x0064,0x0020,0x0069,0x0073,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x00 } + , { 0x006E,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x00 } + , { 0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0064,0x0020,0x0074,0x006F, + 0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0055,0x0052,0x0049,0x00 } + , { 0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0061,0x006E,0x0064,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x006E,0x0064,0x0020,0x0074,0x0061,0x0067,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x0069,0x006E,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065, + 0x0072,0x0065,0x006E,0x0074,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0069,0x0065,0x0073,0x00 } + , { 0x0058,0x004D,0x004C,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x006F,0x0075,0x0074,0x0073,0x0069,0x0064,0x0065,0x0020,0x0074,0x0068, + 0x0065,0x0020,0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0074,0x0072,0x0061,0x0069,0x006C,0x0069,0x006E,0x0067,0x0020,0x0073,0x0075,0x0072,0x0072,0x006F,0x0067,0x0061,0x0074,0x0065,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061, + 0x0063,0x0074,0x0065,0x0072,0x00 } + , { 0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074, + 0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x0078,0x006D,0x006C,0x0027,0x00 } + , { 0x0058,0x004D,0x004C,0x0020,0x006F,0x0072,0x0020,0x0054,0x0045,0x0058,0x0054,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020, + 0x0061,0x0074,0x0020,0x006C,0x0069,0x006E,0x0065,0x0020,0x0031,0x002C,0x0020,0x0063,0x006F,0x006C,0x0075,0x006D,0x006E,0x0020,0x0031,0x00 } + , { 0x0076,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020, + 0x0058,0x004D,0x004C,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x006C,0x0065,0x0067,0x0061, + 0x006C,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x006D,0x0061,0x0069,0x006E,0x0020,0x0058,0x004D,0x004C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x00 } + , { 0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x0064,0x0020,0x0069,0x006E, + 0x0020,0x0054,0x0045,0x0058,0x0054,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0063,0x006F,0x006C,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0069,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0020,0x0077,0x0068,0x0065,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065, + 0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x0065,0x006E,0x0061,0x0062,0x006C,0x0065,0x0064,0x00 } + , { 0x007B,0x0030,0x007D,0x00 } + , { 0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x004C,0x006F,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x006E,0x0061,0x006D, + 0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x002D,0x006C,0x006F,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0070,0x0061,0x0069,0x0072,0x0073,0x00 } + , { 0x0066,0x0061,0x0074,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0064,0x0075,0x0072,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0073,0x0063,0x0061,0x006E,0x00 } + , { 0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x006F,0x0020,0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072, + 0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E, + 0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0070,0x0061,0x0072,0x0074,0x0069,0x0061,0x006C,0x0020,0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x0020,0x0069,0x006E,0x0020,0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020, + 0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0074,0x0065,0x0078,0x0074,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072, + 0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x006E,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x002D,0x006E, + 0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006D,0x0061,0x0070,0x0070,0x0069,0x006E,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0027,0x0078,0x006D,0x006C,0x006E,0x0073,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0078,0x0070,0x006C,0x0069,0x0063,0x0069,0x0074,0x006C,0x0079, + 0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0020,0x0074,0x006F,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x0078,0x006D,0x006C,0x006E,0x0073,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0078,0x0070, + 0x006C,0x0069,0x0063,0x0069,0x0074,0x006C,0x0079,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0020,0x0074,0x006F,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x00 } + , { 0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0027,0x0078,0x006D,0x006C,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0020,0x0074,0x006F,0x0020,0x006E,0x0061,0x006D, + 0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0074,0x0068,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0069,0x0074,0x0073,0x0020,0x0063,0x0061,0x006E,0x006F,0x006E,0x0069,0x0063,0x0061,0x006C,0x0020,0x006E,0x0061,0x006D, + 0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x0078,0x006D,0x006C,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064, + 0x0020,0x0074,0x006F,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x006F,0x0074,0x0068,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0027,0x0078,0x006D,0x006C,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0027,0x0078,0x006D,0x006C,0x006E,0x0073,0x0027,0x0020,0x0061, + 0x0073,0x0020,0x0069,0x0074,0x0073,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x00 } + , { 0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065, + 0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0044,0x004F,0x0043,0x0054,0x0059, + 0x0050,0x0045,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027, + 0x00 } + , { 0x0044,0x004F,0x0043,0x0054,0x0059,0x0050,0x0045,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0073,0x0065,0x0065,0x006E,0x00 } + , { 0x0066,0x0061,0x006C,0x006C,0x0062,0x0061,0x0063,0x006B,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0064,0x0069,0x0072,0x0065,0x0063,0x0074,0x0020,0x0063,0x0068, + 0x0069,0x006C,0x0064,0x0020,0x006F,0x0066,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0077,0x0069,0x0074,0x0068,0x006F,0x0075,0x0074,0x0020,0x0027,0x0068,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072, + 0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0058,0x0050,0x006F,0x0069,0x006E,0x0074,0x0065,0x0072,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069, + 0x0066,0x0069,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x003B,0x0020,0x0058,0x0050,0x006F,0x0069,0x006E,0x0074,0x0065,0x0072,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0079,0x0065,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F, + 0x0072,0x0074,0x0065,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0027,0x0070,0x0061,0x0072,0x0073,0x0065,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x003B,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x0074,0x0065,0x0078,0x0074,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0078,0x006D,0x006C,0x0027,0x00 } + , { 0x006D,0x0075,0x006C,0x0074,0x0069,0x0070,0x006C,0x0065,0x0020,0x0066,0x0061,0x006C,0x006C,0x0062,0x0061,0x0063,0x006B,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0069,0x006E,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D, + 0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0066,0x0061,0x0069,0x006C,0x0065,0x0064,0x0020,0x0061,0x006E,0x0064,0x0020,0x006E,0x006F,0x0020,0x0066,0x0061,0x006C,0x006C,0x0062,0x0061,0x0063,0x006B,0x0020,0x0065,0x006C,0x0065,0x006D, + 0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0063,0x0069,0x0072,0x0063,0x0075,0x006C,0x0061,0x0072,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D, + 0x0027,0x00 } + , { 0x0073,0x0065,0x006C,0x0066,0x002D,0x0069,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0061,0x0073,0x0020,0x0061,0x0020,0x0063, + 0x0068,0x0069,0x006C,0x0064,0x0020,0x006F,0x0066,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0064,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x006F,0x006E,0x0066,0x006C,0x0069,0x0063,0x0074,0x0073,0x0020,0x0077, + 0x0069,0x0074,0x0068,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x00 } + , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x006F,0x006E,0x0066,0x006C,0x0069,0x0063,0x0074,0x0073,0x0020,0x0077,0x0069,0x0074, + 0x0068,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x00 } + , { 0x0046,0x005F,0x0045,0x006E,0x0064,0x00 } + +}; +const unsigned int gXMLErrArraySize = 288; + +const XMLCh gXMLValidityArray[][128] = +{ + { 0x0045,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } + , { 0x006E,0x006F,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x00 } + , { 0x006E,0x006F,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020, + 0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0062,0x0075,0x0074,0x0020,0x0077,0x0061, + 0x0073,0x0020,0x006E,0x0065,0x0076,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } + , { 0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0073,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C, + 0x0061,0x0072,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0044,0x004F,0x0043,0x0054,0x0059,0x0050,0x0045,0x00 } + , { 0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x0064,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0063,0x006F, + 0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0049,0x0044,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0023,0x0049,0x004D,0x0050,0x004C,0x0049,0x0045,0x0044,0x0020,0x006F,0x0072,0x0020,0x0023,0x0052, + 0x0045,0x0051,0x0055,0x0049,0x0052,0x0045,0x0044,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0062,0x0065,0x0065,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C, + 0x0061,0x0072,0x0065,0x0064,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0049,0x0044,0x0020, + 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0049,0x0044,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0062,0x0065,0x0065,0x006E,0x0020,0x0075,0x0073,0x0065, + 0x0064,0x00 } + , { 0x0049,0x0044,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0062,0x0075, + 0x0074,0x0020,0x0077,0x0061,0x0073,0x0020,0x006E,0x0065,0x0076,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0073,0x0020,0x0074,0x006F,0x0020,0x0075,0x006E,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065, + 0x0064,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0044,0x004F,0x0043,0x0054,0x0059, + 0x0050,0x0045,0x0020,0x0062,0x0075,0x0074,0x0020,0x0077,0x0061,0x0073,0x0020,0x006E,0x0065,0x0076,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } + , { 0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0063,0x006F,0x006E,0x0074, + 0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0066,0x006F,0x0072, + 0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006F,0x0066,0x0020, + 0x0074,0x0079,0x0070,0x0065,0x0020,0x0045,0x004E,0x0054,0x0049,0x0054,0x0059,0x002F,0x0045,0x004E,0x0054,0x0049,0x0054,0x0049,0x0045,0x0053,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0020,0x0074,0x006F,0x0020, + 0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x002C,0x0020,0x0075,0x006E,0x0070,0x0061,0x0072,0x0073,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0073,0x0020,0x0074,0x006F,0x0020,0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0065, + 0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0049,0x0044,0x002F,0x0049,0x0044,0x0052,0x0045,0x0046,0x002F,0x0049,0x0044,0x0052,0x0045,0x0046,0x0053,0x002F,0x0045, + 0x004E,0x0054,0x0049,0x0054,0x0059,0x002F,0x0045,0x004E,0x0054,0x0049,0x0054,0x0049,0x0045,0x0053,0x002F,0x004E,0x004F,0x0054,0x0041,0x0054,0x0049,0x004F,0x004E,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074, + 0x0061,0x0069,0x006E,0x0020,0x0063,0x006F,0x006C,0x006F,0x006E,0x0020,0x0077,0x0068,0x0065,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x0065,0x006E,0x0061,0x0062,0x006C, + 0x0065,0x0064,0x00 } + , { 0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0027, + 0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006E,0x006F,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0064,0x0061,0x0074,0x0061,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0063,0x006F,0x006E, + 0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065, + 0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0069,0x0074,0x0073,0x0020,0x0074,0x0079,0x0070,0x0065,0x0027,0x0073,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0065,0x006E,0x0075,0x006D, + 0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006C,0x0069,0x0073,0x0074,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020, + 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x004E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x004E,0x004D,0x0054,0x004F,0x004B,0x0045,0x004E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0020,0x006D,0x0075,0x006C,0x0074, + 0x0069,0x0070,0x006C,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0074,0x0068,0x0061, + 0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0069,0x0074,0x0073,0x0020,0x0023,0x0046,0x0049,0x0058,0x0045,0x0044,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027, + 0x007B,0x0032,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0073,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0064,0x0020, + 0x0069,0x006E,0x0020,0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x00 } + , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x007B,0x0031,0x007D,0x0020,0x0063,0x006F,0x006D, + 0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x003B,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x002C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x002C,0x0020,0x0063,0x0068,0x006F,0x0069,0x0063, + 0x0065,0x002C,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x002C,0x0020,0x0061,0x006E,0x0064,0x0020,0x0061,0x006E,0x0079,0x0020,0x0061,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } + , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020, + 0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074, + 0x0065,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x00 } + , { 0x007B,0x0030,0x007D,0x00 } + , { 0x0070,0x0072,0x006F,0x0068,0x0069,0x0062,0x0069,0x0074,0x0065,0x0064,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065, + 0x006E,0x0074,0x00 } + , { 0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0027,0x0078,0x006D,0x006C,0x003A,0x0073,0x0070,0x0061,0x0063,0x0065,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074, + 0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063, + 0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0069,0x006E,0x0073,0x0074,0x0061,0x006E,0x0063,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006F,0x0066,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0061,0x006E,0x0064, + 0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0069,0x006E,0x0020,0x0069,0x0074,0x0073,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E, + 0x0074,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x006E,0x0064,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x0020,0x0066,0x006F,0x0072,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065, + 0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x00 } + , { 0x007B,0x0030,0x007D,0x00 } + , { 0x0027,0x0078,0x0073,0x0069,0x003A,0x006E,0x0069,0x006C,0x0027,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x006E,0x006F,0x006E,0x002D,0x006E,0x0069,0x006C,0x006C,0x0061,0x0062,0x006C, + 0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x0069,0x006C,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x006D, + 0x0070,0x0074,0x0079,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0073,0x0020,0x0066,0x0072, + 0x006F,0x006D,0x0020,0x0069,0x0074,0x0073,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x006E,0x0064,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x0020,0x0066,0x006F,0x0072,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065, + 0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0064,0x0075,0x0072,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0073,0x0063,0x0061,0x006E,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0071,0x0075,0x0061,0x006C,0x0069,0x0066,0x0069,0x0065,0x0064,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x006E,0x0071,0x0075,0x0061,0x006C,0x0069,0x0066,0x0069,0x0065,0x0064,0x00 } + , { 0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x006F,0x0020,0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072, + 0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064, + 0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0068,0x0061, + 0x0073,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069, + 0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0063,0x0068,0x0061,0x006E,0x0067,0x0065,0x0064, + 0x0020,0x0062,0x0079,0x0020,0x006E,0x006F,0x0072,0x006D,0x0061,0x006C,0x0069,0x007A,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x006F,0x0063, + 0x0075,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x006F,0x0063,0x0063,0x0075,0x0072,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E,0x0020,0x0065, + 0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x006C,0x0079,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0065,0x006C, + 0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E, + 0x0074,0x00 } + , { 0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0070,0x0061,0x0072,0x0074,0x0069,0x0061,0x006C,0x0020,0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x0020,0x0069,0x006E,0x0020,0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020, + 0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0074,0x0065,0x0078,0x0074,0x00 } + , { 0x0066,0x0061,0x0069,0x006C,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0076,0x0069,0x006F,0x006C,0x0061,0x0074,0x0065,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x0075,0x006E,0x0069, + 0x0071,0x0075,0x0065,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0069,0x006F,0x006E,0x0020,0x0072,0x0075,0x006C,0x0065,0x0020,0x0069,0x006E,0x0020,0x0069,0x0074, + 0x0073,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x006E,0x0065,0x006E,0x0074,0x0073,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x0027,0x007B,0x0032,0x007D,0x0027,0x00 } + , { 0x0061,0x0062,0x0073,0x0074,0x0072,0x0061,0x0063,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020, + 0x0069,0x006E,0x0020,0x0027,0x0078,0x0073,0x0069,0x003A,0x0074,0x0079,0x0070,0x0065,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x0062,0x0073,0x0074,0x0072,0x0061,0x0063,0x0074,0x003B,0x0020,0x0075,0x0073,0x0065,0x0020,0x006E,0x006F,0x006E,0x002D, + 0x0061,0x0062,0x0073,0x0074,0x0072,0x0061,0x0063,0x0074,0x0020,0x006D,0x0065,0x006D,0x0062,0x0065,0x0072,0x0020,0x006F,0x0066,0x0020,0x0069,0x0074,0x0073,0x0020,0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E, + 0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0069,0x006E,0x0073,0x0074,0x0065,0x0061,0x0064,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x0062,0x0073,0x0074,0x0072,0x0061,0x0063,0x0074,0x003B,0x0020, + 0x0075,0x0073,0x0065,0x0020,0x0027,0x0078,0x0073,0x0069,0x003A,0x0074,0x0079,0x0070,0x0065,0x0027,0x0020,0x0074,0x006F,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0079,0x0020,0x006E,0x006F,0x006E,0x002D,0x0061,0x0062,0x0073,0x0074,0x0072, + 0x0061,0x0063,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0073,0x0074,0x0065,0x0061,0x0064,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0027,0x0078,0x0073,0x0069,0x003A,0x0074,0x0079,0x0070,0x0065,0x0027,0x0020, + 0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0064,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0027,0x0078,0x0073,0x0069,0x003A,0x0074,0x0079,0x0070,0x0065,0x0027,0x0020, + 0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E, + 0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0065,0x0072,0x006D,0x0069,0x0074,0x0020,0x0073,0x0075,0x0062,0x0073,0x0074, + 0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0065,0x0072,0x006D,0x0069,0x0074,0x0020, + 0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0071,0x0075,0x0061,0x006C,0x0069,0x0066,0x0069,0x0065,0x0064,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x006E,0x0071,0x0075,0x0061,0x006C,0x0069,0x0066,0x0069,0x0065,0x0064, + 0x00 } + , { 0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0066,0x0069,0x0065,0x006C,0x0064,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0065,0x0073,0x0020,0x006D, + 0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0077,0x0069,0x0074,0x0068,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0063,0x006F,0x0070,0x0065, + 0x0020,0x006F,0x0066,0x0020,0x0069,0x0074,0x0073,0x0020,0x0073,0x0065,0x006C,0x0065,0x0063,0x0074,0x006F,0x0072,0x003B,0x0020,0x0066,0x0069,0x0065,0x006C,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020, + 0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0066,0x0069,0x0065,0x006C,0x0064,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069, + 0x006E,0x0074,0x0020,0x006B,0x0065,0x0079,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x006E,0x006F,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0065,0x006E,0x006F,0x0075,0x0067,0x0068,0x0020, + 0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x0020,0x0066,0x006F,0x0072,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x006B,0x0065,0x0079,0x0020, + 0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0073,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E, + 0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x006B,0x0065,0x0079,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0065,0x0073,0x0020,0x006E,0x0069,0x006C,0x006C,0x0061,0x0062,0x006C,0x0065,0x0020,0x0065, + 0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0073,0x0020,0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0069,0x0064, + 0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0073,0x0020,0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0069,0x0064, + 0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x006B,0x0065,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x00 } + , { 0x006B,0x0065,0x0079,0x0072,0x0065,0x0066,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0073,0x0020,0x0074,0x006F,0x0020,0x006F,0x0075,0x0074,0x0020,0x006F,0x0066,0x0020,0x0073,0x0063,0x006F,0x0070,0x0065, + 0x0020,0x006B,0x0065,0x0079,0x002F,0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x00 } + , { 0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x006B,0x0065,0x0079,0x0020,0x0066,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074, + 0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x006E,0x006F,0x006E,0x002D,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061, + 0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x006F,0x0074,0x0068,0x0065,0x0072, + 0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0061,0x0070,0x0070,0x0069,0x006E,0x0066,0x006F,0x0020,0x0061,0x006E,0x0064,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0045,0x004D,0x0050,0x0054,0x0059,0x0020,0x0062,0x0075,0x0074,0x0020,0x0068,0x0061, + 0x0073,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006F,0x0066,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x004E,0x004F,0x0054,0x0041,0x0054,0x0049,0x004F,0x004E,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0045,0x004D,0x0050,0x0054,0x0059,0x0020,0x0061,0x006E,0x0064,0x0020,0x0063,0x0061, + 0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x002C,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x0076,0x0065,0x006E,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020, + 0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0073,0x002C,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x0073,0x002C,0x0020,0x0050,0x0049,0x0073,0x002C,0x0020,0x006F,0x0072,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065, + 0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0061,0x0074,0x0074, + 0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x004E,0x004F,0x0054,0x0041,0x0054,0x0049,0x004F,0x004E,0x00 } + , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x006F,0x006E,0x002D,0x0064,0x0069,0x0073,0x0074,0x0069,0x006E,0x0063,0x0074,0x0020,0x0074,0x006F, + 0x006B,0x0065,0x006E,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073, + 0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0020,0x0065,0x0073,0x0063,0x0061,0x0070,0x0065,0x0064,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x00 } + , { 0x0045,0x005F,0x0045,0x006E,0x0064,0x00 } + +}; +const unsigned int gXMLValidityArraySize = 84; + +const XMLCh gXMLExceptArray[][128] = +{ + { 0x0057,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0070,0x0072,0x0069,0x006D,0x0061,0x0072,0x0079,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0065,0x006E,0x0074, + 0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0057,0x005F,0x0045,0x006E,0x0064,0x00 } + , { 0x0046,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } + , { 0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0062,0x0065,0x0079,0x006F,0x006E,0x0064,0x0020,0x0061,0x0072,0x0072,0x0061,0x0079,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0073,0x00 } + , { 0x006E,0x0065,0x0077,0x0020,0x0061,0x0072,0x0072,0x0061,0x0079,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0069,0x0073,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x006C,0x0064, + 0x00 } + , { 0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0062,0x0065,0x0079,0x006F,0x006E,0x0064,0x0020,0x006D,0x0061,0x0078,0x0069,0x006D,0x0075,0x006D,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069, + 0x006E,0x0064,0x0065,0x0078,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0041,0x0074,0x0074,0x0054,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0044,0x0065,0x0066,0x0041,0x0074,0x0074,0x0054,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0062,0x0069,0x0074,0x0020,0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0062,0x0065,0x0079,0x006F,0x006E,0x0064,0x0020,0x0073,0x0065,0x0074,0x0020,0x0073,0x0069,0x007A,0x0065,0x00 } + , { 0x0062,0x0069,0x0074,0x0020,0x0073,0x0065,0x0074,0x0073,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0073,0x0069,0x007A,0x0065,0x0073,0x00 } + , { 0x006E,0x006F,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0073,0x0020,0x0061,0x0076,0x0061,0x0069,0x006C,0x0061,0x0062,0x006C,0x0065,0x00 } + , { 0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x006D,0x0061,0x006E,0x0061,0x0067,0x0065,0x0072,0x0027, + 0x0073,0x0020,0x0070,0x006F,0x006F,0x006C,0x00 } + , { 0x004E,0x0055,0x004C,0x004C,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0065,0x0072,0x00 } + , { 0x0062,0x0069,0x006E,0x0061,0x0072,0x0079,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0068,0x0061,0x0073,0x0020,0x0075,0x006E,0x0061,0x0072,0x0079,0x0020,0x006E,0x006F,0x0064, + 0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x006F,0x0072,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064, + 0x0072,0x0065,0x006E,0x00 } + , { 0x0050,0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0070,0x006F,0x0069,0x006E, + 0x0074,0x00 } + , { 0x0075,0x006E,0x0061,0x0072,0x0079,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0068,0x0061,0x0073,0x0020,0x0062,0x0069,0x006E,0x0061,0x0072,0x0079,0x0020,0x006E,0x006F,0x0064, + 0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0070,0x0061,0x0072,0x0065,0x006E,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x006F,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0020, + 0x006E,0x006F,0x0064,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0073,0x0070,0x0065,0x0063,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0072,0x0065,0x0061,0x0073,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0073,0x0074,0x0061,0x0063,0x006B,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0070,0x006F,0x0070,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0072,0x0065,0x0071,0x0075,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x006F,0x006E,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0073,0x0074, + 0x0061,0x0063,0x006B,0x00 } + , { 0x0070,0x0061,0x0072,0x0065,0x006E,0x0074,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0072,0x0065,0x0071,0x0075,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x006F,0x006E,0x006C, + 0x0079,0x0020,0x006F,0x006E,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x0063,0x006B,0x00 } + , { 0x006E,0x006F,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0069,0x006E,0x0020,0x0065,0x006E,0x0075,0x006D,0x0065,0x0072,0x0061,0x0074,0x006F,0x0072,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0071,0x0075,0x0065,0x0072,0x0079,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0070,0x006F,0x0073,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x006C,0x006F,0x0073,0x0065,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0073,0x0065,0x0065,0x006B,0x0020,0x0074,0x006F,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0073,0x0065,0x0065,0x006B,0x0020,0x0074,0x006F,0x0020,0x0074,0x0068,0x0065,0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x0064,0x0020,0x0070,0x006F,0x0073,0x0069, + 0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0068,0x0061,0x006E,0x0064,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0072,0x0065,0x0061,0x0064,0x0020,0x0064,0x0061,0x0074,0x0061,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0077,0x0072,0x0069,0x0074,0x0065,0x0020,0x0064,0x0061,0x0074,0x0061,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0072,0x0065,0x0073,0x0065,0x0074,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0070,0x006F,0x0073,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0074,0x006F,0x0020,0x0074,0x0068, + 0x0065,0x0020,0x0062,0x0065,0x0067,0x0069,0x006E,0x006E,0x0069,0x006E,0x0067,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0067,0x0065,0x0074,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0073,0x0069,0x007A,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0064,0x0065,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0065,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0070,0x0061,0x0074,0x0068,0x006E, + 0x0061,0x006D,0x0065,0x00 } + , { 0x0070,0x0061,0x0072,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0020,0x0070,0x0072,0x006F,0x0067,0x0072,0x0065,0x0073,0x0073,0x00 } + , { 0x0044,0x004F,0x0043,0x0054,0x0059,0x0050,0x0045,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0077,0x0061,0x0073,0x0020,0x0073,0x0065,0x0065,0x006E,0x0020,0x0062,0x0075,0x0074,0x0020,0x0069,0x006E, + 0x0073,0x0074,0x0061,0x006C,0x006C,0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0020, + 0x0044,0x0054,0x0044,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0044,0x0054,0x0044,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D, + 0x0027,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0069,0x006E,0x0070,0x0075,0x0074,0x00 } + , { 0x007A,0x0065,0x0072,0x006F,0x0020,0x0068,0x0061,0x0073,0x0068,0x0020,0x006D,0x006F,0x0064,0x0075,0x006C,0x0075,0x0073,0x00 } + , { 0x0068,0x0061,0x0073,0x0068,0x0069,0x006E,0x0067,0x0020,0x006B,0x0065,0x0079,0x0020,0x0070,0x0072,0x006F,0x0064,0x0075,0x0063,0x0065,0x0064,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0068,0x0061,0x0073,0x0068,0x00 } + , { 0x006E,0x006F,0x0020,0x0073,0x0075,0x0063,0x0068,0x0020,0x006B,0x0065,0x0079,0x0020,0x0069,0x006E,0x0020,0x0068,0x0061,0x0073,0x0068,0x0020,0x0074,0x0061,0x0062,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0064,0x0065,0x0073,0x0074,0x0072,0x006F,0x0079,0x0020,0x006D,0x0075,0x0074,0x0065,0x0078,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x004E,0x0065,0x0074,0x0041,0x0063,0x0063,0x0065,0x0073,0x0073,0x006F,0x0072,0x00 } + , { 0x004E,0x0065,0x0074,0x0041,0x0063,0x0063,0x0065,0x0073,0x0073,0x006F,0x0072,0x0020,0x0069,0x0073,0x0020,0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0064,0x0065,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0065,0x0020, + 0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x006F,0x0066,0x0020,0x0072,0x0065,0x006D,0x006F,0x0074,0x0065,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0069,0x006E,0x0069,0x0074,0x0069,0x0061,0x006C,0x0069,0x007A,0x0065,0x0020,0x004E,0x0065,0x0074,0x0041,0x0063,0x0063,0x0065,0x0073,0x0073,0x006F,0x0072,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0020,0x0068,0x006F,0x0073,0x0074,0x002F,0x0061,0x0064,0x0064,0x0072,0x0065,0x0073,0x0073,0x0020,0x0027,0x007B,0x0030,0x007D, + 0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x0020,0x0073,0x006F,0x0063,0x006B,0x0065,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0055,0x0052,0x004C,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x006F,0x006E,0x006E,0x0065,0x0063,0x0074,0x0020,0x0073,0x006F,0x0063,0x006B,0x0065,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0055,0x0052,0x004C,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0077,0x0072,0x0069,0x0074,0x0065,0x0020,0x0074,0x006F,0x0020,0x0073,0x006F,0x0063,0x006B,0x0065,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0055,0x0052,0x004C,0x0020,0x0027, + 0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0072,0x0065,0x0061,0x0064,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0073,0x006F,0x0063,0x006B,0x0065,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0055,0x0052,0x004C,0x0020, + 0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0048,0x0054,0x0054,0x0050,0x0020,0x006D,0x0065,0x0074,0x0068,0x006F,0x0064,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072, + 0x0074,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x004E,0x0065,0x0074,0x0041,0x0063,0x0063,0x0065,0x0073,0x0073,0x006F,0x0072,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0069,0x006E,0x0020,0x0070,0x006F,0x006F,0x006C,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0064,0x00 } + , { 0x007A,0x0065,0x0072,0x006F,0x0020,0x0068,0x0061,0x0073,0x0068,0x0020,0x006D,0x006F,0x0064,0x0075,0x006C,0x0075,0x0073,0x00 } + , { 0x0072,0x0065,0x0061,0x0064,0x0065,0x0072,0x0020,0x0069,0x0064,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0061,0x0075,0x0074,0x006F,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0064,0x0065,0x0063,0x006F,0x0064,0x0065,0x0020,0x0066,0x0069,0x0072,0x0073,0x0074,0x0020,0x006C,0x0069,0x006E,0x0065,0x0020,0x0069,0x006E,0x0020,0x0065,0x006E,0x0074,0x0069, + 0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0058,0x004D,0x004C,0x0020,0x006F,0x0072,0x0020,0x0054,0x0045,0x0058,0x0054,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F, + 0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x004E,0x0045,0x004C,0x0020,0x006F,0x0072,0x0020,0x006C,0x0073,0x0065,0x0070,0x00 } + , { 0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0074,0x0020,0x0074,0x0072,0x0061,0x006E,0x0073,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0073,0x0065,0x0072,0x0076,0x0069,0x0063,0x0065,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F, + 0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0020,0x0073,0x006F,0x0075,0x0072,0x0063,0x0065,0x0020,0x006F,0x0066,0x0066,0x0073,0x0065,0x0074,0x0020,0x0069,0x006E,0x0066,0x006F,0x0072,0x006D,0x0061,0x0074,0x0069,0x006F,0x006E, + 0x00 } + , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0070,0x0072,0x006F,0x0076,0x0069,0x0064,0x0065,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0064, + 0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0070,0x0072,0x0069,0x006D,0x0061,0x0072,0x0079,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0065,0x006E,0x0074, + 0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0062,0x0061,0x006C,0x0061,0x006E,0x0063,0x0065,0x0064,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x002F,0x0065,0x006E,0x0064,0x0020,0x0074,0x0061,0x0067,0x0073,0x00 } + , { 0x0063,0x0061,0x006C,0x006C,0x0020,0x0074,0x006F,0x0020,0x0073,0x0063,0x0061,0x006E,0x004E,0x0065,0x0078,0x0074,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073, + 0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x00 } + , { 0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0070,0x0061,0x0073,0x0074,0x0020,0x0074,0x006F,0x0070,0x0020,0x006F,0x0066,0x0020,0x0073,0x0074,0x0061,0x0063,0x006B,0x00 } + , { 0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0073,0x0074,0x0061,0x0063,0x006B,0x00 } + , { 0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x007A,0x0065,0x0072,0x006F,0x0020,0x006D,0x0061,0x0078,0x0020, + 0x0073,0x0069,0x007A,0x0065,0x00 } + , { 0x0075,0x006E,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0072,0x0061,0x0064,0x0069,0x0078,0x003B,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0032,0x002C,0x0020,0x0038,0x002C,0x0020,0x0031, + 0x0030,0x002C,0x0020,0x006F,0x0072,0x0020,0x0031,0x0036,0x00 } + , { 0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0069,0x0073,0x0020,0x0074,0x006F,0x006F,0x0020,0x0073,0x006D,0x0061,0x006C,0x006C,0x00 } + , { 0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0070,0x0061,0x0073,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0073,0x0074,0x0072,0x0069, + 0x006E,0x0067,0x00 } + , { 0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0072,0x0065,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0076,0x0065,0x0072,0x0066,0x006C,0x006F,0x0077,0x0073,0x0020,0x006F,0x0075,0x0074, + 0x0070,0x0075,0x0074,0x0020,0x0062,0x0069,0x006E,0x0061,0x0072,0x0079,0x0020,0x0072,0x0065,0x0073,0x0075,0x006C,0x0074,0x00 } + , { 0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0069,0x0064,0x00 } + , { 0x0063,0x0068,0x0061,0x0072,0x0020,0x0030,0x0078,0x007B,0x0030,0x007D,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0072,0x0065,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0061,0x0062,0x006C,0x0065,0x0020,0x0069,0x006E,0x0020, + 0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0075,0x006C,0x0074,0x0069,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0063,0x006F,0x0064,0x0065,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0020,0x0030,0x0078,0x007B,0x0030,0x007D,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x007B,0x0031, + 0x007D,0x0027,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x006C,0x0065,0x0061,0x0064,0x0069,0x006E,0x0067,0x0020,0x0073,0x0075,0x0072,0x0072,0x006F,0x0067,0x0061,0x0074,0x0065,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C, + 0x0069,0x0064,0x0020,0x0074,0x0072,0x0061,0x0069,0x006C,0x0069,0x006E,0x0067,0x0020,0x0073,0x0075,0x0072,0x0072,0x006F,0x0067,0x0061,0x0074,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x0020,0x0063,0x006F,0x006E,0x0076,0x0065,0x0072,0x0074,0x0065,0x0072,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D, + 0x0027,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x006D,0x0061,0x006C,0x0066,0x006F,0x0072,0x006D,0x0065,0x0064,0x0020,0x0055,0x0052,0x004C,0x00 } + , { 0x0075,0x006E,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0070,0x0072,0x006F,0x0074,0x006F,0x0063,0x006F,0x006C,0x0020,0x0069,0x006E,0x0020,0x0055,0x0052,0x004C,0x00 } + , { 0x0055,0x0052,0x004C,0x0020,0x0070,0x0072,0x006F,0x0074,0x006F,0x0063,0x006F,0x006C,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0075,0x006E,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x00 } + , { 0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0070,0x0072,0x006F,0x0074,0x006F,0x0063,0x006F,0x006C,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x002F,0x002F,0x0027,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0070,0x0072,0x006F,0x0074,0x006F,0x0063,0x006F,0x006C,0x00 } + , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0070,0x0061,0x0072,0x0074,0x0020,0x006F,0x0066,0x0020,0x0055,0x0052,0x004C,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x006C,0x0061,0x0074,0x0069,0x0076,0x0065, + 0x00 } + , { 0x0070,0x006F,0x0072,0x0074,0x0020,0x0066,0x0069,0x0065,0x006C,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0031,0x0036,0x002D,0x0062,0x0069,0x0074,0x0020,0x0064,0x0065,0x0063,0x0069,0x006D,0x0061,0x006C,0x0020,0x006E, + 0x0075,0x006D,0x0062,0x0065,0x0072,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0062,0x0079,0x0074,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0061,0x0074,0x0020,0x0070,0x006F,0x0073,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x007B,0x0030,0x007D,0x0020, + 0x006F,0x0066,0x0020,0x0061,0x0020,0x007B,0x0032,0x007D,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0062,0x0079,0x0074,0x0065,0x0073,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020, + 0x0033,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0069,0x0072,0x0072,0x0065,0x0067,0x0075,0x006C,0x0061,0x0072,0x0020,0x0062,0x0079,0x0074,0x0065,0x0073,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006F,0x0066,0x0020, + 0x0061,0x0020,0x0033,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0062,0x0079,0x0074,0x0065,0x0073,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020, + 0x0034,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0065,0x0064,0x0020,0x0062,0x0079,0x0074,0x0065,0x0020,0x006C,0x0069,0x006D,0x0069,0x0074,0x0020,0x0061,0x0074,0x0020,0x0062,0x0079,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069, + 0x006E,0x0020,0x0061,0x0020,0x007B,0x0031,0x007D,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0062,0x0065,0x0079,0x006F,0x006E,0x0064,0x0020,0x0076,0x0065,0x0063,0x0074,0x006F,0x0072,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0073,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0064,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0077,0x0068,0x0065,0x006E, + 0x0020,0x0072,0x0065,0x0075,0x0073,0x0069,0x006E,0x0067,0x0020,0x0074,0x0068,0x0065,0x0020,0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0072,0x0065,0x0063,0x006F,0x0067,0x006E,0x0069,0x007A,0x0065,0x0072,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } + , { 0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0061,0x0074,0x0020,0x006F,0x0066,0x0066,0x0073,0x0065,0x0074,0x0020,0x007B,0x0030,0x007D,0x0020,0x0069,0x006E,0x0020, + 0x0072,0x0065,0x0067,0x0075,0x006C,0x0061,0x0072,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x006E,0x0075,0x006D,0x0062,0x0065,0x0072,0x00 } + , { 0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0062,0x0061,0x0063,0x006B,0x0073,0x006C,0x0061,0x0073,0x0068,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x003F,0x0027,0x003B,0x0020,0x0027,0x0028,0x003F,0x003A,0x0027,0x002C,0x0020,0x0027,0x0028,0x003F,0x003D,0x0027,0x002C,0x0020,0x0027,0x0028,0x003F,0x0021,0x0027, + 0x002C,0x0020,0x0027,0x0028,0x003F,0x003C,0x0027,0x002C,0x0020,0x0027,0x0028,0x003F,0x0023,0x0027,0x002C,0x0020,0x006F,0x0072,0x0020,0x0027,0x0028,0x003F,0x003E,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0027,0x0028,0x003F,0x003C,0x003D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0028,0x003F,0x003C,0x0021,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x00 } + , { 0x0027,0x0029,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x0020,0x0069,0x006E,0x0020,0x006D,0x006F,0x0064,0x0069,0x0066,0x0069, + 0x0065,0x0072,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } + , { 0x0027,0x003A,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0064,0x0069,0x0074, + 0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } + , { 0x0062,0x0061,0x0063,0x006B,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x002C,0x0020,0x0061,0x006E,0x0063,0x0068,0x006F,0x0072,0x002C,0x0020,0x006C,0x006F,0x006F,0x006B,0x0061,0x0068,0x0065,0x0061,0x0064,0x002C,0x0020, + 0x006F,0x0072,0x0020,0x006C,0x006F,0x006F,0x006B,0x0062,0x0065,0x0068,0x0069,0x006E,0x0064,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0064,0x0069,0x0074,0x0069,0x006F,0x006E, + 0x0061,0x006C,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x00 } + , { 0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0074,0x0068,0x0072,0x0065,0x0065,0x0020,0x0063,0x0068,0x006F,0x0069,0x0063,0x0065,0x0073,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0064,0x0069,0x0074,0x0069,0x006F, + 0x006E,0x0061,0x006C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } + , { 0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0055,0x002B,0x0030,0x0030,0x0034,0x0030,0x002D,0x0055,0x002B,0x0030,0x0030,0x0035,0x0066,0x0020,0x0072,0x0061,0x006E,0x0067, + 0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0020,0x0027,0x005C,0x0063,0x0027,0x00 } + , { 0x0027,0x007B,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0062,0x0065,0x0066,0x006F,0x0072,0x0065,0x0020,0x0063,0x0061,0x0074,0x0065,0x0067,0x006F,0x0072,0x0079,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063, + 0x0074,0x0065,0x0072,0x00 } + , { 0x0070,0x0072,0x006F,0x0070,0x0065,0x0072,0x0074,0x0079,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0063,0x006C,0x006F,0x0073,0x0065,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027, + 0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x006D,0x0065,0x0074,0x0061,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0070,0x0072,0x006F,0x0070,0x0065,0x0072,0x0074,0x0079,0x00 } + , { 0x0050,0x004F,0x0053,0x0049,0x0058,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0063,0x006C,0x0061,0x0073,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0063,0x006C,0x006F,0x0073,0x0065, + 0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x003A,0x005D,0x0027,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063, + 0x0074,0x0065,0x0072,0x0020,0x0063,0x006C,0x0061,0x0073,0x0073,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0050,0x004F,0x0053,0x0049,0x0058,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0063,0x006C, + 0x0061,0x0073,0x0073,0x00 } + , { 0x0027,0x005D,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x003B,0x0020,0x0075, + 0x0073,0x0065,0x0020,0x0027,0x005C,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0073,0x0074,0x0065,0x0061,0x0064,0x00 } + , { 0x0027,0x005B,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0027,0x0029,0x0027,0x002C,0x0020,0x0027,0x002D,0x005B,0x0027,0x002C,0x0020,0x0027,0x002B,0x005B,0x0027,0x002C,0x0020,0x006F,0x0072,0x0020,0x0027,0x0026,0x005B,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x0065,0x006E,0x0064,0x0020,0x0063,0x006F,0x0064,0x0065,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020, + 0x0074,0x0068,0x0061,0x006E,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0063,0x006F,0x0064,0x0065,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0020,0x0068,0x0065,0x0078,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0027,0x005C,0x0020,0x0078,0x007B,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0063,0x006C,0x006F,0x0073,0x0065,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0020,0x0063,0x006F,0x0064,0x0065,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x00 } + , { 0x0061,0x006E,0x0063,0x0068,0x006F,0x0072,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0070,0x006F, + 0x0069,0x006E,0x0074,0x00 } + , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0065,0x0073,0x0063,0x0061,0x0070,0x0065,0x0020,0x0073, + 0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0066,0x0069,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x0064,0x0069,0x0067,0x0069,0x0074,0x0020, + 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0066,0x0069,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069, + 0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x006F,0x0072,0x0020,0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0020,0x0027,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0066,0x0069,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x0064,0x0069,0x0067,0x0069,0x0074,0x0020, + 0x006F,0x0072,0x0020,0x0027,0x007D,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0066,0x0069,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x006D,0x0069,0x006E,0x0020,0x0071,0x0075, + 0x0061,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x006D, + 0x0061,0x0078,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0074,0x0079,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0066,0x0069,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069, + 0x0074,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0076,0x0065,0x0072,0x0066,0x006C,0x006F,0x0077,0x00 } + , { 0x0058,0x004D,0x004C,0x0020,0x0053,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0077,0x0061,0x0073,0x0020,0x0073,0x0065,0x0065,0x006E,0x0020,0x0062,0x0075,0x0074,0x0020,0x0069,0x006E,0x0073,0x0074,0x0061,0x006C,0x006C,0x0065,0x0064,0x0020,0x0076, + 0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0020,0x0058,0x004D,0x004C,0x0020,0x0053,0x0063,0x0068,0x0065,0x006D, + 0x0061,0x00 } + , { 0x0053,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x0047,0x0072,0x006F,0x0075,0x0070,0x0043,0x006F,0x006D,0x0070,0x0061,0x0072,0x0061,0x0074,0x006F,0x0072,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x006F,0x0020, + 0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0072,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0020,0x006E,0x006F,0x006E,0x002D,0x006E,0x0065, + 0x0067,0x0061,0x0074,0x0069,0x0076,0x0065,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x00 } + , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0020,0x006E,0x006F,0x006E, + 0x002D,0x006E,0x0065,0x0067,0x0061,0x0074,0x0069,0x0076,0x0065,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x00 } + , { 0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0020,0x006E,0x006F,0x006E, + 0x002D,0x006E,0x0065,0x0067,0x0061,0x0074,0x0069,0x0076,0x0065,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x00 } + , { 0x0062,0x006F,0x0074,0x0068,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065, + 0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x00 } + , { 0x0062,0x006F,0x0074,0x0068,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065, + 0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074, + 0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0074,0x0061,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F, + 0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074, + 0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065, + 0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020, + 0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B, + 0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020, + 0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B, + 0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074, + 0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065, + 0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074,0x0065,0x0072,0x0020, + 0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B, + 0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061, + 0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020, + 0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074, + 0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B, + 0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0065,0x006E,0x0075,0x006D,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072,0x006F, + 0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020, + 0x006F,0x0066,0x0020,0x0027,0x0070,0x0072,0x0065,0x0073,0x0065,0x0072,0x0076,0x0065,0x0027,0x002C,0x0020,0x0027,0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x0027,0x002C,0x0020,0x006F,0x0072,0x0020,0x0027,0x0063,0x006F,0x006C,0x006C,0x0061, + 0x0070,0x0073,0x0065,0x0027,0x00 } + , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x0070,0x0072,0x0065,0x0073,0x0065,0x0072,0x0076,0x0065,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027, + 0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x0027,0x0020,0x0077,0x0068,0x0069,0x006C,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065, + 0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x0063,0x006F,0x006C,0x006C,0x0061,0x0070,0x0073,0x0065,0x0027,0x00 } + , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x0070,0x0072,0x0065,0x0073,0x0065,0x0072,0x0076,0x0065,0x0027,0x0020,0x0077,0x0068,0x0069,0x006C, + 0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x0072,0x0065, + 0x0070,0x006C,0x0061,0x0063,0x0065,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0020,0x0070, + 0x006F,0x0073,0x0069,0x0074,0x0069,0x0076,0x0065,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x00 } + , { 0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020, + 0x0061,0x0020,0x006E,0x006F,0x006E,0x002D,0x006E,0x0065,0x0067,0x0061,0x0074,0x0069,0x0076,0x0065,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x00 } + , { 0x0062,0x006F,0x0074,0x0068,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020, + 0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x00 } + , { 0x0062,0x006F,0x0074,0x0068,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020, + 0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x00 } + , { 0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065, + 0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D, + 0x0027,0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E, + 0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061, + 0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065, + 0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061, + 0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061, + 0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E, + 0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061, + 0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E, + 0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, + 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061, + 0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065, + 0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, + 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072, + 0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072, + 0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072, + 0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072, + 0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } + , { 0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073, + 0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075, + 0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020, + 0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076, + 0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020, + 0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074, + 0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071, + 0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031, + 0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071, + 0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031, + 0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071, + 0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031, + 0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071, + 0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031, + 0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071,0x0075, + 0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020, + 0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065, + 0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C, + 0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020, + 0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C, + 0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020, + 0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071,0x0075,0x0061, + 0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069, + 0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0077,0x0068,0x0069,0x006C,0x0065,0x0020,0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0066,0x0069,0x0078, + 0x0065,0x0064,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x00 } + , { 0x006C,0x0069,0x0073,0x0074,0x0020,0x0069,0x0074,0x0065,0x006D,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x006D,0x0065,0x006D,0x0062,0x0065,0x0072,0x0054,0x0079,0x0070,0x0065,0x0073,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0073, + 0x0074,0x0065,0x0061,0x0064,0x0020,0x006F,0x0066,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0072,0x0065,0x0067,0x0075,0x006C,0x0061,0x0072,0x0020, + 0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0042,0x0061,0x0073,0x0065,0x0036,0x0034,0x002D,0x0065,0x006E,0x0063,0x006F,0x0064, + 0x0065,0x0064,0x0020,0x0062,0x0069,0x006E,0x0061,0x0072,0x0079,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0048,0x0065,0x0078,0x002D,0x0065,0x006E,0x0063,0x006F,0x0064,0x0065,0x0064,0x0020, + 0x0062,0x0069,0x006E,0x0061,0x0072,0x0079,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020, + 0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0032,0x007D,0x0027, + 0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020, + 0x0069,0x0073,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020, + 0x0027,0x007B,0x0032,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020, + 0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020, + 0x0027,0x007B,0x0032,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0069,0x006E,0x0020,0x0065,0x006E,0x0075,0x006D,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0020,0x0064,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020, + 0x0077,0x0068,0x0069,0x0063,0x0068,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C, + 0x0075,0x0065,0x0020,0x0027,0x007B,0x0032,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0069,0x0067,0x0069, + 0x0074,0x0073,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0066,0x0061,0x0063, + 0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0032,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071, + 0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031, + 0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078, + 0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072, + 0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020, + 0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072, + 0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020, + 0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0072,0x0065,0x0070,0x006C,0x0061, + 0x0063,0x0065,0x0064,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0063,0x006F,0x006C,0x006C,0x0061, + 0x0070,0x0073,0x0065,0x0064,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x004E,0x0043,0x004E,0x0061,0x006D,0x0065,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x007B,0x0031,0x007D,0x00 } + , { 0x0049,0x0044,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0045,0x004E,0x0054,0x0049,0x0054,0x0059,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0051,0x004E,0x0061,0x006D,0x0065,0x00 } + , { 0x004E,0x004F,0x0054,0x0041,0x0054,0x0049,0x004F,0x004E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0051,0x004E,0x0061,0x006D,0x0065,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0061,0x006E,0x0079,0x0020,0x006D,0x0065,0x006D,0x0062, + 0x0065,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0073,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x00 } + , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0061,0x006E,0x0079,0x0055,0x0052,0x0049,0x00 } + , { 0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x00 } + , { 0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0073,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x00 } + , { 0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0064,0x0065,0x0063,0x0069,0x006D,0x0061,0x006C,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074, + 0x0065,0x0072,0x0065,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x00 } + , { 0x004E,0x0055,0x004C,0x004C,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0020,0x0055,0x0052,0x0049,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x004E,0x0055,0x004C,0x004C,0x002F,0x0065, + 0x006D,0x0070,0x0074,0x0079,0x0020,0x007B,0x0030,0x007D,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0062,0x0065,0x0020,0x0073,0x0065,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0020,0x0067,0x0065,0x006E, + 0x0065,0x0072,0x0069,0x0063,0x0020,0x0055,0x0052,0x0049,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x0073,0x0063,0x0061,0x0070,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063, + 0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0027,0x007B,0x0031,0x007D, + 0x0027,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x004E,0x0055,0x004C,0x004C,0x00 } + , { 0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0063,0x006F,0x006E,0x0066,0x006F,0x0072,0x006D,0x0061,0x006E,0x0074,0x0020,0x0074,0x006F,0x0020,0x007B,0x0030,0x007D,0x00 } + , { 0x006E,0x006F,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0065,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0055,0x0052,0x0049,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006D,0x0061,0x0079,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x0066,0x0020,0x0068, + 0x006F,0x0073,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x00 } + , { 0x007B,0x0030,0x007D,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006D,0x0061,0x0079,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x0066,0x0020,0x0070, + 0x0061,0x0074,0x0068,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x00 } + , { 0x0070,0x006F,0x0072,0x0074,0x0020,0x006E,0x0075,0x006D,0x0062,0x0065,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0028,0x0030, + 0x002C,0x0036,0x0035,0x0035,0x0033,0x0035,0x0029,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0077,0x0068,0x0069,0x006C,0x0065,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x0069,0x006E,0x0067,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x00 } + , { 0x0072,0x0065,0x0073,0x0075,0x006C,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0065,0x0074,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0043,0x006F,0x006D,0x0070,0x0061,0x0063,0x0074,0x0052,0x0061,0x006E,0x0067,0x0065,0x0073,0x00 } + , { 0x006D,0x0069,0x0073,0x006D,0x0061,0x0074,0x0063,0x0068,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x004D,0x0065,0x0072,0x0067,0x0065,0x0052,0x0061,0x006E,0x0067,0x0065,0x0073,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0053,0x0075,0x0062,0x0074,0x0072,0x0061,0x0063,0x0074,0x0052,0x0061,0x006E,0x0067,0x0065,0x0073,0x00 } + , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0049,0x006E,0x0074,0x0065,0x0072,0x0073,0x0065,0x0063,0x0074,0x0052,0x0061,0x006E,0x0067,0x0065,0x0073,0x00 } + , { 0x0061,0x0072,0x0067,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0052,0x0061,0x006E,0x0067,0x0065,0x0054,0x006F,0x006B,0x0065,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0061,0x0074,0x0065,0x0067,0x006F,0x0072,0x0079,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006B,0x0065,0x0079,0x0077,0x006F,0x0072,0x0064,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } + , { 0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x006E,0x0075,0x006D,0x0062,0x0065,0x0072,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068, + 0x0061,0x006E,0x0020,0x007A,0x0065,0x0072,0x006F,0x00 } + , { 0x006F,0x0070,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x00 } + , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0074,0x006F,0x006B,0x0065,0x006E,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0067,0x0065,0x0074,0x0020,0x0052,0x0061,0x006E,0x0067,0x0065,0x0054,0x006F,0x006B,0x0065,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x0069,0x006E,0x0064,0x0065,0x0078,0x00 } + , { 0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x007A,0x0065,0x0072,0x006F,0x002D,0x006C, + 0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x00 } + , { 0x0065,0x006E,0x0061,0x0062,0x006C,0x0069,0x006E,0x0067,0x0020,0x004E,0x0045,0x004C,0x0020,0x006F,0x0070,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0062,0x0065,0x0020,0x0064,0x006F,0x006E, + 0x0065,0x0020,0x006F,0x006E,0x0063,0x0065,0x0020,0x0070,0x0065,0x0072,0x0020,0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x00 } + , { 0x006F,0x0075,0x0074,0x0020,0x006F,0x0066,0x0020,0x006D,0x0065,0x006D,0x006F,0x0072,0x0079,0x00 } + , { 0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } + , { 0x0073,0x0065,0x006C,0x0065,0x0063,0x0074,0x006F,0x0072,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0073,0x0065,0x006C,0x0065,0x0063,0x0074,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } + , { 0x0027,0x007C,0x0027,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0065,0x0067,0x0069,0x006E,0x006E,0x0069,0x006E,0x0067,0x0020,0x006F,0x0066,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065, + 0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x00 } + , { 0x0027,0x007C,0x007C,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C, + 0x00 } + , { 0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070, + 0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0074,0x006F,0x006B,0x0065,0x006E,0x003B,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0071,0x006E, + 0x0061,0x006D,0x0065,0x002C,0x0020,0x0061,0x006E,0x0079,0x002C,0x0020,0x006F,0x0072,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0074,0x0065,0x0073,0x0074,0x00 } + , { 0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069, + 0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065, + 0x0020,0x0055,0x0052,0x0049,0x00 } + , { 0x0027,0x003A,0x003A,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C, + 0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0074,0x0065,0x0070,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0027,0x0063,0x0068,0x0069,0x006C,0x0064,0x0027,0x0020,0x0074,0x006F,0x006B, + 0x0065,0x006E,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0074,0x0065,0x0070,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0027,0x002F,0x002F,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061, + 0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0074,0x0065,0x0070,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0027,0x002F,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074, + 0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0027,0x002F,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027,0x002F,0x002F,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068, + 0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0027,0x002F,0x002F,0x0027,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027,0x002E,0x0027,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020, + 0x0062,0x0065,0x0067,0x0069,0x006E,0x006E,0x0069,0x006E,0x0067,0x0020,0x006F,0x0066,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0027,0x002F,0x0027,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0065,0x0067,0x0069,0x006E,0x006E,0x0069,0x006E,0x0067,0x0020,0x006F,0x0066,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065, + 0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x00 } + , { 0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0073,0x0065,0x006C,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0069, + 0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0065,0x006E,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x007C, + 0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078, + 0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0075,0x006E,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0074,0x006F,0x006B,0x0065,0x006E,0x00 } + , { 0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020, + 0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0064,0x0061,0x0074,0x0065,0x0054,0x0069,0x006D,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0027,0x0054,0x0027,0x0020,0x0073,0x0065,0x0070,0x0061,0x0072,0x0061,0x0074,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0064,0x0061,0x0074,0x0065,0x0054,0x0069,0x006D,0x0065,0x0020,0x0076, + 0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x0044,0x0061,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x004D,0x006F,0x006E,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x004D,0x006F,0x006E,0x0074,0x0068,0x0044,0x0061,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0077,0x0069,0x0074, + 0x0068,0x0020,0x0027,0x002D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0050,0x0027,0x00 } + , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0027, + 0x0050,0x0027,0x00 } + , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0027,0x002D, + 0x0027,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0061,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x0066,0x0069,0x0072,0x0073,0x0074,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x00 } + , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C, + 0x0069,0x0064,0x0020,0x0074,0x0065,0x0078,0x0074,0x0020,0x0062,0x0065,0x0066,0x006F,0x0072,0x0065,0x0020,0x0027,0x0054,0x0027,0x00 } + , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x006F,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x0063,0x006F, + 0x006D,0x0070,0x006F,0x006E,0x0065,0x006E,0x0074,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027,0x0054,0x0027,0x00 } + , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0074,0x0020,0x006C, + 0x0065,0x0061,0x0073,0x0074,0x0020,0x006F,0x006E,0x0065,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x006E,0x0065,0x006E,0x0074,0x00 } + , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0074,0x0020,0x006C, + 0x0065,0x0061,0x0073,0x0074,0x0020,0x006F,0x006E,0x0065,0x0020,0x0064,0x0069,0x0067,0x0069,0x0074,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027,0x002E,0x0027,0x00 } + , { 0x0069,0x006E,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0064,0x0061,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0064,0x0061,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0073,0x0065,0x0063,0x006F,0x006E,0x0064,0x0073,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027, + 0x002E,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0067,0x0059,0x0065,0x0061,0x0072,0x004D,0x006F,0x006E,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x0059,0x0065,0x0061,0x0072,0x004D,0x006F,0x006E,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x0059,0x0065,0x0061,0x0072,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0079,0x0065,0x0061,0x0072,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0020,0x0027,0x0043,0x0043,0x0059,0x0059,0x0027, + 0x0020,0x0066,0x006F,0x0072,0x006D,0x0061,0x0074,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006C,0x0065,0x0061,0x0064,0x0069,0x006E,0x0067,0x0020,0x007A,0x0065,0x0072,0x006F,0x0020,0x0069,0x006E,0x0020,0x0067,0x0059,0x0065,0x0061,0x0072,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065, + 0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006D,0x006F,0x006E,0x0074,0x0068,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x006E,0x0065,0x006E,0x0074,0x0020,0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0020,0x0067,0x0059,0x0065,0x0061,0x0072,0x004D,0x006F,0x006E, + 0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0074,0x0069,0x006D,0x0065,0x0020,0x007A,0x006F,0x006E,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0074,0x0065,0x0078,0x0074,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027,0x005A,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x007A, + 0x006F,0x006E,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x007A,0x006F,0x006E,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0079,0x0065,0x0061,0x0072,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x006D,0x006F,0x006E,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E,0x0020,0x0031, + 0x0020,0x0061,0x006E,0x0064,0x0020,0x0031,0x0032,0x00 } + , { 0x0064,0x0061,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E,0x0020,0x0031,0x0020,0x0061, + 0x006E,0x0064,0x0020,0x007B,0x0031,0x007D,0x00 } + , { 0x0068,0x006F,0x0075,0x0072,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E,0x0020,0x0030, + 0x0020,0x0061,0x006E,0x0064,0x0020,0x0032,0x0033,0x00 } + , { 0x006D,0x0069,0x006E,0x0075,0x0074,0x0065,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E, + 0x0020,0x0030,0x0020,0x0061,0x006E,0x0064,0x0020,0x0035,0x0039,0x00 } + , { 0x0073,0x0065,0x0063,0x006F,0x006E,0x0064,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E, + 0x0020,0x0030,0x0020,0x0061,0x006E,0x0064,0x0020,0x0036,0x0030,0x00 } + , { 0x006D,0x0069,0x006E,0x0075,0x0074,0x0065,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E, + 0x0020,0x0030,0x0020,0x0061,0x006E,0x0064,0x0020,0x0035,0x0039,0x00 } + , { 0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065, + 0x0020,0x0068,0x0061,0x0073,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0077,0x0068,0x0069,0x006C,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070, + 0x0074,0x0079,0x00 } + , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061, + 0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006F,0x0063,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069, + 0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0065, + 0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0027,0x0073,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x002F,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069, + 0x006F,0x006E,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x006F,0x0066,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E, + 0x0064,0x0069,0x006E,0x0067,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x0069,0x006C,0x006C,0x0061,0x0062,0x006C,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0072,0x0065, + 0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0077,0x0068,0x0069,0x006C,0x0065,0x0020,0x0069,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x006E,0x002D,0x006E,0x0069,0x006C,0x006C,0x0061,0x0062,0x006C,0x0065,0x0020, + 0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0065,0x0069,0x0074,0x0068,0x0065,0x0072,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006F, + 0x0072,0x0020,0x0069,0x0073,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x0061,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0063,0x006F,0x006D, + 0x0070,0x0061,0x0072,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074, + 0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0064,0x0069,0x0073,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x0066,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E, + 0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0061,0x0072,0x0065,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0073,0x0075,0x0070,0x0065,0x0072,0x0073,0x0065,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x006F,0x0073,0x0065, + 0x0020,0x0066,0x006F,0x0072,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062, + 0x0061,0x0073,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F, + 0x0074,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067, + 0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0066,0x0065,0x0077,0x0065,0x0072,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F, + 0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0073,0x0020,0x0063,0x006F,0x006D,0x0070,0x0061,0x0072,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067, + 0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069, + 0x006E,0x0074,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F, + 0x006E,0x0064,0x0069,0x006E,0x0067,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006F,0x0063,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020, + 0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x006F,0x0063,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0072,0x0061,0x006E, + 0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } + , { 0x006E,0x006F,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0066,0x0075,0x006E,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x006D,0x0061,0x0070,0x0070,0x0069,0x006E,0x0067,0x0020,0x0062,0x0065,0x0074,0x0077, + 0x0065,0x0065,0x006E,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0073,0x00 } + , { 0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0061,0x006E,0x0079,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063, + 0x006C,0x0065,0x00 } + , { 0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073, + 0x0069,0x0074,0x006F,0x0072,0x00 } + , { 0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0063,0x0068,0x006F,0x0069,0x0063,0x0065,0x0020,0x0063,0x006F,0x006D, + 0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x00 } + , { 0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0020,0x0063, + 0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x00 } + , { 0x006F,0x0063,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074, + 0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061, + 0x0072,0x0064,0x0027,0x0073,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x00 } + , { 0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x0020,0x006F,0x0066,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070, + 0x006F,0x006E,0x0064,0x0069,0x006E,0x0067,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } + , { 0x006F,0x0063,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020, + 0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0027,0x0073,0x0020,0x0072,0x0061,0x006E,0x0067, + 0x0065,0x00 } + , { 0x006E,0x006F,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0066,0x0075,0x006E,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x006D,0x0061,0x0070,0x0070,0x0069,0x006E,0x0067,0x0020,0x0062,0x0065,0x0074,0x0077, + 0x0065,0x0065,0x006E,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0073,0x00 } + , { 0x006E,0x006F,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0066,0x0075,0x006E,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x006D,0x0061,0x0070,0x0070,0x0069,0x006E,0x0067,0x0020,0x0062,0x0065,0x0074,0x0077, + 0x0065,0x0065,0x006E,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0073,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x004E,0x006F,0x0064,0x0065,0x0049,0x0044,0x004D,0x0061,0x0070,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x006C,0x0061,0x0072,0x0067,0x0065,0x0073,0x0074,0x0020,0x0061,0x0076,0x0061,0x0069,0x006C,0x0061,0x0062,0x006C,0x0065, + 0x0020,0x0073,0x0069,0x007A,0x0065,0x00 } + , { 0x0050,0x0072,0x006F,0x0074,0x006F,0x0054,0x0079,0x0070,0x0065,0x0020,0x0068,0x0061,0x0073,0x0020,0x004E,0x0055,0x004C,0x004C,0x0020,0x0063,0x006C,0x0061,0x0073,0x0073,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } + , { 0x0050,0x0072,0x006F,0x0074,0x006F,0x0054,0x0079,0x0070,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0073, + 0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0050,0x0072,0x006F,0x0074,0x006F,0x0054,0x0079,0x0070,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0073,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0065, + 0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0049,0x006E,0x0070,0x0075,0x0074,0x0053,0x0074,0x0072,0x0065,0x0061,0x006D,0x0020,0x0072,0x0065,0x0061,0x0064,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E, + 0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0049,0x006E,0x0070,0x0075,0x0074,0x0053,0x0074,0x0072,0x0065,0x0061,0x006D,0x0020,0x0072,0x0065,0x0061,0x0064,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0062,0x0065,0x0079,0x006F,0x006E,0x0064,0x0020,0x0061,0x0076, + 0x0061,0x0069,0x006C,0x0061,0x0062,0x006C,0x0065,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0073,0x0074,0x006F,0x0072,0x0069,0x006E,0x0067,0x0020,0x0076,0x0069,0x006F,0x006C,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x0073,0x0074,0x006F,0x0072,0x0065,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0076,0x0069,0x006F,0x006C,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x002C,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, + 0x00 } + , { 0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0074,0x0061,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x006C,0x006F,0x0061,0x0064,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020, + 0x0075,0x0070,0x0070,0x0065,0x0072,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0061,0x0072,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x006C,0x006F,0x0061,0x0064,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0074,0x0061,0x006C,0x006C,0x0079, + 0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0063,0x006F,0x0075,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x006C,0x006F,0x0061,0x0064,0x0069,0x006E,0x0067,0x0020,0x0076,0x0069,0x006F,0x006C,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } + , { 0x006C,0x006F,0x0061,0x0064,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0076,0x0069,0x006F,0x006C,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x002C,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006C,0x0061,0x0073,0x0073,0x0020,0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x002C,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0065,0x0063,0x006B,0x0046,0x0069,0x006C,0x006C,0x0042,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0065,0x0063,0x006B,0x0046,0x006C,0x0075,0x0073,0x0068,0x0042,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027, + 0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x004E,0x0055,0x004C,0x004C,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x0020,0x0027,0x007B, + 0x0030,0x007D,0x0027,0x00 } + , { 0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x004F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0066,0x0061,0x0069,0x006C,0x0073,0x00 } + , { 0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0063,0x006F,0x0075,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x0075,0x0070,0x0070,0x0065,0x0072,0x0020,0x0062,0x006F, + 0x0075,0x006E,0x0064,0x0061,0x0072,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } + , { 0x0073,0x0074,0x006F,0x0072,0x0065,0x0072,0x0020,0x006C,0x0065,0x0076,0x0065,0x006C,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x006C, + 0x006F,0x0061,0x0064,0x0065,0x0072,0x0020,0x006C,0x0065,0x0076,0x0065,0x006C,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } + , { 0x0075,0x006E,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0069,0x006E,0x0020,0x0051,0x004E,0x0061,0x006D,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030, + 0x007D,0x0027,0x00 } + , { 0x0046,0x005F,0x0045,0x006E,0x0064,0x00 } + +}; +const unsigned int gXMLExceptArraySize = 369; + +const XMLCh gXMLDOMMsgArray[][128] = +{ + { 0x0046,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } + , { 0x0064,0x0075,0x006D,0x006D,0x0079,0x00 } + , { 0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x006F,0x0072,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x0065,0x0067,0x0061,0x0074,0x0069,0x0076,0x0065,0x002C,0x0020,0x006F,0x0072,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074, + 0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } + , { 0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0065,0x0078,0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x0069, + 0x0074,0x0020,0x0069,0x006E,0x0074,0x006F,0x0020,0x0044,0x004F,0x004D,0x0053,0x0074,0x0072,0x0069,0x006E,0x0067,0x00 } + , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x0069,0x006E,0x0073,0x0065,0x0072,0x0074,0x0020,0x0061,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0077,0x0068, + 0x0065,0x0072,0x0065,0x0020,0x0069,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0065,0x0072,0x006D,0x0069,0x0074,0x0074,0x0065,0x0064,0x00 } + , { 0x006E,0x006F,0x0064,0x0065,0x0020,0x0069,0x0073,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0061,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E, + 0x0074,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x0064,0x0020,0x0069,0x0074,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006F,0x0072,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0058,0x004D,0x004C,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x00 } + , { 0x006E,0x006F,0x0064,0x0065,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0020,0x0073,0x0074,0x006F,0x0072,0x0069,0x006E,0x0067,0x0020,0x0064,0x0061,0x0074,0x0061,0x00 } + , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x006D,0x006F,0x0064,0x0069,0x0066,0x0079,0x0020,0x0061,0x006E,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074, + 0x0020,0x0077,0x0068,0x0065,0x0072,0x0065,0x0020,0x006D,0x006F,0x0064,0x0069,0x0066,0x0069,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065, + 0x0064,0x00 } + , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0061,0x0020,0x006E,0x006F,0x0064,0x0065, + 0x0020,0x0069,0x006E,0x0020,0x0061,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x0078,0x0074,0x0020,0x0077,0x0068,0x0065,0x0072,0x0065,0x0020,0x0069,0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x0078,0x0069, + 0x0073,0x0074,0x00 } + , { 0x0069,0x006D,0x0070,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0020,0x0074,0x0068,0x0065, + 0x0020,0x0072,0x0065,0x0071,0x0075,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x006F,0x0072,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074, + 0x0069,0x006F,0x006E,0x00 } + , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x0061,0x0064,0x0064,0x0020,0x0061,0x006E,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065, + 0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0069,0x006E,0x0020,0x0075,0x0073,0x0065,0x0020,0x0065,0x006C,0x0073,0x0065,0x0077,0x0068,0x0065,0x0072,0x0065,0x00 } + , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x0075,0x0073,0x0065,0x0020,0x0061,0x006E,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0074,0x0068, + 0x0061,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006F,0x0072,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0020,0x006C,0x006F,0x006E,0x0067,0x0065,0x0072,0x0020,0x0075,0x0073,0x0061,0x0062,0x006C,0x0065,0x00 } + , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006F,0x0072,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x00 } + , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x006D,0x006F,0x0064,0x0069,0x0066,0x0079,0x0020,0x0074,0x0068,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020, + 0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0075,0x006E,0x0064,0x0065,0x0072,0x006C,0x0079,0x0069,0x006E,0x0067,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x00 } + , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x0020,0x006F,0x0072,0x0020,0x0063,0x0068,0x0061,0x006E,0x0067,0x0065, + 0x0020,0x0061,0x006E,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0069,0x006E,0x0020,0x0061,0x0020,0x0077,0x0061,0x0079,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0063,0x006F,0x0072,0x0072, + 0x0065,0x0063,0x0074,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0072,0x0065,0x0073,0x0070,0x0065,0x0063,0x0074,0x0020,0x0074,0x006F,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x00 } + , { 0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x006F,0x0072,0x0020,0x0072,0x0065,0x0071,0x0075,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073, + 0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0074,0x0068,0x0065,0x0020,0x0075,0x006E,0x0064,0x0065,0x0072,0x006C,0x0079,0x0069,0x006E,0x0067,0x0020,0x006F,0x0062, + 0x006A,0x0065,0x0063,0x0074,0x00 } + , { 0x0063,0x0061,0x006C,0x006C,0x0020,0x0074,0x006F,0x0020,0x0061,0x0020,0x006D,0x0065,0x0074,0x0068,0x006F,0x0064,0x0020,0x0073,0x0075,0x0063,0x0068,0x0020,0x0061,0x0073,0x0020,0x0069,0x006E,0x0073,0x0065,0x0072,0x0074,0x0042,0x0065,0x0066,0x006F, + 0x0072,0x0065,0x0020,0x006F,0x0072,0x0020,0x0072,0x0065,0x006D,0x006F,0x0076,0x0065,0x0043,0x0068,0x0069,0x006C,0x0064,0x0020,0x0077,0x006F,0x0075,0x006C,0x0064,0x0020,0x006D,0x0061,0x006B,0x0065,0x0020,0x0074,0x0068,0x0065,0x0020,0x006E,0x006F, + 0x0064,0x0065,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0072,0x0065,0x0073,0x0070,0x0065,0x0063,0x0074,0x0020,0x0074,0x006F,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074, + 0x0020,0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x00 } + , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x006E,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0063,0x006F,0x006D,0x0070,0x0061,0x0074,0x0069,0x0062,0x006C,0x0065,0x0020,0x0077, + 0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0070,0x0061,0x0072,0x0061,0x006D,0x0065, + 0x0074,0x0065,0x0072,0x0020,0x0061,0x0073,0x0073,0x006F,0x0063,0x0069,0x0061,0x0074,0x0065,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x00 } + , { 0x0064,0x0075,0x006D,0x006D,0x0079,0x00 } + , { 0x0062,0x006F,0x0075,0x006E,0x0064,0x0061,0x0072,0x0079,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0073,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x0064,0x006F,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D, + 0x0065,0x0065,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0063,0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x00 } + , { 0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0065,0x0072,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0061,0x0072,0x0079,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074, + 0x0020,0x0069,0x0073,0x0020,0x0073,0x0065,0x0074,0x0020,0x0074,0x006F,0x0020,0x0061,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x006E,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x0079,0x0070, + 0x0065,0x0020,0x006F,0x0072,0x0020,0x0074,0x006F,0x0020,0x0061,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0061,0x006E,0x0020,0x0061,0x006E,0x0063,0x0065,0x0073,0x0074,0x006F,0x0072,0x0020,0x006F,0x0066,0x0020, + 0x0061,0x006E,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0064,0x0075,0x006D,0x006D,0x0079,0x00 } + , { 0x0066,0x0061,0x0069,0x006C,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x006C,0x006F,0x0061,0x0064,0x0020,0x0061,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x006F,0x0072,0x0020,0x0061,0x006E,0x0020,0x0058,0x004D,0x004C, + 0x0020,0x0066,0x0072,0x0061,0x0067,0x006D,0x0065,0x006E,0x0074,0x0020,0x0075,0x0073,0x0069,0x006E,0x0067,0x0020,0x0044,0x004F,0x004D,0x004C,0x0053,0x0050,0x0061,0x0072,0x0073,0x0065,0x0072,0x00 } + , { 0x0066,0x0061,0x0069,0x006C,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x0073,0x0065,0x0072,0x0069,0x0061,0x006C,0x0069,0x007A,0x0065,0x0020,0x0061,0x0020,0x0044,0x004F,0x004D,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0075,0x0073,0x0069,0x006E, + 0x0067,0x0020,0x0044,0x004F,0x004D,0x004C,0x0053,0x0053,0x0065,0x0072,0x0069,0x0061,0x006C,0x0069,0x007A,0x0065,0x0072,0x00 } + , { 0x0064,0x0075,0x006D,0x006D,0x0079,0x00 } + , { 0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0068,0x0061,0x0073,0x0020,0x0069,0x006E,0x0063,0x006F,0x0072,0x0072,0x0065,0x0063,0x0074,0x0020,0x0073,0x0079,0x006E,0x0074,0x0061,0x0078,0x0020,0x006F,0x0072,0x0020, + 0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0073,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0066,0x0065,0x0061,0x0074,0x0075,0x0072,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074, + 0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0074,0x0068,0x0065,0x0020,0x0058,0x004D,0x004C,0x0020,0x0053,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x00 } + , { 0x0072,0x0065,0x0071,0x0075,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x0072,0x0065,0x0073,0x0075,0x006C,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064, + 0x00 } + , { 0x006E,0x006F,0x0020,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0074,0x0020,0x0072,0x0065,0x0073,0x0075,0x006C,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0072,0x0065,0x0073,0x0075,0x006C,0x0074,0x0020,0x006F,0x0062,0x006A, + 0x0065,0x0063,0x0074,0x00 } + , { 0x006E,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } + , { 0x0075,0x006E,0x0072,0x0065,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0061,0x0062,0x006C,0x0065,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x00 } + , { 0x0075,0x006E,0x0072,0x0065,0x0063,0x006F,0x0067,0x006E,0x0069,0x007A,0x0065,0x0064,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } + , { 0x0070,0x0061,0x0072,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0020,0x0070,0x0072,0x006F,0x0067,0x0072,0x0065,0x0073,0x0073,0x00 } + , { 0x0070,0x0061,0x0072,0x0073,0x0069,0x006E,0x0067,0x0020,0x0061,0x0062,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0074,0x0068,0x0065,0x0020,0x0075,0x0073,0x0065,0x0072,0x00 } + , { 0x0070,0x0061,0x0072,0x0073,0x0069,0x006E,0x0067,0x0020,0x0066,0x0061,0x0069,0x006C,0x0065,0x0064,0x00 } + , { 0x0046,0x005F,0x0045,0x006E,0x0064,0x00 } + +}; +const unsigned int gXMLDOMMsgArraySize = 41; + +XERCES_CPP_NAMESPACE_END + diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/MutexManagers/StdMutexMgr.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/MutexManagers/StdMutexMgr.hpp new file mode 100644 index 000000000000..00c300df5198 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/MutexManagers/StdMutexMgr.hpp @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_STDMUTEXMGR_HPP) +#define XERCESC_INCLUDE_GUARD_STDMUTEXMGR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Std mutex implementation. +class StdMutexMgr : public XMLMutexMgr +{ + public: + StdMutexMgr(); + virtual ~StdMutexMgr(); + + // Mutex operations + virtual XMLMutexHandle create(MemoryManager* const manager); + virtual void destroy(XMLMutexHandle mtx, MemoryManager* const manager); + virtual void lock(XMLMutexHandle mtx); + virtual void unlock(XMLMutexHandle mtx); +}; + +XERCES_CPP_NAMESPACE_END + + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/Mutexes.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/Mutexes.hpp new file mode 100644 index 000000000000..50d981753fe2 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/Mutexes.hpp @@ -0,0 +1,108 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_MUTEXES_HPP) +#define XERCESC_INCLUDE_GUARD_MUTEXES_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLMutex : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLMutex(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~XMLMutex(); + + + // ----------------------------------------------------------------------- + // Lock control methods + // ----------------------------------------------------------------------- + void lock(); + void unlock(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLMutex(const XMLMutex&); + XMLMutex& operator=(const XMLMutex&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fHandle + // The raw mutex handle. Its just a void pointer so we do not + // pass judgement on its value at all. We just pass it into the + // platform utilities methods which knows what's really in it. + // fManager + // The MemoryManager that this XMLMutex was initialized with. + // ----------------------------------------------------------------------- + void* fHandle; + MemoryManager* fManager; + + + // ----------------------------------------------------------------------- + // Sun PlatformUtils needs access to fHandle to initialize the + // atomicOpsMutex at startup. + // ----------------------------------------------------------------------- + friend class XMLPlatformUtils; +}; + + +class XMLUTIL_EXPORT XMLMutexLock : public XMemory +{ + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- +public: + XMLMutexLock(XMLMutex* const toLock); + ~XMLMutexLock(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLMutexLock(); + XMLMutexLock(const XMLMutexLock&); + XMLMutexLock& operator=(const XMLMutexLock&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fToLock + // The mutex object that we are locking + // ----------------------------------------------------------------------- + XMLMutex* fToLock; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/NameIdPool.c b/src/libs/xerces-c/msvc/include/xercesc/util/NameIdPool.c new file mode 100644 index 000000000000..022d154525d1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/NameIdPool.c @@ -0,0 +1,284 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// NameIdPool: Constructors and Destructor +// --------------------------------------------------------------------------- +template +NameIdPool::NameIdPool( const XMLSize_t hashModulus + , const XMLSize_t initSize + , MemoryManager* const manager) : + fMemoryManager(manager) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) + , fBucketList(hashModulus, manager) +{ + if (!hashModulus) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_ZeroModulus, fMemoryManager); + + // + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + fIdPtrs = (TElem**) fMemoryManager->allocate + ( + fIdPtrsCount * sizeof(TElem*) + ); + fIdPtrs[0] = 0; +} + +template NameIdPool::~NameIdPool() +{ + // + // Delete the id pointers list. The stuff it points to will be cleaned + // up when we clean the bucket lists. + // + fMemoryManager->deallocate(fIdPtrs); //delete [] fIdPtrs; +} + + +// --------------------------------------------------------------------------- +// NameIdPool: Element management +// --------------------------------------------------------------------------- +template +inline bool NameIdPool:: +containsKey(const XMLCh* const key) const +{ + if (fIdCounter == 0) return false; + return fBucketList.containsKey(key); +} + + +template void NameIdPool::removeAll() +{ + if (fIdCounter == 0) return; + + fBucketList.removeAll(); + + // Reset the id counter + fIdCounter = 0; +} + + +// --------------------------------------------------------------------------- +// NameIdPool: Getters +// --------------------------------------------------------------------------- +template +inline TElem* NameIdPool:: +getByKey(const XMLCh* const key) +{ + if (fIdCounter == 0) return 0; + return fBucketList.get(key); +} + +template +inline const TElem* NameIdPool:: +getByKey(const XMLCh* const key) const +{ + if (fIdCounter == 0) return 0; + return fBucketList.get(key); +} + +template +inline TElem* NameIdPool:: +getById(const XMLSize_t elemId) +{ + // If its either zero or beyond our current id, its an error + if (!elemId || (elemId > fIdCounter)) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); + + return fIdPtrs[elemId]; +} + +template +inline const TElem* NameIdPool:: +getById(const XMLSize_t elemId) const +{ + // If its either zero or beyond our current id, its an error + if (!elemId || (elemId > fIdCounter)) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); + + return fIdPtrs[elemId]; +} + +template +inline MemoryManager* NameIdPool::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// NameIdPool: Setters +// --------------------------------------------------------------------------- +template +XMLSize_t NameIdPool::put(TElem* const elemToAdopt) +{ + // First see if the key exists already. If so, its an error + if(containsKey(elemToAdopt->getKey())) + { + ThrowXMLwithMemMgr1 + ( + IllegalArgumentException + , XMLExcepts::Pool_ElemAlreadyExists + , elemToAdopt->getKey() + , fMemoryManager + ); + } + + fBucketList.put((void*)elemToAdopt->getKey(), elemToAdopt); + + // + // Give this new one the next available id and add to the pointer list. + // Expand the list if that is now required. + // + if (fIdCounter + 1 == fIdPtrsCount) + { + // Create a new count 1.5 times larger and allocate a new array + XMLSize_t newCount = (XMLSize_t)(fIdPtrsCount * 1.5); + TElem** newArray = (TElem**) fMemoryManager->allocate + ( + newCount * sizeof(TElem*) + ); //new TElem*[newCount]; + + // Copy over the old contents to the new array + memcpy(newArray, fIdPtrs, fIdPtrsCount * sizeof(TElem*)); + + // Ok, toss the old array and store the new data + fMemoryManager->deallocate(fIdPtrs); //delete [] fIdPtrs; + fIdPtrs = newArray; + fIdPtrsCount = newCount; + } + const XMLSize_t retId = ++fIdCounter; + fIdPtrs[retId] = elemToAdopt; + + // Set the id on the passed element + elemToAdopt->setId(retId); + + // Return the id that we gave to this element + return retId; +} + + +// --------------------------------------------------------------------------- +// NameIdPoolEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template NameIdPoolEnumerator:: +NameIdPoolEnumerator(NameIdPool* const toEnum + , MemoryManager* const manager) : + + XMLEnumerator() + , fCurIndex(0) + , fToEnum(toEnum) + , fMemoryManager(manager) +{ + Reset(); +} + +template NameIdPoolEnumerator:: +NameIdPoolEnumerator(const NameIdPoolEnumerator& toCopy) : + XMLEnumerator(toCopy) + , XMemory(toCopy) + , fCurIndex(toCopy.fCurIndex) + , fToEnum(toCopy.fToEnum) + , fMemoryManager(toCopy.fMemoryManager) +{ +} + +template NameIdPoolEnumerator::~NameIdPoolEnumerator() +{ + // We don't own the pool being enumerated, so no cleanup required +} + + +// --------------------------------------------------------------------------- +// NameIdPoolEnumerator: Public operators +// --------------------------------------------------------------------------- +template NameIdPoolEnumerator& NameIdPoolEnumerator:: +operator=(const NameIdPoolEnumerator& toAssign) +{ + if (this == &toAssign) + return *this; + fMemoryManager = toAssign.fMemoryManager; + fCurIndex = toAssign.fCurIndex; + fToEnum = toAssign.fToEnum; + return *this; +} + +// --------------------------------------------------------------------------- +// NameIdPoolEnumerator: Enum interface +// --------------------------------------------------------------------------- +template bool NameIdPoolEnumerator:: +hasMoreElements() const +{ + // If our index is zero or past the end, then we are done + if (!fCurIndex || (fCurIndex > fToEnum->fIdCounter)) + return false; + return true; +} + +template TElem& NameIdPoolEnumerator::nextElement() +{ + // If our index is zero or past the end, then we are done + if (!fCurIndex || (fCurIndex > fToEnum->fIdCounter)) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // Return the current element and bump the index + return *fToEnum->fIdPtrs[fCurIndex++]; +} + + +template void NameIdPoolEnumerator::Reset() +{ + // + // Find the next available bucket element in the pool. We use the id + // array since its very easy to enumerator through by just maintaining + // an index. If the id counter is zero, then its empty and we leave the + // current index to zero. + // + fCurIndex = fToEnum->fIdCounter ? 1:0; +} + +template XMLSize_t NameIdPoolEnumerator::size() const +{ + return fToEnum->fIdCounter; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/NameIdPool.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/NameIdPool.hpp new file mode 100644 index 000000000000..542b832e69b7 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/NameIdPool.hpp @@ -0,0 +1,207 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NAMEIDPOOL_HPP) +#define XERCESC_INCLUDE_GUARD_NAMEIDPOOL_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// Forward declare the enumerator so he can be our friend. Can you say +// friend? Sure... +// +template class NameIdPoolEnumerator; + + +// +// This class is provided to serve as the basis of many of the pools that +// are used by the scanner and validators. They often need to be able to +// store objects in such a way that they can be quickly accessed by the +// name field of the object, and such that each element added is assigned +// a unique id via which it can be accessed almost instantly. +// +// Object names are enforced as being unique, since that's what all these +// pools require. So its effectively a hash table in conjunction with an +// array of references into the hash table by id. Ids are assigned such that +// id N can be used to get the Nth element from the array of references. +// This provides very fast access by id. +// +// The way these pools are used, elements are never removed except when the +// whole thing is flushed. This makes it very easy to maintain the two +// access methods in sync. +// +// For efficiency reasons, the id reference array is never flushed until +// the dtor. This way, it does not have to be regrown every time its reused. +// +// All elements are assumed to be owned by the pool! +// + +template class NameIdPool : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + NameIdPool + ( + const XMLSize_t hashModulus + , const XMLSize_t initSize = 128 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~NameIdPool(); + + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + bool containsKey(const XMLCh* const key) const; + void removeAll(); + + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + TElem* getByKey(const XMLCh* const key); + const TElem* getByKey(const XMLCh* const key) const; + TElem* getById(const XMLSize_t elemId); + const TElem* getById(const XMLSize_t elemId) const; + + MemoryManager* getMemoryManager() const; + // ----------------------------------------------------------------------- + // Putters + // + // Dups are not allowed and cause an IllegalArgumentException. The id + // of the new element is returned. + // ----------------------------------------------------------------------- + XMLSize_t put(TElem* const valueToAdopt); + + +protected : + // ----------------------------------------------------------------------- + // Declare the enumerator our friend so he can see our members + // ----------------------------------------------------------------------- + friend class NameIdPoolEnumerator; + + +private : + // ----------------------------------------------------------------------- + // Unused constructors and operators + // ----------------------------------------------------------------------- + NameIdPool(const NameIdPool&); + NameIdPool& operator=(const NameIdPool&); + + // ----------------------------------------------------------------------- + // Data members + // + // fBucketList + // This is the hash table that contains the values. + // + // fIdPtrs + // fIdPtrsCount + // This is the array of pointers to the bucket elements in order of + // their assigned ids. So taking id N and referencing this array + // gives you the element with that id. The count field indicates + // the current size of this list. When fIdCounter+1 reaches this + // value the list must be expanded. + // + // fIdCounter + // This is used to give out unique ids to added elements. It starts + // at zero (which means empty), and is bumped up for each newly added + // element. So the first element is 1, the next is 2, etc... This + // means that this value is set to the top index of the fIdPtrs array. + // + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + TElem** fIdPtrs; + XMLSize_t fIdPtrsCount; + XMLSize_t fIdCounter; + RefHashTableOf fBucketList; +}; + + +// +// An enumerator for a name id pool. It derives from the basic enumerator +// class, so that pools can be generically enumerated. +// +template class NameIdPoolEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + NameIdPoolEnumerator + ( + NameIdPool* const toEnum + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + NameIdPoolEnumerator + ( + const NameIdPoolEnumerator& toCopy + ); + + virtual ~NameIdPoolEnumerator(); + + // ----------------------------------------------------------------------- + // Public operators + // ----------------------------------------------------------------------- + NameIdPoolEnumerator& operator= + ( + const NameIdPoolEnumerator& toAssign + ); + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TElem& nextElement(); + void Reset(); + XMLSize_t size() const; + +private : + // ----------------------------------------------------------------------- + // Data Members + // + // fCurIndex + // This is the current index into the pool's id mapping array. This + // is now we enumerate it. + // + // fToEnum + // The name id pool that is being enumerated. + // ----------------------------------------------------------------------- + XMLSize_t fCurIndex; + NameIdPool* fToEnum; + MemoryManager* fMemoryManager; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/NoSuchElementException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/NoSuchElementException.hpp new file mode 100644 index 000000000000..b4a5da639a1d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/NoSuchElementException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NOSUCHELEMENTEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_NOSUCHELEMENTEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(NoSuchElementException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/NullPointerException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/NullPointerException.hpp new file mode 100644 index 000000000000..3906d554d4db --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/NullPointerException.hpp @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NULLPOINTEREXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_NULLPOINTEREXCEPTION_HPP + + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(NullPointerException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/NumberFormatException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/NumberFormatException.hpp new file mode 100644 index 000000000000..07e2ba9dbcda --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/NumberFormatException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NUMBERFORMATEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_NUMBERFORMATEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(NumberFormatException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/OutOfMemoryException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/OutOfMemoryException.hpp new file mode 100644 index 000000000000..5b2d60418c14 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/OutOfMemoryException.hpp @@ -0,0 +1,96 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_OUT_OF_MEMORY_EXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_OUT_OF_MEMORY_EXCEPTION_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +static const XMLCh gDefOutOfMemoryErrMsg[] = +{ + chLatin_O, chLatin_u, chLatin_t, chLatin_O + , chLatin_f, chLatin_M, chLatin_e, chLatin_m + , chLatin_o, chLatin_r, chLatin_y, chNull +}; + +class XMLUTIL_EXPORT OutOfMemoryException : public XMemory +{ +public: + + OutOfMemoryException(); + ~OutOfMemoryException(); + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLExcepts::Codes getCode() const; + const XMLCh* getMessage() const; + const XMLCh* getType() const; + const char* getSrcFile() const; + XMLFileLoc getSrcLine() const; + + OutOfMemoryException(const OutOfMemoryException& toCopy); + OutOfMemoryException& operator=(const OutOfMemoryException& toAssign); +}; + +// constructors/destructors... +inline OutOfMemoryException::OutOfMemoryException() {} +inline OutOfMemoryException::~OutOfMemoryException() {} +inline OutOfMemoryException::OutOfMemoryException(const OutOfMemoryException& other) : XMemory(other) {} +inline OutOfMemoryException& OutOfMemoryException::operator=(const OutOfMemoryException&) +{ + return *this; +} + +// --------------------------------------------------------------------------- +// OutOfMemoryException: Getter methods +// --------------------------------------------------------------------------- +inline XMLExcepts::Codes OutOfMemoryException::getCode() const +{ + return XMLExcepts::Out_Of_Memory; +} + +inline const XMLCh* OutOfMemoryException::getMessage() const +{ + return gDefOutOfMemoryErrMsg; +} + +inline const XMLCh* OutOfMemoryException::getType() const +{ + return gDefOutOfMemoryErrMsg; +} + +inline const char* OutOfMemoryException::getSrcFile() const +{ + return ""; +} + +inline XMLFileLoc OutOfMemoryException::getSrcLine() const { + return 0; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/PSVIUni.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/PSVIUni.hpp new file mode 100644 index 000000000000..b06dcb350196 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/PSVIUni.hpp @@ -0,0 +1,239 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PSVIUNI_HPP) +#define XERCESC_INCLUDE_GUARD_PSVIUNI_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT PSVIUni +{ +public : + + static const XMLCh fgPsvColon[]; + + //Infoset Element Names + static const XMLCh fgAllDeclarationsProcessed[]; + static const XMLCh fgAttribute[]; + static const XMLCh fgAttributes[]; + static const XMLCh fgAttributeType[]; + static const XMLCh fgBaseURI[]; + static const XMLCh fgCharacter[]; + static const XMLCh fgCharacterEncodingScheme[]; + static const XMLCh fgChildren[]; + static const XMLCh fgComment[]; + static const XMLCh fgContent[]; + static const XMLCh fgDocument[]; + static const XMLCh fgDocTypeDeclaration[]; + static const XMLCh fgDocumentElement[]; + static const XMLCh fgElement[]; + static const XMLCh fgInScopeNamespaces[]; + static const XMLCh fgLocalName[]; + static const XMLCh fgNamespace[]; + static const XMLCh fgNamespaceAttributes[]; + static const XMLCh fgNamespaceName[]; + static const XMLCh fgNormalizedValue[]; + static const XMLCh fgNotations[]; + static const XMLCh fgPrefix[]; + static const XMLCh fgProcessingInstruction[]; + static const XMLCh fgReferences[]; + static const XMLCh fgSpecified[]; + static const XMLCh fgStandalone[]; + static const XMLCh fgTarget[]; + static const XMLCh fgText[]; + static const XMLCh fgTextContent[]; + static const XMLCh fgUnparsedEntities[]; + static const XMLCh fgVersion[]; + + //PSVI Element Names + static const XMLCh fgAbstract[]; + static const XMLCh fgAnnotation[]; + static const XMLCh fgAnnotations[]; + static const XMLCh fgApplicationInformation[]; + static const XMLCh fgAttributeDeclaration[]; + static const XMLCh fgAttributeGroupDefinition[]; + static const XMLCh fgAttributeUse[]; + static const XMLCh fgAttributeUses[]; + static const XMLCh fgAttributeWildcard[]; + static const XMLCh fgBaseTypeDefinition[]; + static const XMLCh fgCanonicalRepresentation[]; + static const XMLCh fgComplexTypeDefinition[]; + static const XMLCh fgCompositor[]; + static const XMLCh fgContentType[]; + static const XMLCh fgDeclaration[]; + static const XMLCh fgDerivationMethod[]; + static const XMLCh fgDisallowedSubstitutions[]; + static const XMLCh fgPsvDocument[]; + static const XMLCh fgDocumentLocation[]; + static const XMLCh fgElementDeclaration[]; + static const XMLCh fgFacets[]; + static const XMLCh fgFacetFixed[]; + static const XMLCh fgFields[]; + static const XMLCh fgFinal[]; + static const XMLCh fgFundamentalFacets[]; + static const XMLCh fgIdentityConstraintCategory[]; + static const XMLCh fgIdentityConstraintDefinition[]; + static const XMLCh fgIdentityConstraintDefinitions[]; + static const XMLCh fgIdentityConstraintTable[]; + static const XMLCh fgIdIdrefTable[]; + static const XMLCh fgItemTypeDefinition[]; + static const XMLCh fgMaxOccurs[]; + static const XMLCh fgMemberTypeDefinition[]; + static const XMLCh fgMemberTypeDefinitions[]; + static const XMLCh fgMinOccurs[]; + static const XMLCh fgModelGroup[]; + static const XMLCh fgModelGroupDefinition[]; + static const XMLCh fgName[]; + static const XMLCh fgNamespaceConstraint[]; + static const XMLCh fgNamespaces[]; + static const XMLCh fgNamespaceSchemaInformation[]; + static const XMLCh fgNil[]; + static const XMLCh fgNillable[]; + static const XMLCh fgNotation[]; + static const XMLCh fgNotationDeclaration[]; + static const XMLCh fgParticle[]; + static const XMLCh fgParticles[]; + static const XMLCh fgPrimitiveTypeDefinition[]; + static const XMLCh fgProcessContents[]; + static const XMLCh fgProhibitedSubstitutions[]; + static const XMLCh fgPublicIdentifier[]; + static const XMLCh fgReferencedKey[]; + static const XMLCh fgRequired[]; + static const XMLCh fgSchemaAnnotations[]; + static const XMLCh fgSchemaComponents[]; + static const XMLCh fgSchemaDefault[]; + static const XMLCh fgSchemaDocument[]; + static const XMLCh fgSchemaDocuments[]; + static const XMLCh fgSchemaErrorCode[]; + static const XMLCh fgSchemaInformation[]; + static const XMLCh fgSchemaNamespace[]; + static const XMLCh fgSchemaNormalizedValue[]; + static const XMLCh fgSchemaSpecified[]; + static const XMLCh fgScope[]; + static const XMLCh fgSelector[]; + static const XMLCh fgSimpleTypeDefinition[]; + static const XMLCh fgSubstitutionGroupAffiliation[]; + static const XMLCh fgSubstitutionGroupExclusions[]; + static const XMLCh fgSystemIdentifier[]; + static const XMLCh fgTargetNamespace[]; + static const XMLCh fgTerm[]; + static const XMLCh fgTypeDefinition[]; + static const XMLCh fgUserInformation[]; + static const XMLCh fgValidationAttempted[]; + static const XMLCh fgValidationContext[]; + static const XMLCh fgValidity[]; + static const XMLCh fgValue[]; + static const XMLCh fgValueConstraint[]; + static const XMLCh fgVariety[]; + static const XMLCh fgWildcard[]; + static const XMLCh fgXpath[]; + + //PSVI Element Values + static const XMLCh fgAll[]; + static const XMLCh fgAny[]; + static const XMLCh fgAppinfo[]; + static const XMLCh fgAtomic[]; + static const XMLCh fgChoice[]; + static const XMLCh fgDefault[]; + static const XMLCh fgDocumentation[]; + static const XMLCh fgElementOnly[]; + static const XMLCh fgEmpty[]; + static const XMLCh fgExtension[]; + static const XMLCh fgFalse[]; + static const XMLCh fgFull[]; + static const XMLCh fgGlobal[]; + static const XMLCh fgInfoset[]; + static const XMLCh fgInvalid[]; + static const XMLCh fgKey[]; + static const XMLCh fgKeyref[]; + static const XMLCh fgLax[]; + static const XMLCh fgList[]; + static const XMLCh fgLocal[]; + static const XMLCh fgMixed[]; + static const XMLCh fgNone[]; + static const XMLCh fgNotKnown[]; + static const XMLCh fgNsNamespace[]; + static const XMLCh fgOnePointZero[]; + static const XMLCh fgPartial[]; + static const XMLCh fgRestrict[]; + static const XMLCh fgRestriction[]; + static const XMLCh fgSchema[]; + static const XMLCh fgSequence[]; + static const XMLCh fgSimple[]; + static const XMLCh fgSkip[]; + static const XMLCh fgStrict[]; + static const XMLCh fgSubstitution[]; + static const XMLCh fgTotal[]; + static const XMLCh fgTrue[]; + static const XMLCh fgUnbounded[]; + static const XMLCh fgUnion[]; + static const XMLCh fgUnique[]; + static const XMLCh fgUnknown[]; + static const XMLCh fgValid[]; + static const XMLCh fgVCFixed[]; + static const XMLCh fgXMLChNull[]; + + //PSVI Element Types (Shortened) + static const XMLCh fgAg[]; + static const XMLCh fgAnnot[]; + static const XMLCh fgAttr[]; + static const XMLCh fgAu[]; + static const XMLCh fgElt[]; + static const XMLCh fgIdc[]; + static const XMLCh fgMg[]; + static const XMLCh fgNot[]; + static const XMLCh fgType[]; + + //Facets + static const XMLCh fgBounded[]; + static const XMLCh fgCardinality[]; + static const XMLCh fgEnumeration[]; + static const XMLCh fgFractionDigits[]; + static const XMLCh fgLength[]; + static const XMLCh fgMaxExclusive[]; + static const XMLCh fgMaxInclusive[]; + static const XMLCh fgMaxLength[]; + static const XMLCh fgMinExclusive[]; + static const XMLCh fgMinInclusive[]; + static const XMLCh fgMinLength[]; + static const XMLCh fgNumeric[]; + static const XMLCh fgOrdered[]; + static const XMLCh fgPattern[]; + static const XMLCh fgTotalDigits[]; + static const XMLCh fgWhiteSpace[]; + + //Namespaces and prefixes + + static const XMLCh fgNamespaceInfoset[]; + static const XMLCh fgXsi[]; + static const XMLCh fgNamespaceInstance[]; + static const XMLCh fgPsv[]; + static const XMLCh fgNamespacePsvi[]; + static const XMLCh fgXml[]; + static const XMLCh fgNamespaceXmlSchema[]; + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/PanicHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/PanicHandler.hpp new file mode 100644 index 000000000000..cf07adc7eb94 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/PanicHandler.hpp @@ -0,0 +1,112 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PANICHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_PANICHANDLER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Receive notification of panic. + * + *

This is the interface, through which the Xercesc reports + * a panic to the application. + *

+ * + *

Application may implement this interface, instantiate an + * object of the derivative, and plug it to Xercesc in the + * invocation to XMLPlatformUtils::Initialize(), if it prefers + * to handling panic itself rather than Xercesc doing it. + *

+ * + */ + +class XMLUTIL_EXPORT PanicHandler +{ +public: + + /** @name Public Types */ + //@{ + enum PanicReasons + { + Panic_NoTransService + , Panic_NoDefTranscoder + , Panic_CantFindLib + , Panic_UnknownMsgDomain + , Panic_CantLoadMsgDomain + , Panic_SynchronizationErr + , Panic_SystemInit + , Panic_AllStaticInitErr + , Panic_MutexErr + , PanicReasons_Count + }; + //@} + +protected: + + /** @name hidden Constructors */ + //@{ + /** Default constructor */ + PanicHandler(){}; + +public: + + /** Destructor */ + virtual ~PanicHandler(){}; + //@} + + /** @name The virtual panic handler interface */ + //@{ + /** + * Receive notification of panic + * + * This method is called when an unrecoverable error has occurred in the Xerces library. + * + * This method must not return normally, otherwise, the results are undefined. + * + * Ways of handling this call could include throwing an exception or exiting the process. + * + * Once this method has been called, the results of calling any other Xerces API, + * or using any existing Xerces objects are undefined. + * + * @param reason The reason of panic + * + */ + virtual void panic(const PanicHandler::PanicReasons reason) = 0; + //@} + + static const char* getPanicReasonString(const PanicHandler::PanicReasons reason); + +private: + + /* Unimplemented Constructors and operators */ + /* Copy constructor */ + PanicHandler(const PanicHandler&); + + /** Assignment operator */ + PanicHandler& operator=(const PanicHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/ParseException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/ParseException.hpp new file mode 100644 index 000000000000..6e7fe383e91a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/ParseException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PARSEEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_PARSEEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(ParseException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/PlatformUtils.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/PlatformUtils.hpp new file mode 100644 index 000000000000..0123ff12c642 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/PlatformUtils.hpp @@ -0,0 +1,839 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PLATFORMUTILS_HPP) +#define XERCESC_INCLUDE_GUARD_PLATFORMUTILS_HPP + +#include +#include +#include + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLMsgLoader; +class XMLNetAccessor; +class XMLTransService; +class MemoryManager; +class XMLMutex; + +// +// For internal use only +// +// This class provides a simple abstract API via which lazily evaluated +// data can be cleaned up. +// +class XMLUTIL_EXPORT XMLDeleter +{ +public : + virtual ~XMLDeleter(); + +protected : + XMLDeleter(); + +private : + XMLDeleter(const XMLDeleter&); + XMLDeleter& operator=(const XMLDeleter&); +}; + + +/** + * Utilities that must be implemented in a platform-specific way. + * + * This class contains methods that must be implemented in a platform + * specific manner. The actual implementations of these methods are + * available in the per-platform files inside src/util/Platforms + * . + */ +class XMLUTIL_EXPORT XMLPlatformUtils +{ +public : + + /** @name Public Static Data */ + //@{ + + /** The network accessor + * + * This is provided by the per-platform driver, so each platform can + * choose what actual implementation it wants to use. The object must + * be dynamically allocated. + * + * Note that you may optionally, if your platform driver does not + * install a network accessor, set it manually from your client code + * after calling Initialize(). This works because this object is + * not required during initialization, and only comes into play during + * actual XML parsing. + */ + static XMLNetAccessor* fgNetAccessor; + + /** The transcoding service. + * + * This is provided by the per platform driver, so each platform can + * choose what implementation it wants to use. When the platform + * independent initialization code needs to get a transcoding service + * object, it will call makeTransService() to ask the + * per-platform code to create one. Only one transcoding service + * object is requested per-process, so it is shared and synchronized + * among parser instances within that process. + */ + static XMLTransService* fgTransService; +#ifdef OS390 + static XMLTransService* fgTransService2; +#endif + + /** The Panic Handler + * + * This is the application provided panic handler. + */ + static PanicHandler* fgUserPanicHandler; + + /** The Panic Handler + * + * This is the default panic handler. + */ + static PanicHandler* fgDefaultPanicHandler; + + /** The configurable memory manager + * + * This is the pluggable memory manager. If it is not provided by an + * application, a default implementation is used. + */ + static MemoryManager* fgMemoryManager; + + static XMLFileMgr* fgFileMgr; + static XMLMutexMgr* fgMutexMgr; + + /** Global mutex for fast or infrequent operations. + * + * Use this mutex only for fast (e.g., increment an integer, + * check flag, etc.) or infrequent (e.g., once-off initialization) + * operations. + */ + static XMLMutex* fgAtomicMutex; + + static bool fgXMLChBigEndian; + static bool fgSSE2ok; + //@} + + + /** @name Initialization and Panic methods */ + //@{ + + /** Perform per-process parser initialization + * + * Initialization must be called first in any client code. + * + * @param locale The locale to use for messages. + * + * The locale is set iff the Initialize() is invoked for the very first time, + * to ensure that each and every message loader, in the process space, share + * the same locale. + * + * All subsequent invocations of Initialize(), with a different locale, have + * no effect on the message loaders, either instantiated, or to be instantiated. + * + * To set to a different locale, client application needs to Terminate() (or + * multiple Terminate() in the case where multiple Initialize() have been invoked + * before), followed by Initialize(new_locale). + * + * The default locale is "en_US". + * + * @param nlsHome User specified location where MsgLoader retrieves error message files. + * the discussion above with regard to locale, applies to nlsHome as well. + * + * @param panicHandler Application's panic handler, application owns this handler. + * Application shall make sure that the plugged panic handler persists + * through the call to XMLPlatformUtils::Terminate(). + * + * @param memoryManager Plugged-in memory manager which is owned by the + * application. Applications must make sure that the + * plugged-in memory manager persist through the call to + * XMLPlatformUtils::Terminate() + */ + static void Initialize(const char* const locale = XMLUni::fgXercescDefaultLocale + , const char* const nlsHome = 0 + , PanicHandler* const panicHandler = 0 + , MemoryManager* const memoryManager = 0); + + /** Perform per-process parser initialization + * + * Initialization must be called first in any client code. + * + * @param initialDOMHeapAllocSize The size of the first memory block + * allocated by the DOMDocument heap. Note that changing this parameter + * may result in poor performance and/or excessive memory usage. For + * the default value refer to dom/impl/DOMDocumentImpl.cpp. + * + * @param maxDOMHeapAllocSize The maximum size of the memory block + * allocated by the DOMDocument heap. As the document grows, the + * allocated by the heap memory blocks grow from initialDOMHeapAllocSize + * to maxDOMHeapAllocSize. Note that changing this parameter may result + * in poor performance and/or excessive memory usage. For the default + * value refer to dom/impl/DOMDocumentImpl.cpp. + * + * @param maxDOMSubAllocationSize The maximum size of the memory block + * requested that is handled by the DOMDocument heap. A request for a + * larger block is handled directly by the memory manager. Note that + * changing this parameter may result in poor performance and/or + * excessive memory usage. For the default value refer to + * dom/impl/DOMDocumentImpl.cpp. + * + * @param locale The locale to use for messages. + * + * The locale is set iff the Initialize() is invoked for the very first time, + * to ensure that each and every message loader, in the process space, share + * the same locale. + * + * All subsequent invocations of Initialize(), with a different locale, have + * no effect on the message loaders, either instantiated, or to be instantiated. + * + * To set to a different locale, client application needs to Terminate() (or + * multiple Terminate() in the case where multiple Initialize() have been invoked + * before), followed by Initialize(new_locale). + * + * The default locale is "en_US". + * + * @param nlsHome User specified location where MsgLoader retrieves error message files. + * the discussion above with regard to locale, applies to nlsHome as well. + * + * @param panicHandler Application's panic handler, application owns this handler. + * Application shall make sure that the plugged panic handler persists + * through the call to XMLPlatformUtils::Terminate(). + * + * @param memoryManager Plugged-in memory manager which is owned by the + * application. Applications must make sure that the plugged-in memory + * manager persist through the call to XMLPlatformUtils::Terminate() + */ + static void Initialize(XMLSize_t initialDOMHeapAllocSize + , XMLSize_t maxDOMHeapAllocSize + , XMLSize_t maxDOMSubAllocationSize + , const char* const locale = XMLUni::fgXercescDefaultLocale + , const char* const nlsHome = 0 + , PanicHandler* const panicHandler = 0 + , MemoryManager* const memoryManager = 0); + + /** Perform per-process parser termination + * + * The termination call is currently optional, to aid those dynamically + * loading the parser to clean up before exit, or to avoid spurious + * reports from leak detectors. + */ + static void Terminate(); + + /** The panic mechanism. + * + * If, during initialization, we cannot even get far enough along + * to get transcoding up or get message loading working, we call + * this method.

+ * + * Each platform can implement it however they want. This method will + * delegate the panic handling to a user specified panic handler or + * in the absence of it, the default panic handler. + * + * In case the default panic handler does not support a particular + * platform, the platform specific panic handling shall be implemented + * here

. + * + * @param reason The enumeration that defines the cause of the failure + */ + static void panic + ( + const PanicHandler::PanicReasons reason + ); + + //@} + + /** @name File Methods */ + //@{ + + /** Make a new file object appropriate for the platform. + * + * @param manager The MemoryManager to use to allocate objects + */ + static XMLFileMgr* makeFileMgr(MemoryManager* const manager); + + /** Get the current file position + * + * This must be implemented by the per-platform driver, which should + * use local file services to determine the current position within + * the passed file. + * + * Since the file API provided here only reads, if the host platform + * supports separate read/write positions, only the read position is + * of any interest, and hence should be the one returned. + * + * @param theFile The file handle + * @param manager The MemoryManager to use to allocate objects + */ + static XMLFilePos curFilePos(FileHandle theFile + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Closes the file handle + * + * This must be implemented by the per-platform driver, which should + * use local file services to close the passed file handle, and to + * destroy the passed file handle and any allocated data or system + * resources it contains. + * + * @param theFile The file handle to close + * @param manager The MemoryManager to use to allocate objects + */ + static void closeFile(FileHandle theFile + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Returns the file size + * + * This must be implemented by the per-platform driver, which should + * use local file services to determine the current size of the file + * represented by the passed handle. + * + * @param theFile The file handle whose size you want + * @param manager The MemoryManager to use to allocate objects + * @return Returns the size of the file in bytes + */ + static XMLFilePos fileSize(FileHandle theFile + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Opens the file + * + * This must be implemented by the per-platform driver, which should + * use local file services to open passed file. If it fails, a + * null handle pointer should be returned. + * + * @param fileName The string containing the name of the file + * @param manager The MemoryManager to use to allocate objects + * @return The file handle of the opened file + */ + static FileHandle openFile(const char* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Opens a named file + * + * This must be implemented by the per-platform driver, which should + * use local file services to open the passed file. If it fails, a + * null handle pointer should be returned. + * + * @param fileName The string containing the name of the file + * @param manager The MemoryManager to use to allocate objects + * @return The file handle of the opened file + */ + static FileHandle openFile(const XMLCh* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Open a named file to write + * + * This must be implemented by the per-platform driver, which should + * use local file services to open passed file. If it fails, a + * null handle pointer should be returned. + * + * @param fileName The string containing the name of the file + * @param manager The MemoryManager to use to allocate objects + * @return The file handle of the opened file + */ + static FileHandle openFileToWrite(const char* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Open a named file to write + * + * This must be implemented by the per-platform driver, which should + * use local file services to open the passed file. If it fails, a + * null handle pointer should be returned. + * + * @param fileName The string containing the name of the file + * @param manager The MemoryManager to use to allocate objects + * @return The file handle of the opened file + */ + static FileHandle openFileToWrite(const XMLCh* const fileName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Opens the standard input as a file + * + * This must be implemented by the per-platform driver, which should + * use local file services to open a handle to the standard input. + * It should be a copy of the standard input handle, since it will + * be closed later! + * + * @param manager The MemoryManager to use to allocate objects + * @return The file handle of the standard input stream + */ + static FileHandle openStdInHandle(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Reads the file buffer + * + * This must be implemented by the per-platform driver, which should + * use local file services to read up to 'toRead' bytes of data from + * the passed file, and return those bytes in the 'toFill' buffer. It + * is not an error not to read the requested number of bytes. When the + * end of file is reached, zero should be returned. + * + * @param theFile The file handle to be read from. + * @param toRead The maximum number of byte to read from the current + * position + * @param toFill The byte buffer to fill + * @param manager The MemoryManager to use to allocate objects + * + * @return Returns the number of bytes read from the stream or file + */ + static XMLSize_t readFileBuffer + ( + FileHandle theFile + , const XMLSize_t toRead + , XMLByte* const toFill + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Writes the buffer to the file + * + * This must be implemented by the per-platform driver, which should + * use local file services to write up to 'toWrite' bytes of data to + * the passed file. Unless exception raised by local file services, + * 'toWrite' bytes of data is to be written to the passed file. + * + * @param theFile The file handle to be written to. + * @param toWrite The maximum number of byte to write from the current + * position + * @param toFlush The byte buffer to flush + * @param manager The MemoryManager to use to allocate objects + * @return void + */ + static void writeBufferToFile + ( + FileHandle const theFile + , XMLSize_t toWrite + , const XMLByte* const toFlush + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Resets the file handle + * + * This must be implemented by the per-platform driver which will use + * local file services to reset the file position to the start of the + * the file. + * + * @param theFile The file handle that you want to reset + * @param manager The MemoryManager to use to allocate objects + */ + static void resetFile(FileHandle theFile + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + + /** @name File System Methods */ + //@{ + /** Gets the full path from a relative path + * + * This must be implemented by the per-platform driver. It should + * complete a relative path using the 'current directory', or whatever + * the local equivalent of a current directory is. If the passed + * source path is actually fully qualified, then a straight copy of it + * will be returned. + * + * @param srcPath The path of the file for which you want the full path + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * + * @return Returns the fully qualified path of the file name including + * the file name. This is dyanmically allocated and must be + * deleted by the caller when its no longer needed! The memory + * returned will beallocated using the static memory manager, if + * user do not supply a memory manager. Users then need to make + * sure to use either the default or user specific memory manager + * to deallocate the memory. + */ + static XMLCh* getFullPath + ( + const XMLCh* const srcPath + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Gets the current working directory + * + * This must be implemented by the per-platform driver. It returns + * the current working directory is. + * @param manager The MemoryManager to use to allocate objects + * @return Returns the current working directory. + * This is dyanmically allocated and must be deleted + * by the caller when its no longer needed! The memory returned + * will be allocated using the static memory manager, if users + * do not supply a memory manager. Users then need to make sure + * to use either the default or user specific memory manager to + * deallocate the memory. + */ + static XMLCh* getCurrentDirectory + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Check if a character is a slash + * + * This must be implemented by the per-platform driver. + * + * @param c the character to be examined + * + * @return true if the character examined is a slash + * false otherwise + */ + static inline bool isAnySlash(XMLCh c); + + /** Remove occurrences of the pair of dot slash + * + * To remove the sequence, dot slash if it is part of the sequence, + * slash dot slash. + * + * @param srcPath The path for which you want to remove the dot slash sequence. + * @param manager The MemoryManager to use to allocate objects + * @return + */ + static void removeDotSlash(XMLCh* const srcPath + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Remove occurrences of the dot dot slash + * + * To remove the sequence, slash dot dot slash and its preceding path segment + * if and only if the preceding path segment is not slash dot dot slash. + * + * @param srcPath The path for which you want to remove the slash dot + * dot slash sequence and its preceding path segment. + * @param manager The MemoryManager to use to allocate objects + * @return + */ + static void removeDotDotSlash(XMLCh* const srcPath + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Determines if a path is relative or absolute + * + * This must be implemented by the per-platform driver, which should + * determine whether the passed path is relative or not. The concept + * of relative and absolute might be... well relative on different + * platforms. But, as long as the determination is made consistently + * and in coordination with the weavePaths() method, it should work + * for any platform. + * + * @param toCheck The file name which you want to check + * @param manager The MemoryManager to use to allocate objects + * @return Returns true if the filename appears to be relative + */ + static bool isRelative(const XMLCh* const toCheck + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Utility to join two paths + * + * This must be implemented by the per-platform driver, and should + * weave the relative path part together with the base part and return + * a new path that represents this combination. + * + * If the relative part turns out to be fully qualified, it will be + * returned as is. If it is not, then it will be woven onto the + * passed base path, by removing one path component for each leading + * "../" (or whatever is the equivalent in the local system) in the + * relative path. + * + * @param basePath The string containing the base path + * @param relativePath The string containing the relative path + * @param manager The MemoryManager to use to allocate objects + * @return Returns a string containing the 'woven' path. It should + * be dynamically allocated and becomes the responsibility of the + * caller to delete. + */ + static XMLCh* weavePaths + ( + const XMLCh* const basePath + , const XMLCh* const relativePath + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Timing Methods */ + //@{ + + /** Gets the system time in milliseconds + * + * This must be implemented by the per-platform driver, which should + * use local services to return the current value of a running + * millisecond timer. Note that the value returned is only as accurate + * as the millisecond time of the underlying host system. + * + * @return Returns the system time as an unsigned long + */ + static unsigned long getCurrentMillis(); + //@} + + /** @name Mutex Methods */ + //@{ + + /** Factory method for creating MutexMgr object. + * + * This factory method creates a mutexmgr that will be used + * on the particular platform. + * + * @param manager The MemoryManager to use to allocate objects + */ + static XMLMutexMgr* makeMutexMgr(MemoryManager* const manager); + + /** Closes a mutex handle + * + * Each per-platform driver must implement this. Only it knows what + * the actual content of the passed mutex handle is. + * + * @param mtxHandle The mutex handle that you want to close + * @param manager The MemoryManager used to allocate the object + */ + static void closeMutex(void* const mtxHandle, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Locks a mutex handle + * + * Each per-platform driver must implement this. Only it knows what + * the actual content of the passed mutex handle is. + * + * @param mtxHandle The mutex handle that you want to lock + */ + static void lockMutex(void* const mtxHandle); + + /** Make a new mutex + * + * Each per-platform driver must implement this. Only it knows what + * the actual content of the passed mutex handle is. The returned + * handle pointer will be eventually passed to closeMutex() which is + * also implemented by the platform driver. + * + * @param manager The MemoryManager to use to allocate objects + */ + static void* makeMutex(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Unlocks a mutex + * + * Each per-platform driver must implement this. Only it knows what + * the actual content of the passed mutex handle is. + * + * Note that, since the underlying system synchronization services + * are used, Xerces cannot guarantee that lock/unlock operations are + * correctly enforced on a per-thread basis or that incorrect nesting + * of lock/unlock operations will be caught. + * + * @param mtxHandle The mutex handle that you want to unlock + */ + static void unlockMutex(void* const mtxHandle); + + //@} + + + /** @name External Message Support */ + //@{ + + /** Loads the message set from among the available domains + * + * The returned object must be dynamically allocated and the caller + * becomes responsible for cleaning it up. + * + * @param msgDomain The message domain which you want to load + */ + static XMLMsgLoader* loadMsgSet(const XMLCh* const msgDomain); + + //@} + + + /** @name NEL Character Handling */ + //@{ + /** + * This function enables the recognition of NEL(0x85) char and LSEP (0x2028) as newline chars + * which is disabled by default. + * It is only called once per process. Once it is set, any subsequent calls + * will result in exception being thrown. + * + * Note: 1. Turning this option on will make the parser non compliant to XML 1.0. + * 2. This option has no effect to document conforming to XML 1.1 compliant, + * which always recognize these two chars (0x85 and 0x2028) as newline characters. + * + */ + static void recognizeNEL(bool state + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Return the value of fgNEL flag. + */ + static bool isNELRecognized(); + //@} + + /** @name Strict IANA Encoding Checking */ + //@{ + /** + * This function enables/disables strict IANA encoding names checking. + * + * The strict checking is disabled by default. + * + * @param state If true, a strict IANA encoding name check is performed, + * otherwise, no checking. + * + */ + static void strictIANAEncoding(const bool state); + + /** + * Returns whether a strict IANA encoding name check is enabled or + * disabled. + */ + static bool isStrictIANAEncoding(); + //@} + + /** + * Aligns the specified pointer per platform block allocation + * requirements. + * + * The results of this function may be altered by defining + * XML_PLATFORM_NEW_BLOCK_ALIGNMENT. + */ + static inline XMLSize_t alignPointerForNewBlockAllocation(XMLSize_t ptrSize); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLPlatformUtils(); + + /** @name Private static methods */ + //@{ + + /** Loads a message set from the available domains + * + * @param msgDomain The message domain containing the message to be + * loaded + */ + static XMLMsgLoader* loadAMsgSet(const XMLCh* const msgDomain); + + /** Creates a net accessor object. + * + * Each per-platform driver must implement this method. However, + * having a Net Accessor is optional and this method can return a + * null pointer if remote access via HTTP and FTP URLs is not required. + * + * @return An object derived from XMLNetAccessor. It must be dynamically + * allocated, since it will be deleted later. + */ + static XMLNetAccessor* makeNetAccessor(); + + /** Creates a Transcoding service + * + * Each per-platform driver must implement this method and return some + * derivative of the XMLTransService class. This object serves as the + * transcoder factory for this process. The object must be dynamically + * allocated and the caller is responsible for cleaning it up. + * + * @return A dynamically allocated object of some class derived from + * the XMLTransService class. + */ + static XMLTransService* makeTransService(); + + /** Search for sequence, slash dot dot slash + * + * @param srcPath the path to search + * + * @return the position of the first occurrence of slash dot dot slash + * -1 if no such sequence is found + */ + static int searchSlashDotDotSlash(XMLCh* const srcPath); + + //@} + + /** @name Private static methods */ + //@{ + + /** + * Indicates whether the memory manager was supplied by the user + * or not. Users own the memory manager, and if none is supplied, + * Xerces uses a default one that it owns and is responsible for + * deleting in Terminate(). + */ + static bool fgMemMgrAdopted; + + //@} +}; + + +MakeXMLException(XMLPlatformUtilsException, XMLUTIL_EXPORT) + + +// --------------------------------------------------------------------------- +// XMLPlatformUtils: alignPointerForNewBlockAllocation +// --------------------------------------------------------------------------- +// Calculate alignment required by platform for a new +// block allocation. We use this in our custom allocators +// to ensure that returned blocks are properly aligned. +// Note that, although this will take a pointer and return the position +// at which it should be placed for correct alignment, in our code +// we normally use XMLSize_t parameters to discover what the alignment +// of header blocks should be. Thus, if this is to be +// used for the former purpose, to make compilers happy +// some casting will be necessary - neilg. +// +// Note: XML_PLATFORM_NEW_BLOCK_ALIGNMENT may be specified on a +// per-architecture basis to dictate the alignment requirements +// of the architecture. In the absense of this specification, +// this routine guesses at the correct alignment value. +// +// A XML_PLATFORM_NEW_BLOCK_ALIGNMENT value of zero is illegal. +// If a platform requires absolutely no alignment, a value +// of 1 should be specified ("align pointers on 1 byte boundaries"). +// +inline XMLSize_t +XMLPlatformUtils::alignPointerForNewBlockAllocation(XMLSize_t ptrSize) +{ + // Macro XML_PLATFORM_NEW_BLOCK_ALIGNMENT may be defined + // as needed to dictate alignment requirements on a + // per-architecture basis. In the absense of that we + // take an educated guess. +#ifdef XML_PLATFORM_NEW_BLOCK_ALIGNMENT + const XMLSize_t alignment = XML_PLATFORM_NEW_BLOCK_ALIGNMENT; +#else + const XMLSize_t alignment = (sizeof(void*) >= sizeof(double)) ? sizeof(void*) : sizeof(double); +#endif + + // Calculate current alignment of pointer + XMLSize_t current = ptrSize % alignment; + + // Adjust pointer alignment as needed + return (current == 0) + ? ptrSize + : (ptrSize + alignment - current); +} + + + +// --------------------------------------------------------------------------- +// XMLDeleter: Public Destructor +// --------------------------------------------------------------------------- +inline XMLDeleter::~XMLDeleter() +{ +} + +// --------------------------------------------------------------------------- +// XMLDeleter: Hidden constructors and operators +// --------------------------------------------------------------------------- +inline XMLDeleter::XMLDeleter() +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/QName.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/QName.hpp new file mode 100644 index 000000000000..a950d0d84bad --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/QName.hpp @@ -0,0 +1,217 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_QNAME_HPP) +#define XERCESC_INCLUDE_GUARD_QNAME_HPP + +#include +#include +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT QName : public XSerializable, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + /** Default constructor. */ + QName(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Constructs a specified qname using prefix, and localpart. */ + QName + ( + const XMLCh* const prefix + , const XMLCh* const localPart + , const unsigned int uriId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Constructs a specified qname using rawName. */ + QName + ( + const XMLCh* const rawName + , const unsigned int uriId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Copy constructor. */ + QName(const QName& qname); + + ~QName(); + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + const XMLCh* getPrefix() const; + XMLCh* getPrefix(); + + const XMLCh* getLocalPart() const; + XMLCh* getLocalPart(); + + unsigned int getURI() const; + + const XMLCh* getRawName() const; + XMLCh* getRawName(); + + MemoryManager* getMemoryManager() const; + + // ----------------------------------------------------------------------- + // Setters + // ----------------------------------------------------------------------- + void setName + ( + const XMLCh* const prefix + , const XMLCh* const localPart + , const unsigned int uriId + ); + + void setName + ( + const XMLCh* const rawName + , const unsigned int uriId + ); + + void setPrefix(const XMLCh*) ; + void setLocalPart(const XMLCh*) ; + void setNPrefix(const XMLCh*, const XMLSize_t ) ; + void setNLocalPart(const XMLCh*, const XMLSize_t ) ; + void setURI(const unsigned int) ; + + void setValues(const QName& qname); + + // ----------------------------------------------------------------------- + // comparison + // ----------------------------------------------------------------------- + bool operator==(const QName&) const; + + // ----------------------------------------------------------------------- + // Misc + // ----------------------------------------------------------------------- + void cleanUp(); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(QName) + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + QName& operator=(const QName&); + + // ----------------------------------------------------------------------- + // Private instance variables + // + // We copy the followings from XMLAttr.hpp, but stick to Java version's + // naming convention + // + // fPrefix + // fPrefixBufSz + // The prefix that was applied to this attribute's name, and the + // current size of the buffer (minus one for the null.) Prefixes + // really don't matter technically but it might be required for + // practical reasons, to recreate the original document for instance. + // + // fLocalPart + // fLocalPartBufSz + // The base part of the name of the attribute, and the current size + // of the buffer (minus one, where the null is.) + // + // fRawName + // fRawNameBufSz + // This is the QName form of the name, which is faulted in (from the + // prefix and name) upon request. The size field indicates the + // current size of the buffer (minus one for the null.) It will be + // zero until filled in. + // + // fURIId + // The id of the URI that this attribute belongs to. + // ----------------------------------------------------------------------- + XMLSize_t fPrefixBufSz; + XMLSize_t fLocalPartBufSz; + XMLSize_t fRawNameBufSz; + unsigned int fURIId; + XMLCh* fPrefix; + XMLCh* fLocalPart; + XMLCh* fRawName; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// QName: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh* QName::getPrefix() const +{ + return fPrefix; +} + +inline XMLCh* QName::getPrefix() +{ + return fPrefix; +} + +inline const XMLCh* QName::getLocalPart() const +{ + return fLocalPart; +} + +inline XMLCh* QName::getLocalPart() +{ + return fLocalPart; +} + +inline unsigned int QName::getURI() const +{ + return fURIId; +} + +inline MemoryManager* QName::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// QName: Setter methods +// --------------------------------------------------------------------------- +inline void QName::setURI(const unsigned int uriId) +{ + fURIId = uriId; +} + +inline void QName::setPrefix(const XMLCh* prefix) +{ + setNPrefix(prefix, XMLString::stringLen(prefix)); +} + +inline void QName::setLocalPart(const XMLCh* localPart) +{ + setNLocalPart(localPart, XMLString::stringLen(localPart)); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/RefArrayOf.c b/src/libs/xerces-c/msvc/include/xercesc/util/RefArrayOf.c new file mode 100644 index 000000000000..6e22db3742e1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/RefArrayOf.c @@ -0,0 +1,269 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// RefArrayOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +RefArrayOf::RefArrayOf(const XMLSize_t size, + MemoryManager* const manager) : + + fSize(size) + , fArray(0) + , fMemoryManager(manager) +{ + fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize]; + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = 0; +} + +template +RefArrayOf::RefArrayOf(TElem* values[], + const XMLSize_t size, + MemoryManager* const manager) : + + fSize(size) + , fArray(0) + , fMemoryManager(manager) +{ + fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize]; + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = values[index]; +} + +template RefArrayOf:: +RefArrayOf(const RefArrayOf& source) : + + fSize(source.fSize) + , fArray(0) + , fMemoryManager(source.fMemoryManager) +{ + fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize]; + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = source.fArray[index]; +} + +template RefArrayOf::~RefArrayOf() +{ + fMemoryManager->deallocate(fArray);//delete [] fArray; +} + + +// --------------------------------------------------------------------------- +// RefArrayOf: Public operators +// --------------------------------------------------------------------------- +template TElem*& RefArrayOf:: +operator[](const XMLSize_t index) +{ + if (index >= fSize) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + return fArray[index]; +} + +template const TElem* RefArrayOf:: +operator[](const XMLSize_t index) const +{ + if (index >= fSize) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + return fArray[index]; +} + +template RefArrayOf& RefArrayOf:: +operator=(const RefArrayOf& toAssign) +{ + if (this == &toAssign) + return *this; + + // Reallocate if not the same size + if (toAssign.fSize != fSize) + { + fMemoryManager->deallocate(fArray);//delete [] fArray; + fSize = toAssign.fSize; + fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize]; + } + + // Copy over the source elements + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = toAssign.fArray[index]; + + return *this; +} + +template bool RefArrayOf:: +operator==(const RefArrayOf& toCompare) const +{ + if (this == &toCompare) + return true; + + if (fSize != toCompare.fSize) + return false; + + for (XMLSize_t index = 0; index < fSize; index++) + { + if (fArray[index] != toCompare.fArray[index]) + return false; + } + return true; +} + +template bool RefArrayOf:: +operator!=(const RefArrayOf& toCompare) const +{ + return !operator==(toCompare); +} + + +// --------------------------------------------------------------------------- +// RefArrayOf: Copy operations +// --------------------------------------------------------------------------- +template XMLSize_t RefArrayOf:: +copyFrom(const RefArrayOf& srcArray) +{ + // + // Copy over as many of the source elements as will fit into + // this array. + // + const XMLSize_t count = fSize < srcArray.fSize ? + fSize : srcArray.fSize; + + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = srcArray.fArray[index]; + + return count; +} + + +// --------------------------------------------------------------------------- +// RefArrayOf: Getter methods +// --------------------------------------------------------------------------- +template XMLSize_t RefArrayOf::length() const +{ + return fSize; +} + +template TElem** RefArrayOf::rawData() const +{ + return fArray; +} + + +// --------------------------------------------------------------------------- +// RefArrayOf: Element management methods +// --------------------------------------------------------------------------- +template void RefArrayOf::deleteAt(const XMLSize_t index) +{ + if (index >= fSize) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + + delete fArray[index]; + fArray[index] = 0; +} + +template void RefArrayOf::deleteAllElements() +{ + for (XMLSize_t index = 0; index < fSize; index++) + { + delete fArray[index]; + fArray[index] = 0; + } +} + +template void RefArrayOf::resize(const XMLSize_t newSize) +{ + if (newSize == fSize) + return; + + if (newSize < fSize) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Array_BadNewSize, fMemoryManager); + + // Allocate the new array + TElem** newArray = (TElem**) fMemoryManager->allocate + ( + newSize * sizeof(TElem*) + );//new TElem*[newSize]; + + // Copy the existing values + XMLSize_t index = 0; + for (; index < fSize; index++) + newArray[index] = fArray[index]; + + for (; index < newSize; index++) + newArray[index] = 0; + + // Delete the old array and update our members + fMemoryManager->deallocate(fArray);//delete [] fArray; + fArray = newArray; + fSize = newSize; +} + + + + +// --------------------------------------------------------------------------- +// RefArrayEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template RefArrayEnumerator:: +RefArrayEnumerator( RefArrayOf* const toEnum + , const bool adopt) : + fAdopted(adopt) + , fCurIndex(0) + , fToEnum(toEnum) +{ +} + +template RefArrayEnumerator::~RefArrayEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// RefArrayEnumerator: Enum interface +// --------------------------------------------------------------------------- +template bool RefArrayEnumerator::hasMoreElements() const +{ + if (fCurIndex >= fToEnum->length()) + return false; + return true; +} + +template TElem& RefArrayEnumerator::nextElement() +{ + return *(*fToEnum)[fCurIndex++]; +} + +template void RefArrayEnumerator::Reset() +{ + fCurIndex = 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/RefArrayOf.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/RefArrayOf.hpp new file mode 100644 index 000000000000..1bd949a2551f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/RefArrayOf.hpp @@ -0,0 +1,150 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REFARRAY_HPP) +#define XERCESC_INCLUDE_GUARD_REFARRAY_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class RefArrayOf : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefArrayOf + ( + const XMLSize_t size + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + RefArrayOf + ( + TElem* values[] + , const XMLSize_t size + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + RefArrayOf(const RefArrayOf& source); + ~RefArrayOf(); + + + // ----------------------------------------------------------------------- + // Public operators + // ----------------------------------------------------------------------- + TElem*& operator[](const XMLSize_t index); + const TElem* operator[](const XMLSize_t index) const; + RefArrayOf& operator=(const RefArrayOf& toAssign); + bool operator==(const RefArrayOf& toCompare) const; + bool operator!=(const RefArrayOf& toCompare) const; + + + // ----------------------------------------------------------------------- + // Copy operations + // ----------------------------------------------------------------------- + XMLSize_t copyFrom(const RefArrayOf& srcArray); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t length() const; + TElem** rawData() const; + + + // ----------------------------------------------------------------------- + // Element management methods + // ----------------------------------------------------------------------- + void deleteAt(const XMLSize_t index); + void deleteAllElements(); + void resize(const XMLSize_t newSize); + + +private : + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + XMLSize_t fSize; + TElem** fArray; + MemoryManager* fMemoryManager; +}; + + +// +// An enumerator for a reference array. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template class RefArrayEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefArrayEnumerator + ( + RefArrayOf* const toEnum + , const bool adopt = false + ); + virtual ~RefArrayEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TElem& nextElement(); + void Reset(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefArrayEnumerator(const RefArrayEnumerator&); + RefArrayEnumerator& operator=(const RefArrayEnumerator&); + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed array. If so then + // we delete it when we are destroyed. + // + // fCurIndex + // This is the current index into the array. + // + // fToEnum + // The reference array being enumerated. + // ----------------------------------------------------------------------- + bool fAdopted; + XMLSize_t fCurIndex; + RefArrayOf* fToEnum; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/RefArrayVectorOf.c b/src/libs/xerces-c/msvc/include/xercesc/util/RefArrayVectorOf.c new file mode 100644 index 000000000000..d932773d2f16 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/RefArrayVectorOf.c @@ -0,0 +1,122 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include "RefArrayVectorOf.hpp" +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// RefArrayVectorOf: Constructor and Destructor +// --------------------------------------------------------------------------- +template +RefArrayVectorOf::RefArrayVectorOf( const XMLSize_t maxElems + , const bool adoptElems + , MemoryManager* const manager) + : BaseRefVectorOf(maxElems, adoptElems, manager) +{ +} + + +template RefArrayVectorOf::~RefArrayVectorOf() +{ + if (this->fAdoptedElems) + { + for (XMLSize_t index = 0; index < this->fCurCount; index++) + this->fMemoryManager->deallocate(this->fElemList[index]);//delete[] fElemList[index]; + } + this->fMemoryManager->deallocate(this->fElemList);//delete [] fElemList; +} + +template void +RefArrayVectorOf::setElementAt(TElem* const toSet, const XMLSize_t setAt) +{ + if (setAt >= this->fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, this->fMemoryManager); + + if (this->fAdoptedElems) + this->fMemoryManager->deallocate(this->fElemList[setAt]); + + this->fElemList[setAt] = toSet; +} + +template void RefArrayVectorOf::removeAllElements() +{ + for (XMLSize_t index = 0; index < this->fCurCount; index++) + { + if (this->fAdoptedElems) + this->fMemoryManager->deallocate(this->fElemList[index]); + + // Keep unused elements zero for sanity's sake + this->fElemList[index] = 0; + } + this->fCurCount = 0; +} + +template void RefArrayVectorOf:: +removeElementAt(const XMLSize_t removeAt) +{ + if (removeAt >= this->fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, this->fMemoryManager); + + if (this->fAdoptedElems) + this->fMemoryManager->deallocate(this->fElemList[removeAt]); + + // Optimize if its the last element + if (removeAt == this->fCurCount-1) + { + this->fElemList[removeAt] = 0; + this->fCurCount--; + return; + } + + // Copy down every element above remove point + for (XMLSize_t index = removeAt; index < this->fCurCount-1; index++) + this->fElemList[index] = this->fElemList[index+1]; + + // Keep unused elements zero for sanity's sake + this->fElemList[this->fCurCount-1] = 0; + + // And bump down count + this->fCurCount--; +} + +template void RefArrayVectorOf::removeLastElement() +{ + if (!this->fCurCount) + return; + this->fCurCount--; + + if (this->fAdoptedElems) + this->fMemoryManager->deallocate(this->fElemList[this->fCurCount]); +} + +template void RefArrayVectorOf::cleanup() +{ + if (this->fAdoptedElems) + { + for (XMLSize_t index = 0; index < this->fCurCount; index++) + this->fMemoryManager->deallocate(this->fElemList[index]); + } + this->fMemoryManager->deallocate(this->fElemList);//delete [] fElemList; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/RefArrayVectorOf.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/RefArrayVectorOf.hpp new file mode 100644 index 000000000000..50491b4043d8 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/RefArrayVectorOf.hpp @@ -0,0 +1,70 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REFARRAYVECTOROF_HPP) +#define XERCESC_INCLUDE_GUARD_REFARRAYVECTOROF_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Class with implementation for vectors of pointers to arrays - implements from + * the Abstract class Vector + */ +template class RefArrayVectorOf : public BaseRefVectorOf +{ +public : + // ----------------------------------------------------------------------- + // Constructor + // ----------------------------------------------------------------------- + RefArrayVectorOf( const XMLSize_t maxElems + , const bool adoptElems = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ----------------------------------------------------------------------- + // Destructor + // ----------------------------------------------------------------------- + ~RefArrayVectorOf(); + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + void setElementAt(TElem* const toSet, const XMLSize_t setAt); + void removeAllElements(); + void removeElementAt(const XMLSize_t removeAt); + void removeLastElement(); + void cleanup(); +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefArrayVectorOf(const RefArrayVectorOf&); + RefArrayVectorOf& operator=(const RefArrayVectorOf&); +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/RefHash2KeysTableOf.c b/src/libs/xerces-c/msvc/include/xercesc/util/RefHash2KeysTableOf.c new file mode 100644 index 000000000000..d37e008774a0 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/RefHash2KeysTableOf.c @@ -0,0 +1,692 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOf: Constructors and Destructor +// --------------------------------------------------------------------------- + +template +RefHash2KeysTableOf::RefHash2KeysTableOf( + const XMLSize_t modulus, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(true) + , fBucketList(0) + , fHashModulus(modulus) + , fCount(0) +{ + initialize(modulus); +} + +template +RefHash2KeysTableOf::RefHash2KeysTableOf( + const XMLSize_t modulus, + const THasher& hasher, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(true) + , fBucketList(0) + , fHashModulus(modulus) + , fCount(0) + , fHasher (hasher) +{ + initialize(modulus); +} + +template +RefHash2KeysTableOf::RefHash2KeysTableOf( + const XMLSize_t modulus, + const bool adoptElems, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fCount(0) + +{ + initialize(modulus); +} + +template +RefHash2KeysTableOf::RefHash2KeysTableOf( + const XMLSize_t modulus, + const bool adoptElems, + const THasher& hasher, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fCount(0) + , fHasher (hasher) +{ + initialize(modulus); +} + +template +void RefHash2KeysTableOf::initialize(const XMLSize_t modulus) +{ + if (modulus == 0) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); + + // Allocate the bucket list and zero them + fBucketList = (RefHash2KeysTableBucketElem**) fMemoryManager->allocate + ( + fHashModulus * sizeof(RefHash2KeysTableBucketElem*) + ); //new RefHash2KeysTableBucketElem*[fHashModulus]; + memset(fBucketList, 0, sizeof(fBucketList[0]) * fHashModulus); +} + +template +RefHash2KeysTableOf::~RefHash2KeysTableOf() +{ + removeAll(); + + // Then delete the bucket list & hasher + fMemoryManager->deallocate(fBucketList); //delete [] fBucketList; + fBucketList = 0; +} + + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOf: Element management +// --------------------------------------------------------------------------- +template +bool RefHash2KeysTableOf::isEmpty() const +{ + return (fCount==0); +} + +template +bool RefHash2KeysTableOf:: +containsKey(const void* const key1, const int key2) const +{ + XMLSize_t hashVal; + const RefHash2KeysTableBucketElem* findIt = findBucketElem(key1, key2, hashVal); + return (findIt != 0); +} + +template +void RefHash2KeysTableOf:: +removeKey(const void* const key1, const int key2) +{ + // Hash the key + XMLSize_t hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + RefHash2KeysTableBucketElem* curElem = fBucketList[hashVal]; + RefHash2KeysTableBucketElem* lastElem = 0; + + while (curElem) + { + if((key2==curElem->fKey2) && (fHasher.equals(key1, curElem->fKey1))) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + // If we adopted the elements, then delete the data + if (fAdoptedElems) + delete curElem->fData; + + // Delete the current element + // delete curElem; + // destructor is empty... + // curElem->~RefHash2KeysTableBucketElem(); + fMemoryManager->deallocate(curElem); + fCount--; + return; + } + + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + + // We never found that key + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, fMemoryManager); +} + +template +void RefHash2KeysTableOf:: +removeKey(const void* const key1) +{ + // Hash the key + XMLSize_t hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + RefHash2KeysTableBucketElem* curElem = fBucketList[hashVal]; + RefHash2KeysTableBucketElem* lastElem = 0; + + while (curElem) + { + if(fHasher.equals(key1, curElem->fKey1)) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + // If we adopted the elements, then delete the data + if (fAdoptedElems) + delete curElem->fData; + + RefHash2KeysTableBucketElem* toBeDeleted=curElem; + curElem = curElem->fNext; + + // Delete the current element + // delete curElem; + // destructor is empty... + // curElem->~RefHash2KeysTableBucketElem(); + fMemoryManager->deallocate(toBeDeleted); + fCount--; + } + else + { + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + } +} + +template +void RefHash2KeysTableOf::removeAll() +{ + if(isEmpty()) + return; + + // Clean up the buckets first + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + // Get the bucket list head for this entry + RefHash2KeysTableBucketElem* curElem = fBucketList[buckInd]; + RefHash2KeysTableBucketElem* nextElem; + while (curElem) + { + // Save the next element before we hose this one + nextElem = curElem->fNext; + + // If we adopted the data, then delete it too + // (Note: the userdata hash table instance has data type of void *. + // This will generate compiler warnings here on some platforms, but they + // can be ignored since fAdoptedElements is false. + if (fAdoptedElems) + delete curElem->fData; + + // Then delete the current element and move forward + // destructor is empty... + // curElem->~RefHash2KeysTableBucketElem(); + fMemoryManager->deallocate(curElem); + curElem = nextElem; + } + + // Clean out this entry + fBucketList[buckInd] = 0; + } + fCount=0; +} + +// this function transfer the data from key1 to key2 +template +void RefHash2KeysTableOf::transferElement(const void* const key1, void* key2) +{ + // Hash the key + XMLSize_t hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + RefHash2KeysTableBucketElem* curElem = fBucketList[hashVal]; + RefHash2KeysTableBucketElem* lastElem = 0; + + while (curElem) + { + // if this element has the same primary key, remove it and add it using the new primary key + if(fHasher.equals(key1, curElem->fKey1)) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + // this code comes from put(), but it doesn't update fCount + XMLSize_t hashVal2; + RefHash2KeysTableBucketElem* newBucket = findBucketElem(key2, curElem->fKey2, hashVal2); + if (newBucket) + { + if (fAdoptedElems) + delete newBucket->fData; + newBucket->fData = curElem->fData; + newBucket->fKey1 = key2; + newBucket->fKey2 = curElem->fKey2; + } + else + { + newBucket = + new (fMemoryManager->allocate(sizeof(RefHash2KeysTableBucketElem))) + RefHash2KeysTableBucketElem(key2, curElem->fKey2, curElem->fData, fBucketList[hashVal2]); + fBucketList[hashVal2] = newBucket; + } + + RefHash2KeysTableBucketElem* elemToDelete = curElem; + + // Update just curElem; lastElem must stay the same + curElem = curElem->fNext; + + // Delete the current element + // delete elemToDelete; + // destructor is empty... + // curElem->~RefHash2KeysTableBucketElem(); + fMemoryManager->deallocate(elemToDelete); + } + else + { + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + } +} + + + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOf: Getters +// --------------------------------------------------------------------------- +template +TVal* RefHash2KeysTableOf::get(const void* const key1, const int key2) +{ + XMLSize_t hashVal; + RefHash2KeysTableBucketElem* findIt = findBucketElem(key1, key2, hashVal); + if (!findIt) + return 0; + return findIt->fData; +} + +template +const TVal* RefHash2KeysTableOf:: +get(const void* const key1, const int key2) const +{ + XMLSize_t hashVal; + const RefHash2KeysTableBucketElem* findIt = findBucketElem(key1, key2, hashVal); + if (!findIt) + return 0; + return findIt->fData; +} + +template +MemoryManager* RefHash2KeysTableOf::getMemoryManager() const +{ + return fMemoryManager; +} + +template +XMLSize_t RefHash2KeysTableOf::getHashModulus() const +{ + return fHashModulus; +} + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOf: Putters +// --------------------------------------------------------------------------- +template +void RefHash2KeysTableOf::put(void* key1, int key2, TVal* const valueToAdopt) +{ + // Apply 4 load factor to find threshold. + XMLSize_t threshold = fHashModulus * 4; + + // If we've grown too big, expand the table and rehash. + if (fCount >= threshold) + rehash(); + + // First see if the key exists already + XMLSize_t hashVal; + RefHash2KeysTableBucketElem* newBucket = findBucketElem(key1, key2, hashVal); + + // + // If so,then update its value. If not, then we need to add it to + // the right bucket + // + if (newBucket) + { + if (fAdoptedElems) + delete newBucket->fData; + newBucket->fData = valueToAdopt; + newBucket->fKey1 = key1; + newBucket->fKey2 = key2; + } + else + { + newBucket = + new (fMemoryManager->allocate(sizeof(RefHash2KeysTableBucketElem))) + RefHash2KeysTableBucketElem(key1, key2, valueToAdopt, fBucketList[hashVal]); + fBucketList[hashVal] = newBucket; + fCount++; + } +} + + + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOf: Private methods +// --------------------------------------------------------------------------- +template +inline RefHash2KeysTableBucketElem* RefHash2KeysTableOf:: +findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal) +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + RefHash2KeysTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if((key2==curElem->fKey2) && (fHasher.equals(key1, curElem->fKey1))) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + +template +inline const RefHash2KeysTableBucketElem* RefHash2KeysTableOf:: +findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal) const +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + const RefHash2KeysTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if((key2==curElem->fKey2) && (fHasher.equals(key1, curElem->fKey1))) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + + +template +void RefHash2KeysTableOf:: +rehash() +{ + const XMLSize_t newMod = (fHashModulus * 8)+1; + + RefHash2KeysTableBucketElem** newBucketList = + (RefHash2KeysTableBucketElem**) fMemoryManager->allocate + ( + newMod * sizeof(RefHash2KeysTableBucketElem*) + );//new RefHash2KeysTableBucketElem*[fHashModulus]; + + // Make sure the new bucket list is destroyed if an + // exception is thrown. + ArrayJanitor*> guard(newBucketList, fMemoryManager); + + memset(newBucketList, 0, newMod * sizeof(newBucketList[0])); + + // Rehash all existing entries. + for (XMLSize_t index = 0; index < fHashModulus; index++) + { + // Get the bucket list head for this entry + RefHash2KeysTableBucketElem* curElem = fBucketList[index]; + while (curElem) + { + // Save the next element before we detach this one + RefHash2KeysTableBucketElem* nextElem = curElem->fNext; + + const XMLSize_t hashVal = fHasher.getHashVal(curElem->fKey1, newMod); + assert(hashVal < newMod); + + RefHash2KeysTableBucketElem* newHeadElem = newBucketList[hashVal]; + + // Insert at the start of this bucket's list. + curElem->fNext = newHeadElem; + newBucketList[hashVal] = curElem; + + curElem = nextElem; + } + } + + RefHash2KeysTableBucketElem** const oldBucketList = fBucketList; + + // Everything is OK at this point, so update the + // member variables. + fBucketList = guard.release(); + fHashModulus = newMod; + + // Delete the old bucket list. + fMemoryManager->deallocate(oldBucketList);//delete[] oldBucketList; + +} + + + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOfEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template +RefHash2KeysTableOfEnumerator:: +RefHash2KeysTableOfEnumerator(RefHash2KeysTableOf* const toEnum + , const bool adopt + , MemoryManager* const manager) + : fAdopted(adopt), fCurElem(0), fCurHash((XMLSize_t)-1), fToEnum(toEnum) + , fMemoryManager(manager) + , fLockPrimaryKey(0) +{ + if (!toEnum) + ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, fMemoryManager); + + // + // Find the next available bucket element in the hash table. If it + // comes back zero, that just means the table is empty. + // + // Note that the -1 in the current hash tells it to start + // from the beginning. + // + findNext(); +} + +template +RefHash2KeysTableOfEnumerator::~RefHash2KeysTableOfEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOfEnumerator: Enum interface +// --------------------------------------------------------------------------- +template +bool RefHash2KeysTableOfEnumerator::hasMoreElements() const +{ + // + // If our current has is at the max and there are no more elements + // in the current bucket, then no more elements. + // + if (!fCurElem && (fCurHash == fToEnum->fHashModulus)) + return false; + return true; +} + +template +TVal& RefHash2KeysTableOfEnumerator::nextElement() +{ + // Make sure we have an element to return + if (!hasMoreElements()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + RefHash2KeysTableBucketElem* saveElem = fCurElem; + findNext(); + + return *saveElem->fData; +} + +template +void RefHash2KeysTableOfEnumerator::nextElementKey(void*& retKey1, int& retKey2) +{ + // Make sure we have an element to return + if (!hasMoreElements()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + RefHash2KeysTableBucketElem* saveElem = fCurElem; + findNext(); + + retKey1 = saveElem->fKey1; + retKey2 = saveElem->fKey2; + + return; +} + +template +void RefHash2KeysTableOfEnumerator::Reset() +{ + if(fLockPrimaryKey) + fCurHash=fToEnum->fHasher.getHashVal(fLockPrimaryKey, fToEnum->fHashModulus); + else + fCurHash = (XMLSize_t)-1; + + fCurElem = 0; + findNext(); +} + + +template +void RefHash2KeysTableOfEnumerator::setPrimaryKey(const void* key) +{ + fLockPrimaryKey=key; + Reset(); +} + +// --------------------------------------------------------------------------- +// RefHash2KeysTableOfEnumerator: Private helper methods +// --------------------------------------------------------------------------- +template +void RefHash2KeysTableOfEnumerator::findNext() +{ + // Code to execute if we have to return only values with the primary key + if(fLockPrimaryKey) + { + if(!fCurElem) + fCurElem = fToEnum->fBucketList[fCurHash]; + else + fCurElem = fCurElem->fNext; + while (fCurElem && (!fToEnum->fHasher.equals(fLockPrimaryKey, fCurElem->fKey1))) + fCurElem = fCurElem->fNext; + // if we didn't found it, make so hasMoreElements() returns false + if(!fCurElem) + fCurHash = fToEnum->fHashModulus; + return; + } + // + // If there is a current element, move to its next element. If this + // hits the end of the bucket, the next block will handle the rest. + // + if (fCurElem) + fCurElem = fCurElem->fNext; + + // + // If the current element is null, then we have to move up to the + // next hash value. If that is the hash modulus, then we cannot + // go further. + // + if (!fCurElem) + { + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + + // Else find the next non-empty bucket + while (fToEnum->fBucketList[fCurHash]==0) + { + // Bump to the next hash value. If we max out return + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + } + fCurElem = fToEnum->fBucketList[fCurHash]; + } +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/RefHash2KeysTableOf.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/RefHash2KeysTableOf.hpp new file mode 100644 index 000000000000..d2639e8cc707 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/RefHash2KeysTableOf.hpp @@ -0,0 +1,258 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REFHASH2KEYSTABLEOF_HPP) +#define XERCESC_INCLUDE_GUARD_REFHASH2KEYSTABLEOF_HPP + + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// This hash table is similar to RefHashTableOf with an additional integer as key2 + +// Forward declare the enumerator so it can be our friend. +// +template +class RefHash2KeysTableOfEnumerator; + +// +// This should really be a nested class, but some of the compilers we +// have to support cannot deal with that! +// +template +struct RefHash2KeysTableBucketElem +{ + RefHash2KeysTableBucketElem(void* key1, int key2, TVal* const value, RefHash2KeysTableBucketElem* next) + : fData(value), fNext(next), fKey1(key1), fKey2(key2) + { + } + ~RefHash2KeysTableBucketElem() {}; + + TVal* fData; + RefHash2KeysTableBucketElem* fNext; + void* fKey1; + int fKey2; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHash2KeysTableBucketElem(const RefHash2KeysTableBucketElem&); + RefHash2KeysTableBucketElem& operator=(const RefHash2KeysTableBucketElem&); +}; + + +template +class RefHash2KeysTableOf : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + RefHash2KeysTableOf( + const XMLSize_t modulus, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHash2KeysTableOf( + const XMLSize_t modulus, + const THasher& hasher, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHash2KeysTableOf( + const XMLSize_t modulus, + const bool adoptElems, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHash2KeysTableOf( + const XMLSize_t modulus, + const bool adoptElems, + const THasher& hasher, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~RefHash2KeysTableOf(); + + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + bool isEmpty() const; + bool containsKey(const void* const key1, const int key2) const; + void removeKey(const void* const key1, const int key2); + void removeKey(const void* const key1); + void removeAll(); + void transferElement(const void* const key1, void* key2); + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + TVal* get(const void* const key1, const int key2); + const TVal* get(const void* const key1, const int key2) const; + + MemoryManager* getMemoryManager() const; + XMLSize_t getHashModulus() const; + + // ----------------------------------------------------------------------- + // Putters + // ----------------------------------------------------------------------- + void put(void* key1, int key2, TVal* const valueToAdopt); + +private : + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class RefHash2KeysTableOfEnumerator; + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHash2KeysTableOf(const RefHash2KeysTableOf&); + RefHash2KeysTableOf& operator=(const RefHash2KeysTableOf&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + RefHash2KeysTableBucketElem* findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal); + const RefHash2KeysTableBucketElem* findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal) const; + void initialize(const XMLSize_t modulus); + void rehash(); + + + // ----------------------------------------------------------------------- + // Data members + // + // fAdoptedElems + // Indicates whether the values added are adopted or just referenced. + // If adopted, then they are deleted when they are removed from the + // hash table. + // + // fBucketList + // This is the array that contains the heads of all of the list + // buckets, one for each possible hash value. + // + // fHashModulus + // The modulus used for this hash table, to hash the keys. This is + // also the number of elements in the bucket list. + // + // fCount + // The number of elements currently in the map + // + // fHash + // The hasher for the key1 data type. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + bool fAdoptedElems; + RefHash2KeysTableBucketElem** fBucketList; + XMLSize_t fHashModulus; + XMLSize_t fCount; + THasher fHasher; +}; + + + +// +// An enumerator for a value array. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template +class RefHash2KeysTableOfEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefHash2KeysTableOfEnumerator(RefHash2KeysTableOf* const toEnum + , const bool adopt = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~RefHash2KeysTableOfEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TVal& nextElement(); + void Reset(); + + // ----------------------------------------------------------------------- + // New interface + // ----------------------------------------------------------------------- + void nextElementKey(void*&, int&); + void setPrimaryKey(const void* key); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHash2KeysTableOfEnumerator(const RefHash2KeysTableOfEnumerator&); + RefHash2KeysTableOfEnumerator& operator=(const RefHash2KeysTableOfEnumerator&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + void findNext(); + + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed vector. If so then + // we delete the vector when we are destroyed. + // + // fCurElem + // This is the current bucket bucket element that we are on. + // + // fCurHash + // The is the current hash buck that we are working on. Once we hit + // the end of the bucket that fCurElem is in, then we have to start + // working this one up to the next non-empty bucket. + // + // fToEnum + // The value array being enumerated. + // + // fLockPrimaryKey + // Indicates that we are requested to iterate over the secondary keys + // associated with the given primary key + // + // ----------------------------------------------------------------------- + bool fAdopted; + RefHash2KeysTableBucketElem* fCurElem; + XMLSize_t fCurHash; + RefHash2KeysTableOf* fToEnum; + MemoryManager* const fMemoryManager; + const void* fLockPrimaryKey; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/RefHash3KeysIdPool.c b/src/libs/xerces-c/msvc/include/xercesc/util/RefHash3KeysIdPool.c new file mode 100644 index 000000000000..4fdd59524403 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/RefHash3KeysIdPool.c @@ -0,0 +1,572 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// RefHash3KeysIdPool: Constructors and Destructor +// --------------------------------------------------------------------------- +template +RefHash3KeysIdPool::RefHash3KeysIdPool( + const XMLSize_t modulus, + const XMLSize_t initSize, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(true) + , fBucketList(0) + , fHashModulus(modulus) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) +{ + initialize(modulus); + + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*)); //new TVal*[fIdPtrsCount]; + fIdPtrs[0] = 0; +} + +template +RefHash3KeysIdPool::RefHash3KeysIdPool( + const XMLSize_t modulus, + const THasher& hasher, + const XMLSize_t initSize, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(true) + , fBucketList(0) + , fHashModulus(modulus) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) + , fHasher(hasher) +{ + initialize(modulus); + + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*)); //new TVal*[fIdPtrsCount]; + fIdPtrs[0] = 0; +} + +template +RefHash3KeysIdPool::RefHash3KeysIdPool( + const XMLSize_t modulus, + const bool adoptElems, + const XMLSize_t initSize, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) + +{ + initialize(modulus); + + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*)); //new TVal*[fIdPtrsCount]; + fIdPtrs[0] = 0; +} + +template +RefHash3KeysIdPool::RefHash3KeysIdPool( + const XMLSize_t modulus, + const bool adoptElems, + const THasher& hasher, + const XMLSize_t initSize, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fIdPtrs(0) + , fIdPtrsCount(initSize) + , fIdCounter(0) + , fHasher(hasher) +{ + initialize(modulus); + + // Allocate the initial id pointers array. We don't have to zero them + // out since the fIdCounter value tells us which ones are valid. The + // zeroth element is never used (and represents an invalid pool id.) + // + if (!fIdPtrsCount) + fIdPtrsCount = 256; + fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*)); //new TVal*[fIdPtrsCount]; + fIdPtrs[0] = 0; +} + +template +void RefHash3KeysIdPool::initialize(const XMLSize_t modulus) +{ + if (modulus == 0) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); + + // Allocate the bucket list and zero them + fBucketList = (RefHash3KeysTableBucketElem**) fMemoryManager->allocate + ( + fHashModulus * sizeof(RefHash3KeysTableBucketElem*) + ); //new RefHash3KeysTableBucketElem*[fHashModulus]; + memset(fBucketList, 0, sizeof(fBucketList[0]) * fHashModulus); +} + +template +RefHash3KeysIdPool::~RefHash3KeysIdPool() +{ + removeAll(); + + // Then delete the bucket list & hasher & id pointers list + fMemoryManager->deallocate(fIdPtrs); //delete [] fIdPtrs; + fIdPtrs = 0; + fMemoryManager->deallocate(fBucketList); //delete [] fBucketList; + fBucketList = 0; +} + + +// --------------------------------------------------------------------------- +// RefHash3KeysIdPool: Element management +// --------------------------------------------------------------------------- +template +bool RefHash3KeysIdPool::isEmpty() const +{ + // Just check the bucket list for non-empty elements + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + if (fBucketList[buckInd] != 0) + return false; + } + return true; +} + +template +bool RefHash3KeysIdPool:: +containsKey(const void* const key1, const int key2, const int key3) const +{ + XMLSize_t hashVal; + const RefHash3KeysTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); + return (findIt != 0); +} + +template +void RefHash3KeysIdPool::removeAll() +{ + if (fIdCounter == 0) return; + + // Clean up the buckets first + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + // Get the bucket list head for this entry + RefHash3KeysTableBucketElem* curElem = fBucketList[buckInd]; + RefHash3KeysTableBucketElem* nextElem; + while (curElem) + { + // Save the next element before we hose this one + nextElem = curElem->fNext; + + // If we adopted the data, then delete it too + // (Note: the userdata hash table instance has data type of void *. + // This will generate compiler warnings here on some platforms, but they + // can be ignored since fAdoptedElements is false. + if (fAdoptedElems) + delete curElem->fData; + + // Then delete the current element and move forward + // delete curElem; + // destructor is empty... + // curElem->~RefHash3KeysTableBucketElem(); + fMemoryManager->deallocate(curElem); + curElem = nextElem; + } + + // Clean out this entry + fBucketList[buckInd] = 0; + } + + // Reset the id counter + fIdCounter = 0; +} + + +// --------------------------------------------------------------------------- +// RefHash3KeysIdPool: Getters +// --------------------------------------------------------------------------- +template +TVal* +RefHash3KeysIdPool::getByKey(const void* const key1, const int key2, const int key3) +{ + XMLSize_t hashVal; + RefHash3KeysTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); + if (!findIt) + return 0; + return findIt->fData; +} + +template +const TVal* +RefHash3KeysIdPool::getByKey(const void* const key1, const int key2, const int key3) const +{ + XMLSize_t hashVal; + const RefHash3KeysTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); + if (!findIt) + return 0; + return findIt->fData; +} + +template +TVal* +RefHash3KeysIdPool::getById(const unsigned int elemId) +{ + // If its either zero or beyond our current id, its an error + if (!elemId || (elemId > fIdCounter)) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); + + return fIdPtrs[elemId]; +} + +template +const TVal* +RefHash3KeysIdPool::getById(const unsigned int elemId) const +{ + // If its either zero or beyond our current id, its an error + if (!elemId || (elemId > fIdCounter)) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); + + return fIdPtrs[elemId]; +} + +template +MemoryManager* RefHash3KeysIdPool::getMemoryManager() const +{ + return fMemoryManager; +} + +template +XMLSize_t RefHash3KeysIdPool::getHashModulus() const +{ + return fHashModulus; +} + +// --------------------------------------------------------------------------- +// RefHash3KeysIdPool: Putters +// --------------------------------------------------------------------------- +template +XMLSize_t +RefHash3KeysIdPool::put(void* key1, int key2, int key3, TVal* const valueToAdopt) +{ + // First see if the key exists already + XMLSize_t hashVal; + XMLSize_t retId; + RefHash3KeysTableBucketElem* newBucket = findBucketElem(key1, key2, key3, hashVal); + + // + // If so,then update its value. If not, then we need to add it to + // the right bucket + // + if (newBucket) + { + retId = newBucket->fData->getId(); + if (fAdoptedElems) + delete newBucket->fData; + newBucket->fData = valueToAdopt; + newBucket->fKey1 = key1; + newBucket->fKey2 = key2; + newBucket->fKey3 = key3; + } + else + { + // Revisit: the gcc compiler 2.95.x is generating an + // internal compiler error message. So we use the default + // memory manager for now. +#if defined (XML_GCC_VERSION) && (XML_GCC_VERSION < 29600) + newBucket = new RefHash3KeysTableBucketElem(key1, key2, key3, valueToAdopt, fBucketList[hashVal]); +#else + newBucket = + new (fMemoryManager->allocate(sizeof(RefHash3KeysTableBucketElem))) + RefHash3KeysTableBucketElem(key1, key2, key3, valueToAdopt, fBucketList[hashVal]); +#endif + fBucketList[hashVal] = newBucket; + + // + // Give this new one the next available id and add to the pointer list. + // Expand the list if that is now required. + // + if (fIdCounter + 1 == fIdPtrsCount) + { + // Create a new count 1.5 times larger and allocate a new array + XMLSize_t newCount = (XMLSize_t)(fIdPtrsCount * 1.5); + TVal** newArray = (TVal**) fMemoryManager->allocate + ( + newCount * sizeof(TVal*) + ); //new TVal*[newCount]; + + // Copy over the old contents to the new array + memcpy(newArray, fIdPtrs, fIdPtrsCount * sizeof(TVal*)); + + // Ok, toss the old array and store the new data + fMemoryManager->deallocate(fIdPtrs); //delete [] fIdPtrs; + fIdPtrs = newArray; + fIdPtrsCount = newCount; + } + retId = ++fIdCounter; + } + + fIdPtrs[retId] = valueToAdopt; + + // Set the id on the passed element + valueToAdopt->setId(retId); + + // Return the id that we gave to this element + return retId; +} + +// --------------------------------------------------------------------------- +// RefHash3KeysIdPool: Private methods +// --------------------------------------------------------------------------- +template +inline RefHash3KeysTableBucketElem* RefHash3KeysIdPool:: +findBucketElem(const void* const key1, const int key2, const int key3, XMLSize_t& hashVal) +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + RefHash3KeysTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if((key2==curElem->fKey2) && (key3==curElem->fKey3) && (fHasher.equals(key1, curElem->fKey1))) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + +template +inline const RefHash3KeysTableBucketElem* RefHash3KeysIdPool:: +findBucketElem(const void* const key1, const int key2, const int key3, XMLSize_t& hashVal) const +{ + // Hash the key + hashVal = fHasher.getHashVal(key1, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + const RefHash3KeysTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if((key2==curElem->fKey2) && (key3==curElem->fKey3) && (fHasher.equals(key1, curElem->fKey1))) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + + +// --------------------------------------------------------------------------- +// RefHash3KeysIdPoolEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template +RefHash3KeysIdPoolEnumerator:: +RefHash3KeysIdPoolEnumerator(RefHash3KeysIdPool* const toEnum + , const bool adopt + , MemoryManager* const manager) + : fAdoptedElems(adopt), fCurIndex(0), fToEnum(toEnum), fMemoryManager(manager) +{ + if (!toEnum) + ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, fMemoryManager); + + Reset(); + resetKey(); +} + +template +RefHash3KeysIdPoolEnumerator::~RefHash3KeysIdPoolEnumerator() +{ + if (fAdoptedElems) + delete fToEnum; +} + +template +RefHash3KeysIdPoolEnumerator:: +RefHash3KeysIdPoolEnumerator(const RefHash3KeysIdPoolEnumerator& toCopy) : + XMLEnumerator(toCopy) + , XMemory(toCopy) + , fAdoptedElems(toCopy.fAdoptedElems) + , fCurIndex(toCopy.fCurIndex) + , fToEnum(toCopy.fToEnum) + , fCurElem(toCopy.fCurElem) + , fCurHash(toCopy.fCurHash) + , fMemoryManager(toCopy.fMemoryManager) +{ +} + +// --------------------------------------------------------------------------- +// RefHash3KeysIdPoolEnumerator: Enum interface +// --------------------------------------------------------------------------- +template +bool RefHash3KeysIdPoolEnumerator::hasMoreElements() const +{ + // If our index is zero or past the end, then we are done + if (!fCurIndex || (fCurIndex > fToEnum->fIdCounter)) + return false; + return true; +} + +template +TVal& RefHash3KeysIdPoolEnumerator::nextElement() +{ + // If our index is zero or past the end, then we are done + if (!fCurIndex || (fCurIndex > fToEnum->fIdCounter)) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // Return the current element and bump the index + return *fToEnum->fIdPtrs[fCurIndex++]; +} + +template +void RefHash3KeysIdPoolEnumerator::Reset() +{ + // + // Find the next available bucket element in the pool. We use the id + // array since its very easy to enumerator through by just maintaining + // an index. If the id counter is zero, then its empty and we leave the + // current index to zero. + // + fCurIndex = fToEnum->fIdCounter ? 1:0; + +} + +template +XMLSize_t RefHash3KeysIdPoolEnumerator::size() const +{ + return fToEnum->fIdCounter; +} + +template +void RefHash3KeysIdPoolEnumerator::resetKey() +{ + fCurHash = (XMLSize_t)-1; + fCurElem = 0; + findNext(); +} + +template +bool RefHash3KeysIdPoolEnumerator::hasMoreKeys() const +{ + // + // If our current has is at the max and there are no more elements + // in the current bucket, then no more elements. + // + if (!fCurElem && (fCurHash == fToEnum->fHashModulus)) + return false; + + return true; +} + +template +void RefHash3KeysIdPoolEnumerator::nextElementKey(void*& retKey1, int& retKey2, int& retKey3) +{ + // Make sure we have an element to return + if (!hasMoreKeys()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + RefHash3KeysTableBucketElem* saveElem = fCurElem; + findNext(); + + retKey1 = saveElem->fKey1; + retKey2 = saveElem->fKey2; + retKey3 = saveElem->fKey3; + + return; +} + +template +void RefHash3KeysIdPoolEnumerator::findNext() +{ + // + // If there is a current element, move to its next element. If this + // hits the end of the bucket, the next block will handle the rest. + // + if (fCurElem) + fCurElem = fCurElem->fNext; + + // + // If the current element is null, then we have to move up to the + // next hash value. If that is the hash modulus, then we cannot + // go further. + // + if (!fCurElem) + { + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + + // Else find the next non-empty bucket + while (fToEnum->fBucketList[fCurHash]==0) + { + // Bump to the next hash value. If we max out return + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + } + fCurElem = fToEnum->fBucketList[fCurHash]; + } +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/RefHash3KeysIdPool.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/RefHash3KeysIdPool.hpp new file mode 100644 index 000000000000..666abebfc2d7 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/RefHash3KeysIdPool.hpp @@ -0,0 +1,279 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REFHASH3KEYSIDPOOL_HPP) +#define XERCESC_INCLUDE_GUARD_REFHASH3KEYSIDPOOL_HPP + + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// This hash table is a combination of RefHash2KeyTableOf (with an additional integer as key3) +// and NameIdPool with an id as index + +// Forward declare the enumerator so it can be our friend. +// +template +class RefHash3KeysIdPoolEnumerator; + + +// +// This should really be a nested class, but some of the compilers we +// have to support cannot deal with that! +// +template +struct RefHash3KeysTableBucketElem +{ + RefHash3KeysTableBucketElem( + void* key1 + , int key2 + , int key3 + , TVal* const value + , RefHash3KeysTableBucketElem* next) : + fData(value) + , fNext(next) + , fKey1(key1) + , fKey2(key2) + , fKey3(key3) + { + } + + RefHash3KeysTableBucketElem() {}; + ~RefHash3KeysTableBucketElem() {}; + + TVal* fData; + RefHash3KeysTableBucketElem* fNext; + void* fKey1; + int fKey2; + int fKey3; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHash3KeysTableBucketElem(const RefHash3KeysTableBucketElem&); + RefHash3KeysTableBucketElem& operator=(const RefHash3KeysTableBucketElem&); +}; + + +template +class RefHash3KeysIdPool : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefHash3KeysIdPool( + const XMLSize_t modulus, + const XMLSize_t initSize = 128, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHash3KeysIdPool( + const XMLSize_t modulus, + const THasher& hasher, + const XMLSize_t initSize = 128, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHash3KeysIdPool( + const XMLSize_t modulus, + const bool adoptElems, + const XMLSize_t initSize = 128, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHash3KeysIdPool( + const XMLSize_t modulus, + const bool adoptElems, + const THasher& hasher, + const XMLSize_t initSize = 128, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~RefHash3KeysIdPool(); + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + bool isEmpty() const; + bool containsKey(const void* const key1, const int key2, const int key3) const; + void removeAll(); + + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + TVal* getByKey(const void* const key1, const int key2, const int key3); + const TVal* getByKey(const void* const key1, const int key2, const int key3) const; + + TVal* getById(const unsigned int elemId); + const TVal* getById(const unsigned int elemId) const; + + MemoryManager* getMemoryManager() const; + XMLSize_t getHashModulus() const; + + // ----------------------------------------------------------------------- + // Putters + // ----------------------------------------------------------------------- + XMLSize_t put(void* key1, int key2, int key3, TVal* const valueToAdopt); + + +private : + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class RefHash3KeysIdPoolEnumerator; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHash3KeysIdPool(const RefHash3KeysIdPool&); + RefHash3KeysIdPool& operator=(const RefHash3KeysIdPool&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + RefHash3KeysTableBucketElem* findBucketElem(const void* const key1, const int key2, const int key3, XMLSize_t& hashVal); + const RefHash3KeysTableBucketElem* findBucketElem(const void* const key1, const int key2, const int key3, XMLSize_t& hashVal) const; + void initialize(const XMLSize_t modulus); + + + // ----------------------------------------------------------------------- + // Data members + // + // fAdoptedElems + // Indicates whether the values added are adopted or just referenced. + // If adopted, then they are deleted when they are removed from the + // hash table. + // + // fBucketList + // This is the array that contains the heads of all of the list + // buckets, one for each possible hash value. + // + // fHashModulus + // The modulus used for this hash table, to hash the keys. This is + // also the number of elements in the bucket list. + // + // fHash + // The hasher for the key1 data type. + // + // fIdPtrs + // fIdPtrsCount + // This is the array of pointers to the bucket elements in order of + // their assigned ids. So taking id N and referencing this array + // gives you the element with that id. The count field indicates + // the current size of this list. When fIdCounter+1 reaches this + // value the list must be expanded. + // + // fIdCounter + // This is used to give out unique ids to added elements. It starts + // at zero (which means empty), and is bumped up for each newly added + // element. So the first element is 1, the next is 2, etc... This + // means that this value is set to the top index of the fIdPtrs array. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + bool fAdoptedElems; + RefHash3KeysTableBucketElem** fBucketList; + XMLSize_t fHashModulus; + TVal** fIdPtrs; + XMLSize_t fIdPtrsCount; + XMLSize_t fIdCounter; + THasher fHasher; +}; + + + +// +// An enumerator for a value array. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template +class RefHash3KeysIdPoolEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefHash3KeysIdPoolEnumerator(RefHash3KeysIdPool* const toEnum + , const bool adopt = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~RefHash3KeysIdPoolEnumerator(); + + RefHash3KeysIdPoolEnumerator(const RefHash3KeysIdPoolEnumerator&); + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TVal& nextElement(); + void Reset(); + XMLSize_t size() const; + + // ----------------------------------------------------------------------- + // New interface + // ----------------------------------------------------------------------- + void resetKey(); + void nextElementKey(void*&, int&, int&); + bool hasMoreKeys() const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHash3KeysIdPoolEnumerator& + operator=(const RefHash3KeysIdPoolEnumerator&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + void findNext(); + + // ----------------------------------------------------------------------- + // Data Members + // fAdoptedElems + // Indicates whether the values added are adopted or just referenced. + // If adopted, then they are deleted when they are removed from the + // hash table + // + // fCurIndex + // This is the current index into the pool's id mapping array. This + // is now we enumerate it. + // + // fToEnum + // The name id pool that is being enumerated. + // ----------------------------------------------------------------------- + bool fAdoptedElems; + XMLSize_t fCurIndex; + RefHash3KeysIdPool* fToEnum; + RefHash3KeysTableBucketElem* fCurElem; + XMLSize_t fCurHash; + MemoryManager* const fMemoryManager; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/RefHashTableOf.c b/src/libs/xerces-c/msvc/include/xercesc/util/RefHashTableOf.c new file mode 100644 index 000000000000..e413e36eb531 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/RefHashTableOf.c @@ -0,0 +1,663 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// RefHashTableOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +RefHashTableOf::RefHashTableOf( + const XMLSize_t modulus, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(true) + , fBucketList(0) + , fHashModulus(modulus) + , fInitialModulus(modulus) + , fCount(0) +{ + initialize(modulus); +} + +template +RefHashTableOf::RefHashTableOf( + const XMLSize_t modulus, + const THasher& hasher, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(true) + , fBucketList(0) + , fHashModulus(modulus) + , fInitialModulus(modulus) + , fCount(0) + , fHasher (hasher) +{ + initialize(modulus); +} + +template +RefHashTableOf::RefHashTableOf( + const XMLSize_t modulus, + const bool adoptElems, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fInitialModulus(modulus) + , fCount(0) + +{ + initialize(modulus); +} + +template +RefHashTableOf::RefHashTableOf( + const XMLSize_t modulus, + const bool adoptElems, + const THasher& hasher, + MemoryManager* const manager) + + : fMemoryManager(manager) + , fAdoptedElems(adoptElems) + , fBucketList(0) + , fHashModulus(modulus) + , fInitialModulus(modulus) + , fCount(0) + , fHasher (hasher) +{ + initialize(modulus); +} + +template +void RefHashTableOf::initialize(const XMLSize_t modulus) +{ + if (modulus == 0) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); + + // Allocate the bucket list and zero them + fBucketList = (RefHashTableBucketElem**) fMemoryManager->allocate + ( + fHashModulus * sizeof(RefHashTableBucketElem*) + ); + for (XMLSize_t index = 0; index < fHashModulus; index++) + fBucketList[index] = 0; +} + +template +RefHashTableOf::~RefHashTableOf() +{ + cleanup(); +} + + +// --------------------------------------------------------------------------- +// RefHashTableOf: Element management +// --------------------------------------------------------------------------- +template +inline bool RefHashTableOf::isEmpty() const +{ + return fCount==0; +} + +template +inline bool RefHashTableOf::containsKey(const void* const key) const +{ + XMLSize_t hashVal; + const RefHashTableBucketElem* findIt = findBucketElem(key, hashVal); + return (findIt != 0); +} + +template +void RefHashTableOf:: +removeKey(const void* const key) +{ + // Hash the key + XMLSize_t hashVal = fHasher.getHashVal(key, fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + RefHashTableBucketElem* curElem = fBucketList[hashVal]; + RefHashTableBucketElem* lastElem = 0; + + while (curElem) + { + if (fHasher.equals(key, curElem->fKey)) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + // If we adopted the data, then delete it too + // (Note: the userdata hash table instance has data type of void *. + // This will generate compiler warnings here on some platforms, but they + // can be ignored since fAdoptedElements is false. + if (fAdoptedElems) + delete curElem->fData; + + // Then delete the current element and move forward + // delete curElem; + // destructor doesn't do anything... + fMemoryManager->deallocate(curElem); + + fCount--; + + return; + } + + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + + // We never found that key + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, fMemoryManager); +} + +template +void RefHashTableOf::removeAll() +{ + if(isEmpty()) + return; + + // Clean up the buckets first + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + // Get the bucket list head for this entry + RefHashTableBucketElem* curElem = fBucketList[buckInd]; + RefHashTableBucketElem* nextElem; + while (curElem) + { + // Save the next element before we hose this one + nextElem = curElem->fNext; + + // If we adopted the data, then delete it too + // (Note: the userdata hash table instance has data type of void *. + // This will generate compiler warnings here on some platforms, but they + // can be ignored since fAdoptedElements is false. + if (fAdoptedElems) + delete curElem->fData; + + // Then delete the current element and move forward + // delete curElem; + // destructor doesn't do anything... + // curElem->~RefHashTableBucketElem(); + fMemoryManager->deallocate(curElem); + curElem = nextElem; + } + + // Clean out this entry + fBucketList[buckInd] = 0; + } + + fCount = 0; +} + +// This method returns the data associated with a key. The key entry is deleted. The caller +// now owns the returned data (case of hashtable adopting the data). +// This function is called by transferElement so that the undeleted data can be transferred +// to a new key which will own that data. +template TVal* RefHashTableOf:: +orphanKey(const void* const key) +{ + // Hash the key + TVal* retVal = 0; + XMLSize_t hashVal = fHasher.getHashVal(key, fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + RefHashTableBucketElem* curElem = fBucketList[hashVal]; + RefHashTableBucketElem* lastElem = 0; + + while (curElem) + { + if (fHasher.equals(key, curElem->fKey)) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + retVal = curElem->fData; + + // Delete the current element + // delete curElem; + // destructor doesn't do anything... + // curElem->~RefHashTableBucketElem(); + fMemoryManager->deallocate(curElem); + break; + } + + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + + // We never found that key + if (!retVal) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, fMemoryManager); + + return retVal; +} + +// +// cleanup(): +// similar to destructor +// called to cleanup the memory, in case destructor cannot be called +// +template +void RefHashTableOf::cleanup() +{ + removeAll(); + + // Then delete the bucket list & hasher + fMemoryManager->deallocate(fBucketList); + fBucketList = 0; +} + +// +// reinitialize(): +// similar to constructor +// called to re-construct the fElemList from scratch again +// +template +void RefHashTableOf::reinitialize(const THasher& hasher) +{ + if (fBucketList) + cleanup(); + + fHasher = hasher; + + fHashModulus = fInitialModulus; + initialize(fHashModulus); +} + + + +// this function transfer the data from key1 to key2 +// this is equivalent to calling +// 1. get(key1) to retrieve the data, +// 2. removeKey(key1), +// 3. and then put(key2, data) +// except that the data is not deleted in "removeKey" even it is adopted so that it +// can be transferred to key2. +// whatever key2 has originally will be purged (if adopted) +template +inline void RefHashTableOf::transferElement(const void* const key1, void* key2) +{ + put(key2, orphanKey(key1)); +} + + +// --------------------------------------------------------------------------- +// RefHashTableOf: Getters +// --------------------------------------------------------------------------- +template +inline TVal* RefHashTableOf::get(const void* const key) +{ + XMLSize_t hashVal; + RefHashTableBucketElem* findIt = findBucketElem(key, hashVal); + return findIt ? findIt->fData : 0; +} + +template +inline const TVal* RefHashTableOf:: +get(const void* const key) const +{ + XMLSize_t hashVal; + const RefHashTableBucketElem* findIt = findBucketElem(key, hashVal); + return findIt ? findIt->fData : 0; +} + +template +inline MemoryManager* RefHashTableOf::getMemoryManager() const +{ + return fMemoryManager; +} + +template +inline XMLSize_t RefHashTableOf::getHashModulus() const +{ + return fHashModulus; +} + +template +inline XMLSize_t RefHashTableOf::getCount() const +{ + return fCount; +} + +// --------------------------------------------------------------------------- +// RefHashTableOf: Getters +// --------------------------------------------------------------------------- +template +inline void RefHashTableOf::setAdoptElements(const bool aValue) +{ + fAdoptedElems = aValue; +} + +// --------------------------------------------------------------------------- +// RefHashTableOf: Putters +// --------------------------------------------------------------------------- +template +void RefHashTableOf::put(void* key, TVal* const valueToAdopt) +{ + // Apply 0.75 load factor to find threshold. + XMLSize_t threshold = fHashModulus * 3 / 4; + + // If we've grown too big, expand the table and rehash. + if (fCount >= threshold) + rehash(); + + // First see if the key exists already + XMLSize_t hashVal; + RefHashTableBucketElem* newBucket = findBucketElem(key, hashVal); + + // + // If so,then update its value. If not, then we need to add it to + // the right bucket + // + if (newBucket) + { + if (fAdoptedElems) + delete newBucket->fData; + newBucket->fData = valueToAdopt; + newBucket->fKey = key; + } + else + { + newBucket = + new (fMemoryManager->allocate(sizeof(RefHashTableBucketElem))) + RefHashTableBucketElem(key, valueToAdopt, fBucketList[hashVal]); + fBucketList[hashVal] = newBucket; + fCount++; + } +} + + + +// --------------------------------------------------------------------------- +// RefHashTableOf: Private methods +// --------------------------------------------------------------------------- +template +void RefHashTableOf::rehash() +{ + const XMLSize_t newMod = (fHashModulus * 2) + 1; + + RefHashTableBucketElem** newBucketList = + (RefHashTableBucketElem**) fMemoryManager->allocate + ( + newMod * sizeof(RefHashTableBucketElem*) + ); + + // Make sure the new bucket list is destroyed if an + // exception is thrown. + ArrayJanitor*> guard(newBucketList, fMemoryManager); + + memset(newBucketList, 0, newMod * sizeof(newBucketList[0])); + + + // Rehash all existing entries. + for (XMLSize_t index = 0; index < fHashModulus; index++) + { + // Get the bucket list head for this entry + RefHashTableBucketElem* curElem = fBucketList[index]; + + while (curElem) + { + // Save the next element before we detach this one + RefHashTableBucketElem* const nextElem = curElem->fNext; + + const XMLSize_t hashVal = fHasher.getHashVal(curElem->fKey, newMod); + + RefHashTableBucketElem* const newHeadElem = newBucketList[hashVal]; + + // Insert at the start of this bucket's list. + curElem->fNext = newHeadElem; + newBucketList[hashVal] = curElem; + + curElem = nextElem; + } + } + + RefHashTableBucketElem** const oldBucketList = fBucketList; + + // Everything is OK at this point, so update the + // member variables. + fBucketList = guard.release(); + fHashModulus = newMod; + + // Delete the old bucket list. + fMemoryManager->deallocate(oldBucketList);//delete[] oldBucketList; + +} + +template +inline RefHashTableBucketElem* RefHashTableOf:: +findBucketElem(const void* const key, XMLSize_t& hashVal) +{ + // Hash the key + hashVal = fHasher.getHashVal(key, fHashModulus); + + // Search that bucket for the key + RefHashTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if (fHasher.equals(key, curElem->fKey)) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + +template +inline const RefHashTableBucketElem* RefHashTableOf:: +findBucketElem(const void* const key, XMLSize_t& hashVal) const +{ + // Hash the key + hashVal = fHasher.getHashVal(key, fHashModulus); + + // Search that bucket for the key + const RefHashTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if (fHasher.equals(key, curElem->fKey)) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + + +// --------------------------------------------------------------------------- +// RefHashTableOfEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template RefHashTableOfEnumerator:: +RefHashTableOfEnumerator(RefHashTableOf* const toEnum + , const bool adopt + , MemoryManager* const manager) + : fAdopted(adopt), fCurElem(0), fCurHash((XMLSize_t)-1), fToEnum(toEnum) + , fMemoryManager(manager) +{ + if (!toEnum) + ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, fMemoryManager); + + // + // Find the next available bucket element in the hash table. If it + // comes back zero, that just means the table is empty. + // + // Note that the -1 in the current hash tells it to start + // from the beginning. + // + findNext(); +} + +template +RefHashTableOfEnumerator::~RefHashTableOfEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +template RefHashTableOfEnumerator:: +RefHashTableOfEnumerator(const RefHashTableOfEnumerator& toCopy) : + XMLEnumerator(toCopy) + , XMemory(toCopy) + , fAdopted(toCopy.fAdopted) + , fCurElem(toCopy.fCurElem) + , fCurHash(toCopy.fCurHash) + , fToEnum(toCopy.fToEnum) + , fMemoryManager(toCopy.fMemoryManager) +{ +} +// --------------------------------------------------------------------------- +// RefHashTableOfEnumerator: Enum interface +// --------------------------------------------------------------------------- +template +bool RefHashTableOfEnumerator::hasMoreElements() const +{ + // + // If our current has is at the max and there are no more elements + // in the current bucket, then no more elements. + // + if (!fCurElem && (fCurHash == fToEnum->fHashModulus)) + return false; + return true; +} + +template +TVal& RefHashTableOfEnumerator::nextElement() +{ + // Make sure we have an element to return + if (!hasMoreElements()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + RefHashTableBucketElem* saveElem = fCurElem; + findNext(); + + return *saveElem->fData; +} + +template +void* RefHashTableOfEnumerator::nextElementKey() +{ + // Make sure we have an element to return + if (!hasMoreElements()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + RefHashTableBucketElem* saveElem = fCurElem; + findNext(); + + return saveElem->fKey; +} + +template +void RefHashTableOfEnumerator::Reset() +{ + fCurHash = (XMLSize_t)-1; + fCurElem = 0; + findNext(); +} + + + +// --------------------------------------------------------------------------- +// RefHashTableOfEnumerator: Private helper methods +// --------------------------------------------------------------------------- +template +void RefHashTableOfEnumerator::findNext() +{ + // + // If there is a current element, move to its next element. If this + // hits the end of the bucket, the next block will handle the rest. + // + if (fCurElem) + fCurElem = fCurElem->fNext; + + // + // If the current element is null, then we have to move up to the + // next hash value. If that is the hash modulus, then we cannot + // go further. + // + if (!fCurElem) + { + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + + // Else find the next non-empty bucket + while (fToEnum->fBucketList[fCurHash]==0) + { + // Bump to the next hash value. If we max out return + fCurHash++; + if (fCurHash == fToEnum->fHashModulus) + return; + } + fCurElem = fToEnum->fBucketList[fCurHash]; + } +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/RefHashTableOf.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/RefHashTableOf.hpp new file mode 100644 index 000000000000..12572eb6d20a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/RefHashTableOf.hpp @@ -0,0 +1,255 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REFHASHTABLEOF_HPP) +#define XERCESC_INCLUDE_GUARD_REFHASHTABLEOF_HPP + +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Forward declare the enumerator so it can be our friend. +// +template +class RefHashTableOfEnumerator; + +// +// This should really be a nested class, but some of the compilers we +// have to support cannot deal with that! +// +template +struct RefHashTableBucketElem +{ + RefHashTableBucketElem(void* key, TVal* const value, RefHashTableBucketElem* next) + : fData(value), fNext(next), fKey(key) + { + } + + RefHashTableBucketElem(){}; + ~RefHashTableBucketElem(){}; + + TVal* fData; + RefHashTableBucketElem* fNext; + void* fKey; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHashTableBucketElem(const RefHashTableBucketElem&); + RefHashTableBucketElem& operator=(const RefHashTableBucketElem&); +}; + + +template +class RefHashTableOf : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefHashTableOf( + const XMLSize_t modulus, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHashTableOf( + const XMLSize_t modulus, + const THasher& hasher, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHashTableOf( + const XMLSize_t modulus, + const bool adoptElems, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + RefHashTableOf( + const XMLSize_t modulus, + const bool adoptElems, + const THasher& hasher, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~RefHashTableOf(); + + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + bool isEmpty() const; + bool containsKey(const void* const key) const; + void removeKey(const void* const key); + void removeAll(); + void cleanup(); + void reinitialize(const THasher& hasher); + void transferElement(const void* const key1, void* key2); + TVal* orphanKey(const void* const key); + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + TVal* get(const void* const key); + const TVal* get(const void* const key) const; + MemoryManager* getMemoryManager() const; + XMLSize_t getHashModulus() const; + XMLSize_t getCount() const; + + // ----------------------------------------------------------------------- + // Setters + // ----------------------------------------------------------------------- + void setAdoptElements(const bool aValue); + + + // ----------------------------------------------------------------------- + // Putters + // ----------------------------------------------------------------------- + void put(void* key, TVal* const valueToAdopt); + + +private : + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class RefHashTableOfEnumerator; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHashTableOf(const RefHashTableOf&); + RefHashTableOf& operator=(const RefHashTableOf&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + RefHashTableBucketElem* findBucketElem(const void* const key, XMLSize_t& hashVal); + const RefHashTableBucketElem* findBucketElem(const void* const key, XMLSize_t& hashVal) const; + void initialize(const XMLSize_t modulus); + void rehash(); + + + // ----------------------------------------------------------------------- + // Data members + // + // fAdoptedElems + // Indicates whether the values added are adopted or just referenced. + // If adopted, then they are deleted when they are removed from the + // hash table. + // + // fBucketList + // This is the array that contains the heads of all of the list + // buckets, one for each possible hash value. + // + // fHashModulus + // The modulus used for this hash table, to hash the keys. This is + // also the number of elements in the bucket list. + // + // fHash + // The hasher for the key data type. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + bool fAdoptedElems; + RefHashTableBucketElem** fBucketList; + XMLSize_t fHashModulus; + XMLSize_t fInitialModulus; + XMLSize_t fCount; + THasher fHasher; +}; + + + +// +// An enumerator for a value array. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template +class RefHashTableOfEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefHashTableOfEnumerator(RefHashTableOf* const toEnum + , const bool adopt = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~RefHashTableOfEnumerator(); + + RefHashTableOfEnumerator(const RefHashTableOfEnumerator&); + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TVal& nextElement(); + void Reset(); + + // ----------------------------------------------------------------------- + // New interface specific for key used in RefHashable + // ----------------------------------------------------------------------- + void* nextElementKey(); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefHashTableOfEnumerator& + operator=(const RefHashTableOfEnumerator&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + void findNext(); + + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed vector. If so then + // we delete the vector when we are destroyed. + // + // fCurElem + // This is the current bucket bucket element that we are on. + // + // fCurHash + // The current hash buck that we are working on. Once we hit the + // end of the bucket that fCurElem is in, then we have to start + // working this one up to the next non-empty bucket. + // + // fToEnum + // The value array being enumerated. + // ----------------------------------------------------------------------- + bool fAdopted; + RefHashTableBucketElem* fCurElem; + XMLSize_t fCurHash; + RefHashTableOf* fToEnum; + MemoryManager* const fMemoryManager; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/RefStackOf.c b/src/libs/xerces-c/msvc/include/xercesc/util/RefStackOf.c new file mode 100644 index 000000000000..92286fb8f93e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/RefStackOf.c @@ -0,0 +1,160 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// RefStackOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +RefStackOf::RefStackOf(const XMLSize_t initElems, + const bool adoptElems, + MemoryManager* const manager) : + + fVector(initElems, adoptElems, manager) +{ +} + +template RefStackOf::~RefStackOf() +{ +} + + +// --------------------------------------------------------------------------- +// RefStackOf: Element management methods +// --------------------------------------------------------------------------- +template const TElem* RefStackOf:: +elementAt(const XMLSize_t index) const +{ + if (index >= fVector.size()) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Stack_BadIndex, fVector.getMemoryManager()); + return fVector.elementAt(index); +} + +template TElem* RefStackOf::popAt(const XMLSize_t index) +{ + if (index >= fVector.size()) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Stack_BadIndex, fVector.getMemoryManager()); + + // Orphan off the element from the slot in the vector + return fVector.orphanElementAt(index); +} + +template void RefStackOf::push(TElem* const toPush) +{ + fVector.addElement(toPush); +} + +template const TElem* RefStackOf::peek() const +{ + const XMLSize_t curSize = fVector.size(); + if (curSize == 0) + ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::Stack_EmptyStack, fVector.getMemoryManager()); + + return fVector.elementAt(curSize-1); +} + +template TElem* RefStackOf::pop() +{ + const XMLSize_t curSize = fVector.size(); + if (curSize == 0) + ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::Stack_EmptyStack, fVector.getMemoryManager()); + + // Orphan off the element from the last slot in the vector + return fVector.orphanElementAt(curSize-1); +} + +template void RefStackOf::removeAllElements() +{ + fVector.removeAllElements(); +} + + +// --------------------------------------------------------------------------- +// RefStackOf: Getter methods +// --------------------------------------------------------------------------- +template bool RefStackOf::empty() +{ + return (fVector.size() == 0); +} + +template XMLSize_t RefStackOf::curCapacity() +{ + return fVector.curCapacity(); +} + +template XMLSize_t RefStackOf::size() +{ + return fVector.size(); +} + + + + +// --------------------------------------------------------------------------- +// RefStackEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template RefStackEnumerator:: +RefStackEnumerator( RefStackOf* const toEnum + , const bool adopt) : + fAdopted(adopt) + , fCurIndex(0) + , fToEnum(toEnum) + , fVector(&toEnum->fVector) +{ +} + +template RefStackEnumerator::~RefStackEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// RefStackEnumerator: Enum interface +// --------------------------------------------------------------------------- +template bool RefStackEnumerator::hasMoreElements() const +{ + if (fCurIndex >= fVector->size()) + return false; + return true; +} + +template TElem& RefStackEnumerator::nextElement() +{ + return *fVector->elementAt(fCurIndex++); +} + +template void RefStackEnumerator::Reset() +{ + fCurIndex = 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/RefStackOf.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/RefStackOf.hpp new file mode 100644 index 000000000000..5b16889fae58 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/RefStackOf.hpp @@ -0,0 +1,152 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REFSTACKOF_HPP) +#define XERCESC_INCLUDE_GUARD_REFSTACKOF_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// Forward declare the enumerator so he can be our friend. Can you say +// friend? Sure... +// +template class RefStackEnumerator; + + +template class RefStackOf : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefStackOf(const XMLSize_t initElems, + const bool adoptElems = true, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~RefStackOf(); + + + // ----------------------------------------------------------------------- + // Element management methods + // ----------------------------------------------------------------------- + const TElem* elementAt(const XMLSize_t index) const; + TElem* popAt(const XMLSize_t index); + void push(TElem* const toPush); + const TElem* peek() const; + TElem* pop(); + void removeAllElements(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool empty(); + XMLSize_t curCapacity(); + XMLSize_t size(); + + +private : + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class RefStackEnumerator; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefStackOf(const RefStackOf&); + RefStackOf& operator=(const RefStackOf&); + + // ----------------------------------------------------------------------- + // Data Members + // + // fVector + // The vector that is used as the backing data structure for the + // stack. + // ----------------------------------------------------------------------- + RefVectorOf fVector; +}; + + + +// +// An enumerator for a value stack. It derives from the basic enumerator +// class, so that value stacks can be generically enumerated. +// +template class RefStackEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + RefStackEnumerator + ( + RefStackOf* const toEnum + , const bool adopt = false + ); + virtual ~RefStackEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TElem& nextElement(); + void Reset(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefStackEnumerator(const RefStackEnumerator&); + RefStackEnumerator& operator=(const RefStackEnumerator&); + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed stack. If so then + // we delete the stack when we are destroyed. + // + // fCurIndex + // This is the current index into the vector inside the stack being + // enumerated. + // + // fToEnum + // The stack that is being enumerated. This is just kept for + // adoption purposes, since we really are enumerating the vector + // inside of it. + // ----------------------------------------------------------------------- + bool fAdopted; + XMLSize_t fCurIndex; + RefVectorOf* fVector; + RefStackOf* fToEnum; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/RefVectorOf.c b/src/libs/xerces-c/msvc/include/xercesc/util/RefVectorOf.c new file mode 100644 index 000000000000..793e0d3b86c4 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/RefVectorOf.c @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// RefVectorOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +RefVectorOf::RefVectorOf(const XMLSize_t maxElems, + const bool adoptElems, + MemoryManager* const manager) + : BaseRefVectorOf(maxElems, adoptElems, manager) +{ +} + +template RefVectorOf::~RefVectorOf() +{ + if (this->fAdoptedElems) + { + for (XMLSize_t index = 0; index < this->fCurCount; index++) + delete this->fElemList[index]; + } + this->fMemoryManager->deallocate(this->fElemList);//delete [] this->fElemList; +} + + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/RefVectorOf.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/RefVectorOf.hpp new file mode 100644 index 000000000000..42296eb497de --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/RefVectorOf.hpp @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REFVECTOROF_HPP) +#define XERCESC_INCLUDE_GUARD_REFVECTOROF_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Class with implementation for vectors of References - implements from the + * Abstract class Vector + */ +template class RefVectorOf : public BaseRefVectorOf +{ +public : + // ----------------------------------------------------------------------- + // Constructor + // ----------------------------------------------------------------------- + RefVectorOf(const XMLSize_t maxElems, + const bool adoptElems = true, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ----------------------------------------------------------------------- + // Destructor + // ----------------------------------------------------------------------- + ~RefVectorOf(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RefVectorOf(const RefVectorOf&); + RefVectorOf& operator=(const RefVectorOf&); +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/RuntimeException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/RuntimeException.hpp new file mode 100644 index 000000000000..cd339048f7e7 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/RuntimeException.hpp @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_RUNTIMEEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_RUNTIMEEXCEPTION_HPP + + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(RuntimeException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/SchemaDateTimeException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/SchemaDateTimeException.hpp new file mode 100644 index 000000000000..8c3b6101a9a4 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/SchemaDateTimeException.hpp @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +#if !defined(SCHEMA_DATETIME_EXCEPTION_HPP) +#define SCHEMA_DATETIME_EXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(SchemaDateTimeException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/SecurityManager.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/SecurityManager.hpp new file mode 100644 index 000000000000..b0185600b039 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/SecurityManager.hpp @@ -0,0 +1,116 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SECURITYMANAGER_HPP) +#define XERCESC_INCLUDE_GUARD_SECURITYMANAGER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Allow application to force the parser to behave in a security-conscious + * way. + * + *

There are cases in which an XML- or XmL-schema- + * conformant processor can be presented with documents the + * processing of which can involve the consumption of + * prohibitive amounts of system resources. Applications can + * attach instances of this class to parsers that they've + * created, via the + * http://apache.org/xml/properties/security-manager property. + *

+ * + *

Defaults will be provided for all known security holes. + * Setter methods will be provided on this class to ensure that + * an application can customize each limit as it chooses. + * Components that are vulnerable to any given hole need to be + * written to act appropriately when an instance of this class + * has been set on the calling parser. + *

+ */ + +class XMLUTIL_EXPORT SecurityManager +{ +public: + + enum { ENTITY_EXPANSION_LIMIT = 50000}; + + /** @name default Constructors */ + //@{ + /** Default constructor */ + SecurityManager() + : fEntityExpansionLimit((XMLSize_t)ENTITY_EXPANSION_LIMIT) + { + } + + /** Destructor */ + virtual ~SecurityManager(){}; + //@} + + /** @name The Security Manager */ + //@{ + /** + * An application should call this method when it wishes to specify a particular + * limit to the number of entity expansions the parser will permit in a + * particular document. The default behaviour should allow the parser + * to validate nearly all XML non-malicious XML documents; if an + * application knows that it is operating in a domain where entities are + * uncommon, for instance, it may wish to provide a limit lower than the + * parser's default. + * + * @param newLimit the new entity expansion limit + * + */ + virtual void setEntityExpansionLimit(XMLSize_t newLimit) + { + fEntityExpansionLimit = newLimit; + } + + /** + * Permits the application or a parser component to query the current + * limit for entity expansions. + * + * @return the current setting of the entity expansion limit + * + */ + virtual XMLSize_t getEntityExpansionLimit() const + { + return fEntityExpansionLimit; + } + //@} + +protected: + XMLSize_t fEntityExpansionLimit; + +private: + + /* Unimplemented Constructors and operators */ + /* Copy constructor */ + SecurityManager(const SecurityManager&); + + /** Assignment operator */ + SecurityManager& operator=(const SecurityManager&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/StringPool.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/StringPool.hpp new file mode 100644 index 000000000000..6dfbfabbb7a4 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/StringPool.hpp @@ -0,0 +1,175 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_STRINGPOOL_HPP) +#define XERCESC_INCLUDE_GUARD_STRINGPOOL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class implements a string pool, in which strings can be added and +// given a unique id by which they can be referred. It has to provide fast +// access both mapping from a string to its id and mapping from an id to +// its string. This requires that it provide two separate data structures. +// The map one is a hash table for quick storage and look up by name. The +// other is an array ordered by unique id which maps to the element in the +// hash table. +// +// This works because strings cannot be removed from the pool once added, +// other than flushing it completely, and because ids are assigned +// sequentially from 1. +// +class XMLUTIL_EXPORT XMLStringPool : public XSerializable, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLStringPool + ( + const unsigned int modulus = 109 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~XMLStringPool(); + + + // ----------------------------------------------------------------------- + // Pool management methods + // ----------------------------------------------------------------------- + virtual unsigned int addOrFind(const XMLCh* const newString); + virtual bool exists(const XMLCh* const newString) const; + virtual bool exists(const unsigned int id) const; + virtual void flushAll(); + virtual unsigned int getId(const XMLCh* const toFind) const; + virtual const XMLCh* getValueForId(const unsigned int id) const; + virtual unsigned int getStringCount() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLStringPool) + + XMLStringPool(MemoryManager* const manager); + +private : + // ----------------------------------------------------------------------- + // Private data types + // ----------------------------------------------------------------------- + struct PoolElem + { + unsigned int fId; + XMLCh* fString; + }; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLStringPool(const XMLStringPool&); + XMLStringPool& operator=(const XMLStringPool&); + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + unsigned int addNewEntry(const XMLCh* const newString); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fIdMap + // This is an array of pointers to the pool elements. It is ordered + // by unique id, so using an id to index it gives instant access to + // the string of that id. This is grown as required. + // + // fHashTable + // This is the hash table used to store and quickly access the + // strings. + // + // fMapCapacity + // The current capacity of the id map. When the current id hits this + // value the map must must be expanded. + // + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + PoolElem** fIdMap; + RefHashTableOf* fHashTable; + unsigned int fMapCapacity; + +protected: + // protected data members + // fCurId + // This is the counter used to assign unique ids. It is just bumped + // up one for each new string added. + unsigned int fCurId; +}; + + +// Provide inline versions of some of the simple functions to improve performance. +inline unsigned int XMLStringPool::addOrFind(const XMLCh* const newString) +{ + PoolElem* elemToFind = fHashTable->get(newString); + if (elemToFind) + return elemToFind->fId; + + return addNewEntry(newString); +} + +inline unsigned int XMLStringPool::getId(const XMLCh* const toFind) const +{ + PoolElem* elemToFind = fHashTable->get(toFind); + if (elemToFind) + return elemToFind->fId; + + // Not found, so return zero, which is never a legal id + return 0; +} + +inline bool XMLStringPool::exists(const XMLCh* const newString) const +{ + return fHashTable->containsKey(newString); +} + +inline bool XMLStringPool::exists(const unsigned int id) const +{ + return (id > 0 && (id < fCurId)); +} + +inline const XMLCh* XMLStringPool::getValueForId(const unsigned int id) const +{ + if (!id || (id >= fCurId)) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::StrPool_IllegalId, fMemoryManager); + + // Just index the id map and return that element's string + return fIdMap[id]->fString; +} + +inline unsigned int XMLStringPool::getStringCount() const +{ + return fCurId-1; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/SynchronizedStringPool.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/SynchronizedStringPool.hpp new file mode 100644 index 000000000000..b8cb0fe6ef57 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/SynchronizedStringPool.hpp @@ -0,0 +1,86 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SYNCHRONIZEDSTRINGPOOL_HPP) +#define XERCESC_INCLUDE_GUARD_SYNCHRONIZEDSTRINGPOOL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides a synchronized string pool implementation. +// This will necessarily be slower than the regular XMLStringPool, so it +// should only be used when updates need to be made in a thread-safe +// way. Updates will be made on datastructures local to this object; +// all queries that don't involve mutation will first be directed at +// the XMLStringPool implementation with which this object is +// constructed. +class XMLUTIL_EXPORT XMLSynchronizedStringPool : public XMLStringPool +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLSynchronizedStringPool + ( + const XMLStringPool * constPool + , const unsigned int modulus = 109 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~XMLSynchronizedStringPool(); + + + // ----------------------------------------------------------------------- + // Pool management methods + // ----------------------------------------------------------------------- + virtual unsigned int addOrFind(const XMLCh* const newString); + virtual bool exists(const XMLCh* const newString) const; + virtual bool exists(const unsigned int id) const; + virtual void flushAll(); + virtual unsigned int getId(const XMLCh* const toFind) const; + virtual const XMLCh* getValueForId(const unsigned int id) const; + virtual unsigned int getStringCount() const; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLSynchronizedStringPool(const XMLSynchronizedStringPool&); + XMLSynchronizedStringPool& operator=(const XMLSynchronizedStringPool&); + + + // ----------------------------------------------------------------------- + // private data members + // fConstPool + // the pool whose immutability we're protecting + // fMutex + // mutex to permit synchronous updates of our StringPool + const XMLStringPool* fConstPool; + XMLMutex fMutex; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/TransENameMap.c b/src/libs/xerces-c/msvc/include/xercesc/util/TransENameMap.c new file mode 100644 index 000000000000..bbe27f31d40f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/TransENameMap.c @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// ENameMapFor: Constructors and Destructor +// --------------------------------------------------------------------------- +template +ENameMapFor::ENameMapFor(const XMLCh* const encodingName) : + + ENameMap(encodingName) +{ +} + +template ENameMapFor::~ENameMapFor() +{ +} + + +// --------------------------------------------------------------------------- +// ENameMapFor: Implementation of virtual factory method +// --------------------------------------------------------------------------- +template XMLTranscoder* +ENameMapFor::makeNew(const XMLSize_t blockSize, + MemoryManager* const manager) const +{ + return new (manager) TType(getKey(), blockSize, manager); +} + + + + +// --------------------------------------------------------------------------- +// ENameMapFor: Constructors and Destructor +// --------------------------------------------------------------------------- +template EEndianNameMapFor::EEndianNameMapFor(const XMLCh* const encodingName, const bool swapped) : + + ENameMap(encodingName) + , fSwapped(swapped) +{ +} + +template EEndianNameMapFor::~EEndianNameMapFor() +{ +} + + +// --------------------------------------------------------------------------- +// ENameMapFor: Implementation of virtual factory method +// --------------------------------------------------------------------------- +template XMLTranscoder* +EEndianNameMapFor::makeNew(const XMLSize_t blockSize, + MemoryManager* const manager) const +{ + return new (manager) TType(getKey(), blockSize, fSwapped, manager); +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/TransENameMap.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/TransENameMap.hpp new file mode 100644 index 000000000000..e896bc9fec85 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/TransENameMap.hpp @@ -0,0 +1,166 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TRANSENAMEMAP_HPP) +#define XERCESC_INCLUDE_GUARD_TRANSENAMEMAP_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class is really private to the TransService class. However, some +// compilers are too dumb to allow us to hide this class there in the Cpp +// file that uses it. +// +class ENameMap : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Destructor + // ----------------------------------------------------------------------- + virtual ~ENameMap() + { + //delete [] fEncodingName; + XMLPlatformUtils::fgMemoryManager->deallocate(fEncodingName); + } + + + + // ----------------------------------------------------------------------- + // Virtual factory method + // ----------------------------------------------------------------------- + virtual XMLTranscoder* makeNew + ( + const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const = 0; + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const XMLCh* getKey() const + { + return fEncodingName; + } + + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + ENameMap(const XMLCh* const encodingName) : + fEncodingName(XMLString::replicate(encodingName, XMLPlatformUtils::fgMemoryManager)) + { + } + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ENameMap(); + ENameMap(const ENameMap&); + ENameMap& operator=(const ENameMap&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fEncodingName + // This is the encoding name for the transcoder that is controlled + // by this map instance. + // ----------------------------------------------------------------------- + XMLCh* fEncodingName; +}; + + +template class ENameMapFor : public ENameMap +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ENameMapFor(const XMLCh* const encodingName); + ~ENameMapFor(); + + + // ----------------------------------------------------------------------- + // Implementation of virtual factory method + // ----------------------------------------------------------------------- + virtual XMLTranscoder* makeNew(const XMLSize_t blockSize, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ENameMapFor(); + ENameMapFor(const ENameMapFor&); + ENameMapFor& operator=(const ENameMapFor&); +}; + + +template class EEndianNameMapFor : public ENameMap +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + EEndianNameMapFor(const XMLCh* const encodingName, const bool swapped); + ~EEndianNameMapFor(); + + + // ----------------------------------------------------------------------- + // Implementation of virtual factory method + // ----------------------------------------------------------------------- + virtual XMLTranscoder* makeNew(const XMLSize_t blockSize, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + EEndianNameMapFor(const EEndianNameMapFor&); + EEndianNameMapFor& operator=(const EEndianNameMapFor&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fSwapped + // Indicates whether the endianness of the encoding is opposite of + // that of the local host. + // ----------------------------------------------------------------------- + bool fSwapped; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/TransService.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/TransService.hpp new file mode 100644 index 000000000000..337a89a186a6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/TransService.hpp @@ -0,0 +1,707 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TRANSSERVICE_HPP) +#define XERCESC_INCLUDE_GUARD_TRANSSERVICE_HPP + +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Forward references +//class XMLPlatformUtils; +class XMLLCPTranscoder; +class XMLTranscoder; +class ENameMap; + + +// +// This class is an abstract base class which are used to abstract the +// transcoding services that Xerces uses. The parser's actual transcoding +// needs are small so it is desirable to allow different implementations +// to be provided. +// +// The transcoding service has to provide a couple of required string +// and character operations, but its most important service is the creation +// of transcoder objects. There are two types of transcoders, which are +// discussed below in the XMLTranscoder class' description. +// +class XMLUTIL_EXPORT XMLTransService : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Class specific types + // ----------------------------------------------------------------------- + enum Codes + { + Ok + , UnsupportedEncoding + , InternalFailure + , SupportFilesNotFound + }; + + struct TransRec + { + XMLCh intCh; + XMLByte extCh; + }; + + + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + virtual ~XMLTransService(); + + + // ----------------------------------------------------------------------- + // Non-virtual API + // ----------------------------------------------------------------------- + XMLTranscoder* makeNewTranscoderFor + ( + const XMLCh* const encodingName + , XMLTransService::Codes& resValue + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XMLTranscoder* makeNewTranscoderFor + ( + const char* const encodingName + , XMLTransService::Codes& resValue + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + XMLTranscoder* makeNewTranscoderFor + ( + XMLRecognizer::Encodings encodingEnum + , XMLTransService::Codes& resValue + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + + // ----------------------------------------------------------------------- + // The virtual transcoding service API + // ----------------------------------------------------------------------- + virtual int compareIString + ( + const XMLCh* const comp1 + , const XMLCh* const comp2 + ) = 0; + + virtual int compareNIString + ( + const XMLCh* const comp1 + , const XMLCh* const comp2 + , const XMLSize_t maxChars + ) = 0; + + virtual const XMLCh* getId() const = 0; + + // ----------------------------------------------------------------------- + // Create a new transcoder for the local code page. + // + // @param manager The memory manager to use. + // ----------------------------------------------------------------------- + virtual XMLLCPTranscoder* makeNewLCPTranscoder(MemoryManager* manager) = 0; + + virtual bool supportsSrcOfs() const = 0; + + virtual void upperCase(XMLCh* const toUpperCase) = 0; + virtual void lowerCase(XMLCh* const toLowerCase) = 0; + + // ----------------------------------------------------------------------- + // Allow users to add their own encodings to the intrinsic mapping + // table + // Usage: + // XMLTransService::addEncoding ( + // gMyEncodingNameString + // , new ENameMapFor(gMyEncodingNameString) + // ); + // ----------------------------------------------------------------------- + static void addEncoding(const XMLCh* const encoding, ENameMap* const ownMapping); + + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XMLTransService(); + + + // ----------------------------------------------------------------------- + // Protected virtual methods. + // ----------------------------------------------------------------------- +#ifdef OS390 + friend class Uniconv390TransService; +#endif + virtual XMLTranscoder* makeNewXMLTranscoder + ( + const XMLCh* const encodingName + , XMLTransService::Codes& resValue + , const XMLSize_t blockSize + , MemoryManager* const manager + ) = 0; + + // ----------------------------------------------------------------------- + // Protected init method for platform utils to call + // ----------------------------------------------------------------------- + friend class XMLPlatformUtils; + virtual void initTransService(); + + // ----------------------------------------------------------------------- + // protected static members + // gMappings + // This is a hash table of ENameMap objects. It is created and filled + // in when the platform init calls our initTransService() method. + // + // gMappingsRecognizer + // This is an array of ENameMap objects, predefined for those + // already recognized by XMLRecognizer::Encodings. + // + + static RefHashTableOf* gMappings; + static RefVectorOf* gMappingsRecognizer; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLTransService(const XMLTransService&); + XMLTransService& operator=(const XMLTransService&); + + // ----------------------------------------------------------------------- + // Hidden method to enable/disable strict IANA encoding check + // Caller: XMLPlatformUtils + // ----------------------------------------------------------------------- + void strictIANAEncoding(const bool newState); + bool isStrictIANAEncoding(); + + friend class XMLInitializer; +}; + +/** + * XMLTranscoder is for transcoding non-local code + * page encodings, i.e. named encodings. These are used internally + * by the scanner to internalize raw XML into the internal Unicode + * format, and by writer classes to convert that internal Unicode + * format (which comes out of the parser) back out to a format that + * the receiving client code wants to use. + */ +class XMLUTIL_EXPORT XMLTranscoder : public XMemory +{ +public : + + /** + * This enum is used by the transcodeTo() method + * to indicate how to react to unrepresentable characters. The + * transcodeFrom() method always works the + * same. It will consider any invalid data to be an error and + * throw. + */ + enum UnRepOpts + { + UnRep_Throw /**< Throw an exception */ + , UnRep_RepChar /**< Use the replacement char */ + }; + + + /** @name Destructor. */ + //@{ + + /** + * Destructor for XMLTranscoder + * + */ + virtual ~XMLTranscoder(); + //@} + + + + /** @name The virtual transcoding interface */ + //@{ + + /** Converts from the encoding of the service to the internal XMLCh* encoding + * + * @param srcData the source buffer to be transcoded + * @param srcCount number of bytes in the source buffer + * @param toFill the destination buffer + * @param maxChars the max number of characters in the destination buffer + * @param bytesEaten after transcoding, this will hold the number of bytes + * that were processed from the source buffer + * @param charSizes an array which must be at least as big as maxChars + * into which will be inserted values that indicate how many + * bytes from the input went into each XMLCh that was created + * into toFill. Since many encodings use variable numbers of + * byte per character, this provides a means to find out what + * bytes in the input went into making a particular output + * UTF-16 character. + * @return Returns the number of chars put into the target buffer + */ + + + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ) = 0; + + /** Converts from the internal XMLCh* encoding to the encoding of the service + * + * @param srcData the source buffer to be transcoded + * @param srcCount number of characters in the source buffer + * @param toFill the destination buffer + * @param maxBytes the max number of bytes in the destination buffer + * @param charsEaten after transcoding, this will hold the number of chars + * that were processed from the source buffer + * @param options options to pass to the transcoder that explain how to + * respond to an unrepresentable character + * @return Returns the number of chars put into the target buffer + */ + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ) = 0; + + /** Query whether the transcoder can handle a given character + * + * @param toCheck the character code point to check + */ + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ) = 0; + + //@} + + /** @name Getter methods */ + //@{ + + /** Get the internal block size + * + * @return The block size indicated in the constructor. + */ + XMLSize_t getBlockSize() const; + + /** Get the encoding name + * + * @return the name of the encoding that this + * XMLTranscoder object is for + */ + const XMLCh* getEncodingName() const; + //@} + + /** @name Getter methods*/ + //@{ + + /** Get the plugged-in memory manager + * + * This method returns the plugged-in memory manager user for dynamic + * memory allocation/deallocation. + * + * @return the plugged-in memory manager + */ + MemoryManager* getMemoryManager() const; + + //@} + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XMLTranscoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + + // ----------------------------------------------------------------------- + // Protected helper methods + // ----------------------------------------------------------------------- + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLTranscoder(const XMLTranscoder&); + XMLTranscoder& operator=(const XMLTranscoder&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fBlockSize + // This is the block size indicated in the constructor. + // + // fEncodingName + // This is the name of the encoding this encoder is for. All basic + // XML transcoder's are for named encodings. + // ----------------------------------------------------------------------- + XMLSize_t fBlockSize; + XMLCh* fEncodingName; + MemoryManager* fMemoryManager; +}; + + +// +// This class is a specialized transcoder that only transcodes between +// the internal XMLCh format and the local code page. It is specialized +// for the very common job of translating data from the client app's +// native code page to the internal format and vice versa. +// +class XMLUTIL_EXPORT XMLLCPTranscoder : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + virtual ~XMLLCPTranscoder(); + + + // ----------------------------------------------------------------------- + // The virtual transcoder API + // + // NOTE: All these APIs don't include null terminator characters in + // their parameters. So calcRequiredSize() returns the number + // of actual chars, not including the null. maxBytes and maxChars + // parameters refer to actual chars, not including the null so + // its assumed that the buffer is physically one char or byte + // larger. + // ----------------------------------------------------------------------- + + // ----------------------------------------------------------------------- + // The 'normal' way to transcode a XMLCh-string from/to local string + // representation + // + // NOTE: Both methods return a string allocated via the MemoryManager. + // It is the responsibility of the calling environment to + // release this string after use. + // ----------------------------------------------------------------------- + virtual char* transcode(const XMLCh* const toTranscode, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + virtual XMLCh* transcode(const char* const toTranscode, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + + // ----------------------------------------------------------------------- + // DEPRECATED old transcode interface + // ----------------------------------------------------------------------- + virtual XMLSize_t calcRequiredSize(const char* const srcText + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + virtual XMLSize_t calcRequiredSize(const XMLCh* const srcText + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; + + virtual bool transcode + ( + const char* const toTranscode + , XMLCh* const toFill + , const XMLSize_t maxChars + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) = 0; + + virtual bool transcode + ( + const XMLCh* const toTranscode + , char* const toFill + , const XMLSize_t maxBytes + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) = 0; + + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XMLLCPTranscoder(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLLCPTranscoder(const XMLLCPTranscoder&); + XMLLCPTranscoder& operator=(const XMLLCPTranscoder&); +}; + +// +// This class can be used to transcode to a target encoding. It manages the +// memory allocated for the transcode in an exception safe manner, automatically +// deleting it when the class goes out of scope. +// +class XMLUTIL_EXPORT TranscodeToStr +{ +public: + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + + /** Converts from the internal XMLCh* encoding to the specified encoding + * + * @param in the null terminated source buffer to be transcoded + * @param encoding the name of the encoding to transcode to + * @param manager the memory manager to use + */ + TranscodeToStr(const XMLCh *in, const char *encoding, + MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); + + /** Converts from the internal XMLCh* encoding to the specified encoding + * + * @param in the source buffer to be transcoded + * @param length the length of the source buffer + * @param encoding the name of the encoding to transcode to + * @param manager the memory manager to use + */ + TranscodeToStr(const XMLCh *in, XMLSize_t length, const char *encoding, + MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); + + /** Converts from the internal XMLCh* encoding to the specified encoding + * + * @param in the null terminated source buffer to be transcoded + * @param trans the transcoder to use + * @param manager the memory manager to use + */ + TranscodeToStr(const XMLCh *in, XMLTranscoder* trans, + MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); + + /** Converts from the internal XMLCh* encoding to the specified encoding + * + * @param in the source buffer to be transcoded + * @param length the length of the source buffer + * @param trans the transcoder to use + * @param manager the memory manager to use + */ + TranscodeToStr(const XMLCh *in, XMLSize_t length, XMLTranscoder* trans, + MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); + + ~TranscodeToStr(); + + /** @name Getter methods */ + //@{ + + /** Returns the transcoded, null terminated string + * @return the transcoded string + */ + const XMLByte *str() const; + + /** Returns the transcoded, null terminated string - adopting + * the memory allocated to it from the TranscodeToStr object + * @return the transcoded string + */ + XMLByte *adopt(); + + /** Returns the length of the transcoded string in bytes. The length + * does not include the null terminator. + * @return the length of the transcoded string in bytes + */ + XMLSize_t length () const; + + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + TranscodeToStr(const TranscodeToStr &); + TranscodeToStr &operator=(const TranscodeToStr &); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void transcode(const XMLCh *in, XMLSize_t len, XMLTranscoder* trans); + + // ----------------------------------------------------------------------- + // Private data members + // + // fString + // The transcoded string + // + // fBytesWritten + // The length of the transcoded string in bytes + // ----------------------------------------------------------------------- + ArrayJanitor fString; + XMLSize_t fBytesWritten; + MemoryManager *fMemoryManager; +}; + +// +// This class can be used to transcode from a source encoding. It manages the +// memory allocated for the transcode in an exception safe manner, automatically +// deleting it when the class goes out of scope. +// +class XMLUTIL_EXPORT TranscodeFromStr +{ +public: + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + + /** Converts from the specified encoding to the internal XMLCh* encoding + * + * @param data the source buffer to be transcoded + * @param length the length of the source buffer + * @param encoding the name of the encoding to transcode to + * @param manager the memory manager to use + */ + TranscodeFromStr(const XMLByte *data, XMLSize_t length, const char *encoding, + MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); + + /** Converts from the specified encoding to the internal XMLCh* encoding + * + * @param data the source buffer to be transcoded + * @param length the length of the source buffer + * @param trans the transcoder to use + * @param manager the memory manager to use + */ + TranscodeFromStr(const XMLByte *data, XMLSize_t length, XMLTranscoder *trans, + MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); + + ~TranscodeFromStr(); + + /** @name Getter methods */ + //@{ + + /** Returns the transcoded, null terminated string + * @return the transcoded string + */ + const XMLCh *str() const; + + /** Returns the transcoded, null terminated string - adopting + * the memory allocated to it from the TranscodeFromStr object + * @return the transcoded string + */ + XMLCh *adopt(); + + /** Returns the length of the transcoded string in characters. The length + * does not include the null terminator. + * @return the length of the transcoded string in characters + */ + XMLSize_t length() const; + + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + TranscodeFromStr(const TranscodeFromStr &); + TranscodeFromStr &operator=(const TranscodeFromStr &); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void transcode(const XMLByte *in, XMLSize_t length, XMLTranscoder *trans); + + // ----------------------------------------------------------------------- + // Private data members + // + // fString + // The transcoded string + // + // fCharsWritten + // The length of the transcoded string in characters + // ----------------------------------------------------------------------- + ArrayJanitor fString; + XMLSize_t fCharsWritten; + MemoryManager *fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// XMLTranscoder: Getter methods +// --------------------------------------------------------------------------- +inline MemoryManager* XMLTranscoder::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// XMLTranscoder: Protected helper methods +// --------------------------------------------------------------------------- +inline XMLSize_t XMLTranscoder::getBlockSize() const +{ + return fBlockSize; +} + +inline const XMLCh* XMLTranscoder::getEncodingName() const +{ + return fEncodingName; +} + +// --------------------------------------------------------------------------- +// TranscodeToStr: Getter methods +// --------------------------------------------------------------------------- +inline const XMLByte *TranscodeToStr::str() const +{ + return fString.get(); +} + +inline XMLByte *TranscodeToStr::adopt() +{ + fBytesWritten = 0; + return fString.release(); +} + +inline XMLSize_t TranscodeToStr::length () const +{ + return fBytesWritten; +} + +// --------------------------------------------------------------------------- +// TranscodeFromStr: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh *TranscodeFromStr::str() const +{ + return fString.get(); +} + +inline XMLCh *TranscodeFromStr::adopt() +{ + fCharsWritten = 0; + return fString.release(); +} + +inline XMLSize_t TranscodeFromStr::length() const +{ + return fCharsWritten; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/Transcoders/Win32/Win32TransService.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/Transcoders/Win32/Win32TransService.hpp new file mode 100644 index 000000000000..1db829c68f4c --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/Transcoders/Win32/Win32TransService.hpp @@ -0,0 +1,277 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_WIN32TRANSSERVICE_HPP) +#define XERCESC_INCLUDE_GUARD_WIN32TRANSSERVICE_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class CPMapEntry; + + + +//--------------------------------------------------------------------------- +// +// class Win32TransService +// +//--------------------------------------------------------------------------- +class XMLUTIL_EXPORT Win32TransService : public XMLTransService +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + Win32TransService(MemoryManager* manager); + virtual ~Win32TransService(); + + + // ----------------------------------------------------------------------- + // Implementation of the virtual transcoding service API + // ----------------------------------------------------------------------- + virtual int compareIString + ( + const XMLCh* const comp1 + , const XMLCh* const comp2 + ); + + virtual int compareNIString + ( + const XMLCh* const comp1 + , const XMLCh* const comp2 + , const XMLSize_t maxChars + ); + + virtual const XMLCh* getId() const; + + virtual XMLLCPTranscoder* makeNewLCPTranscoder(MemoryManager* manager); + + virtual bool supportsSrcOfs() const; + + virtual void upperCase(XMLCh* const toUpperCase); + virtual void lowerCase(XMLCh* const toLowerCase); + + +protected : + // ----------------------------------------------------------------------- + // Protected virtual methods + // ----------------------------------------------------------------------- + virtual XMLTranscoder* makeNewXMLTranscoder + ( + const XMLCh* const encodingName + , XMLTransService::Codes& resValue + , const XMLSize_t blockSize + , MemoryManager* const manager + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Win32TransService(const Win32TransService&); + Win32TransService& operator=(const Win32TransService&); + + // This is a hash table of entries which map encoding names to their + // Windows specific code pages. The code page allows us to create + // transcoders for those encodings. The encoding names come from XML + // files. + // + // This map is shared unsynchronized among all threads of the process, + // which is cool since it will be read only once its initialized. + + RefHashTableOf *fCPMap; + MemoryManager* fManager; +}; + + + + + + + +//--------------------------------------------------------------------------- +// +// class Win32Transcoder +// +//--------------------------------------------------------------------------- + +class XMLUTIL_EXPORT Win32Transcoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + Win32Transcoder + ( + const XMLCh* const encodingName + , const unsigned int ieCP + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~Win32Transcoder(); + + + // ----------------------------------------------------------------------- + // Implementation of the virtual transcoder interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Win32Transcoder(const Win32Transcoder&); + Win32Transcoder& operator=(const Win32Transcoder&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fIECP + // This is the code page for this encoding. + // + // fUsedDef + // A flag passed into the conversions routines that is set to + // TRUE when a default character was substituted for the actual + // character. + // + // fPtrUsedDef + // A pointer to fUsedDef or a null pointer if the code page does not + // support the parameter that returns whether or not a default + // character was substituted. + // + // fFromFlags + // These are the flags passed to MultiByteToWideChar. For some + // code pages, this must be 0. See the documentation of the function + // for more details. + // + // fToFlags + // These are the flags passed to WideCharToMultiByte. For some + // code pages, this must be 0. See the documentation of the function + // for more details. + // + // ----------------------------------------------------------------------- + UINT fIECP; + + BOOL fUsedDef; + + BOOL* fPtrUsedDef; + + DWORD fFromFlags; + + DWORD fToFlags; +}; + + + + + +//--------------------------------------------------------------------------- +// +// class Win32LCPTranscoder +// +//--------------------------------------------------------------------------- +class XMLUTIL_EXPORT Win32LCPTranscoder : public XMLLCPTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + Win32LCPTranscoder(); + ~Win32LCPTranscoder(); + + + // ----------------------------------------------------------------------- + // Implementation of the virtual transcoder interface + // ----------------------------------------------------------------------- + virtual char* transcode(const XMLCh* const toTranscode, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + virtual XMLCh* transcode(const char* const toTranscode, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + + // ----------------------------------------------------------------------- + // DEPRECATED old transcode interface + // ----------------------------------------------------------------------- + virtual XMLSize_t calcRequiredSize(const char* const srcText + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + virtual XMLSize_t calcRequiredSize(const XMLCh* const srcText + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + virtual bool transcode + ( + const char* const toTranscode + , XMLCh* const toFill + , const XMLSize_t maxChars + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual bool transcode + ( + const XMLCh* const toTranscode + , char* const toFill + , const XMLSize_t maxChars + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Win32LCPTranscoder(const Win32LCPTranscoder&); + Win32LCPTranscoder& operator=(const Win32LCPTranscoder&); + + MemoryManager* fManager; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/TranscodingException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/TranscodingException.hpp new file mode 100644 index 000000000000..147b75136b15 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/TranscodingException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TRANSCODINGEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_TRANSCODINGEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(TranscodingException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/UTFDataFormatException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/UTFDataFormatException.hpp new file mode 100644 index 000000000000..3257e1ef3c1e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/UTFDataFormatException.hpp @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_UTFDATAFORMATEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_UTFDATAFORMATEXCEPTION_HPP + + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(UTFDataFormatException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/UnexpectedEOFException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/UnexpectedEOFException.hpp new file mode 100644 index 000000000000..db1a6b240499 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/UnexpectedEOFException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_UNEXPECTEDEOFEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_UNEXPECTEDEOFEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(UnexpectedEOFException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/UnsupportedEncodingException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/UnsupportedEncodingException.hpp new file mode 100644 index 000000000000..0da26a6d4e02 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/UnsupportedEncodingException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_UNSUPPORTEDENCODINGEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_UNSUPPORTEDENCODINGEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(UnsupportedEncodingException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/ValueArrayOf.c b/src/libs/xerces-c/msvc/include/xercesc/util/ValueArrayOf.c new file mode 100644 index 000000000000..1683e1b679d5 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/ValueArrayOf.c @@ -0,0 +1,252 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// ValueArrayOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +ValueArrayOf::ValueArrayOf(const XMLSize_t size, + MemoryManager* const manager) : + + fSize(size) + , fArray(0) + , fMemoryManager(manager) +{ + fArray = (TElem*) fMemoryManager->allocate(fSize * sizeof(TElem)); //new TElem[fSize]; +} + +template +ValueArrayOf::ValueArrayOf( const TElem* values + , const XMLSize_t size + , MemoryManager* const manager) : + + fSize(size) + , fArray(0) + , fMemoryManager(manager) +{ + fArray = (TElem*) fMemoryManager->allocate(fSize * sizeof(TElem)); //new TElem[fSize]; + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = values[index]; +} + +template +ValueArrayOf::ValueArrayOf(const ValueArrayOf& source) : + XMemory(source) + , fSize(source.fSize) + , fArray(0) + , fMemoryManager(source.fMemoryManager) +{ + fArray = (TElem*) fMemoryManager->allocate(fSize * sizeof(TElem)); //new TElem[fSize]; + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = source.fArray[index]; +} + +template ValueArrayOf::~ValueArrayOf() +{ + fMemoryManager->deallocate(fArray); //delete [] fArray; +} + + +// --------------------------------------------------------------------------- +// ValueArrayOf: Public operators +// --------------------------------------------------------------------------- +template TElem& ValueArrayOf:: +operator[](const XMLSize_t index) +{ + if (index >= fSize) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + return fArray[index]; +} + +template const TElem& ValueArrayOf:: +operator[](const XMLSize_t index) const +{ + if (index >= fSize) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + return fArray[index]; +} + +template ValueArrayOf& ValueArrayOf:: +operator=(const ValueArrayOf& toAssign) +{ + if (this == &toAssign) + return *this; + + // Reallocate if not the same size + if (toAssign.fSize != fSize) + { + fMemoryManager->deallocate(fArray); //delete [] fArray; + fSize = toAssign.fSize; + fArray = (TElem*) fMemoryManager->allocate(fSize * sizeof(TElem)); //new TElem[fSize]; + } + + // Copy over the source elements + for (XMLSize_t index = 0; index < fSize; index++) + fArray[index] = toAssign.fArray[index]; + + return *this; +} + +template bool ValueArrayOf:: +operator==(const ValueArrayOf& toCompare) const +{ + if (this == &toCompare) + return true; + + if (fSize != toCompare.fSize) + return false; + + for (XMLSize_t index = 0; index < fSize; index++) + { + if (fArray[index] != toCompare.fArray[index]) + return false; + } + + return true; +} + +template bool ValueArrayOf:: +operator!=(const ValueArrayOf& toCompare) const +{ + return !operator==(toCompare); +} + + +// --------------------------------------------------------------------------- +// ValueArrayOf: Copy operations +// --------------------------------------------------------------------------- +template XMLSize_t ValueArrayOf:: +copyFrom(const ValueArrayOf& srcArray) +{ + // + // Copy over as many of the source elements as will fit into + // this array. + // + const XMLSize_t count = fSize < srcArray.fSize ? + fSize : srcArray.fSize; + + for (XMLSize_t index = 0; index < count; index++) + fArray[index] = srcArray.fArray[index]; + + return count; +} + + +// --------------------------------------------------------------------------- +// ValueArrayOf: Getter methods +// --------------------------------------------------------------------------- +template XMLSize_t ValueArrayOf:: +length() const +{ + return fSize; +} + +template TElem* ValueArrayOf:: +rawData() const +{ + return fArray; +} + + +// --------------------------------------------------------------------------- +// ValueArrayOf: Miscellaneous methods +// --------------------------------------------------------------------------- +template void ValueArrayOf:: +resize(const XMLSize_t newSize) +{ + if (newSize == fSize) + return; + + if (newSize < fSize) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Array_BadNewSize, fMemoryManager); + + // Allocate the new array + TElem* newArray = (TElem*) fMemoryManager->allocate + ( + newSize * sizeof(TElem) + ); //new TElem[newSize]; + + // Copy the existing values + XMLSize_t index = 0; + for (; index < fSize; index++) + newArray[index] = fArray[index]; + + for (; index < newSize; index++) + newArray[index] = TElem(0); + + // Delete the old array and update our members + fMemoryManager->deallocate(fArray); //delete [] fArray; + fArray = newArray; + fSize = newSize; +} + + + +// --------------------------------------------------------------------------- +// ValueArrayEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template ValueArrayEnumerator:: +ValueArrayEnumerator(ValueArrayOf* const toEnum, const bool adopt) : + fAdopted(adopt) + , fCurIndex(0) + , fToEnum(toEnum) +{ +} + +template ValueArrayEnumerator::~ValueArrayEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// ValueArrayEnumerator: Enum interface +// --------------------------------------------------------------------------- +template bool ValueArrayEnumerator::hasMoreElements() const +{ + if (fCurIndex >= fToEnum->length()) + return false; + return true; +} + +template TElem& ValueArrayEnumerator::nextElement() +{ + return (*fToEnum)[fCurIndex++]; +} + +template void ValueArrayEnumerator::Reset() +{ + fCurIndex = 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/ValueArrayOf.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/ValueArrayOf.hpp new file mode 100644 index 000000000000..e47631ec617d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/ValueArrayOf.hpp @@ -0,0 +1,150 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALUEARRAY_HPP) +#define XERCESC_INCLUDE_GUARD_VALUEARRAY_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class ValueArrayOf : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueArrayOf + ( + const XMLSize_t size + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ValueArrayOf + ( + const TElem* values + , const XMLSize_t size + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ValueArrayOf(const ValueArrayOf& source); + ~ValueArrayOf(); + + + // ----------------------------------------------------------------------- + // Public operators + // ----------------------------------------------------------------------- + TElem& operator[](const XMLSize_t index); + const TElem& operator[](const XMLSize_t index) const; + ValueArrayOf& operator=(const ValueArrayOf& toAssign); + bool operator==(const ValueArrayOf& toCompare) const; + bool operator!=(const ValueArrayOf& toCompare) const; + + + // ----------------------------------------------------------------------- + // Copy operations + // ----------------------------------------------------------------------- + XMLSize_t copyFrom(const ValueArrayOf& srcArray); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t length() const; + TElem* rawData() const; + + + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + void resize(const XMLSize_t newSize); + + +private : + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + XMLSize_t fSize; + TElem* fArray; + MemoryManager* fMemoryManager; +}; + + +// +// An enumerator for a value array. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template class ValueArrayEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueArrayEnumerator + ( + ValueArrayOf* const toEnum + , const bool adopt = false + ); + virtual ~ValueArrayEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TElem& nextElement(); + void Reset(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueArrayEnumerator(const ValueArrayEnumerator&); + ValueArrayEnumerator& operator=(const ValueArrayEnumerator&); + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed vector. If so then + // we delete the vector when we are destroyed. + // + // fCurIndex + // This is the current index into the vector. + // + // fToEnum + // The value array being enumerated. + // ----------------------------------------------------------------------- + bool fAdopted; + XMLSize_t fCurIndex; + ValueArrayOf* fToEnum; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/ValueHashTableOf.c b/src/libs/xerces-c/msvc/include/xercesc/util/ValueHashTableOf.c new file mode 100644 index 000000000000..b8925ac89095 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/ValueHashTableOf.c @@ -0,0 +1,489 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Include +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// ValueHashTableOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +ValueHashTableOf::ValueHashTableOf( const XMLSize_t modulus + , const THasher& hasher + , MemoryManager* const manager) + : fMemoryManager(manager) + , fBucketList(0) + , fHashModulus(modulus) + , fInitialModulus(modulus) + , fCount(0) + , fHasher(hasher) +{ + initialize(modulus); +} + +template +ValueHashTableOf::ValueHashTableOf( const XMLSize_t modulus + , MemoryManager* const manager) + : fMemoryManager(manager) + , fBucketList(0) + , fHashModulus(modulus) + , fInitialModulus(modulus) + , fCount(0) + , fHasher() +{ + initialize(modulus); +} + +template +void ValueHashTableOf::initialize(const XMLSize_t modulus) +{ + if (modulus == 0) + ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); + + // Allocate the bucket list and zero them + fBucketList = (ValueHashTableBucketElem**) fMemoryManager->allocate + ( + fHashModulus * sizeof(ValueHashTableBucketElem*) + ); //new ValueHashTableBucketElem*[fHashModulus]; + memset(fBucketList, 0, sizeof(fBucketList[0]) * fHashModulus); +} + +template +ValueHashTableOf::~ValueHashTableOf() +{ + removeAll(); + + // Then delete the bucket list & hasher + fMemoryManager->deallocate(fBucketList); //delete [] fBucketList; +} + + +// --------------------------------------------------------------------------- +// ValueHashTableOf: Element management +// --------------------------------------------------------------------------- +template +bool ValueHashTableOf::isEmpty() const +{ + return fCount==0; +} + +template +bool ValueHashTableOf:: +containsKey(const void* const key) const +{ + XMLSize_t hashVal; + const ValueHashTableBucketElem* findIt = findBucketElem(key, hashVal); + return (findIt != 0); +} + +template +void ValueHashTableOf:: +removeKey(const void* const key) +{ + XMLSize_t hashVal; + removeBucketElem(key, hashVal); +} + +template +void ValueHashTableOf::removeAll() +{ + if(isEmpty()) + return; + + // Clean up the buckets first + for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) + { + // Get the bucket list head for this entry + ValueHashTableBucketElem* curElem = fBucketList[buckInd]; + ValueHashTableBucketElem* nextElem; + while (curElem) + { + // Save the next element before we hose this one + nextElem = curElem->fNext; + + // delete the current element and move forward + // destructor is empty... + // curElem->~ValueHashTableBucketElem(); + fMemoryManager->deallocate(curElem); + curElem = nextElem; + } + + // Clean out this entry + fBucketList[buckInd] = 0; + } + fCount = 0; +} + + +// --------------------------------------------------------------------------- +// ValueHashTableOf: Getters +// --------------------------------------------------------------------------- +template +TVal& ValueHashTableOf::get(const void* const key, MemoryManager* const manager) +{ + XMLSize_t hashVal; + ValueHashTableBucketElem* findIt = findBucketElem(key, hashVal); + if (!findIt) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, manager); + + return findIt->fData; +} + +template +const TVal& ValueHashTableOf:: +get(const void* const key) const +{ + XMLSize_t hashVal; + const ValueHashTableBucketElem* findIt = findBucketElem(key, hashVal); + if (!findIt) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, fMemoryManager); + + return findIt->fData; +} + + +// --------------------------------------------------------------------------- +// ValueHashTableOf: Putters +// --------------------------------------------------------------------------- +template +void ValueHashTableOf::put(void* key, const TVal& valueToAdopt) +{ + // Apply 0.75 load factor to find threshold. + XMLSize_t threshold = fHashModulus * 3 / 4; + + // If we've grown too big, expand the table and rehash. + if (fCount >= threshold) + rehash(); + + // First see if the key exists already + XMLSize_t hashVal; + ValueHashTableBucketElem* newBucket = findBucketElem(key, hashVal); + + // + // If so,then update its value. If not, then we need to add it to + // the right bucket + // + if (newBucket) + { + newBucket->fData = valueToAdopt; + newBucket->fKey = key; + } + else + { + newBucket = + new (fMemoryManager->allocate(sizeof(ValueHashTableBucketElem))) + ValueHashTableBucketElem(key, valueToAdopt, fBucketList[hashVal]); + fBucketList[hashVal] = newBucket; + fCount++; + } +} + + + +// --------------------------------------------------------------------------- +// ValueHashTableOf: Private methods +// --------------------------------------------------------------------------- +template +void ValueHashTableOf::rehash() +{ + const XMLSize_t newMod = (fHashModulus * 2) + 1; + + ValueHashTableBucketElem** newBucketList = + (ValueHashTableBucketElem**) fMemoryManager->allocate + ( + newMod * sizeof(ValueHashTableBucketElem*) + );//new RefHashTableBucketElem*[newMod]; + + // Make sure the new bucket list is destroyed if an + // exception is thrown. + ArrayJanitor*> guard(newBucketList, fMemoryManager); + + memset(newBucketList, 0, newMod * sizeof(newBucketList[0])); + + + // Rehash all existing entries. + for (XMLSize_t index = 0; index < fHashModulus; index++) + { + // Get the bucket list head for this entry + ValueHashTableBucketElem* curElem = fBucketList[index]; + + while (curElem) + { + // Save the next element before we detach this one + ValueHashTableBucketElem* const nextElem = curElem->fNext; + + const XMLSize_t hashVal = fHasher.getHashVal(curElem->fKey, newMod); + assert(hashVal < newMod); + + ValueHashTableBucketElem* const newHeadElem = newBucketList[hashVal]; + + // Insert at the start of this bucket's list. + curElem->fNext = newHeadElem; + newBucketList[hashVal] = curElem; + + curElem = nextElem; + } + } + + ValueHashTableBucketElem** const oldBucketList = fBucketList; + + // Everything is OK at this point, so update the + // member variables. + fBucketList = guard.release(); + fHashModulus = newMod; + + // Delete the old bucket list. + fMemoryManager->deallocate(oldBucketList);//delete[] oldBucketList; + +} + +template +inline ValueHashTableBucketElem* ValueHashTableOf:: +findBucketElem(const void* const key, XMLSize_t& hashVal) +{ + // Hash the key + hashVal = fHasher.getHashVal(key, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + ValueHashTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if (fHasher.equals(key, curElem->fKey)) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + +template +inline const ValueHashTableBucketElem* ValueHashTableOf:: +findBucketElem(const void* const key, XMLSize_t& hashVal) const +{ + // Hash the key + hashVal = fHasher.getHashVal(key, fHashModulus); + assert(hashVal < fHashModulus); + + // Search that bucket for the key + const ValueHashTableBucketElem* curElem = fBucketList[hashVal]; + while (curElem) + { + if (fHasher.equals(key, curElem->fKey)) + return curElem; + + curElem = curElem->fNext; + } + return 0; +} + + +template +void ValueHashTableOf:: +removeBucketElem(const void* const key, XMLSize_t& hashVal) +{ + // Hash the key + hashVal = fHasher.getHashVal(key, fHashModulus); + assert(hashVal < fHashModulus); + + // + // Search the given bucket for this key. Keep up with the previous + // element so we can patch around it. + // + ValueHashTableBucketElem* curElem = fBucketList[hashVal]; + ValueHashTableBucketElem* lastElem = 0; + + while (curElem) + { + if (fHasher.equals(key, curElem->fKey)) + { + if (!lastElem) + { + // It was the first in the bucket + fBucketList[hashVal] = curElem->fNext; + } + else + { + // Patch around the current element + lastElem->fNext = curElem->fNext; + } + + // Delete the current element + // delete curElem; + // destructor is empty... + // curElem->~ValueHashTableBucketElem(); + fMemoryManager->deallocate(curElem); + + fCount--; + + return; + } + + // Move both pointers upwards + lastElem = curElem; + curElem = curElem->fNext; + } + + // We never found that key + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, fMemoryManager); +} + + + + +// --------------------------------------------------------------------------- +// ValueHashTableOfEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template +ValueHashTableOfEnumerator:: +ValueHashTableOfEnumerator(ValueHashTableOf* const toEnum + , const bool adopt + , MemoryManager* const manager) + : fAdopted(adopt), fCurElem(0), fCurHash((XMLSize_t)-1), fToEnum(toEnum), fMemoryManager(manager) +{ + if (!toEnum) + ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, manager); + + // + // Find the next available bucket element in the hash table. If it + // comes back zero, that just means the table is empty. + // + // Note that the -1 in the current hash tells it to start from the + // beginning. + // + findNext(); +} + +template +ValueHashTableOfEnumerator::~ValueHashTableOfEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// ValueHashTableOfEnumerator: Enum interface +// --------------------------------------------------------------------------- +template +bool ValueHashTableOfEnumerator::hasMoreElements() const +{ + // + // If our current has is at the max and there are no more elements + // in the current bucket, then no more elements. + // + if (!fCurElem && (fCurHash == fToEnum->fHashModulus)) + return false; + return true; +} + +template +TVal& ValueHashTableOfEnumerator::nextElement() +{ + // Make sure we have an element to return + if (!hasMoreElements()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + ValueHashTableBucketElem* saveElem = fCurElem; + findNext(); + + return saveElem->fData; +} + +template +void* ValueHashTableOfEnumerator::nextElementKey() +{ + // Make sure we have an element to return + if (!hasMoreElements()) + ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); + + // + // Save the current element, then move up to the next one for the + // next time around. + // + ValueHashTableBucketElem* saveElem = fCurElem; + findNext(); + + return saveElem->fKey; +} + + +template +void ValueHashTableOfEnumerator::Reset() +{ + fCurHash = (XMLSize_t)-1; + fCurElem = 0; + findNext(); +} + + + +// --------------------------------------------------------------------------- +// ValueHashTableOfEnumerator: Private helper methods +// --------------------------------------------------------------------------- +template +void ValueHashTableOfEnumerator::findNext() +{ + // + // If there is a current element, move to its next element. If this + // hits the end of the bucket, the next block will handle the rest. + // + if (fCurElem) + fCurElem = fCurElem->fNext; + + // + // If the current element is null, then we have to move up to the + // next hash value. If that is the hash modulus, then we cannot + // go further. + // + if (!fCurElem) + { + if (++fCurHash == fToEnum->fHashModulus) + return; + + // Else find the next non-empty bucket + while (fToEnum->fBucketList[fCurHash]==0) + { + // Bump to the next hash value. If we max out return + if (++fCurHash == fToEnum->fHashModulus) + return; + } + fCurElem = fToEnum->fBucketList[fCurHash]; + } +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/ValueHashTableOf.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/ValueHashTableOf.hpp new file mode 100644 index 000000000000..a7cbe9dcf43e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/ValueHashTableOf.hpp @@ -0,0 +1,229 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALUEHASHTABLEOF_HPP) +#define XERCESC_INCLUDE_GUARD_VALUEHASHTABLEOF_HPP + + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Forward declare the enumerator so it can be our friend. +// +template +class ValueHashTableOfEnumerator; + + +// +// This should really be a nested class, but some of the compilers we +// have to support cannot deal with that! +// +template +struct ValueHashTableBucketElem +{ + ValueHashTableBucketElem(void* key, const TVal& value, ValueHashTableBucketElem* next) + : fData(value), fNext(next), fKey(key) + { + } + ValueHashTableBucketElem(){}; + ~ValueHashTableBucketElem(){}; + + TVal fData; + ValueHashTableBucketElem* fNext; + void* fKey; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueHashTableBucketElem(const ValueHashTableBucketElem&); + ValueHashTableBucketElem& operator=(const ValueHashTableBucketElem&); +}; + + +template +class ValueHashTableOf : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueHashTableOf( + const XMLSize_t modulus, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ValueHashTableOf( + const XMLSize_t modulus, + const THasher& hasher, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~ValueHashTableOf(); + + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + bool isEmpty() const; + bool containsKey(const void* const key) const; + void removeKey(const void* const key); + void removeAll(); + + + // ----------------------------------------------------------------------- + // Getters + // ----------------------------------------------------------------------- + TVal& get(const void* const key, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + const TVal& get(const void* const key) const; + + + // ----------------------------------------------------------------------- + // Putters + // ----------------------------------------------------------------------- + void put(void* key, const TVal& valueToAdopt); + + +private : + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class ValueHashTableOfEnumerator; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueHashTableOf(const ValueHashTableOf&); + ValueHashTableOf& operator=(const ValueHashTableOf&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + ValueHashTableBucketElem* findBucketElem(const void* const key, XMLSize_t& hashVal); + const ValueHashTableBucketElem* findBucketElem(const void* const key, XMLSize_t& hashVal) const; + void removeBucketElem(const void* const key, XMLSize_t& hashVal); + void initialize(const XMLSize_t modulus); + void rehash(); + + + // ----------------------------------------------------------------------- + // Data members + // + // fBucketList + // This is the array that contains the heads of all of the list + // buckets, one for each possible hash value. + // + // fHashModulus + // The modulus used for this hash table, to hash the keys. This is + // also the number of elements in the bucket list. + // + // fHash + // The hasher for the key data type. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + ValueHashTableBucketElem** fBucketList; + XMLSize_t fHashModulus; + XMLSize_t fInitialModulus; + XMLSize_t fCount; + THasher fHasher; +}; + + + +// +// An enumerator for a value array. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template +class ValueHashTableOfEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueHashTableOfEnumerator(ValueHashTableOf* const toEnum + , const bool adopt = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~ValueHashTableOfEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TVal& nextElement(); + void Reset(); + + // ----------------------------------------------------------------------- + // New interface specific for key used in ValueHashable + // ----------------------------------------------------------------------- + void* nextElementKey(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueHashTableOfEnumerator(const ValueHashTableOfEnumerator&); + ValueHashTableOfEnumerator& operator=(const ValueHashTableOfEnumerator&); + + // ----------------------------------------------------------------------- + // Private methods + // ----------------------------------------------------------------------- + void findNext(); + + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed vector. If so then + // we delete the vector when we are destroyed. + // + // fCurElem + // This is the current bucket bucket element that we are on. + // + // fCurHash + // The is the current hash buck that we are working on. Once we hit + // the end of the bucket that fCurElem is in, then we have to start + // working this one up to the next non-empty bucket. + // + // fToEnum + // The value array being enumerated. + // ----------------------------------------------------------------------- + bool fAdopted; + ValueHashTableBucketElem* fCurElem; + XMLSize_t fCurHash; + ValueHashTableOf* fToEnum; + MemoryManager* const fMemoryManager; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/ValueStackOf.c b/src/libs/xerces-c/msvc/include/xercesc/util/ValueStackOf.c new file mode 100644 index 000000000000..fda3ba1c4548 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/ValueStackOf.c @@ -0,0 +1,146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + + +// --------------------------------------------------------------------------- +// ValueStackOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +ValueStackOf::ValueStackOf(const XMLSize_t fInitCapacity, + MemoryManager* const manager, + const bool toCallDestructor) : + + fVector(fInitCapacity, manager, toCallDestructor) +{ +} + +template ValueStackOf::~ValueStackOf() +{ +} + + +// --------------------------------------------------------------------------- +// ValueStackOf: Element management methods +// --------------------------------------------------------------------------- +template void ValueStackOf::push(const TElem& toPush) +{ + fVector.addElement(toPush); +} + +template const TElem& ValueStackOf::peek() const +{ + const XMLSize_t curSize = fVector.size(); + if (curSize == 0) + ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::Stack_EmptyStack, fVector.getMemoryManager()); + + return fVector.elementAt(curSize-1); +} + +template TElem ValueStackOf::pop() +{ + const XMLSize_t curSize = fVector.size(); + if (curSize == 0) + ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::Stack_EmptyStack, fVector.getMemoryManager()); + + TElem retVal = fVector.elementAt(curSize-1); + fVector.removeElementAt(curSize-1); + return retVal; +} + +template void ValueStackOf::removeAllElements() +{ + fVector.removeAllElements(); +} + + +// --------------------------------------------------------------------------- +// ValueStackOf: Getter methods +// --------------------------------------------------------------------------- +template bool ValueStackOf::empty() +{ + return (fVector.size() == 0); +} + +template XMLSize_t ValueStackOf::curCapacity() +{ + return fVector.curCapacity(); +} + +template XMLSize_t ValueStackOf::size() +{ + return fVector.size(); +} + + + + +// --------------------------------------------------------------------------- +// ValueStackEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template ValueStackEnumerator:: +ValueStackEnumerator( ValueStackOf* const toEnum + , const bool adopt) : + + fAdopted(adopt) + , fCurIndex(0) + , fToEnum(toEnum) + , fVector(&toEnum->fVector) +{ +} + +template ValueStackEnumerator::~ValueStackEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// ValueStackEnumerator: Enum interface +// --------------------------------------------------------------------------- +template bool ValueStackEnumerator::hasMoreElements() const +{ + if (fCurIndex >= fVector->size()) + return false; + return true; +} + +template TElem& ValueStackEnumerator::nextElement() +{ + return fVector->elementAt(fCurIndex++); +} + +template void ValueStackEnumerator::Reset() +{ + fCurIndex = 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/ValueStackOf.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/ValueStackOf.hpp new file mode 100644 index 000000000000..255e65864a93 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/ValueStackOf.hpp @@ -0,0 +1,155 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALUESTACKOF_HPP) +#define XERCESC_INCLUDE_GUARD_VALUESTACKOF_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// Forward declare the enumerator so he can be our friend. Can you say +// friend? Sure... +// +template class ValueStackEnumerator; + + +template class ValueStackOf : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueStackOf + ( + const XMLSize_t fInitCapacity + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , const bool toCallDestructor = false + ); + ~ValueStackOf(); + + + // ----------------------------------------------------------------------- + // Element management methods + // ----------------------------------------------------------------------- + void push(const TElem& toPush); + const TElem& peek() const; + TElem pop(); + void removeAllElements(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool empty(); + XMLSize_t curCapacity(); + XMLSize_t size(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueStackOf(const ValueStackOf&); + ValueStackOf& operator=(const ValueStackOf&); + + // ----------------------------------------------------------------------- + // Declare our friends + // ----------------------------------------------------------------------- + friend class ValueStackEnumerator; + + + // ----------------------------------------------------------------------- + // Data Members + // + // fVector + // The vector that is used as the backing data structure for the + // stack. + // ----------------------------------------------------------------------- + ValueVectorOf fVector; +}; + + + +// +// An enumerator for a value stack. It derives from the basic enumerator +// class, so that value stacks can be generically enumerated. +// +template class ValueStackEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueStackEnumerator + ( + ValueStackOf* const toEnum + , const bool adopt = false + ); + virtual ~ValueStackEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TElem& nextElement(); + void Reset(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueStackEnumerator(const ValueStackEnumerator&); + ValueStackEnumerator& operator=(const ValueStackEnumerator&); + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed stack. If so then + // we delete the stack when we are destroyed. + // + // fCurIndex + // This is the current index into the vector inside the stack being + // enumerated. + // + // fToEnum + // The stack that is being enumerated. This is just kept for + // adoption purposes, since we really are enumerating the vector + // inside of it. + // ----------------------------------------------------------------------- + bool fAdopted; + XMLSize_t fCurIndex; + ValueVectorOf* fVector; + ValueStackOf* fToEnum; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/ValueVectorOf.c b/src/libs/xerces-c/msvc/include/xercesc/util/ValueVectorOf.c new file mode 100644 index 000000000000..1aca7364e92a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/ValueVectorOf.c @@ -0,0 +1,299 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#if defined(XERCES_TMPLSINC) +#include +#endif +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// ValueVectorOf: Constructors and Destructor +// --------------------------------------------------------------------------- +template +ValueVectorOf::ValueVectorOf(const XMLSize_t maxElems, + MemoryManager* const manager, + const bool toCallDestructor) : + + fCallDestructor(toCallDestructor) + , fCurCount(0) + , fMaxCount(maxElems) + , fElemList(0) + , fMemoryManager(manager) +{ + fElemList = (TElem*) fMemoryManager->allocate + ( + fMaxCount * sizeof(TElem) + ); //new TElem[fMaxCount]; + + memset(fElemList, 0, fMaxCount * sizeof(TElem)); +} + +template +ValueVectorOf::ValueVectorOf(const ValueVectorOf& toCopy) : + XMemory(toCopy) + , fCallDestructor(toCopy.fCallDestructor) + , fCurCount(toCopy.fCurCount) + , fMaxCount(toCopy.fMaxCount) + , fElemList(0) + , fMemoryManager(toCopy.fMemoryManager) +{ + fElemList = (TElem*) fMemoryManager->allocate + ( + fMaxCount * sizeof(TElem) + ); //new TElem[fMaxCount]; + + memset(fElemList, 0, fMaxCount * sizeof(TElem)); + for (XMLSize_t index = 0; index < fCurCount; index++) + fElemList[index] = toCopy.fElemList[index]; +} + +template ValueVectorOf::~ValueVectorOf() +{ + if (fCallDestructor) { + for (XMLSize_t index=fMaxCount; index > 0; index--) + fElemList[index-1].~TElem(); + } + fMemoryManager->deallocate(fElemList); //delete [] fElemList; +} + + +// --------------------------------------------------------------------------- +// ValueVectorOf: Operators +// --------------------------------------------------------------------------- +template ValueVectorOf& +ValueVectorOf::operator=(const ValueVectorOf& toAssign) +{ + if (this == &toAssign) + return *this; + + if (fCallDestructor) { + for (XMLSize_t index=fMaxCount; index > 0; index--) + fElemList[index-1].~TElem(); + } + + // Reallocate if required + if (fMaxCount < toAssign.fCurCount) + { + fMemoryManager->deallocate(fElemList); //delete [] fElemList; + fElemList = (TElem*) fMemoryManager->allocate + ( + toAssign.fMaxCount * sizeof(TElem) + ); //new TElem[toAssign.fMaxCount]; + fMaxCount = toAssign.fMaxCount; + } + + fCurCount = toAssign.fCurCount; + for (XMLSize_t index = 0; index < fCurCount; index++) + fElemList[index] = toAssign.fElemList[index]; + + return *this; +} + + +// --------------------------------------------------------------------------- +// ValueVectorOf: Element management +// --------------------------------------------------------------------------- +template void ValueVectorOf::addElement(const TElem& toAdd) +{ + ensureExtraCapacity(1); + fElemList[fCurCount++] = toAdd; +} + +template void ValueVectorOf:: +setElementAt(const TElem& toSet, const XMLSize_t setAt) +{ + if (setAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + fElemList[setAt] = toSet; +} + +template void ValueVectorOf:: +insertElementAt(const TElem& toInsert, const XMLSize_t insertAt) +{ + if (insertAt == fCurCount) + { + addElement(toInsert); + return; + } + + if (insertAt > fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + + // Make room for the newbie + ensureExtraCapacity(1); + for (XMLSize_t index = fCurCount; index > insertAt; index--) + fElemList[index] = fElemList[index-1]; + + // And stick it in and bump the count + fElemList[insertAt] = toInsert; + fCurCount++; +} + +template void ValueVectorOf:: +removeElementAt(const XMLSize_t removeAt) +{ + if (removeAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + + // Copy down every element above remove point + for (XMLSize_t index = removeAt; index < fCurCount-1; index++) + fElemList[index] = fElemList[index+1]; + + // And bump down count + fCurCount--; +} + +template void ValueVectorOf::removeAllElements() +{ + fCurCount = 0; +} + +template +bool ValueVectorOf::containsElement(const TElem& toCheck, + const XMLSize_t startIndex) { + + for (XMLSize_t i = startIndex; i < fCurCount; i++) { + if (fElemList[i] == toCheck) { + return true; + } + } + + return false; +} + + +// --------------------------------------------------------------------------- +// ValueVectorOf: Getter methods +// --------------------------------------------------------------------------- +template const TElem& ValueVectorOf:: +elementAt(const XMLSize_t getAt) const +{ + if (getAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + return fElemList[getAt]; +} + +template TElem& ValueVectorOf:: +elementAt(const XMLSize_t getAt) +{ + if (getAt >= fCurCount) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); + return fElemList[getAt]; +} + +template XMLSize_t ValueVectorOf::curCapacity() const +{ + return fMaxCount; +} + +template XMLSize_t ValueVectorOf::size() const +{ + return fCurCount; +} + +template +MemoryManager* ValueVectorOf::getMemoryManager() const +{ + return fMemoryManager; +} + +// --------------------------------------------------------------------------- +// ValueVectorOf: Miscellaneous +// --------------------------------------------------------------------------- +template void ValueVectorOf:: +ensureExtraCapacity(const XMLSize_t length) +{ + XMLSize_t newMax = fCurCount + length; + + if (newMax > fMaxCount) + { + // Avoid too many reallocations by expanding by a percentage + XMLSize_t minNewMax = (XMLSize_t)((double)fCurCount * 1.25); + if (newMax < minNewMax) + newMax = minNewMax; + + TElem* newList = (TElem*) fMemoryManager->allocate + ( + newMax * sizeof(TElem) + ); //new TElem[newMax]; + for (XMLSize_t index = 0; index < fCurCount; index++) + newList[index] = fElemList[index]; + + fMemoryManager->deallocate(fElemList); //delete [] fElemList; + fElemList = newList; + fMaxCount = newMax; + } +} + +template const TElem* ValueVectorOf::rawData() const +{ + return fElemList; +} + + + +// --------------------------------------------------------------------------- +// ValueVectorEnumerator: Constructors and Destructor +// --------------------------------------------------------------------------- +template ValueVectorEnumerator:: +ValueVectorEnumerator( ValueVectorOf* const toEnum + , const bool adopt) : + fAdopted(adopt) + , fCurIndex(0) + , fToEnum(toEnum) +{ +} + +template ValueVectorEnumerator::~ValueVectorEnumerator() +{ + if (fAdopted) + delete fToEnum; +} + + +// --------------------------------------------------------------------------- +// ValueVectorEnumerator: Enum interface +// --------------------------------------------------------------------------- +template bool +ValueVectorEnumerator::hasMoreElements() const +{ + if (fCurIndex >= fToEnum->size()) + return false; + return true; +} + +template TElem& ValueVectorEnumerator::nextElement() +{ + return fToEnum->elementAt(fCurIndex++); +} + +template void ValueVectorEnumerator::Reset() +{ + fCurIndex = 0; +} + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/ValueVectorOf.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/ValueVectorOf.hpp new file mode 100644 index 000000000000..015dbeda3c6d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/ValueVectorOf.hpp @@ -0,0 +1,162 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALUEVECTOROF_HPP) +#define XERCESC_INCLUDE_GUARD_VALUEVECTOROF_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class ValueVectorOf : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueVectorOf + ( + const XMLSize_t maxElems + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , const bool toCallDestructor = false + ); + ValueVectorOf(const ValueVectorOf& toCopy); + ~ValueVectorOf(); + + + // ----------------------------------------------------------------------- + // Operators + // ----------------------------------------------------------------------- + ValueVectorOf& operator=(const ValueVectorOf& toAssign); + + + // ----------------------------------------------------------------------- + // Element management + // ----------------------------------------------------------------------- + void addElement(const TElem& toAdd); + void setElementAt(const TElem& toSet, const XMLSize_t setAt); + void insertElementAt(const TElem& toInsert, const XMLSize_t insertAt); + void removeElementAt(const XMLSize_t removeAt); + void removeAllElements(); + bool containsElement(const TElem& toCheck, const XMLSize_t startIndex = 0); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const TElem& elementAt(const XMLSize_t getAt) const; + TElem& elementAt(const XMLSize_t getAt); + XMLSize_t curCapacity() const; + XMLSize_t size() const; + MemoryManager* getMemoryManager() const; + + + // ----------------------------------------------------------------------- + // Miscellaneous + // ----------------------------------------------------------------------- + void ensureExtraCapacity(const XMLSize_t length); + const TElem* rawData() const; + + +private: + // ----------------------------------------------------------------------- + // Data members + // + // fCurCount + // The count of values current added to the vector, which may be + // less than the internal capacity. + // + // fMaxCount + // The current capacity of the vector. + // + // fElemList + // The list of elements, which is dynamically allocated to the needed + // size. + // ----------------------------------------------------------------------- + bool fCallDestructor; + XMLSize_t fCurCount; + XMLSize_t fMaxCount; + TElem* fElemList; + MemoryManager* fMemoryManager; +}; + + +// +// An enumerator for a value vector. It derives from the basic enumerator +// class, so that value vectors can be generically enumerated. +// +template class ValueVectorEnumerator : public XMLEnumerator, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ValueVectorEnumerator + ( + ValueVectorOf* const toEnum + , const bool adopt = false + ); + virtual ~ValueVectorEnumerator(); + + + // ----------------------------------------------------------------------- + // Enum interface + // ----------------------------------------------------------------------- + bool hasMoreElements() const; + TElem& nextElement(); + void Reset(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueVectorEnumerator(const ValueVectorEnumerator&); + ValueVectorEnumerator& operator=(const ValueVectorEnumerator&); + + // ----------------------------------------------------------------------- + // Data Members + // + // fAdopted + // Indicates whether we have adopted the passed vector. If so then + // we delete the vector when we are destroyed. + // + // fCurIndex + // This is the current index into the vector. + // + // fToEnum + // The value vector being enumerated. + // ----------------------------------------------------------------------- + bool fAdopted; + XMLSize_t fCurIndex; + ValueVectorOf* fToEnum; +}; + +XERCES_CPP_NAMESPACE_END + +#if !defined(XERCES_TMPLSINC) +#include +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XML256TableTranscoder.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XML256TableTranscoder.hpp new file mode 100644 index 000000000000..efc214d0f871 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XML256TableTranscoder.hpp @@ -0,0 +1,146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML256TABLETRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XML256TABLETRANSCODER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class implements the functionality of a common type of transcoder +// for an 8 bit, single byte encoding based on a set of 'to' and 'from' +// translation tables. Actual derived classes are trivial and just have to +// provide us with pointers to their tables and we do all the work. +// +class XMLUTIL_EXPORT XML256TableTranscoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + virtual ~XML256TableTranscoder(); + + + // ----------------------------------------------------------------------- + // The virtual transcoding interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XML256TableTranscoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , const XMLCh* const fromTable + , const XMLTransService::TransRec* const toTable + , const XMLSize_t toTableSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + + // ----------------------------------------------------------------------- + // Protected helper methods + // ----------------------------------------------------------------------- + XMLByte xlatOneTo + ( + const XMLCh toXlat + ) const; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XML256TableTranscoder(); + XML256TableTranscoder(const XML256TableTranscoder&); + XML256TableTranscoder& operator=(const XML256TableTranscoder&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fFromTable + // This is the 'from' table that we were given during construction. + // It is a 256 entry table of XMLCh chars. Each entry is the + // Unicode code point for the external encoding point of that value. + // So fFromTable[N] is the Unicode translation of code point N of + // the source encoding. + // + // We don't own this table, we just refer to it. It is assumed that + // the table is static, for performance reasons. + // + // fToSize + // The 'to' table is variable sized. This indicates how many records + // are in it. + // + // fToTable + // This is a variable sized table of TransRec structures. It must + // be sorted by the intCh field, i.e. the XMLCh field. It is searched + // binarily to find the record for a particular Unicode char. Then + // that record's extch field is the translation record. + // + // We don't own this table, we just refer to it. It is assumed that + // the table is static, for performance reasons. + // + // NOTE: There may be dups of the extCh field, since there might be + // multiple Unicode code points which map to the same external code + // point. Normally this won't happen, since the parser assumes that + // internalization is normalized, but we have to be prepared to do + // the right thing if some client code gives us non-normalized data + // itself. + // ----------------------------------------------------------------------- + const XMLCh* fFromTable; + XMLSize_t fToSize; + const XMLTransService::TransRec* fToTable; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XML88591Transcoder.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XML88591Transcoder.hpp new file mode 100644 index 000000000000..5935278b5003 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XML88591Transcoder.hpp @@ -0,0 +1,93 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML88591TRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XML88591TRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple 8859-1 transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +class XMLUTIL_EXPORT XML88591Transcoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XML88591Transcoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XML88591Transcoder(); + + + // ----------------------------------------------------------------------- + // Implementation of the XMLTranscoder interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XML88591Transcoder(const XML88591Transcoder&); + XML88591Transcoder& operator=(const XML88591Transcoder&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLASCIITranscoder.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLASCIITranscoder.hpp new file mode 100644 index 000000000000..dccd9921304c --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLASCIITranscoder.hpp @@ -0,0 +1,93 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLASCIITRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLASCIITRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple ASCII transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +class XMLUTIL_EXPORT XMLASCIITranscoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Constructors and destructor + // ----------------------------------------------------------------------- + XMLASCIITranscoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLASCIITranscoder(); + + + // ----------------------------------------------------------------------- + // Implementation of the XMLTranscoder interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLASCIITranscoder(const XMLASCIITranscoder&); + XMLASCIITranscoder& operator=(const XMLASCIITranscoder&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLAbstractDoubleFloat.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLAbstractDoubleFloat.hpp new file mode 100644 index 000000000000..f5712b972f69 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLAbstractDoubleFloat.hpp @@ -0,0 +1,221 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML_ABSTRACT_DOUBLE_FLOAT_HPP) +#define XERCESC_INCLUDE_GUARD_XML_ABSTRACT_DOUBLE_FLOAT_HPP + + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/*** + * 3.2.5.1 Lexical representation + * + * double values have a lexical representation consisting of a mantissa followed, + * optionally, by the character "E" or "e", followed by an exponent. + * + * The exponent must be an integer. + * The mantissa must be a decimal number. + * The representations for exponent and mantissa must follow the lexical rules + * for integer and decimal. + * + * If the "E" or "e" and the following exponent are omitted, + * an exponent value of 0 is assumed. +***/ + +/*** + * 3.2.4.1 Lexical representation + * + * float values have a lexical representation consisting of a mantissa followed, + * optionally, by the character "E" or "e", followed by an exponent. + * + * The exponent must be an integer. + * The mantissa must be a decimal number. + * The representations for exponent and mantissa must follow the lexical rules + * for integer and decimal. + * + * If the "E" or "e" and the following exponent are omitted, + * an exponent value of 0 is assumed. +***/ + +class XMLUTIL_EXPORT XMLAbstractDoubleFloat : public XMLNumber +{ +public: + + enum LiteralType + { + NegINF, + PosINF, + NaN, + SpecialTypeNum, + Normal + }; + + virtual ~XMLAbstractDoubleFloat(); + + static XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager + ); + + virtual XMLCh* getRawData() const; + + virtual const XMLCh* getFormattedString() const; + + virtual int getSign() const; + + MemoryManager* getMemoryManager() const; + + inline bool isDataConverted() const; + + inline bool isDataOverflowed() const; + + inline double getValue() const; + + inline LiteralType getType() const; + + /*** + * + * The decimal point delimiter for the schema double/float type is + * defined to be a period and is not locale-specific. So, it must + * be replaced with the local-specific delimiter before converting + * from string to double/float. + * + ***/ + static void normalizeDecimalPoint(char* const toNormal); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLAbstractDoubleFloat) + +protected: + + // + // To be used by derived class exclusively + // + XMLAbstractDoubleFloat(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + void init(const XMLCh* const strValue); + + /** + * Compares this object to the specified object. + * The result is true if and only if the argument is not + * null and is an XMLAbstractDoubleFloat object that contains + * the same int value as this object. + * + * @param lValue the object to compare with. + * @param rValue the object to compare against. + * @param manager The MemoryManager to use to allocate objects + * @return true if the objects are the same; + * false otherwise. + */ + + static int compareValues(const XMLAbstractDoubleFloat* const lValue + , const XMLAbstractDoubleFloat* const rValue + , MemoryManager* const manager); + + // + // to be overridden by derived class + // + virtual void checkBoundary(char* const strValue) = 0; + + void + convert(char* const strValue); + +private: + // + // Unimplemented + // + // copy ctor + // assignment ctor + // + XMLAbstractDoubleFloat(const XMLAbstractDoubleFloat& toCopy); + XMLAbstractDoubleFloat& operator=(const XMLAbstractDoubleFloat& toAssign); + + void normalizeZero(XMLCh* const); + + inline bool isSpecialValue() const; + + static int compareSpecial(const XMLAbstractDoubleFloat* const specialValue + , MemoryManager* const manager); + + void formatString(); + +protected: + double fValue; + LiteralType fType; + bool fDataConverted; + bool fDataOverflowed; + +private: + int fSign; + XMLCh* fRawData; + + // + // If the original string is not lexcially the same as the five + // special value notations, and the value is converted to + // special value due underlying platform restriction on data + // representation, then this string is constructed and + // takes the form "original_string (special_value_notation)", + // otherwise it is empty. + // + XMLCh* fFormattedString; + MemoryManager* fMemoryManager; + +}; + +inline bool XMLAbstractDoubleFloat::isSpecialValue() const +{ + return (fType < SpecialTypeNum); +} + +inline MemoryManager* XMLAbstractDoubleFloat::getMemoryManager() const +{ + return fMemoryManager; +} + +inline bool XMLAbstractDoubleFloat::isDataConverted() const +{ + return fDataConverted; +} + +inline bool XMLAbstractDoubleFloat::isDataOverflowed() const +{ + return fDataOverflowed; +} + +inline double XMLAbstractDoubleFloat::getValue() const +{ + return fValue; +} + +inline XMLAbstractDoubleFloat::LiteralType XMLAbstractDoubleFloat::getType() const +{ + return fType; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLBigDecimal.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLBigDecimal.hpp new file mode 100644 index 000000000000..23195623fde1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLBigDecimal.hpp @@ -0,0 +1,206 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML_BIGDECIMAL_HPP) +#define XERCESC_INCLUDE_GUARD_XML_BIGDECIMAL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLBigDecimal : public XMLNumber +{ +public: + + /** + * Constructs a newly allocated XMLBigDecimal object that + * represents the value represented by the string. + * + * @param strValue the String to be converted to an + * XMLBigDecimal. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @exception NumberFormatException if the String does not + * contain a parsable XMLBigDecimal. + */ + + XMLBigDecimal + ( + const XMLCh* const strValue + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~XMLBigDecimal(); + + static int compareValues(const XMLBigDecimal* const lValue + , const XMLBigDecimal* const rValue + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + static XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager + ); + + static void parseDecimal + ( + const XMLCh* const toParse + , XMLCh* const retBuffer + , int& sign + , int& totalDigits + , int& fractDigits + , MemoryManager* const manager + ); + + static void parseDecimal + ( + const XMLCh* const toParse + , MemoryManager* const manager + ); + + virtual XMLCh* getRawData() const; + + virtual const XMLCh* getFormattedString() const; + + virtual int getSign() const; + + const XMLCh* getValue() const; + + unsigned int getScale() const; + + unsigned int getTotalDigit() const; + + inline XMLCh* getIntVal() const; + + /** + * Compares this object to the specified object. + * + * @param other the object to compare with. + * @return -1 value is less than other's + * 0 value equals to other's + * +1 value is greater than other's + */ + int toCompare(const XMLBigDecimal& other) const; + + /* + * Sets the value to be converted + * + * @param strValue the value to convert + */ + void setDecimalValue(const XMLCh* const strValue); + + MemoryManager* getMemoryManager() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLBigDecimal) + + XMLBigDecimal(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + + void cleanUp(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLBigDecimal(const XMLBigDecimal& other); + XMLBigDecimal& operator=(const XMLBigDecimal& other); + + // ----------------------------------------------------------------------- + // Private data members + // + // fSign + // sign + // + // fTotalDigits + // the total number of digits + // + // fScale + // the number of digits to the right of the decimal point + // + // fIntVal + // The value of this BigDecimal, w/o + // leading whitespace, leading zero + // decimal point + // trailing zero, trailing whitespace + // + // fRawData + // to preserve the original string used to construct this object, + // needed for pattern matching. + // + // ----------------------------------------------------------------------- + int fSign; + unsigned int fTotalDigits; + unsigned int fScale; + XMLSize_t fRawDataLen; + XMLCh* fRawData; + XMLCh* fIntVal; + MemoryManager* fMemoryManager; + +}; + +inline int XMLBigDecimal::getSign() const +{ + return fSign; +} + +inline const XMLCh* XMLBigDecimal::getValue() const +{ + return fIntVal; +} + +inline unsigned int XMLBigDecimal::getScale() const +{ + return fScale; +} + +inline unsigned int XMLBigDecimal::getTotalDigit() const +{ + return fTotalDigits; +} + +inline XMLCh* XMLBigDecimal::getRawData() const +{ + return fRawData; +} + +inline const XMLCh* XMLBigDecimal::getFormattedString() const +{ + return fRawData; +} + +inline MemoryManager* XMLBigDecimal::getMemoryManager() const +{ + return fMemoryManager; +} + +inline XMLCh* XMLBigDecimal::getIntVal() const +{ + return fIntVal; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLBigInteger.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLBigInteger.hpp new file mode 100644 index 000000000000..f49577fb2f6b --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLBigInteger.hpp @@ -0,0 +1,175 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML_BIGINTEGER_HPP) +#define XERCESC_INCLUDE_GUARD_XML_BIGINTEGER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLBigInteger : public XMemory +{ +public: + + /** + * Constructs a newly allocated XMLBigInteger object that + * represents the value represented by the string. The string is + * converted to an int value as if by the valueOf method. + * + * @param strValue the String to be converted to an + * XMLBigInteger. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @exception NumberFormatException if the String does not + * contain a parsable XMLBigInteger. + */ + + XMLBigInteger + ( + const XMLCh* const strValue + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~XMLBigInteger(); + + XMLBigInteger(const XMLBigInteger& toCopy); + + static XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager + , bool isNonPositiveInteger = false + ); + + static void parseBigInteger(const XMLCh* const toConvert + , XMLCh* const retBuffer + , int& signValue + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + static int compareValues(const XMLBigInteger* const lValue + ,const XMLBigInteger* const rValue + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + + static int compareValues(const XMLCh* const lString + , const int& lSign + , const XMLCh* const rString + , const int& rSign + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + void multiply(const unsigned int byteToShift); + + void divide(const unsigned int byteToShift); + + unsigned int getTotalDigit() const; + + /** + * Return a copy of the fMagnitude. + * This is similar to toString, except the internal buffer is returned directly + * Caller is not required to delete the returned memory. + */ + inline XMLCh* getRawData() const; + + /** + * Compares this object to the specified object. + * The result is true if and only if the argument is not + * null and is an XMLBigInteger object that contains + * the same int value as this object. + * + * @param toCompare the object to compare with. + * @return true if the objects are the same; + * false otherwise. + */ + bool operator==(const XMLBigInteger& toCompare) const; + + /** + * Returns the signum function of this number (i.e., -1, 0 or 1 as + * the value of this number is negative, zero or positive). + */ + int getSign() const; + + int intValue() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLBigInteger& operator=(const XMLBigInteger&); + + + void setSign(int); + + /* + * The number is internally stored in "minimal" sign-fMagnitude format + * (i.e., no BigIntegers have a leading zero byte in their magnitudes). + * Zero is represented with a signum of 0 (and a zero-length fMagnitude). + * Thus, there is exactly one representation for each value. + */ + // ----------------------------------------------------------------------- + // Private data members + // + // fSign + // to represent the sign of the number. + // + // fMagnitude + // the buffer holding the number. + // + // fRawData + // to preserve the original string used to construct this object, + // needed for pattern matching. + // + // ----------------------------------------------------------------------- + + int fSign; + XMLCh* fMagnitude; //null terminated + XMLCh* fRawData; + MemoryManager* fMemoryManager; +}; + +inline int XMLBigInteger::getSign() const +{ + return fSign; +} + +inline unsigned int XMLBigInteger::getTotalDigit() const +{ + return ((getSign() ==0) ? 0 : (unsigned int)XMLString::stringLen(fMagnitude)); +} + +inline bool XMLBigInteger::operator==(const XMLBigInteger& toCompare) const +{ + return ( compareValues(this, &toCompare, fMemoryManager) ==0 ? true : false); +} + +inline void XMLBigInteger::setSign(int newSign) +{ + fSign = newSign; +} + +inline XMLCh* XMLBigInteger::getRawData() const +{ + return fRawData; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLChTranscoder.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLChTranscoder.hpp new file mode 100644 index 000000000000..c1fc3a76cfb6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLChTranscoder.hpp @@ -0,0 +1,90 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLCHTRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLCHTRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple XMLCh transcoder. This is used for internal entities, which +// are already in the native XMLCh format. +// +class XMLUTIL_EXPORT XMLChTranscoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLChTranscoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLChTranscoder(); + + + // ----------------------------------------------------------------------- + // Implementation of the XMLTranscoder interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLChTranscoder(const XMLChTranscoder&); + XMLChTranscoder& operator=(const XMLChTranscoder&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLChar.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLChar.hpp new file mode 100644 index 000000000000..60697b8d42fc --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLChar.hpp @@ -0,0 +1,461 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLCHAR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLCHAR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// This file defines Char and utility that conforms to XML 1.0 and XML 1.1 +// --------------------------------------------------------------------------- +// Masks for the fgCharCharsTable1_0 array +const XMLByte gNCNameCharMask = 0x1; +const XMLByte gFirstNameCharMask = 0x2; +const XMLByte gNameCharMask = 0x4; +const XMLByte gPlainContentCharMask = 0x8; +const XMLByte gSpecialStartTagCharMask = 0x10; +const XMLByte gControlCharMask = 0x20; +const XMLByte gXMLCharMask = 0x40; +const XMLByte gWhitespaceCharMask = 0x80; + +// --------------------------------------------------------------------------- +// This class is for XML 1.0 +// --------------------------------------------------------------------------- +class XMLUTIL_EXPORT XMLChar1_0 +{ +public: + // ----------------------------------------------------------------------- + // Public, static methods, check the string + // ----------------------------------------------------------------------- + static bool isAllSpaces + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool containsWhiteSpace + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidNmtoken + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidName + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidName + ( + const XMLCh* const toCheck + ); + + static bool isValidNCName + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidQName + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + // ----------------------------------------------------------------------- + // Public, static methods, check the XMLCh + // surrogate pair is assumed if second parameter is not null + // ----------------------------------------------------------------------- + static bool isXMLLetter(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isFirstNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isPlainContentChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isSpecialStartTagChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isXMLChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isWhitespace(const XMLCh toCheck); + static bool isWhitespace(const XMLCh toCheck, const XMLCh toCheck2); + static bool isControlChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + + static bool isPublicIdChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isFirstNCNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isNCNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + + // ----------------------------------------------------------------------- + // Special Non-conformant Public, static methods + // ----------------------------------------------------------------------- + /** + * Return true if NEL (0x85) and LSEP (0x2028) to be treated as white space char. + */ + static bool isNELRecognized(); + + /** + * Method to enable NEL (0x85) and LSEP (0x2028) to be treated as white space char. + */ + static void enableNELWS(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLChar1_0(); + + // ----------------------------------------------------------------------- + // Static data members + // + // fgCharCharsTable1_0 + // The character characteristics table. Bits in each byte, represent + // the characteristics of each character. It is generated via some + // code and then hard coded into the cpp file for speed. + // + // fNEL + // Flag to represents whether NEL and LSEP newline recognition is enabled + // or disabled + // ----------------------------------------------------------------------- + static XMLByte fgCharCharsTable1_0[0x10000]; + static bool enableNEL; + + friend class XMLReader; +}; + + +// --------------------------------------------------------------------------- +// XMLReader: Public, static methods +// --------------------------------------------------------------------------- +inline bool XMLChar1_0::isXMLLetter(const XMLCh toCheck, const XMLCh toCheck2) +{ + // An XML letter is a FirstNameChar minus ':' and '_'. + if (!toCheck2) { + return (((fgCharCharsTable1_0[toCheck] & gFirstNameCharMask) != 0) + && (toCheck != chColon) && (toCheck != chUnderscore)); + } + return false; +} + +inline bool XMLChar1_0::isFirstNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gFirstNameCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_0::isFirstNCNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) { + return (((fgCharCharsTable1_0[toCheck] & gFirstNameCharMask) != 0) && (toCheck != chColon)); + } + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_0::isNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gNameCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_0::isNCNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gNCNameCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_0::isPlainContentChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gPlainContentCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDBFF)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + + +inline bool XMLChar1_0::isSpecialStartTagChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gSpecialStartTagCharMask) != 0); + return false; +} + +inline bool XMLChar1_0::isXMLChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gXMLCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDBFF)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_0::isWhitespace(const XMLCh toCheck) +{ + return ((fgCharCharsTable1_0[toCheck] & gWhitespaceCharMask) != 0); +} + +inline bool XMLChar1_0::isWhitespace(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gWhitespaceCharMask) != 0); + return false; +} + +inline bool XMLChar1_0::isControlChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_0[toCheck] & gControlCharMask) != 0); + return false; +} + +inline bool XMLChar1_0::isNELRecognized() { + + return enableNEL; +} + + +// --------------------------------------------------------------------------- +// This class is for XML 1.1 +// --------------------------------------------------------------------------- +class XMLUTIL_EXPORT XMLChar1_1 +{ +public: + // ----------------------------------------------------------------------- + // Public, static methods, check the string + // ----------------------------------------------------------------------- + static bool isAllSpaces + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool containsWhiteSpace + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidNmtoken + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidName + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidName + ( + const XMLCh* const toCheck + ); + + static bool isValidNCName + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + static bool isValidQName + ( + const XMLCh* const toCheck + , const XMLSize_t count + ); + + // ----------------------------------------------------------------------- + // Public, static methods, check the XMLCh + // ----------------------------------------------------------------------- + static bool isXMLLetter(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isFirstNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isPlainContentChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isSpecialStartTagChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isXMLChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isWhitespace(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isControlChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + + static bool isPublicIdChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isFirstNCNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + static bool isNCNameChar(const XMLCh toCheck, const XMLCh toCheck2 = 0); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLChar1_1(); + + // ----------------------------------------------------------------------- + // Static data members + // + // fgCharCharsTable1_1 + // The character characteristics table. Bits in each byte, represent + // the characteristics of each character. It is generated via some + // code and then hard coded into the cpp file for speed. + // + // ----------------------------------------------------------------------- + static XMLByte fgCharCharsTable1_1[0x10000]; + + friend class XMLReader; +}; + + +// --------------------------------------------------------------------------- +// XMLReader: Public, static methods +// --------------------------------------------------------------------------- +inline bool XMLChar1_1::isXMLLetter(const XMLCh toCheck, const XMLCh toCheck2) +{ + /** XML 1.1 does not define a letter, so we use the 1.0 definition */ + return XMLChar1_0::isXMLLetter(toCheck, toCheck2); +} + +inline bool XMLChar1_1::isFirstNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gFirstNameCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_1::isFirstNCNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) { + return (((fgCharCharsTable1_1[toCheck] & gFirstNameCharMask) != 0) && (toCheck != chColon)); + } + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_1::isNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gNameCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_1::isNCNameChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gNCNameCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDB7F)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_1::isPlainContentChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gPlainContentCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDBFF)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + + +inline bool XMLChar1_1::isSpecialStartTagChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gSpecialStartTagCharMask) != 0); + return false; +} + +inline bool XMLChar1_1::isXMLChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gXMLCharMask) != 0); + else { + if ((toCheck >= 0xD800) && (toCheck <= 0xDBFF)) + if ((toCheck2 >= 0xDC00) && (toCheck2 <= 0xDFFF)) + return true; + } + return false; +} + +inline bool XMLChar1_1::isWhitespace(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gWhitespaceCharMask) != 0); + return false; +} + +inline bool XMLChar1_1::isControlChar(const XMLCh toCheck, const XMLCh toCheck2) +{ + if (!toCheck2) + return ((fgCharCharsTable1_1[toCheck] & gControlCharMask) != 0); + return false; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLDOMMsg.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLDOMMsg.hpp new file mode 100644 index 000000000000..3ca44003af3f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLDOMMsg.hpp @@ -0,0 +1,104 @@ +// This file is generated, don't edit it!! + +#if !defined(XERCESC_INCLUDE_GUARD_ERRHEADER_XMLDOMMsg) +#define XERCESC_INCLUDE_GUARD_ERRHEADER_XMLDOMMsg + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLDOMMsg +{ +public : + enum Codes + { + NoError = 0 + , F_LowBounds = 1 + , DOMEXCEPTION_ERRX = 2 + , INDEX_SIZE_ERR = 3 + , DOMSTRING_SIZE_ERR = 4 + , HIERARCHY_REQUEST_ERR = 5 + , WRONG_DOCUMENT_ERR = 6 + , INVALID_CHARACTER_ERR = 7 + , NO_DATA_ALLOWED_ERR = 8 + , NO_MODIFICATION_ALLOWED_ERR = 9 + , NOT_FOUND_ERR = 10 + , NOT_SUPPORTED_ERR = 11 + , INUSE_ATTRIBUTE_ERR = 12 + , INVALID_STATE_ERR = 13 + , SYNTAX_ERR = 14 + , INVALID_MODIFICATION_ERR = 15 + , NAMESPACE_ERR = 16 + , INVALID_ACCESS_ERR = 17 + , VALIDATION_ERR = 18 + , TYPE_MISMATCH_ERR = 19 + , DOMRANGEEXCEPTION_ERRX = 20 + , BAD_BOUNDARYPOINTS_ERR = 21 + , INVALID_NODE_TYPE_ERR = 22 + , DOMLSEXCEPTION_ERRX = 23 + , PARSE_ERR = 24 + , SERIALIZE_ERR = 25 + , DOMXPATHEXCEPTION_ERRX = 26 + , INVALID_EXPRESSION_ERR = 27 + , TYPE_ERR = 28 + , NO_RESULT_ERR = 29 + , Writer_NestedCDATA = 30 + , Writer_NotRepresentChar = 31 + , Writer_NotRecognizedType = 32 + , LSParser_ParseInProgress = 33 + , LSParser_ParsingAborted = 34 + , LSParser_ParsingFailed = 35 + , F_HighBounds = 36 + , W_LowBounds = 37 + , W_HighBounds = 38 + , E_LowBounds = 39 + , E_HighBounds = 40 + }; + + static bool isFatal(const XMLDOMMsg::Codes toCheck) + { + return ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)); + } + + static bool isWarning(const XMLDOMMsg::Codes toCheck) + { + return ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)); + } + + static bool isError(const XMLDOMMsg::Codes toCheck) + { + return ((toCheck >= E_LowBounds) && (toCheck <= E_HighBounds)); + } + + static XMLErrorReporter::ErrTypes errorType(const XMLDOMMsg::Codes toCheck) + { + if ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)) + return XMLErrorReporter::ErrType_Warning; + else if ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)) + return XMLErrorReporter::ErrType_Fatal; + else if ((toCheck >= E_LowBounds) && (toCheck <= E_HighBounds)) + return XMLErrorReporter::ErrType_Error; + return XMLErrorReporter::ErrTypes_Unknown; + } + static DOMError::ErrorSeverity DOMErrorType(const XMLDOMMsg::Codes toCheck) + { + if ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)) + return DOMError::DOM_SEVERITY_WARNING; + else if ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)) + return DOMError::DOM_SEVERITY_FATAL_ERROR; + else return DOMError::DOM_SEVERITY_ERROR; + } + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLDOMMsg(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLDateTime.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLDateTime.hpp new file mode 100644 index 000000000000..54e2516133b1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLDateTime.hpp @@ -0,0 +1,378 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML_DATETIME_HPP) +#define XERCESC_INCLUDE_GUARD_XML_DATETIME_HPP + +#include +#include +#include +#include +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XSValue; + +class XMLUTIL_EXPORT XMLDateTime : public XMLNumber +{ +public: + + enum valueIndex + { + CentYear = 0, + Month , + Day , + Hour , + Minute , + Second , + MiliSecond , //not to be used directly + utc , + TOTAL_SIZE + }; + + enum utcType + { + UTC_UNKNOWN = 0, + UTC_STD , // set in parse() or normalize() + UTC_POS , // set in parse() + UTC_NEG // set in parse() + }; + + // ----------------------------------------------------------------------- + // ctors and dtor + // ----------------------------------------------------------------------- + + XMLDateTime(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + XMLDateTime(const XMLCh* const, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + XMLDateTime(time_t epoch, bool duration, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~XMLDateTime(); + + inline void setBuffer(const XMLCh* const); + + // ----------------------------------------------------------------------- + // Copy ctor and Assignment operators + // ----------------------------------------------------------------------- + + XMLDateTime(const XMLDateTime&); + + XMLDateTime& operator=(const XMLDateTime&); + + // ----------------------------------------------------------------------- + // Implementation of Abstract Interface + // ----------------------------------------------------------------------- + + virtual XMLCh* getRawData() const; + + virtual const XMLCh* getFormattedString() const; + + virtual int getSign() const; + + // ----------------------------------------------------------------------- + // Canonical Representation + // ----------------------------------------------------------------------- + + XMLCh* getDateTimeCanonicalRepresentation(MemoryManager* const memMgr) const; + + XMLCh* getTimeCanonicalRepresentation(MemoryManager* const memMgr) const; + + XMLCh* getDateCanonicalRepresentation(MemoryManager* const memMgr) const; + + // ----------------------------------------------------------------------- + // parsers + // ----------------------------------------------------------------------- + + void parseDateTime(); //DateTime + + void parseDate(); //Date + + void parseTime(); //Time + + void parseDay(); //gDay + + void parseMonth(); //gMonth + + void parseYear(); //gYear + + void parseMonthDay(); //gMonthDay + + void parseYearMonth(); //gYearMonth + + void parseDuration(); //duration + + // ----------------------------------------------------------------------- + // Comparison + // ----------------------------------------------------------------------- + static int compare(const XMLDateTime* const + , const XMLDateTime* const); + + static int compare(const XMLDateTime* const + , const XMLDateTime* const + , bool ); + + static int compareOrder(const XMLDateTime* const + , const XMLDateTime* const); + + int getYear() const {return fValue[CentYear];} + int getMonth() const {return fValue[Month];} + int getDay() const {return fValue[Day];} + int getHour() const {return fValue[Hour];} + int getMinute() const {return fValue[Minute];} + int getSecond() const {return fValue[Second];} + time_t getEpoch(bool duration=false) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLDateTime) + +private: + + // ----------------------------------------------------------------------- + // Constant data + // ----------------------------------------------------------------------- + // + + enum timezoneIndex + { + hh = 0, + mm , + TIMEZONE_ARRAYSIZE + }; + + // ----------------------------------------------------------------------- + // Comparison + // ----------------------------------------------------------------------- + static int compareResult(int + , int + , bool); + + static void addDuration(XMLDateTime* pDuration + , const XMLDateTime* const pBaseDate + , int index); + + + static int compareResult(const XMLDateTime* const + , const XMLDateTime* const + , bool + , int); + + static inline int getRetVal(int, int); + + // ----------------------------------------------------------------------- + // helper + // ----------------------------------------------------------------------- + + inline void reset(); + + inline void assertBuffer() const; + + inline void copy(const XMLDateTime&); + + // allow multiple parsing + inline bool initParser(); + + inline bool isNormalized() const; + + // ----------------------------------------------------------------------- + // scaners + // ----------------------------------------------------------------------- + + void getDate(); + + void getTime(); + + void getYearMonth(); + + void getTimeZone(const XMLSize_t); + + void parseTimeZone(); + + // ----------------------------------------------------------------------- + // locator and converter + // ----------------------------------------------------------------------- + + int findUTCSign(const XMLSize_t start); + + int indexOf(const XMLSize_t start + , const XMLSize_t end + , const XMLCh ch) const; + + int parseInt(const XMLSize_t start + , const XMLSize_t end) const; + + int parseIntYear(const XMLSize_t end) const; + + double parseMiliSecond(const XMLSize_t start + , const XMLSize_t end) const; + + // ----------------------------------------------------------------------- + // validator and normalizer + // ----------------------------------------------------------------------- + + void validateDateTime() const; + + void normalize(); + + void fillString(XMLCh*& ptr, int value, XMLSize_t expLen) const; + + int fillYearString(XMLCh*& ptr, int value) const; + + void searchMiliSeconds(XMLCh*& miliStartPtr, XMLCh*& miliEndPtr) const; + + // ----------------------------------------------------------------------- + // Unimplemented operator == + // ----------------------------------------------------------------------- + bool operator==(const XMLDateTime& toCompare) const; + + + // ----------------------------------------------------------------------- + // Private data members + // + // fValue[] + // object representation of date time. + // + // fTimeZone[] + // temporary storage for normalization + // + // fStart, fEnd + // pointers to the portion of fBuffer being parsed + // + // fBuffer + // raw data to be parsed, own it. + // + // ----------------------------------------------------------------------- + + int fValue[TOTAL_SIZE]; + int fTimeZone[TIMEZONE_ARRAYSIZE]; + XMLSize_t fStart; + XMLSize_t fEnd; + XMLSize_t fBufferMaxLen; + + double fMilliSecond; + bool fHasTime; + + XMLCh* fBuffer; + MemoryManager* fMemoryManager; + + friend class XSValue; +}; + +inline void XMLDateTime::setBuffer(const XMLCh* const aString) +{ + reset(); + + fEnd = XMLString::stringLen(aString); + + for (; fEnd > 0; fEnd--) + { + if (!XMLChar1_0::isWhitespace(aString[fEnd - 1])) + break; + } + + if (fEnd > 0) { + + if (fEnd > fBufferMaxLen) + { + fMemoryManager->deallocate(fBuffer); + fBufferMaxLen = fEnd + 8; + fBuffer = (XMLCh*) fMemoryManager->allocate((fBufferMaxLen+1) * sizeof(XMLCh)); + } + + memcpy(fBuffer, aString, (fEnd) * sizeof(XMLCh)); + fBuffer[fEnd] = '\0'; + } +} + +inline void XMLDateTime::reset() +{ + for ( int i=0; i < TOTAL_SIZE; i++ ) + fValue[i] = 0; + + fMilliSecond = 0; + fHasTime = false; + fTimeZone[hh] = fTimeZone[mm] = 0; + fStart = fEnd = 0; + + if (fBuffer) + *fBuffer = 0; +} + +inline void XMLDateTime::copy(const XMLDateTime& rhs) +{ + for ( int i = 0; i < TOTAL_SIZE; i++ ) + fValue[i] = rhs.fValue[i]; + + fMilliSecond = rhs.fMilliSecond; + fHasTime = rhs.fHasTime; + fTimeZone[hh] = rhs.fTimeZone[hh]; + fTimeZone[mm] = rhs.fTimeZone[mm]; + fStart = rhs.fStart; + fEnd = rhs.fEnd; + + if (fEnd > 0) + { + if (fEnd > fBufferMaxLen) + { + fMemoryManager->deallocate(fBuffer);//delete[] fBuffer; + fBufferMaxLen = rhs.fBufferMaxLen; + fBuffer = (XMLCh*) fMemoryManager->allocate((fBufferMaxLen+1) * sizeof(XMLCh)); + } + + memcpy(fBuffer, rhs.fBuffer, (fEnd+1) * sizeof(XMLCh)); + } +} + +inline bool XMLDateTime::initParser() +{ + if (!fBuffer || fBuffer[0] == chNull) + return false; + + fStart = 0; // to ensure scan from the very first beginning + // in case the pointer is updated accidentally by + // someone else. + return true; +} + +inline bool XMLDateTime::isNormalized() const +{ + return ( fValue[utc] == UTC_STD ? true : false ); +} + +inline int XMLDateTime::getRetVal(int c1, int c2) +{ + if ((c1 == LESS_THAN && c2 == GREATER_THAN) || + (c1 == GREATER_THAN && c2 == LESS_THAN) ) + { + return INDETERMINATE; + } + + return ( c1 != INDETERMINATE ) ? c1 : c2; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLDouble.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLDouble.hpp new file mode 100644 index 000000000000..e1daadc1a2b5 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLDouble.hpp @@ -0,0 +1,99 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML_DOUBLE_HPP) +#define XERCESC_INCLUDE_GUARD_XML_DOUBLE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLDouble : public XMLAbstractDoubleFloat +{ +public: + + /** + * Constructs a newly allocated XMLDouble object that + * represents the value represented by the string. + * + * @param strValue the String to be converted to an + * XMLDouble. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @exception NumberFormatException if the String does not + * contain a parsable XMLDouble. + */ + + XMLDouble(const XMLCh* const strValue, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~XMLDouble(); + + /** + * Compares this object to the specified object. + * The result is true if and only if the argument is not + * null and is an XMLDouble object that contains + * the same int value as this object. + * + * @param lValue the object to compare with. + * @param rValue the object to compare against. + * @return true if the objects are the same; + * false otherwise. + */ + + inline static int compareValues(const XMLDouble* const lValue + , const XMLDouble* const rValue); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLDouble) + + XMLDouble(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +protected: + + virtual void checkBoundary(char* const strValue); + +private: + // + // Unimplemented + // + // copy ctor + // assignment ctor + // + XMLDouble(const XMLDouble& toCopy); + XMLDouble& operator=(const XMLDouble& toAssign); + +}; + +inline int XMLDouble::compareValues(const XMLDouble* const lValue + , const XMLDouble* const rValue) +{ + return XMLAbstractDoubleFloat::compareValues((const XMLAbstractDoubleFloat*) lValue, + (const XMLAbstractDoubleFloat*) rValue + , ((XMLAbstractDoubleFloat*)lValue)->getMemoryManager()); +} + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLEBCDICTranscoder.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLEBCDICTranscoder.hpp new file mode 100644 index 000000000000..70153d24677d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLEBCDICTranscoder.hpp @@ -0,0 +1,73 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLEBCDICTRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLEBCDICTRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple EBCDIC-US transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +// EBCDIC-US is the same as IBM037, CP37, EBCDIC-CP-US, etc... +// +class XMLUTIL_EXPORT XMLEBCDICTranscoder : public XML256TableTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public, static methods + // ----------------------------------------------------------------------- + static XMLCh xlatThisOne(const XMLByte toXlat); + + + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLEBCDICTranscoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLEBCDICTranscoder(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLEBCDICTranscoder(); + XMLEBCDICTranscoder(const XMLEBCDICTranscoder&); + XMLEBCDICTranscoder& operator=(const XMLEBCDICTranscoder&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLEntityResolver.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLEntityResolver.hpp new file mode 100644 index 000000000000..8651a53d4a6f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLEntityResolver.hpp @@ -0,0 +1,178 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLENTITYRESOLVER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLENTITYRESOLVER_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class InputSource; + +/** + * Revised interface for resolving entities. + * + *

If an application needs to implement customized handling + * for external entities, it can implement this interface and + * register an instance with the parser using the parser's + * setXMLEntityResolver method or it can use the basic SAX interface + * (EntityResolver). The difference between the two interfaces is + * the arguments to the resolveEntity() method. With the SAX + * EntityResolve the arguments are systemId and publicId. With this + * interface the argument is a XMLResourceIdentifier object. Only + * one EntityResolver can be set using setEntityResolver() or + * setXMLEntityResolver, if both are set the last one set is + * used.

+ * + *

The parser will then allow the application to intercept any + * external entities (including the external DTD subset and external + * parameter entities, if any) before including them.

+ * + *

Many applications will not need to implement this interface, + * but it will be especially useful for applications that build + * XML documents from databases or other specialised input sources, + * or for applications that use URI types other than URLs.

+ * + *

The following resolver would provide the application + * with a special character stream for the entity with the system + * identifier "http://www.myhost.com/today":

+ * + * + * \#include
+ * \#include
+ *
+ * class MyResolver : public XMLEntityResolver {
+ *  public:
+ *   InputSource* resolveEntity (XMLResourceIdentifier* xmlri);
+ *   ...
+ *  };
+ *
+ * MyResolver::resolveEntity(XMLResourceIdentifier* xmlri) {
+ *  switch(xmlri->getResourceIdentifierType()) {
+ *   case XMLResourceIdentifier::SystemId:
+ *    if (XMLString::compareString(xmlri->getSystemId(), "http://www.myhost.com/today")) {
+ *     MyReader* reader = new MyReader();
+ *     return new InputSource(reader);
+ *    } else {
+ *     return null;
+ *    }
+ *    break;
+ *   default:
+ *    return null;
+ *  }
+ * }
+ * + *

The application can also use this interface to redirect system + * identifiers to local URIs or to look up replacements in a catalog + * (possibly by using the public identifier).

+ * + *

The HandlerBase class implements the default behaviour for + * this interface, which is simply always to return null (to request + * that the parser use the default system identifier).

+ * + * @see XMLResourceIdentifier + * @see Parser#setXMLEntityResolver + * @see InputSource#InputSource + * @see HandlerBase#HandlerBase + */ +class XMLUTIL_EXPORT XMLEntityResolver +{ +public: + /** @name Constructors and Destructor */ + //@{ + + + /** Destructor */ + virtual ~XMLEntityResolver() + { + } + + //@} + + /** @name The XMLEntityResolver interface */ + //@{ + + /** + * Allow the application to resolve external entities. + * + *

The Parser will call this method before opening any external + * entity except the top-level document entity (including the + * external DTD subset, external entities referenced within the + * DTD, and external entities referenced within the document + * element): the application may request that the parser resolve + * the entity itself, that it use an alternative URI, or that it + * use an entirely different input source.

+ * + *

Application writers can use this method to redirect external + * system identifiers to secure and/or local URIs, to look up + * public identifiers in a catalogue, or to read an entity from a + * database or other input source (including, for example, a dialog + * box).

+ * + *

If the system identifier is a URL, the SAX parser must + * resolve it fully before reporting it to the application.

+ * + * @param resourceIdentifier An object containing the type of + * resource to be resolved and the associated data members + * corresponding to this type. + * @return An InputSource object describing the new input source, + * or null to request that the parser open a regular + * URI connection to the system identifier. + * The returned InputSource is owned by the parser which is + * responsible to clean up the memory. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception IOException An IO exception, + * possibly the result of creating a new InputStream + * or Reader for the InputSource. + * + * @see InputSource#InputSource + * @see XMLResourceIdentifier + */ + virtual InputSource* resolveEntity + ( + XMLResourceIdentifier* resourceIdentifier + ) = 0; + + //@} +protected: + /** Default Constructor */ + XMLEntityResolver() + { + } + +private : + /* Unimplemented constructors and operators */ + + /* Copy constructor */ + XMLEntityResolver(const XMLEntityResolver&); + + /* Assignment operator */ + XMLEntityResolver& operator=(const XMLEntityResolver&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLEnumerator.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLEnumerator.hpp new file mode 100644 index 000000000000..6f53c244615a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLEnumerator.hpp @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLENUMERATOR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLENUMERATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +template class XMLEnumerator +{ +public : + // ----------------------------------------------------------------------- + // Destructor + // ----------------------------------------------------------------------- + virtual ~XMLEnumerator() {}; + + // ----------------------------------------------------------------------- + // XMLEnumerator interface + // ----------------------------------------------------------------------- + virtual bool hasMoreElements() const = 0; + virtual TElem& nextElement() = 0; + virtual void Reset() = 0; + + XMLEnumerator() {} + XMLEnumerator(const XMLEnumerator&) {} + +private: + // ----------------------------------------------------------------------- + // Unimplemented operators + // ----------------------------------------------------------------------- + XMLEnumerator& operator=(const XMLEnumerator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLExceptMsgs.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLExceptMsgs.hpp new file mode 100644 index 000000000000..e4c7f7067dee --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLExceptMsgs.hpp @@ -0,0 +1,408 @@ +// This file is generated, don't edit it!! + +#if !defined(XERCESC_INCLUDE_GUARD_ERRHEADER_XMLExcepts) +#define XERCESC_INCLUDE_GUARD_ERRHEADER_XMLExcepts + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Ignore warning about private constructor +#if defined __GNUC__ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5)) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wctor-dtor-privacy" +#endif + +class XMLExcepts +{ +public : + enum Codes + { + NoError = 0 + , W_LowBounds = 1 + , Scan_CouldNotOpenSource_Warning = 2 + , W_HighBounds = 3 + , F_LowBounds = 4 + , Array_BadIndex = 5 + , Array_BadNewSize = 6 + , AttrList_BadIndex = 7 + , AttDef_BadAttType = 8 + , AttDef_BadDefAttType = 9 + , Bitset_BadIndex = 10 + , Bitset_NotEqualSize = 11 + , BufMgr_NoMoreBuffers = 12 + , BufMgr_BufferNotInPool = 13 + , CPtr_PointerIsZero = 14 + , CM_BinOpHadUnaryType = 15 + , CM_MustBeMixedOrChildren = 16 + , CM_NoPCDATAHere = 17 + , CM_UnaryOpHadBinType = 18 + , CM_UnknownCMType = 19 + , CM_UnknownCMSpecType = 20 + , CM_NoParentCSN = 21 + , CM_NotValidSpecTypeForNode = 22 + , DTD_UnknownCreateReason = 23 + , ElemStack_EmptyStack = 24 + , ElemStack_StackUnderflow = 25 + , ElemStack_NoParentPushed = 26 + , Enum_NoMoreElements = 27 + , File_CouldNotOpenFile = 28 + , File_CouldNotGetCurPos = 29 + , File_CouldNotCloseFile = 30 + , File_CouldNotSeekToEnd = 31 + , File_CouldNotSeekToPos = 32 + , File_CouldNotDupHandle = 33 + , File_CouldNotReadFromFile = 34 + , File_CouldNotWriteToFile = 35 + , File_CouldNotResetFile = 36 + , File_CouldNotGetSize = 37 + , File_CouldNotGetBasePathName = 38 + , Gen_ParseInProgress = 39 + , Gen_NoDTDValidator = 40 + , Gen_CouldNotOpenDTD = 41 + , Gen_CouldNotOpenExtEntity = 42 + , Gen_UnexpectedEOF = 43 + , HshTbl_ZeroModulus = 44 + , HshTbl_BadHashFromKey = 45 + , HshTbl_NoSuchKeyExists = 46 + , Mutex_CouldNotDestroy = 47 + , NetAcc_InternalError = 48 + , NetAcc_LengthError = 49 + , NetAcc_InitFailed = 50 + , NetAcc_TargetResolution = 51 + , NetAcc_CreateSocket = 52 + , NetAcc_ConnSocket = 53 + , NetAcc_WriteSocket = 54 + , NetAcc_ReadSocket = 55 + , NetAcc_UnsupportedMethod = 56 + , Pool_ElemAlreadyExists = 57 + , Pool_InvalidId = 58 + , Pool_ZeroModulus = 59 + , RdrMgr_ReaderIdNotFound = 60 + , Reader_BadAutoEncoding = 61 + , Reader_CouldNotDecodeFirstLine = 62 + , Reader_NelLsepinDecl = 63 + , Reader_SrcOfsNotSupported = 64 + , Reader_EncodingStrRequired = 65 + , Scan_CouldNotOpenSource = 66 + , Scan_UnbalancedStartEnd = 67 + , Scan_BadPScanToken = 68 + , Stack_BadIndex = 69 + , Stack_EmptyStack = 70 + , Str_ZeroSizedTargetBuf = 71 + , Str_UnknownRadix = 72 + , Str_TargetBufTooSmall = 73 + , Str_StartIndexPastEnd = 74 + , Str_ConvertOverflow = 75 + , StrPool_IllegalId = 76 + , Trans_Unrepresentable = 77 + , Trans_BadSrcSeq = 78 + , Trans_BadSrcCP = 79 + , Trans_BadTrailingSurrogate = 80 + , Trans_CantCreateCvtrFor = 81 + , URL_MalformedURL = 82 + , URL_UnsupportedProto = 83 + , URL_UnsupportedProto1 = 84 + , URL_NoProtocolPresent = 85 + , URL_ExpectingTwoSlashes = 86 + , URL_RelativeBaseURL = 87 + , URL_BadPortField = 88 + , UTF8_FormatError = 89 + , UTF8_Invalid_3BytesSeq = 90 + , UTF8_Irregular_3BytesSeq = 91 + , UTF8_Invalid_4BytesSeq = 92 + , UTF8_Exceeds_BytesLimit = 93 + , Vector_BadIndex = 94 + , Val_InvalidElemId = 95 + , Val_CantHaveIntSS = 96 + , XMLRec_UnknownEncoding = 97 + , Parser_Parse1 = 98 + , Parser_Parse2 = 99 + , Parser_Next1 = 100 + , Parser_Next2 = 101 + , Parser_Next3 = 102 + , Parser_Next4 = 103 + , Parser_Factor1 = 104 + , Parser_Factor2 = 105 + , Parser_Factor3 = 106 + , Parser_Factor4 = 107 + , Parser_Factor5 = 108 + , Parser_Factor6 = 109 + , Parser_Atom1 = 110 + , Parser_Atom2 = 111 + , Parser_Atom3 = 112 + , Parser_Atom4 = 113 + , Parser_Atom5 = 114 + , Parser_CC1 = 115 + , Parser_CC2 = 116 + , Parser_CC3 = 117 + , Parser_CC5 = 118 + , Parser_CC6 = 119 + , Parser_Ope1 = 120 + , Parser_Ope2 = 121 + , Parser_Ope3 = 122 + , Parser_Descape1 = 123 + , Parser_Descape3 = 124 + , Parser_Descape4 = 125 + , Parser_Descape5 = 126 + , Parser_Process2 = 127 + , Parser_Quantifier1 = 128 + , Parser_Quantifier2 = 129 + , Parser_Quantifier3 = 130 + , Parser_Quantifier4 = 131 + , Parser_Quantifier5 = 132 + , Gen_NoSchemaValidator = 133 + , SubGrpComparator_NGR = 134 + , FACET_Invalid_Len = 135 + , FACET_Invalid_maxLen = 136 + , FACET_Invalid_minLen = 137 + , FACET_NonNeg_Len = 138 + , FACET_NonNeg_maxLen = 139 + , FACET_NonNeg_minLen = 140 + , FACET_Len_maxLen = 141 + , FACET_Len_minLen = 142 + , FACET_maxLen_minLen = 143 + , FACET_Invalid_Tag = 144 + , FACET_Len_baseLen = 145 + , FACET_minLen_baseminLen = 146 + , FACET_minLen_basemaxLen = 147 + , FACET_maxLen_basemaxLen = 148 + , FACET_maxLen_baseminLen = 149 + , FACET_Len_baseMinLen = 150 + , FACET_Len_baseMaxLen = 151 + , FACET_minLen_baseLen = 152 + , FACET_maxLen_baseLen = 153 + , FACET_enum_base = 154 + , FACET_Invalid_WS = 155 + , FACET_WS_collapse = 156 + , FACET_WS_replace = 157 + , FACET_Invalid_MaxIncl = 158 + , FACET_Invalid_MaxExcl = 159 + , FACET_Invalid_MinIncl = 160 + , FACET_Invalid_MinExcl = 161 + , FACET_Invalid_TotalDigit = 162 + , FACET_Invalid_FractDigit = 163 + , FACET_PosInt_TotalDigit = 164 + , FACET_NonNeg_FractDigit = 165 + , FACET_max_Incl_Excl = 166 + , FACET_min_Incl_Excl = 167 + , FACET_maxExcl_minExcl = 168 + , FACET_maxExcl_minIncl = 169 + , FACET_maxIncl_minExcl = 170 + , FACET_maxIncl_minIncl = 171 + , FACET_TotDigit_FractDigit = 172 + , FACET_maxIncl_base_maxExcl = 173 + , FACET_maxIncl_base_maxIncl = 174 + , FACET_maxIncl_base_minIncl = 175 + , FACET_maxIncl_base_minExcl = 176 + , FACET_maxExcl_base_maxExcl = 177 + , FACET_maxExcl_base_maxIncl = 178 + , FACET_maxExcl_base_minIncl = 179 + , FACET_maxExcl_base_minExcl = 180 + , FACET_minExcl_base_maxExcl = 181 + , FACET_minExcl_base_maxIncl = 182 + , FACET_minExcl_base_minIncl = 183 + , FACET_minExcl_base_minExcl = 184 + , FACET_minIncl_base_maxExcl = 185 + , FACET_minIncl_base_maxIncl = 186 + , FACET_minIncl_base_minIncl = 187 + , FACET_minIncl_base_minExcl = 188 + , FACET_maxIncl_notFromBase = 189 + , FACET_maxExcl_notFromBase = 190 + , FACET_minIncl_notFromBase = 191 + , FACET_minExcl_notFromBase = 192 + , FACET_totalDigit_base_totalDigit = 193 + , FACET_fractDigit_base_totalDigit = 194 + , FACET_fractDigit_base_fractDigit = 195 + , FACET_maxIncl_base_fixed = 196 + , FACET_maxExcl_base_fixed = 197 + , FACET_minIncl_base_fixed = 198 + , FACET_minExcl_base_fixed = 199 + , FACET_totalDigit_base_fixed = 200 + , FACET_fractDigit_base_fixed = 201 + , FACET_maxLen_base_fixed = 202 + , FACET_minLen_base_fixed = 203 + , FACET_whitespace_base_fixed = 204 + , FACET_internalError_fixed = 205 + , FACET_List_Null_baseValidator = 206 + , FACET_Union_Null_memberTypeValidators = 207 + , FACET_Union_Null_baseValidator = 208 + , FACET_Union_invalid_baseValidatorType = 209 + , VALUE_NotMatch_Pattern = 210 + , VALUE_Not_Base64 = 211 + , VALUE_Not_HexBin = 212 + , VALUE_GT_maxLen = 213 + , VALUE_LT_minLen = 214 + , VALUE_NE_Len = 215 + , VALUE_NotIn_Enumeration = 216 + , VALUE_exceed_totalDigit = 217 + , VALUE_exceed_fractDigit = 218 + , VALUE_exceed_maxIncl = 219 + , VALUE_exceed_maxExcl = 220 + , VALUE_exceed_minIncl = 221 + , VALUE_exceed_minExcl = 222 + , VALUE_WS_replaced = 223 + , VALUE_WS_collapsed = 224 + , VALUE_Invalid_NCName = 225 + , VALUE_Invalid_Name = 226 + , VALUE_ID_Not_Unique = 227 + , VALUE_ENTITY_Invalid = 228 + , VALUE_QName_Invalid = 229 + , VALUE_NOTATION_Invalid = 230 + , VALUE_no_match_memberType = 231 + , VALUE_URI_Malformed = 232 + , XMLNUM_emptyString = 233 + , XMLNUM_WSString = 234 + , XMLNUM_2ManyDecPoint = 235 + , XMLNUM_Inv_chars = 236 + , XMLNUM_null_ptr = 237 + , XMLNUM_URI_Component_Empty = 238 + , XMLNUM_URI_Component_for_GenURI_Only = 239 + , XMLNUM_URI_Component_Invalid_EscapeSequence = 240 + , XMLNUM_URI_Component_Invalid_Char = 241 + , XMLNUM_URI_Component_Set_Null = 242 + , XMLNUM_URI_Component_Not_Conformant = 243 + , XMLNUM_URI_No_Scheme = 244 + , XMLNUM_URI_NullHost = 245 + , XMLNUM_URI_NullPath = 246 + , XMLNUM_URI_PortNo_Invalid = 247 + , XMLNUM_DBL_FLT_InvalidType = 248 + , Regex_Result_Not_Set = 249 + , Regex_CompactRangesError = 250 + , Regex_MergeRangesTypeMismatch = 251 + , Regex_SubtractRangesError = 252 + , Regex_IntersectRangesError = 253 + , Regex_ComplementRangesInvalidArg = 254 + , Regex_InvalidCategoryName = 255 + , Regex_KeywordNotFound = 256 + , Regex_BadRefNo = 257 + , Regex_UnknownOption = 258 + , Regex_UnknownTokenType = 259 + , Regex_RangeTokenGetError = 260 + , Regex_NotSupported = 261 + , Regex_InvalidChildIndex = 262 + , Regex_RepPatMatchesZeroString = 263 + , Regex_InvalidRepPattern = 264 + , NEL_RepeatedCalls = 265 + , Out_Of_Memory = 266 + , DV_InvalidOperation = 267 + , XPath_NoAttrSelector = 268 + , XPath_NoUnionAtStart = 269 + , XPath_NoMultipleUnion = 270 + , XPath_MissingAttr = 271 + , XPath_ExpectedToken1 = 272 + , XPath_PrefixNoURI = 273 + , XPath_NoDoubleColon = 274 + , XPath_ExpectedStep1 = 275 + , XPath_ExpectedStep2 = 276 + , XPath_ExpectedStep3 = 277 + , XPath_NoForwardSlash = 278 + , XPath_NoDoubleForwardSlash = 279 + , XPath_NoForwardSlashAtStart = 280 + , XPath_NoSelectionOfRoot = 281 + , XPath_EmptyExpr = 282 + , XPath_NoUnionAtEnd = 283 + , XPath_InvalidChar = 284 + , XPath_TokenNotSupported = 285 + , XPath_FindSolution = 286 + , DateTime_dt_invalid = 287 + , DateTime_dt_missingT = 288 + , DateTime_gDay_invalid = 289 + , DateTime_gMth_invalid = 290 + , DateTime_gMthDay_invalid = 291 + , DateTime_dur_invalid = 292 + , DateTime_dur_Start_dashP = 293 + , DateTime_dur_noP = 294 + , DateTime_dur_DashNotFirst = 295 + , DateTime_dur_inv_b4T = 296 + , DateTime_dur_NoTimeAfterT = 297 + , DateTime_dur_NoElementAtAll = 298 + , DateTime_dur_inv_seconds = 299 + , DateTime_date_incomplete = 300 + , DateTime_date_invalid = 301 + , DateTime_time_incomplete = 302 + , DateTime_time_invalid = 303 + , DateTime_ms_noDigit = 304 + , DateTime_ym_incomplete = 305 + , DateTime_ym_invalid = 306 + , DateTime_year_invalid = 307 + , DateTime_year_tooShort = 308 + , DateTime_year_leadingZero = 309 + , DateTime_ym_noMonth = 310 + , DateTime_tz_noUTCsign = 311 + , DateTime_tz_stuffAfterZ = 312 + , DateTime_tz_invalid = 313 + , DateTime_year_zero = 314 + , DateTime_mth_invalid = 315 + , DateTime_day_invalid = 316 + , DateTime_hour_invalid = 317 + , DateTime_min_invalid = 318 + , DateTime_second_invalid = 319 + , DateTime_tz_hh_invalid = 320 + , PD_EmptyBase = 321 + , PD_NSCompat1 = 322 + , PD_OccurRangeE = 323 + , PD_NameTypeOK1 = 324 + , PD_NameTypeOK2 = 325 + , PD_NameTypeOK3 = 326 + , PD_NameTypeOK4 = 327 + , PD_NameTypeOK5 = 328 + , PD_NameTypeOK6 = 329 + , PD_NameTypeOK7 = 330 + , PD_Recurse1 = 331 + , PD_Recurse2 = 332 + , PD_ForbiddenRes1 = 333 + , PD_ForbiddenRes2 = 334 + , PD_ForbiddenRes3 = 335 + , PD_ForbiddenRes4 = 336 + , PD_NSSubset1 = 337 + , PD_NSSubset2 = 338 + , PD_NSRecurseCheckCardinality1 = 339 + , PD_RecurseUnordered = 340 + , PD_MapAndSum = 341 + , PD_InvalidContentType = 342 + , NodeIDMap_GrowErr = 343 + , XSer_ProtoType_Null_ClassName = 344 + , XSer_ProtoType_NameLen_Dif = 345 + , XSer_ProtoType_Name_Dif = 346 + , XSer_InStream_Read_LT_Req = 347 + , XSer_InStream_Read_OverFlow = 348 + , XSer_Storing_Violation = 349 + , XSer_StoreBuffer_Violation = 350 + , XSer_LoadPool_UppBnd_Exceed = 351 + , XSer_LoadPool_NoTally_ObjCnt = 352 + , XSer_Loading_Violation = 353 + , XSer_LoadBuffer_Violation = 354 + , XSer_Inv_ClassIndex = 355 + , XSer_Inv_checkFillBuffer_Size = 356 + , XSer_Inv_checkFlushBuffer_Size = 357 + , XSer_Inv_Null_Pointer = 358 + , XSer_CreateObject_Fail = 359 + , XSer_ObjCount_UppBnd_Exceed = 360 + , XSer_GrammarPool_Empty = 361 + , XSer_GrammarPool_NotEmpty = 362 + , XSer_StringPool_NotEmpty = 363 + , XSer_Storer_Loader_Mismatch = 364 + , VALUE_QName_Invalid2 = 365 + , F_HighBounds = 366 + , E_LowBounds = 367 + , E_HighBounds = 368 + }; + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLExcepts(); +}; + +#if defined __GNUC__ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5)) +# pragma GCC diagnostic pop +#endif + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLException.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLException.hpp new file mode 100644 index 000000000000..ff90a7a8fc82 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLException.hpp @@ -0,0 +1,276 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_XMLEXCEPTION_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// This is the base class from which all the XML parser exceptions are +// derived. The virtual interface is very simple and most of the functionality +// is in this class. +// +// Because all derivatives are EXACTLY the same except for the static +// string that is used to hold the name of the class, a macro is provided +// below via which they are all created. +// --------------------------------------------------------------------------- +class XMLUTIL_EXPORT XMLException : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Virtual Destructor + // ----------------------------------------------------------------------- + virtual ~XMLException(); + + + // ----------------------------------------------------------------------- + // The XML exception virtual interface + // ----------------------------------------------------------------------- + virtual const XMLCh* getType() const = 0; + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLExcepts::Codes getCode() const; + const XMLCh* getMessage() const; + const char* getSrcFile() const; + XMLFileLoc getSrcLine() const; + XMLErrorReporter::ErrTypes getErrorType() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setPosition(const char* const file, const XMLFileLoc line); + + + // ----------------------------------------------------------------------- + // Hidden constructors and operators + // + // NOTE: Technically, these should be protected, since this is a + // base class that is never used directly. However, VC++ 6.0 will + // fail to catch via a reference to base class if the ctors are + // not public!! This seems to have been caused by the install + // of IE 5.0. + // ----------------------------------------------------------------------- + XMLException(); + XMLException(const char* const srcFile, const XMLFileLoc srcLine, MemoryManager* const memoryManager = 0); + XMLException(const XMLException& toCopy); + XMLException& operator=(const XMLException& toAssign); + +protected : + // ----------------------------------------------------------------------- + // Protected methods + // ----------------------------------------------------------------------- + void loadExceptText + ( + const XMLExcepts::Codes toLoad + ); + void loadExceptText + ( + const XMLExcepts::Codes toLoad + , const XMLCh* const text1 + , const XMLCh* const text2 = 0 + , const XMLCh* const text3 = 0 + , const XMLCh* const text4 = 0 + ); + void loadExceptText + ( + const XMLExcepts::Codes toLoad + , const char* const text1 + , const char* const text2 = 0 + , const char* const text3 = 0 + , const char* const text4 = 0 + ); + + +private : + // ----------------------------------------------------------------------- + // Data members + // + // fCode + // The error code that this exception represents. + // + // fSrcFile + // fSrcLine + // These are the file and line information from the source where the + // exception was thrown from. + // + // fMsg + // The loaded message text for this exception. + // ----------------------------------------------------------------------- + XMLExcepts::Codes fCode; + char* fSrcFile; + XMLFileLoc fSrcLine; + XMLCh* fMsg; + +protected: + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// XMLException: Getter methods +// --------------------------------------------------------------------------- +inline XMLExcepts::Codes XMLException::getCode() const +{ + return fCode; +} + +inline const XMLCh* XMLException::getMessage() const +{ + return fMsg; +} + +inline const char* XMLException::getSrcFile() const +{ + if (!fSrcFile) + return ""; + return fSrcFile; +} + +inline XMLFileLoc XMLException::getSrcLine() const +{ + return fSrcLine; +} + +inline XMLErrorReporter::ErrTypes XMLException::getErrorType() const +{ + if ((fCode >= XMLExcepts::W_LowBounds) && (fCode <= XMLExcepts::W_HighBounds)) + return XMLErrorReporter::ErrType_Warning; + else if ((fCode >= XMLExcepts::F_LowBounds) && (fCode <= XMLExcepts::F_HighBounds)) + return XMLErrorReporter::ErrType_Fatal; + else if ((fCode >= XMLExcepts::E_LowBounds) && (fCode <= XMLExcepts::E_HighBounds)) + return XMLErrorReporter::ErrType_Error; + return XMLErrorReporter::ErrTypes_Unknown; +} + +// --------------------------------------------------------------------------- +// This macro is used to create derived classes. They are all identical +// except the name of the exception, so it crazy to type them in over and +// over. +// --------------------------------------------------------------------------- +#define MakeXMLException(theType, expKeyword) \ +class expKeyword theType : public XMLException \ +{ \ +public: \ + \ + theType(const char* const srcFile \ + , const XMLFileLoc srcLine \ + , const XMLExcepts::Codes toThrow \ + , MemoryManager* memoryManager = 0) : \ + XMLException(srcFile, srcLine, memoryManager) \ + { \ + loadExceptText(toThrow); \ + } \ + \ + theType(const theType& toCopy) : \ + \ + XMLException(toCopy) \ + { \ + } \ + \ + theType(const char* const srcFile \ + , const XMLFileLoc srcLine \ + , const XMLExcepts::Codes toThrow \ + , const XMLCh* const text1 \ + , const XMLCh* const text2 = 0 \ + , const XMLCh* const text3 = 0 \ + , const XMLCh* const text4 = 0 \ + , MemoryManager* memoryManager = 0) : \ + XMLException(srcFile, srcLine, memoryManager) \ + { \ + loadExceptText(toThrow, text1, text2, text3, text4); \ + } \ + \ + theType(const char* const srcFile \ + , const XMLFileLoc srcLine \ + , const XMLExcepts::Codes toThrow \ + , const char* const text1 \ + , const char* const text2 = 0 \ + , const char* const text3 = 0 \ + , const char* const text4 = 0 \ + , MemoryManager* memoryManager = 0) : \ + XMLException(srcFile, srcLine, memoryManager) \ + { \ + loadExceptText(toThrow, text1, text2, text3, text4); \ + } \ + \ + virtual ~theType() {} \ + \ + theType& operator=(const theType& toAssign) \ + { \ + XMLException::operator=(toAssign); \ + return *this; \ + } \ + \ + virtual XMLException* duplicate() const \ + { \ + return new (fMemoryManager) theType(*this); \ + } \ + \ + virtual const XMLCh* getType() const \ + { \ + return XMLUni::fg##theType##_Name; \ + } \ + \ +private : \ + theType(); \ +}; + + + +// --------------------------------------------------------------------------- +// This macros is used to actually throw an exception. It is used in order +// to make sure that source code line/col info is stored correctly, and to +// give flexibility for other stuff in the future. +// --------------------------------------------------------------------------- + +#define ThrowXML(type,code) throw type(__FILE__, __LINE__, code) + +#define ThrowXML1(type,code,p1) throw type(__FILE__, __LINE__, code, p1) + +#define ThrowXML2(type,code,p1,p2) throw type(__FILE__, __LINE__, code, p1, p2) + +#define ThrowXML3(type,code,p1,p2,p3) throw type(__FILE__, __LINE__, code, p1, p2, p3) + +#define ThrowXML4(type,code,p1,p2,p3,p4) throw type(__FILE__, __LINE__, code, p1, p2, p3, p4) + +#define ThrowXMLwithMemMgr(type,code,memMgr) throw type(__FILE__, __LINE__, code, memMgr) + +#define ThrowXMLwithMemMgr1(type,code,p1,memMgr) throw type(__FILE__, __LINE__, code, p1, 0, 0, 0, memMgr) + +#define ThrowXMLwithMemMgr2(type,code,p1,p2,memMgr) throw type(__FILE__, __LINE__, code, p1, p2, 0, 0, memMgr) + +#define ThrowXMLwithMemMgr3(type,code,p1,p2,p3,memMgr) throw type(__FILE__, __LINE__, code, p1, p2, p3, 0, memMgr) + +#define ThrowXMLwithMemMgr4(type,code,p1,p2,p3,p4,memMgr) throw type(__FILE__, __LINE__, code, p1, p2, p3, p4, memMgr) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLFileMgr.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLFileMgr.hpp new file mode 100644 index 000000000000..db96d1d31aa4 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLFileMgr.hpp @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLFILEMGR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLFILEMGR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +typedef void* FileHandle; +#define XERCES_Invalid_File_Handle 0 + +// Abstract class for files. This is be used to allow multiple file handling implementations. +class XMLFileMgr : public XMemory +{ + public: + XMLFileMgr() {} + virtual ~XMLFileMgr() {} + + // File access + virtual FileHandle fileOpen(const XMLCh* path, bool toWrite, MemoryManager* const manager) = 0; + virtual FileHandle fileOpen(const char* path, bool toWrite, MemoryManager* const manager) = 0; + virtual FileHandle openStdIn(MemoryManager* const manager) = 0; + + virtual void fileClose(FileHandle f, MemoryManager* const manager) = 0; + virtual void fileReset(FileHandle f, MemoryManager* const manager) = 0; + + virtual XMLFilePos curPos(FileHandle f, MemoryManager* const manager) = 0; + virtual XMLFilePos fileSize(FileHandle f, MemoryManager* const manager) = 0; + + virtual XMLSize_t fileRead(FileHandle f, XMLSize_t byteCount, XMLByte* buffer, MemoryManager* const manager) = 0; + virtual void fileWrite(FileHandle f, XMLSize_t byteCount, const XMLByte* buffer, MemoryManager* const manager) = 0; + + // Ancillary path handling routines + virtual XMLCh* getFullPath(const XMLCh* const srcPath, MemoryManager* const manager) = 0; + virtual XMLCh* getCurrentDirectory(MemoryManager* const manager) = 0; + virtual bool isRelative(const XMLCh* const toCheck, MemoryManager* const manager) = 0; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLFloat.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLFloat.hpp new file mode 100644 index 000000000000..caf12fe3c75c --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLFloat.hpp @@ -0,0 +1,97 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML_FLOAT_HPP) +#define XERCESC_INCLUDE_GUARD_XML_FLOAT_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLFloat : public XMLAbstractDoubleFloat +{ +public: + + /** + * Constructs a newly allocated XMLFloat object that + * represents the value represented by the string. + * + * @param strValue the String to be converted to an + * XMLFloat. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * @exception NumberFormatException if the String does not + * contain a parsable XMLFloat. + */ + + XMLFloat(const XMLCh* const strValue, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + ~XMLFloat(); + + /** + * Compares the two specified XMLFloat objects. + * The result is true if and only if the argument is not + * null and that contains the same int value. + * + * @param lValue the object to compare with. + * @param rValue the object to compare against. + * @return true if the objects are the same; + * false otherwise. + */ + + inline static int compareValues(const XMLFloat* const lValue + , const XMLFloat* const rValue); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLFloat) + + XMLFloat(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +protected: + + virtual void checkBoundary(char* const strValue); + +private: + // + // Unimplemented + // + // copy ctor + // assignment ctor + // + XMLFloat(const XMLFloat& toCopy); + XMLFloat& operator=(const XMLFloat& toAssign); + +}; + +inline int XMLFloat::compareValues(const XMLFloat* const lValue + , const XMLFloat* const rValue) +{ + return XMLAbstractDoubleFloat::compareValues((const XMLAbstractDoubleFloat*) lValue, + (const XMLAbstractDoubleFloat*) rValue + , ((XMLAbstractDoubleFloat*)lValue)->getMemoryManager()); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLIBM1047Transcoder.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLIBM1047Transcoder.hpp new file mode 100644 index 000000000000..25393eec0f5e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLIBM1047Transcoder.hpp @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLIBM1047TRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLIBM1047TRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple 1047-US transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +// +class XMLUTIL_EXPORT XMLIBM1047Transcoder : public XML256TableTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public, static methods + // ----------------------------------------------------------------------- + static XMLCh xlatThisOne(const XMLByte toXlat); + + + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLIBM1047Transcoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLIBM1047Transcoder(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLIBM1047Transcoder(); + XMLIBM1047Transcoder(const XMLIBM1047Transcoder&); + void operator=(const XMLIBM1047Transcoder&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLIBM1140Transcoder.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLIBM1140Transcoder.hpp new file mode 100644 index 000000000000..95384dba21fa --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLIBM1140Transcoder.hpp @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLIBM1140TRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLIBM1140TRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple IBM-1140 transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +class XMLUTIL_EXPORT XMLIBM1140Transcoder : public XML256TableTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public, static methods + // ----------------------------------------------------------------------- + static XMLCh xlatThisOne(const XMLByte toXlat); + + + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLIBM1140Transcoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLIBM1140Transcoder(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLIBM1140Transcoder(); + XMLIBM1140Transcoder(const XMLIBM1140Transcoder&); + XMLIBM1140Transcoder& operator=(const XMLIBM1140Transcoder&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLInitializer.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLInitializer.hpp new file mode 100644 index 000000000000..3dcf85a88648 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLInitializer.hpp @@ -0,0 +1,164 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLINITIALIZER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLINITIALIZER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * Utilities that must be implemented in a class-specific way. + * + * This class contains methods that must be implemented by different + * classes that have static data (class or local) that they need + * to initialize when XMLPlatformUtils::Initialize is invoked. + */ +class XMLUTIL_EXPORT XMLInitializer +{ +protected : + /** @name Initialization methods */ + //@{ + + /** Perform per-class allocationa and initialization of static data + * + * These functions should be called from XMLPlatformUtils::Initialize. + */ + static void initializeTransService(); + static void initializeStaticData(); + + /** Perform per-class release of static data + * + * These functions should be called from XMLPlatformUtils::Terminate. + */ + static void terminateStaticData(); + static void terminateTransService(); + + //@} + + friend class XMLPlatformUtils; + +private : + XMLInitializer(); + XMLInitializer(const XMLInitializer& toCopy); + XMLInitializer& operator=(const XMLInitializer&); + +private: + // Note: The name of each function should be in the form + // initialize. + // + // Note: In some cases order of initialization is important. + // + + // + // Initialize + // + + // Core + // + static void initializeEncodingValidator(); + static void initializeXMLException(); + static void initializeXMLScanner(); + static void initializeXMLValidator(); + + // Regex + // + static void initializeRangeTokenMap(); + static void initializeRegularExpression(); + + // DTD + // + static void initializeDTDGrammar(); + + // Schema + // + static void initializeXSDErrorReporter(); + static void initializeDatatypeValidatorFactory(); + static void initializeGeneralAttributeCheck(); + static void initializeXSValue(); + static void initializeComplexTypeInfo(); + + // DOM + // + static void initializeDOMImplementationRegistry(); + static void initializeDOMImplementationImpl(); + static void initializeDOMDocumentTypeImpl(); + static void initializeDOMNodeListImpl(); + static void initializeDOMNormalizer(); + + // XInclude + // + static void initializeXInclude(); + + // + // Terminate + // + + // Core + // + static void terminateEncodingValidator(); + static void terminateXMLException(); + static void terminateXMLScanner(); + static void terminateXMLValidator(); + + // Regex + // + static void terminateRangeTokenMap(); + static void terminateRegularExpression(); + + // DTD + // + static void terminateDTDGrammar(); + + // Schema + // + static void terminateXSDErrorReporter(); + static void terminateDatatypeValidatorFactory(); + static void terminateGeneralAttributeCheck(); + static void terminateXSValue(); + static void terminateComplexTypeInfo(); + + // DOM + // + static void terminateDOMImplementationRegistry(); + static void terminateDOMImplementationImpl(); + static void terminateDOMDocumentTypeImpl(); + static void terminateDOMNodeListImpl(); + static void terminateDOMNormalizer(); + + // XInclude + // + static void terminateXInclude(); + + // + // Extra initialization. + // + static void initializeDOMHeap (XMLSize_t initialHeapAllocSize, + XMLSize_t maxHeapAllocSize, + XMLSize_t maxSubAllocationSize); +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLInteger.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLInteger.hpp new file mode 100644 index 000000000000..e2480eda16b6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLInteger.hpp @@ -0,0 +1,82 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XML_INTEGER_HPP) +#define XERCESC_INCLUDE_GUARD_XML_INTEGER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLInteger : public XMemory +{ +public: + + /** + * Constructs a newly allocated XMLInteger object + * + * @param intVal the integer + */ + + XMLInteger(const int intVal); + + ~XMLInteger(); + + /** + * Returns the built in integer value. + */ + int intValue() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLInteger(const XMLInteger&); + XMLInteger& operator=(const XMLInteger&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fData + // the value + // + // ----------------------------------------------------------------------- + int fData; + +}; + +inline XMLInteger::XMLInteger(const int intVal) +:fData(intVal) +{ +} + +inline XMLInteger::~XMLInteger() +{ +} + +inline int XMLInteger::intValue() const +{ + return fData; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLMsgLoader.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLMsgLoader.hpp new file mode 100644 index 000000000000..67b98528aafd --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLMsgLoader.hpp @@ -0,0 +1,182 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLMSGLOADER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLMSGLOADER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This header defines an abstract message loading API. This is the API via +// which the parser system loads translatable text, and there can be multiple +// actual implementations of this mechanism. The API is very simple because +// there can be many kinds of underlying systems on which implementations are +// based and we don't want to get into portability trouble by being overly +// smart. +// +// Each instance of the message loader loads a file of messages, which are +// accessed by key and which are associated with a particular language. The +// actual source information may be in many forms, but by the time it is +// extracted for use it will be in Unicode format. The language is always +// the default language for the local machine. +// +// Msg loader derivatives are not required to be thread safe. The parser will +// never use a single instance in more than one thread. +// +class XMLUTIL_EXPORT XMLMsgLoader : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Class specific types + // + // XMLMsgId + // A simple typedef to give us flexibility about the representation + // of a message id. + // ----------------------------------------------------------------------- + typedef unsigned int XMLMsgId; + + + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + virtual ~XMLMsgLoader(); + + + // ----------------------------------------------------------------------- + // The virtual message loader API + // ----------------------------------------------------------------------- + virtual bool loadMsg + ( + const XMLMsgId msgToLoad + , XMLCh* const toFill + , const XMLSize_t maxChars + ) = 0; + + virtual bool loadMsg + ( + const XMLMsgId msgToLoad + , XMLCh* const toFill + , const XMLSize_t maxChars + , const XMLCh* const repText1 + , const XMLCh* const repText2 = 0 + , const XMLCh* const repText3 = 0 + , const XMLCh* const repText4 = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) = 0; + + virtual bool loadMsg + ( + const XMLMsgId msgToLoad + , XMLCh* const toFill + , const XMLSize_t maxChars + , const char* const repText1 + , const char* const repText2 = 0 + , const char* const repText3 = 0 + , const char* const repText4 = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) = 0; + + /** @name Locale Handling */ + //@{ + /** + * This function enables set the locale information which + * all concrete message loaders shall refer to during instantiation. + * + * Note: for detailed discussion, refer to PlatformUtils::initialize() + */ + static void setLocale(const char* const localeToAdopt); + + /** + * For the derived to retrieve locale info during construction + */ + static const char* getLocale(); + + //@} + + /** @name NLSHome Handling */ + //@{ + /** + * This function enables set the NLSHome information which + * all concrete message loaders shall refer to during instantiation. + * + * Note: for detailed discussion, refer to PlatformUtils::initialize() + */ + static void setNLSHome(const char* const nlsHomeToAdopt); + + /** + * For the derived to retrieve NLSHome info during construction + */ + static const char* getNLSHome(); + + //@} + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + XMLMsgLoader(); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLMsgLoader(const XMLMsgLoader&); + XMLMsgLoader& operator=(const XMLMsgLoader&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fLocale + // Locale info set through PlatformUtils::init(). + // The derived class may refer to this for locale information. + // + // fPath + // NLSHome info set through PlatformUtils::init(). + // The derived class may refer to this for NLSHome information. + // + // ----------------------------------------------------------------------- + static char* fLocale; + static char* fPath; +}; + + +// --------------------------------------------------------------------------- +// XMLMsgLoader: Public Constructors and Destructor +// --------------------------------------------------------------------------- +inline XMLMsgLoader::~XMLMsgLoader() +{ +} + + +// --------------------------------------------------------------------------- +// XMLMsgLoader: Hidden Constructors +// --------------------------------------------------------------------------- +inline XMLMsgLoader::XMLMsgLoader() +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLMutexMgr.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLMutexMgr.hpp new file mode 100644 index 000000000000..aa211afbec60 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLMutexMgr.hpp @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLMUTEXMGR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLMUTEXMGR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +typedef void* XMLMutexHandle; + +// Abstract class for mutex implementation. +// This is be used to allow multiple mutex handling implementations. +class XMLMutexMgr : public XMemory +{ + public: + XMLMutexMgr() {} + virtual ~XMLMutexMgr() {} + + // Mutex operations + virtual XMLMutexHandle create(MemoryManager* const manager) = 0; + virtual void destroy(XMLMutexHandle mtx, MemoryManager* const manager) = 0; + virtual void lock(XMLMutexHandle mtx) = 0; + virtual void unlock(XMLMutexHandle mtx) = 0; +}; + +XERCES_CPP_NAMESPACE_END + + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLNetAccessor.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLNetAccessor.hpp new file mode 100644 index 000000000000..85d7d7449a5b --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLNetAccessor.hpp @@ -0,0 +1,139 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLNETACCESSOR_HPP) +#define XERCESC_INCLUDE_GUARD_XMLNETACCESSOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class BinInputStream; + +// This class holds advanced informations about the HTTP connection +class XMLUTIL_EXPORT XMLNetHTTPInfo +{ +public: + XMLNetHTTPInfo(); + + typedef enum { + GET, + PUT, + POST + } HTTPMethod; + + // ----------------------------------------------------------------------- + // Data members + // + // fHTTPMethod + // The type of the HTTP request + // + // fHeaders + // The extra headers that will be sent as part of the request; the format is + // Header1: Value\r\nHeader2: Value\r\n + // + // fHeadersLen + // The length of the string pointed by fHeaders, in bytes + // + // fPayload + // The extra data that will be sent after the headers; in the case of a PUT + // operation, this is the content of the resource being posted. It can be binary data + // + // fPayloadLen + // The length of the binary buffer pointed by fPayload, in bytes + // + HTTPMethod fHTTPMethod; + const char* fHeaders; + XMLSize_t fHeadersLen; + const char* fPayload; + XMLSize_t fPayloadLen; +}; + +inline XMLNetHTTPInfo::XMLNetHTTPInfo() +:fHTTPMethod(XMLNetHTTPInfo::GET), + fHeaders(0), + fHeadersLen(0), + fPayload(0), + fPayloadLen(0) +{ +} + + +// +// This class is an abstract interface via which the URL class accesses +// net access services. When any source URL is not in effect a local file +// path, then the URL class is used to look at it. Then the URL class can +// be asked to make a binary input stream via which the referenced resource +// can be read in. +// +// The URL class will use an object derived from this class to create a +// binary stream for the URL to return. The object it uses is provided by +// the platform utils, and is actually provided by the per-platform init +// code so each platform can decide what actual implementation it wants to +// use. +// +class XMLUTIL_EXPORT XMLNetAccessor : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Virtual destructor + // ----------------------------------------------------------------------- + virtual ~XMLNetAccessor() + { + } + + + // ----------------------------------------------------------------------- + // The virtual net accessor interface + // ----------------------------------------------------------------------- + virtual const XMLCh* getId() const = 0; + + virtual BinInputStream* makeNew + ( + const XMLURL& urlSrc, + const XMLNetHTTPInfo* httpInfo=0 + ) = 0; + + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + XMLNetAccessor() + { + } + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLNetAccessor(const XMLNetAccessor&); + XMLNetAccessor& operator=(const XMLNetAccessor&); +}; + +MakeXMLException(NetAccessorException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLNumber.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLNumber.hpp new file mode 100644 index 000000000000..9f131dbb4f52 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLNumber.hpp @@ -0,0 +1,102 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLNUMBER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLNUMBER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLNumber : public XSerializable, public XMemory +{ +public: + + enum + { + LESS_THAN = -1, + EQUAL = 0, + GREATER_THAN = 1, + INDETERMINATE = 2 + }; + + enum NumberType { + Float, + Double, + BigDecimal, + DateTime, + UnKnown + }; + + virtual ~XMLNumber(); + + /** + * Return string representation of the decimal value. + * A decimal point will be included as necessary. + * Similar to toString above, but the internal buffer is + * returned directly, user is not required to delete + * the returned buffer + */ + virtual XMLCh* getRawData() const = 0; + + /** + * Return the original and converted value of the original data. + * (applicable to double/float) + * + * The internal buffer is returned directly, user is not required + * to delete the returned buffer + */ + virtual const XMLCh* getFormattedString() const = 0; + + /** + * Returns the sign of this number + * + * -1 negative + * 0 zero + * 1 positive + * + */ + virtual int getSign() const = 0; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLNumber) + + static XMLNumber* loadNumber(XMLNumber::NumberType numType + , XSerializeEngine& serEng); + +protected: + + XMLNumber(); + XMLNumber(const XMLNumber&); + +private: + // ----------------------------------------------------------------------- + // Unimplemented operators + // ----------------------------------------------------------------------- + XMLNumber& operator=(const XMLNumber&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLResourceIdentifier.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLResourceIdentifier.hpp new file mode 100644 index 000000000000..df09961dcc06 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLResourceIdentifier.hpp @@ -0,0 +1,214 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLRESOURCEIDENTIFIER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLRESOURCEIDENTIFIER_HPP + +XERCES_CPP_NAMESPACE_BEGIN + +class Locator; + +/** + *

This class is used along with XMLEntityResolver to resolve entities. + * Instead of passing publicId and systemId on the resolveEntity call, + * as is done with the SAX entity resolver, an object of type XMLResourceIdentifier + * is passed. By calling the getResourceIdentifierType() method the user can + * determine which data members are available for inspection:

+ * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
ResourceIdentifierTypeAvailable Data Members
SchemaGrammarschemaLocation, nameSpace & baseURI (current document)
SchemaImportschemaLocation, nameSpace & baseURI (current document)
SchemaIncludeschemaLocation & baseURI (current document)
SchemaRedefineschemaLocation & baseURI (current document)
ExternalEntitysystemId, publicId & baseURI (some items may be NULL)
+ * + *

The following resolver would provide the application + * with a special character stream for the entity with the system + * identifier "http://www.myhost.com/today":

+ * + * + * \#include
+ * \#include
+ *
+ * class MyResolver : public XMLEntityResolver {
+ *  public:
+ *   InputSource* resolveEntity (XMLResourceIdentifier* xmlri);
+ *   ...
+ *  };
+ *
+ *  MyResolver::resolveEntity(XMLResourceIdentifier* xmlri) {
+ *   switch(xmlri->getResourceIdentifierType()) {
+ *    case XMLResourceIdentifier::SystemId:
+ *     if (XMLString::compareString(xmlri->getSystemId(), "http://www.myhost.com/today")) {
+ *      MyReader* reader = new MyReader();
+ *      return new InputSource(reader);
+ *     } else {
+ *      return null;
+ *     }
+ *     break;
+ *    default:
+ *     return null;
+ *   }
+ *  }
+ * + * @see SAXParser#setXMLEntityResolver + * @see InputSource#InputSource + */ +class XMLUTIL_EXPORT XMLResourceIdentifier +{ +public: + + /** @name Public Constants */ + //@{ + enum ResourceIdentifierType { + SchemaGrammar = 0, + SchemaImport, + SchemaInclude, + SchemaRedefine , + ExternalEntity, + UnKnown = 255 + }; + //@} + + /** @name Constructors and Destructor */ + //@{ + /** Constructor */ + + XMLResourceIdentifier(const ResourceIdentifierType resourceIdentitiferType + , const XMLCh* const systemId + , const XMLCh* const nameSpace = 0 + , const XMLCh* const publicId = 0 + , const XMLCh* const baseURI = 0 + , const Locator* locator = 0); + + /** Destructor */ + ~XMLResourceIdentifier() + { + } + + //@} + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Public Methods */ + //@{ + ResourceIdentifierType getResourceIdentifierType() const; + const XMLCh* getPublicId() const; + const XMLCh* getSystemId() const; + const XMLCh* getSchemaLocation() const; + const XMLCh* getBaseURI() const; + const XMLCh* getNameSpace() const; + const Locator* getLocator() const; + //@} + +private : + + const ResourceIdentifierType fResourceIdentifierType; + const XMLCh* fPublicId; + const XMLCh* fSystemId; + const XMLCh* fBaseURI; + const XMLCh* fNameSpace; + const Locator* fLocator; + + /* Unimplemented constructors and operators */ + + /* Copy constructor */ + XMLResourceIdentifier(const XMLResourceIdentifier&); + + /* Assignment operator */ + XMLResourceIdentifier& operator=(const XMLResourceIdentifier&); + +}; + +inline XMLResourceIdentifier::ResourceIdentifierType XMLResourceIdentifier::getResourceIdentifierType() const +{ + return fResourceIdentifierType; +} + +inline const XMLCh* XMLResourceIdentifier::getPublicId() const +{ + return fPublicId; +} + +inline const XMLCh* XMLResourceIdentifier::getSystemId() const +{ + return fSystemId; +} + +inline const XMLCh* XMLResourceIdentifier::getSchemaLocation() const +{ + return fSystemId; +} + +inline const XMLCh* XMLResourceIdentifier::getBaseURI() const +{ + return fBaseURI; +} + +inline const XMLCh* XMLResourceIdentifier::getNameSpace() const +{ + return fNameSpace; +} + +inline const Locator* XMLResourceIdentifier::getLocator() const +{ + return fLocator; +} + +inline XMLResourceIdentifier::XMLResourceIdentifier(const ResourceIdentifierType resourceIdentifierType + , const XMLCh* const systemId + , const XMLCh* const nameSpace + , const XMLCh* const publicId + , const XMLCh* const baseURI + , const Locator* locator ) + : fResourceIdentifierType(resourceIdentifierType) + , fPublicId(publicId) + , fSystemId(systemId) + , fBaseURI(baseURI) + , fNameSpace(nameSpace) + , fLocator(locator) +{ +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLString.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLString.hpp new file mode 100644 index 000000000000..0bad6ac8c069 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLString.hpp @@ -0,0 +1,1631 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLSTRING_HPP) +#define XERCESC_INCLUDE_GUARD_XMLSTRING_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLLCPTranscoder; +/** + * Class for representing native character strings and handling common string + * operations + * + * This class is Unicode compliant. This class is designed primarily + * for internal use, but due to popular demand, it is being made + * publicly available. Users of this class must understand that this + * is not an officially supported class. All public methods of this + * class are static functions. + * + */ +class XMLUTIL_EXPORT XMLString +{ +public: + /* Static methods for native character mode string manipulation */ + + + /** @name String concatenation functions */ + //@{ + /** Concatenates two strings. + * + * catString appends src to target and + * terminates the resulting string with a null character. The initial character + * of src overwrites the terminating character of target + * . + * + * No overflow checking is performed when strings are copied or appended. + * The behavior of catString is undefined if source and + * destination strings overlap. + * + * @param target Null-terminated destination string + * @param src Null-terminated source string + */ + static void catString + ( + char* const target + , const char* const src + ); + + /** Concatenates two strings. + * + * catString appends src to target and + * terminates the resulting string with a null character. The initial character of + * src overwrites the terminating character of target. + * No overflow checking is performed when strings are copied or appended. + * The behavior of catString is undefined if source and destination + * strings overlap. + * + * @param target Null-terminated destination string + * @param src Null-terminated source string + */ + static void catString + ( + XMLCh* const target + , const XMLCh* const src + ); + //@} + + /** @name String comparison functions */ + //@{ + /** Lexicographically compares lowercase versions of str1 and + * str2 and returns a value indicating their relationship. + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareIString + ( + const char* const str1 + , const char* const str2 + ); + + /** Lexicographically compares lowercase versions of str1 and + * str2 and returns a value indicating their relationship. + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareIString + ( + const XMLCh* const str1 + , const XMLCh* const str2 + ); + + /** Lexicographically compares lowercase versions of str1 and + * str2 and returns a value indicating their relationship. + * The routine only lowercases A to Z. + * @param str1 Null-terminated ASCII string to compare + * @param str2 Null-terminated ASCII string to compare + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareIStringASCII + ( + const XMLCh* const str1 + , const XMLCh* const str2 + ); + + + + /** Lexicographically compares, at most, the first count characters in + * str1 and str2 and returns a value indicating the + * relationship between the substrings. + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * @param count The number of characters to compare + * + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareNString + ( + const char* const str1 + , const char* const str2 + , const XMLSize_t count + ); + + /** Lexicographically compares, at most, the first count characters in + * str1 and str2 and returns a value indicating + * the relationship between the substrings. + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * @param count The number of characters to compare + * + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareNString + ( + const XMLCh* const str1 + , const XMLCh* const str2 + , const XMLSize_t count + ); + + + /** Lexicographically compares, at most, the first count characters in + * str1 and str2 without regard to case and + * returns a value indicating the relationship between the substrings. + * + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * @param count The number of characters to compare + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareNIString + ( + const char* const str1 + , const char* const str2 + , const XMLSize_t count + ); + + /** Lexicographically compares, at most, the first count characters in + * str1 and str2 without regard to case and + * returns a value indicating the relationship between the substrings. + * + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * @param count The number of characters to compare + * + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareNIString + ( + const XMLCh* const str1 + , const XMLCh* const str2 + , const XMLSize_t count + ); + + /** Lexicographically compares str1 and str2 and + * returns a value indicating their relationship. + * + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareString + ( + const char* const str1 + , const char* const str2 + ); + + /** Lexicographically compares str1 and str2 and + * returns a value indicating their relationship. + * + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * @return The return value indicates the relation of str1 to + * str2 as follows + * Less than 0 means str1 is less than str2 + * Equal to 0 means str1 is identical to str2 + * Greater than 0 means str1 is more than str2 + */ + static int compareString + ( + const XMLCh* const str1 + , const XMLCh* const str2 + ); + + /** compares str1 and str2 + * + * @param str1 Null-terminated string to compare + * @param str2 Null-terminated string to compare + * @return true if two strings are equal, false if not + * If one string is null, while the other is zero-length string, + * it is considered as equal. + */ + static bool equals + ( + const XMLCh* str1 + , const XMLCh* str2 + ); + + /** compares str1 and str2 + * + * @param str1 string to compare + * @param str2 string to compare + * @param n number of characters to compare + * @return true if two strings are equal, false if not + * If one string is null, while the other is zero-length string, + * it is considered as equal. + */ + static bool equalsN + ( + const XMLCh* str1 + , const XMLCh* str2 + , XMLSize_t n + ); + + static bool equals + ( + const char* str1 + , const char* str2 + ); + + /** compares str1 and str2 + * + * @param str1 string to compare + * @param str2 string to compare + * @param n number of characters to compare + * @return true if two strings are equal, false if not + * If one string is null, while the other is zero-length string, + * it is considered as equal. + */ + static bool equalsN + ( + const char* str1 + , const char* str2 + , XMLSize_t n + ); + + /** Lexicographically compares str1 and str2 + * regions and returns true if they are equal, otherwise false. + * + * A substring of str1 is compared to a substring of + * str2. The result is true if these substrings represent + * identical character sequences. The substring of str1 + * to be compared begins at offset1 and has length charCount. The + * substring of str2 to be compared begins at offset2 and + * has length charCount. The result is false if and only if at least + * one of the following is true: + * offset1 is negative. + * offset2 is negative. + * offset1+charCount is greater than the length of str1. + * offset2+charCount is greater than the length of str2. + * There is some nonnegative integer k less than charCount such that: + * str1.charAt(offset1+k) != str2.charAt(offset2+k) + * + * @param str1 Null-terminated string to compare + * @param offset1 Starting offset of str1 + * @param str2 Null-terminated string to compare + * @param offset2 Starting offset of str2 + * @param charCount The number of characters to compare + * @return true if the specified subregion of str1 exactly + * matches the specified subregion of str2>; false + * otherwise. + */ + static bool regionMatches + ( + const XMLCh* const str1 + , const int offset1 + , const XMLCh* const str2 + , const int offset2 + , const XMLSize_t charCount + ); + + /** Lexicographically compares str1 and str2 + * regions without regard to case and returns true if they are equal, + * otherwise false. + * + * A substring of str1 is compared to a substring of + * str2. The result is true if these substrings represent + * identical character sequences. The substring of str1 + * to be compared begins at offset1 and has length charCount. The + * substring of str2 to be compared begins at offset2 and + * has length charCount. The result is false if and only if at least + * one of the following is true: + * offset1 is negative. + * offset2 is negative. + * offset1+charCount is greater than the length of str1. + * offset2+charCount is greater than the length of str2. + * There is some nonnegative integer k less than charCount such that: + * str1.charAt(offset1+k) != str2.charAt(offset2+k) + * + * @param str1 Null-terminated string to compare + * @param offset1 Starting offset of str1 + * @param str2 Null-terminated string to compare + * @param offset2 Starting offset of str2 + * @param charCount The number of characters to compare + * @return true if the specified subregion of str1 exactly + * matches the specified subregion of str2>; false + * otherwise. + */ + static bool regionIMatches + ( + const XMLCh* const str1 + , const int offset1 + , const XMLCh* const str2 + , const int offset2 + , const XMLSize_t charCount + ); + //@} + + /** @name String copy functions */ + //@{ + /** Copies src, including the terminating null character, to the + * location specified by target. + * + * No overflow checking is performed when strings are copied or appended. + * The behavior of strcpy is undefined if the source and destination strings + * overlap. + * + * @param target Destination string + * @param src Null-terminated source string + */ + static void copyString + ( + char* const target + , const char* const src + ); + + /** Copies src, including the terminating null character, to + * the location specified by target. + * + * No overflow checking is performed when strings are copied or appended. + * The behavior of copyString is undefined if the source and + * destination strings overlap. + * + * @param target Destination string + * @param src Null-terminated source string + */ + static void copyString + ( + XMLCh* const target + , const XMLCh* const src + ); + + /** Copies src, upto a fixed number of characters, to the + * location specified by target. + * + * No overflow checking is performed when strings are copied or appended. + * The behavior of copyNString is undefined if the source and + * destination strings overlap. + * + * @param target Destination string. The size of the buffer should + * atleast be 'maxChars + 1'. + * @param src Null-terminated source string + * @param maxChars The maximum number of characters to copy + */ + static bool copyNString + ( + XMLCh* const target + , const XMLCh* const src + , const XMLSize_t maxChars + ); + //@} + + /** @name Hash functions */ + //@{ + /** Hashes a string given a modulus + * + * @param toHash The string to hash + * @param hashModulus The divisor to be used for hashing + * @return Returns the hash value + */ + static XMLSize_t hash + ( + const char* const toHash + , const XMLSize_t hashModulus + ); + + /** Hashes a string given a modulus + * + * @param toHash The string to hash + * @param hashModulus The divisor to be used for hashing + * @return Returns the hash value + */ + static XMLSize_t hash + ( + const XMLCh* const toHash + , const XMLSize_t hashModulus + ); + + /** Hashes a string given a modulus taking a maximum number of characters + * as the limit + * + * @param toHash The string to hash + * @param numChars The maximum number of characters to consider for hashing + * @param hashModulus The divisor to be used for hashing + * @return Returns the hash value + */ + static XMLSize_t hashN + ( + const XMLCh* const toHash + , const XMLSize_t numChars + , const XMLSize_t hashModulus + ); + + //@} + + /** @name Search functions */ + //@{ + /** + * Provides the index of the first occurrence of a character within a string + * + * @param toSearch The string to search + * @param ch The character to search within the string + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int indexOf(const char* const toSearch, const char ch); + + /** + * Provides the index of the first occurrence of a character within a string + * + * @param toSearch The string to search + * @param ch The character to search within the string + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int indexOf(const XMLCh* const toSearch, const XMLCh ch); + + /** + * Provides the index of the first occurrence of a character within a string + * starting from a given index + * + * @param toSearch The string to search + * @param chToFind The character to search within the string + * @param fromIndex The index to start searching from + * @param manager The MemoryManager to use to allocate objects + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int indexOf + ( + const char* const toSearch + , const char chToFind + , const XMLSize_t fromIndex + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Provides the index of the first occurrence of a character within a string + * starting from a given index + * + * @param toSearch The string to search + * @param chToFind The character to search within the string + * @param fromIndex The index to start searching from + * @param manager The MemoryManager to use to allocate objects + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int indexOf + ( + const XMLCh* const toSearch + , const XMLCh chToFind + , const XMLSize_t fromIndex + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Provides the index of the last occurrence of a character within a string + * + * @param toSearch The string to search + * @param ch The character to search within the string + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int lastIndexOf(const char* const toSearch, const char ch); + + /** + * Provides the index of the last occurrence of a character within a string + * + * @param toSearch The string to search + * @param ch The character to search within the string + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int lastIndexOf(const XMLCh* const toSearch, const XMLCh ch); + + /** + * Provides the index of the last occurrence of a character within a string + * + * @param ch The character to search within the string + * @param toSearch The string to search + * @param toSearchLen The length of the string to search + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int lastIndexOf + ( + const XMLCh ch + , const XMLCh* const toSearch + , const XMLSize_t toSearchLen + ); + + /** + * Provides the index of the last occurrence of a character within a string + * starting backward from a given index + * + * @param toSearch The string to search + * @param chToFind The character to search within the string + * @param fromIndex The index to start backward search from + * @param manager The MemoryManager to use to allocate objects + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int lastIndexOf + ( + const char* const toSearch + , const char chToFind + , const XMLSize_t fromIndex + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Provides the index of the last occurrence of a character within a string + * starting backward from a given index + * + * @param toSearch The string to search + * @param ch The character to search within the string + * @param fromIndex The index to start backward search from + * @param manager The MemoryManager to use to allocate objects + * @return If found, returns the index of the character within the string, + * else returns -1. + */ + static int lastIndexOf + ( + const XMLCh* const toSearch + , const XMLCh ch + , const XMLSize_t fromIndex + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + /** @name Fixed size string movement */ + //@{ + /** Moves X number of chars + * @param targetStr The string to copy the chars to + * @param srcStr The string to copy the chars from + * @param count The number of chars to move + */ + static void moveChars + ( + XMLCh* const targetStr + , const XMLCh* const srcStr + , const XMLSize_t count + ); + + //@} + + /** @name Substring function */ + //@{ + /** Create a substring of a given string. The substring begins at the + * specified beginIndex and extends to the character at index + * endIndex - 1. + * @param targetStr The string to copy the chars to + * @param srcStr The string to copy the chars from + * @param startIndex beginning index, inclusive. + * @param endIndex the ending index, exclusive. + * @param manager The MemoryManager to use to allocate objects + */ + static void subString + ( + char* const targetStr + , const char* const srcStr + , const XMLSize_t startIndex + , const XMLSize_t endIndex + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Create a substring of a given string. The substring begins at the + * specified beginIndex and extends to the character at index + * endIndex - 1. + * @param targetStr The string to copy the chars to + * @param srcStr The string to copy the chars from + * @param startIndex beginning index, inclusive. + * @param endIndex the ending index, exclusive. + * @param manager The MemoryManager to use to allocate objects + */ + static void subString + ( + XMLCh* const targetStr + , const XMLCh* const srcStr + , const XMLSize_t startIndex + , const XMLSize_t endIndex + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Create a substring of a given string. The substring begins at the + * specified beginIndex and extends to the character at index + * endIndex - 1. + * @param targetStr The string to copy the chars to + * @param srcStr The string to copy the chars from + * @param startIndex beginning index, inclusive. + * @param endIndex the ending index, exclusive. + * @param srcStrLength the length of srcStr + * @param manager The MemoryManager to use to allocate objects + */ + static void subString + ( + XMLCh* const targetStr + , const XMLCh* const srcStr + , const XMLSize_t startIndex + , const XMLSize_t endIndex + , const XMLSize_t srcStrLength + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** @name Replication function */ + //@{ + /** Replicates a string + * NOTE: The returned buffer is allocated with the MemoryManager. It is the + * responsibility of the caller to delete it when not longer needed. + * You can call XMLString::release to release this returned buffer. + * + * @param toRep The string to replicate + * @param manager The MemoryManager to use to allocate the string + * @return Returns a pointer to the replicated string + * @see XMLString::release(char**, MemoryManager*) + */ + static char* replicate(const char* const toRep, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Replicates a string + * NOTE: The returned buffer is allocated with the MemoryManager. It is the + * responsibility of the caller to delete it when not longer needed. + * You can call XMLString::release to release this returned buffer. + * + * @param toRep The string to replicate + * @param manager The MemoryManager to use to allocate the string + * @return Returns a pointer to the replicated string + * @see XMLString::release(XMLCh**, MemoryManager*) + */ + static XMLCh* replicate(const XMLCh* const toRep, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + /** @name String query function */ + //@{ + /** Tells if the sub-string appears within a string at the beginning + * @param toTest The string to test + * @param prefix The sub-string that needs to be checked + * @return Returns true if the sub-string was found at the beginning of + * toTest, else false + */ + static bool startsWith + ( + const char* const toTest + , const char* const prefix + ); + + /** Tells if the sub-string appears within a string at the beginning + * @param toTest The string to test + * @param prefix The sub-string that needs to be checked + * @return Returns true if the sub-string was found at the beginning of + * toTest, else false + */ + static bool startsWith + ( + const XMLCh* const toTest + , const XMLCh* const prefix + ); + + /** Tells if the sub-string appears within a string at the beginning + * without regard to case + * + * @param toTest The string to test + * @param prefix The sub-string that needs to be checked + * @return Returns true if the sub-string was found at the beginning of + * toTest, else false + */ + static bool startsWithI + ( + const char* const toTest + , const char* const prefix + ); + + /** Tells if the sub-string appears within a string at the beginning + * without regard to case + * + * @param toTest The string to test + * @param prefix The sub-string that needs to be checked + * + * @return Returns true if the sub-string was found at the beginning + * of toTest, else false + */ + static bool startsWithI + ( + const XMLCh* const toTest + , const XMLCh* const prefix + ); + + /** Tells if the sub-string appears within a string at the end. + * @param toTest The string to test + * @param suffix The sub-string that needs to be checked + * @return Returns true if the sub-string was found at the end of + * toTest, else false + */ + static bool endsWith + ( + const XMLCh* const toTest + , const XMLCh* const suffix + ); + + + /** Tells if a string has any occurrence of any character of another + * string within itself + * @param toSearch The string to be searched + * @param searchList The string from which characters to be searched for are drawn + * @return Returns the pointer to the location where the first occurrence of any + * character from searchList is found, + * else returns 0 + */ + static const XMLCh* findAny + ( + const XMLCh* const toSearch + , const XMLCh* const searchList + ); + + /** Tells if a string has any occurrence of any character of another + * string within itself + * @param toSearch The string to be searched + * @param searchList The string from which characters to be searched for are drawn + * @return Returns the pointer to the location where the first occurrence of any + * character from searchList is found, + * else returns 0 + */ + static XMLCh* findAny + ( + XMLCh* const toSearch + , const XMLCh* const searchList + ); + + /** Tells if a string has pattern within itself + * @param toSearch The string to be searched + * @param pattern The pattern to be located within the string + * @return Returns index to the location where the pattern was + * found, else returns -1 + */ + static int patternMatch + ( + const XMLCh* const toSearch + , const XMLCh* const pattern + ); + + /** Get the length of the string + * @param src The string whose length is to be determined + * @return Returns the length of the string + */ + static XMLSize_t stringLen(const char* const src); + + /** Get the length of the string + * @param src The string whose length is to be determined + * @return Returns the length of the string + */ + static XMLSize_t stringLen(const XMLCh* const src); + + /** + * + * Checks whether an name is a valid NOTATION according to XML 1.0 + * @param name The string to check its NOTATION validity + * @param manager The memory manager + * @return Returns true if name is NOTATION valid, otherwise false + */ + static bool isValidNOTATION(const XMLCh* const name + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Checks whether an name is a valid EncName. + * @param name The string to check its EncName validity + * @return Returns true if name is EncName valid, otherwise false + */ + static bool isValidEncName(const XMLCh* const name); + + /** + * Checks whether a character is within [a-zA-Z]. + * @param theChar the character to check + * @return Returns true if within the range, otherwise false + */ + + static bool isAlpha(XMLCh const theChar); + + /** + * Checks whether a character is within [0-9]. + * @param theChar the character to check + * @return Returns true if within the range, otherwise false + */ + static bool isDigit(XMLCh const theChar); + + /** + * Checks whether a character is within [0-9a-zA-Z]. + * @param theChar the character to check + * @return Returns true if within the range, otherwise false + */ + static bool isAlphaNum(XMLCh const theChar); + + /** + * Checks whether a character is within [0-9a-fA-F]. + * @param theChar the character to check + * @return Returns true if within the range, otherwise false + */ + static bool isHex(XMLCh const theChar); + + /** Find is the string appears in the enum list + * @param toFind the string to be found + * @param enumList the list + * return true if found + */ + static bool isInList(const XMLCh* const toFind, const XMLCh* const enumList); + + //@} + + /** @name Conversion functions */ + //@{ + + /** Converts size to a text string based a given radix + * + * @param toFormat The size to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void sizeToText + ( + const XMLSize_t toFormat + , char* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts size to a text string based a given radix + * + * @param toFormat The size to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void sizeToText + ( + const XMLSize_t toFormat + , XMLCh* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const unsigned int toFormat + , char* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const unsigned int toFormat + , XMLCh* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const unsigned long toFormat + , char* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const unsigned long toFormat + , XMLCh* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const int toFormat + , char* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const int toFormat + , XMLCh* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const long toFormat + , char* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts binary data to a text string based a given radix + * + * @param toFormat The number to convert + * @param toFill The buffer that will hold the output on return. The + * size of this buffer should at least be 'maxChars + 1'. + * @param maxChars The maximum number of output characters that can be + * accepted. If the result will not fit, it is an error. + * @param radix The radix of the input data, based on which the conversion + * @param manager The MemoryManager to use to allocate objects + * will be done + */ + static void binToText + ( + const long toFormat + , XMLCh* const toFill + , const XMLSize_t maxChars + , const unsigned int radix + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Converts a string of decimal chars to a binary value + * + * Note that leading and trailing whitespace is legal and will be ignored + * but the remainder must be all decimal digits. + * + * @param toConvert The string of digits to convert + * @param toFill The unsigned int value to fill with the converted + * value. + * @param manager The MemoryManager to use to allocate objects + */ + static bool textToBin + ( + const XMLCh* const toConvert + , unsigned int& toFill + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Converts a string of decimal chars to a binary value + * + * Note that leading and trailing whitespace is legal and will be ignored, + * + * Only one and either of (+,-) after the leading whitespace, before + * any other characters are allowed. + * + * but the remainder must be all decimal digits. + * + * @param toConvert The string of digits to convert + * @param manager The MemoryManager to use to allocate objects + */ + static int parseInt + ( + const XMLCh* const toConvert + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Cut leading chars from a string + * + * @param toCutFrom The string to cut chars from + * @param count The count of leading chars to cut + */ + static void cut + ( + XMLCh* const toCutFrom + , const XMLSize_t count + ); + + /** Transcodes a string to native code-page + * + * NOTE: The returned buffer is dynamically allocated and is the + * responsibility of the caller to delete it when not longer needed. + * You can call XMLString::release to release this returned buffer. + * + * @param toTranscode The string to be transcoded + * @param manager The MemoryManager to use to allocate objects + * @return Returns the transcoded string + * @see XMLString::release(XMLCh**, MemoryManager*) + */ + static char* transcode + ( + const XMLCh* const toTranscode + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Transcodes a string to native code-page (DEPRECATED) + * + * Be aware that when transcoding to an external encoding, that each + * Unicode char can create multiple output bytes. So you cannot assume + * a one to one correspondence of input chars to output bytes. + * + * @param toTranscode The string tobe transcoded + * @param toFill The buffer that is filled with the transcoded value. + * The size of this buffer should atleast be 'maxChars + 1'. + * @param maxChars The maximum number of bytes that the output + * buffer can hold (not including the null, which is why + * toFill should be at least maxChars+1.). + * @param manager The MemoryManager to use to allocate objects + * @return Returns true if successful, false if there was an error + */ + static bool transcode + ( + const XMLCh* const toTranscode + , char* const toFill + , const XMLSize_t maxChars + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Transcodes a string to native code-page + * + * NOTE: The returned buffer is dynamically allocated and is the + * responsibility of the caller to delete it when not longer needed. + * You can call XMLString::release to release this returned buffer. + * + * @param toTranscode The string to be transcoded + * @param manager The MemoryManager to use to allocate objects + * @return Returns the transcoded string + * @see XMLString::release(char**, MemoryManager*) + */ + static XMLCh* transcode + ( + const char* const toTranscode + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Transcodes a string to native code-page (DEPRECATED) + * @param toTranscode The string tobe transcoded + * @param toFill The buffer that is filled with the transcoded value. + * The size of this buffer should atleast be 'maxChars + 1'. + * @param maxChars The maximum number of characters that the output + * buffer can hold (not including the null, which is why + * toFill should be at least maxChars+1.). + * @param manager The MemoryManager to use to allocate objects + * @return Returns true if successful, false if there was an error + */ + static bool transcode + ( + const char* const toTranscode + , XMLCh* const toFill + , const XMLSize_t maxChars + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Trims off extra space characters from the start and end of the string, + * moving the non-space string content back to the start. + * @param toTrim The string to be trimmed. On return this contains the + * trimmed string + */ + static void trim(char* const toTrim); + + /** Trims off extra space characters from the start and end of the string, + * moving the non-space string content back to the start. + * @param toTrim The string to be trimmed. On return this contains + * the trimmed string + */ + static void trim(XMLCh* const toTrim); + + /** Break a string into tokens with space as delimiter, and + * stored in a string vector. The caller owns the string vector + * that is returned, and is responsible for deleting it. + * @param tokenizeSrc String to be tokenized + * @param manager The MemoryManager to use to allocate objects + * @return a vector of all the tokenized string + */ + static BaseRefVectorOf* tokenizeString(const XMLCh* const tokenizeSrc + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Break a string into tokens with the given character as delimiter, and + * stored in a string vector. The caller owns the string vector + * that is returned, and is responsible for deleting it. + * @param tokenizeSrc String to be tokenized + * @param delimiter Delimiter character + * @param manager The MemoryManager to use to allocate objects + * @return a vector of all the tokenized string + */ + static BaseRefVectorOf* tokenizeString(const XMLCh* const tokenizeSrc + , XMLCh delimiter + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + //@} + + /** @name Formatting functions */ + //@{ + /** Creates a UName from a URI and base name. It is in the form + * {url}name, and is commonly used internally to represent fully + * qualified names when namespaces are enabled. + * + * @param pszURI The URI part of the name + * @param pszName The base part of the name + * @return Returns the complete formatted UName + */ + static XMLCh* makeUName + ( + const XMLCh* const pszURI + , const XMLCh* const pszName + ); + + /** + * Internal function to perform token replacement for strings. + * + * @param errText The text (NULL terminated) where the replacement + * is to be done. The size of this buffer should be + * 'maxChars + 1' to account for the final NULL. + * @param maxChars The size of the output buffer, i.e. the maximum + * number of characters that it will hold. If the result is + * larger, it will be truncated. + * @param text1 Replacement text-one + * @param text2 Replacement text-two + * @param text3 Replacement text-three + * @param text4 Replacement text-four + * @param manager The MemoryManager to use to allocate objects + * @return Returns the count of characters that are outputted + */ + static XMLSize_t replaceTokens + ( + XMLCh* const errText + , const XMLSize_t maxChars + , const XMLCh* const text1 + , const XMLCh* const text2 + , const XMLCh* const text3 + , const XMLCh* const text4 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Converts a string to uppercase + * @param toUpperCase The string which needs to be converted to uppercase. + * On return, this buffer also holds the converted uppercase string + */ + static void upperCase(XMLCh* const toUpperCase); + + /** Converts a string to uppercase + * The routine only uppercases A to Z (other characters not changed). + * @param toUpperCase The string which needs to be converted to uppercase. + * On return, this buffer also holds the converted uppercase string + */ + static void upperCaseASCII(XMLCh* const toUpperCase); + + /** Converts a string to lowercase + * @param toLowerCase The string which needs to be converted to lowercase. + * On return, this buffer also holds the converted lowercase string + */ + static void lowerCase(XMLCh* const toLowerCase); + + /** Converts a string to lowercase + * The routine only lowercases a to z (other characters not changed). + * @param toLowerCase The string which needs to be converted to lowercase. + * On return, this buffer also holds the converted lowercase string + */ + static void lowerCaseASCII(XMLCh* const toLowerCase); + + /** Check if string is WhiteSpace:replace + * @param toCheck The string which needs to be checked. + */ + static bool isWSReplaced(const XMLCh* const toCheck); + + /** Check if string is WhiteSpace:collapse + * @param toCheck The string which needs to be checked. + */ + static bool isWSCollapsed(const XMLCh* const toCheck); + + /** Replace whitespace + * @param toConvert The string which needs to be whitespace replaced. + * On return , this buffer also holds the converted string + * @param manager The MemoryManager to use to allocate objects + */ + static void replaceWS(XMLCh* toConvert + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Collapse whitespace + * @param toConvert The string which needs to be whitespace collapsed. + * On return , this buffer also holds the converted string + * @param manager The MemoryManager to use to allocate objects + */ + static void collapseWS(XMLCh* toConvert + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** Remove whitespace + * @param toConvert The string which needs to be whitespace removed. + * On return , this buffer also holds the converted string + * @param manager The MemoryManager to use to allocate objects + */ + static void removeWS(XMLCh* toConvert + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + + /** Remove character + * @param srcString The string + * @param toRemove The character needs to be removed from the string + * @param dstBuffer The buffer containing the result + */ + static void removeChar(const XMLCh* const srcString + , const XMLCh& toRemove + , XMLBuffer& dstBuffer); + + /** + * Fixes a platform dependent absolute path filename to standard URI form. + * 1. Windows: fix 'x:' to 'file:///x:' and convert any backslash to forward slash + * 2. UNIX: fix '/blah/blahblah' to 'file:///blah/blahblah' + * @param str The string that has the absolute path filename + * @param target The target string pre-allocated to store the fixed uri + */ + static void fixURI(const XMLCh* const str, XMLCh* const target); + + //@} + /** @name String Memory Management functions */ + //@{ + /** + * Release the parameter string that was allocated by XMLString::transcode and XMLString::replicate. + * The implementation will call MemoryManager::deallocate and then turn the string to a null pointer. + * + * @param buf The string to be deleted and become a null pointer. + * @param manager The MemoryManager used to allocate the string + */ + static void release + ( + char** buf + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Release the parameter string that was allocated by XMLString::transcode and XMLString::replicate. + * The implementation will call MemoryManager::deallocate and then turn the string to a null pointer. + * + * @param buf The string to be deleted and become a null pointer. + * @param manager The MemoryManager used to allocate the string + */ + static void release + ( + XMLCh** buf + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + //@} + + +private : + + /** @name Constructors and Destructor */ + //@{ + /** Unimplemented default constructor */ + XMLString(); + /** Unimplemented destructor */ + ~XMLString(); + //@} + + + /** @name Initialization */ + //@{ + /** Init/Term methods called from XMLPlatformUtils class */ + static void initString(XMLLCPTranscoder* const defToUse, + MemoryManager* const manager); + static void termString(); + //@} + + /** + * Called by regionMatches/regionIMatches to validate that we + * have a valid input + */ + static bool validateRegion(const XMLCh* const str1, const int offset1, + const XMLCh* const str2, const int offset2, + const XMLSize_t charCount); + + static MemoryManager* fgMemoryManager; + + friend class XMLPlatformUtils; +}; + + +// --------------------------------------------------------------------------- +// Inline some methods that are either just passthroughs to other string +// methods, or which are key for performance. +// --------------------------------------------------------------------------- +inline void XMLString::moveChars( XMLCh* const targetStr + , const XMLCh* const srcStr + , const XMLSize_t count) +{ + memmove(targetStr, srcStr, count * sizeof(XMLCh)); +} + +inline XMLSize_t XMLString::stringLen(const XMLCh* const src) +{ + if (src == 0) + return 0; + + const XMLCh* pszTmp = src; + + while (*pszTmp++) ; + + return (pszTmp - src - 1); +} + +inline XMLCh* XMLString::replicate(const XMLCh* const toRep, + MemoryManager* const manager) +{ + // If a null string, return a null string! + XMLCh* ret = 0; + if (toRep) + { + const XMLSize_t len = stringLen(toRep); + ret = (XMLCh*) manager->allocate((len+1) * sizeof(XMLCh)); //new XMLCh[len + 1]; + memcpy(ret, toRep, (len + 1) * sizeof(XMLCh)); + } + return ret; +} + +inline bool XMLString::startsWith( const XMLCh* const toTest + , const XMLCh* const prefix) +{ + return (compareNString(toTest, prefix, stringLen(prefix)) == 0); +} + +inline bool XMLString::startsWithI( const XMLCh* const toTest + , const XMLCh* const prefix) +{ + return (compareNIString(toTest, prefix, stringLen(prefix)) == 0); +} + +inline bool XMLString::endsWith(const XMLCh* const toTest, + const XMLCh* const suffix) +{ + + XMLSize_t suffixLen = XMLString::stringLen(suffix); + + return regionMatches(toTest, (int)(XMLString::stringLen(toTest) - suffixLen), + suffix, 0, suffixLen); +} + +inline bool XMLString::validateRegion(const XMLCh* const str1, + const int offset1, + const XMLCh* const str2, + const int offset2, + const XMLSize_t charCount) +{ + + if (offset1 < 0 || offset2 < 0 || + (offset1 + charCount) > XMLString::stringLen(str1) || + (offset2 + charCount) > XMLString::stringLen(str2) ) + return false; + + return true; +} + +inline bool XMLString::equals( const XMLCh* str1 + , const XMLCh* str2) +{ + if (str1 == str2) + return true; + + if (str1 == 0 || str2 == 0) + return ((!str1 || !*str1) && (!str2 || !*str2)); + + while (*str1) + if(*str1++ != *str2++) // they are different (or str2 is shorter and we hit the NULL) + return false; + + // either both ended (and *str2 is 0 too), or str2 is longer + return (*str2==0); +} + +inline bool XMLString::equalsN(const XMLCh* str1, + const XMLCh* str2, + XMLSize_t n) +{ + if (str1 == str2 || n == 0) + return true; + + if (str1 == 0 || str2 == 0) + return ((!str1 || !*str1) && (!str2 || !*str2)); + + for (; n != 0 && *str1 && *str2; --n, ++str1, ++str2) + if(*str1 != *str2) + break; + + return n == 0 || *str1 == *str2; // either equal or both ended premat. +} + +inline bool XMLString::equals( const char* str1 + , const char* str2) +{ + if (str1 == str2) + return true; + + if (str1 == 0 || str2 == 0) + return ((!str1 || !*str1) && (!str2 || !*str2)); + + while (*str1) + if(*str1++ != *str2++) // they are different (or str2 is shorter and we hit the NULL) + return false; + + // either both ended (and *str2 is 0 too), or str2 is longer + return (*str2==0); +} + +inline bool XMLString::equalsN(const char* str1, + const char* str2, + XMLSize_t n) +{ + if (str1 == str2 || n == 0) + return true; + + if (str1 == 0 || str2 == 0) + return ((!str1 || !*str1) && (!str2 || !*str2)); + + for (; n != 0 && *str1 && *str2; --n, ++str1, ++str2) + if(*str1 != *str2) + break; + + return n == 0 || *str1 == *str2; // either equal or both ended premat. +} + +inline int XMLString::lastIndexOf(const XMLCh* const toSearch, const XMLCh ch) +{ + return XMLString::lastIndexOf(ch, toSearch, stringLen(toSearch)); +} + +inline XMLSize_t XMLString::hash(const XMLCh* const tohash + , const XMLSize_t hashModulus) +{ + if (tohash == 0 || *tohash == 0) + return 0; + + const XMLCh* curCh = tohash; + XMLSize_t hashVal = (XMLSize_t)(*curCh++); + + while (*curCh) + hashVal = (hashVal * 38) + (hashVal >> 24) + (XMLSize_t)(*curCh++); + + // Divide by modulus + return hashVal % hashModulus; +} + +inline XMLSize_t XMLString::hashN(const XMLCh* const tohash + , const XMLSize_t n + , const XMLSize_t hashModulus) +{ + if (tohash == 0 || n == 0) + return 0; + + const XMLCh* curCh = tohash; + XMLSize_t hashVal = (XMLSize_t)(*curCh++); + + for(XMLSize_t i=0;i> 24) + (XMLSize_t)(*curCh++); + + // Divide by modulus + return hashVal % hashModulus; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLStringTokenizer.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLStringTokenizer.hpp new file mode 100644 index 000000000000..f948bf607706 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLStringTokenizer.hpp @@ -0,0 +1,218 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLSTRINGTOKENIZER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLSTRINGTOKENIZER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * The string tokenizer class breaks a string into tokens. + * + * The XMLStringTokenizer methods do not distinguish among identifiers, + * numbers, and quoted strings, nor do they recognize and skip comments + * + * A XMLStringTokenizer object internally maintains a current position within + * the string to be tokenized. Some operations advance this current position + * past the characters processed. + */ + + + class XMLUTIL_EXPORT XMLStringTokenizer :public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constructors + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * Constructs a string tokenizer for the specified string. The tokenizer + * uses the default delimiter set, which is "\t\n\r\f": the space + * character, the tab character, the newline character, the + * carriage-return character, and the form-feed character. Delimiter + * characters themselves will not be treated as tokens. + * + * @param srcStr The string to be parsed. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * + */ + XMLStringTokenizer(const XMLCh* const srcStr, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Constructs a string tokenizer for the specified string. The characters + * in the delim argument are the delimiters for separating tokens. + * Delimiter characters themselves will not be treated as tokens. + * + * @param srcStr The string to be parsed. + * @param delim The set of delimiters. + * @param manager Pointer to the memory manager to be used to + * allocate objects. + */ + XMLStringTokenizer(const XMLCh* const srcStr + , const XMLCh* const delim + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + // ----------------------------------------------------------------------- + // Public Destructor + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + + ~XMLStringTokenizer(); + + //@} + + // ----------------------------------------------------------------------- + // Management methods + // ----------------------------------------------------------------------- + /** @name Management Function */ + //@{ + + /** + * Tests if there are more tokens available from this tokenizer's string. + * + * Returns true if and only if there is at least one token in the string + * after the current position; false otherwise. + */ + bool hasMoreTokens(); + + /** + * Calculates the number of times that this tokenizer's nextToken method + * can be called to return a valid token. The current position is not + * advanced. + * + * Returns the number of tokens remaining in the string using the current + * delimiter set. + */ + unsigned int countTokens(); + + /** + * Returns the next token from this string tokenizer. + * + * Function allocated, function managed (fafm). The calling function + * does not need to worry about deleting the returned pointer. + */ + XMLCh* nextToken(); + + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLStringTokenizer(const XMLStringTokenizer&); + XMLStringTokenizer& operator=(const XMLStringTokenizer&); + + // ----------------------------------------------------------------------- + // CleanUp methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + bool isDelimeter(const XMLCh ch); + + // ----------------------------------------------------------------------- + // Private data members + // + // fOffset + // The current position in the parsed string. + // + // fStringLen + // The length of the string parsed (for convenience). + // + // fString + // The string to be parsed + // + // fDelimeters + // A set of delimiter characters + // + // fTokens + // A vector of the token strings + // ----------------------------------------------------------------------- + XMLSize_t fOffset; + XMLSize_t fStringLen; + XMLCh* fString; + const XMLCh* fDelimeters; + RefArrayVectorOf* fTokens; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// XMLStringTokenizer: Helper methods +// --------------------------------------------------------------------------- +inline bool XMLStringTokenizer::isDelimeter(const XMLCh ch) { + + return XMLString::indexOf(fDelimeters, ch) == -1 ? false : true; +} + + +// --------------------------------------------------------------------------- +// XMLStringTokenizer: Management methods +// --------------------------------------------------------------------------- +inline unsigned int XMLStringTokenizer::countTokens() { + + if (fStringLen == 0) + return 0; + + unsigned int tokCount = 0; + bool inToken = false; + + for (XMLSize_t i= fOffset; i< fStringLen; i++) { + + if (isDelimeter(fString[i])) { + + if (inToken) { + inToken = false; + } + + continue; + } + + if (!inToken) { + + tokCount++; + inToken = true; + } + + } // end for + + return tokCount; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XMLStringTokenizer.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLUCS4Transcoder.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLUCS4Transcoder.hpp new file mode 100644 index 000000000000..2450f9ba8de2 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLUCS4Transcoder.hpp @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLUCS4TRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLUCS4TRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple UCS4 transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +class XMLUTIL_EXPORT XMLUCS4Transcoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLUCS4Transcoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , const bool swapped + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLUCS4Transcoder(); + + + // ----------------------------------------------------------------------- + // Implementation of the XMLTranscoder interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLUCS4Transcoder(const XMLUCS4Transcoder&); + XMLUCS4Transcoder& operator=(const XMLUCS4Transcoder&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fSwapped + // This tells us if our input is going to be in the same endianness + // as the local host or swapped. + // ----------------------------------------------------------------------- + bool fSwapped; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLURL.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLURL.hpp new file mode 100644 index 000000000000..e60c7dc45b73 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLURL.hpp @@ -0,0 +1,292 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLURL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLURL_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class BinInputStream; + +// +// This class supports file, http, and ftp style URLs. All others are +// rejected +// +class XMLUTIL_EXPORT XMLURL : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Class types + // + // And they must remain in this order because they are indexes into an + // array internally! + // ----------------------------------------------------------------------- + enum Protocols + { + File + , HTTP + , FTP + , HTTPS + + , Protocols_Count + , Unknown + }; + + + // ----------------------------------------------------------------------- + // Public static methods + // ----------------------------------------------------------------------- + static Protocols lookupByName(const XMLCh* const protoName); + static bool parse(const XMLCh* const urlText, XMLURL& xmlURL); + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XMLURL(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + XMLURL + ( + const XMLCh* const baseURL + , const XMLCh* const relativeURL + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + XMLURL + ( + const XMLCh* const baseURL + , const char* const relativeURL + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + XMLURL + ( + const XMLURL& baseURL + , const XMLCh* const relativeURL + ); + XMLURL + ( + const XMLURL& baseURL + , const char* const relativeURL + ); + XMLURL + ( + const XMLCh* const urlText + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + XMLURL + ( + const char* const urlText + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + XMLURL(const XMLURL& toCopy); + virtual ~XMLURL(); + + + // ----------------------------------------------------------------------- + // Operators + // ----------------------------------------------------------------------- + XMLURL& operator=(const XMLURL& toAssign); + bool operator==(const XMLURL& toCompare) const; + bool operator!=(const XMLURL& toCompare) const; + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const XMLCh* getFragment() const; + const XMLCh* getHost() const; + const XMLCh* getPassword() const; + const XMLCh* getPath() const; + unsigned int getPortNum() const; + Protocols getProtocol() const; + const XMLCh* getProtocolName() const; + const XMLCh* getQuery() const; + const XMLCh* getURLText() const; + const XMLCh* getUser() const; + MemoryManager* getMemoryManager() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setURL(const XMLCh* const urlText); + void setURL + ( + const XMLCh* const baseURL + , const XMLCh* const relativeURL + ); + void setURL + ( + const XMLURL& baseURL + , const XMLCh* const relativeURL + ); + // a version of setURL that doesn't throw malformed url exceptions + bool setURL( + const XMLCh* const baseURL + , const XMLCh* const relativeURL + , XMLURL& xmlURL); + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + bool isRelative() const; + bool hasInvalidChar() const; + BinInputStream* makeNewStream() const; + void makeRelativeTo(const XMLCh* const baseURLText); + void makeRelativeTo(const XMLURL& baseURL); + + +private: + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void buildFullText(); + void cleanUp(); + bool conglomerateWithBase(const XMLURL& baseURL, bool useExceptions=true); + void parse + ( + const XMLCh* const urlText + ); + + + // ----------------------------------------------------------------------- + // Data members + // + // fFragment + // The fragment part of the URL, if any. If none, its a null. + // + // fHost + // The host part of the URL that was parsed out. This one will often + // be null (or "localhost", which also means the current machine.) + // + // fPassword + // The password found, if any. If none then its a null. + // + // fPath + // The path part of the URL that was parsed out, if any. If none, + // then its a null. + // + // fPortNum + // The port that was indicated in the URL. If no port was provided + // explicitly, then its left zero. + // + // fProtocol + // Indicates the type of the URL's source. The text of the prefix + // can be gotten from this. + // + // fQuery + // The query part of the URL, if any. If none, then its a null. + // + // fUser + // The username found, if any. If none, then its a null. + // + // fURLText + // This is a copy of the URL text, after it has been taken apart, + // made relative if needed, canonicalized, and then put back + // together. Its only created upon demand. + // + // fHasInvalidChar + // This indicates if the URL Text contains invalid characters as per + // RFC 2396 standard. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + XMLCh* fFragment; + XMLCh* fHost; + XMLCh* fPassword; + XMLCh* fPath; + unsigned int fPortNum; + Protocols fProtocol; + XMLCh* fQuery; + XMLCh* fUser; + XMLCh* fURLText; + bool fHasInvalidChar; +}; + + +// --------------------------------------------------------------------------- +// XMLURL: Public operators +// --------------------------------------------------------------------------- +inline bool XMLURL::operator!=(const XMLURL& toCompare) const +{ + return !operator==(toCompare); +} + + +// --------------------------------------------------------------------------- +// XMLURL: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh* XMLURL::getFragment() const +{ + return fFragment; +} + +inline const XMLCh* XMLURL::getHost() const +{ + return fHost; +} + +inline const XMLCh* XMLURL::getPassword() const +{ + return fPassword; +} + +inline const XMLCh* XMLURL::getPath() const +{ + return fPath; +} + +inline XMLURL::Protocols XMLURL::getProtocol() const +{ + return fProtocol; +} + +inline const XMLCh* XMLURL::getQuery() const +{ + return fQuery; +} + +inline const XMLCh* XMLURL::getUser() const +{ + return fUser; +} + +inline const XMLCh* XMLURL::getURLText() const +{ + // + // Fault it in if not already. Since this is a const method and we + // can't use mutable members due the compilers we have to support, + // we have to cast off the constness. + // + if (!fURLText) + ((XMLURL*)this)->buildFullText(); + + return fURLText; +} + +inline MemoryManager* XMLURL::getMemoryManager() const +{ + return fMemoryManager; +} + +MakeXMLException(MalformedURLException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLUTF16Transcoder.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLUTF16Transcoder.hpp new file mode 100644 index 000000000000..a2478288ed2d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLUTF16Transcoder.hpp @@ -0,0 +1,105 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLUTF16TRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLUTF16TRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple UTF16 transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +class XMLUTIL_EXPORT XMLUTF16Transcoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLUTF16Transcoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , const bool swapped + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLUTF16Transcoder(); + + + // ----------------------------------------------------------------------- + // Implementation of the XMLTranscoder interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLUTF16Transcoder(const XMLUTF16Transcoder&); + XMLUTF16Transcoder& operator=(const XMLUTF16Transcoder&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fSwapped + // Indicates whether the encoding is of the opposite endianness from + // the local host. + // ----------------------------------------------------------------------- + bool fSwapped; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLUTF8Transcoder.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLUTF8Transcoder.hpp new file mode 100644 index 000000000000..053b31ee5aa9 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLUTF8Transcoder.hpp @@ -0,0 +1,118 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLUTF8TRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLUTF8TRANSCODER_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class provides an implementation of the XMLTranscoder interface +// for a simple UTF8 transcoder. The parser does some encodings +// intrinsically without depending upon external transcoding services. +// To make everything more orthogonal, we implement these internal +// transcoders using the same transcoder abstraction as the pluggable +// transcoding services do. +// +class XMLUTIL_EXPORT XMLUTF8Transcoder : public XMLTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLUTF8Transcoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLUTF8Transcoder(); + + + // ----------------------------------------------------------------------- + // Implementation of the XMLTranscoder interface + // ----------------------------------------------------------------------- + virtual XMLSize_t transcodeFrom + ( + const XMLByte* const srcData + , const XMLSize_t srcCount + , XMLCh* const toFill + , const XMLSize_t maxChars + , XMLSize_t& bytesEaten + , unsigned char* const charSizes + ); + + virtual XMLSize_t transcodeTo + ( + const XMLCh* const srcData + , const XMLSize_t srcCount + , XMLByte* const toFill + , const XMLSize_t maxBytes + , XMLSize_t& charsEaten + , const UnRepOpts options + ); + + virtual bool canTranscodeTo + ( + const unsigned int toCheck + ); + + +private : + + inline void checkTrailingBytes( + const XMLByte toCheck + , const unsigned int trailingBytes + , const unsigned int position + ) const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLUTF8Transcoder(const XMLUTF8Transcoder&); + XMLUTF8Transcoder& operator=(const XMLUTF8Transcoder&); +}; + +inline +void XMLUTF8Transcoder::checkTrailingBytes(const XMLByte toCheck + , const unsigned int trailingBytes + , const unsigned int position) const +{ + + if((toCheck & 0xC0) != 0x80) + { + char len[2] = {(char)(trailingBytes+0x31), 0}; + char pos[2] = {(char)(position+0x31), 0}; + char byte[2] = {(char)toCheck,0}; + ThrowXMLwithMemMgr3(UTFDataFormatException, XMLExcepts::UTF8_FormatError, pos, byte, len, getMemoryManager()); + } + +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLUni.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLUni.hpp new file mode 100644 index 000000000000..078efff33bec --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLUni.hpp @@ -0,0 +1,343 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + + +// --------------------------------------------------------------------------- +// This file contains the grunt work constants for Unicode characters and +// common Unicode constant strings. These cannot be created normally because +// we have to compile on systems that cannot do the L"" style prefix. So +// they must be created as constant values for Unicode code points and the +// strings built up as arrays of those constants. +// --------------------------------------------------------------------------- + +#if !defined(XERCESC_INCLUDE_GUARD_XMLUNI_HPP) +#define XERCESC_INCLUDE_GUARD_XMLUNI_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Ignore warning about private constructor +#if defined __GNUC__ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5)) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wctor-dtor-privacy" +#endif + +class XMLUTIL_EXPORT XMLUni +{ +public : + // ----------------------------------------------------------------------- + // These are constant strings that are common in XML data. Because + // of the limitation of the compilers we have to work with, these are + // done as arrays of XMLCh characters, not as constant strings. + // ----------------------------------------------------------------------- + static const XMLCh fgAnyString[]; + static const XMLCh fgAttListString[]; + static const XMLCh fgCommentString[]; + static const XMLCh fgCDATAString[]; + static const XMLCh fgDefaultString[]; + static const XMLCh fgDocTypeString[]; + static const XMLCh fgEBCDICEncodingString[]; + static const XMLCh fgElemString[]; + static const XMLCh fgEmptyString[]; + static const XMLCh fgEncodingString[]; + static const XMLCh fgEntitString[]; + static const XMLCh fgEntityString[]; + static const XMLCh fgEntitiesString[]; + static const XMLCh fgEnumerationString[]; + static const XMLCh fgExceptDomain[]; + static const XMLCh fgFixedString[]; + static const XMLCh fgIBM037EncodingString[]; + static const XMLCh fgIBM037EncodingString2[]; + static const XMLCh fgIBM1047EncodingString[]; + static const XMLCh fgIBM1047EncodingString2[]; + static const XMLCh fgIBM1140EncodingString[]; + static const XMLCh fgIBM1140EncodingString2[]; + static const XMLCh fgIBM1140EncodingString3[]; + static const XMLCh fgIBM1140EncodingString4[]; + static const XMLCh fgIESString[]; + static const XMLCh fgIDString[]; + static const XMLCh fgIDRefString[]; + static const XMLCh fgIDRefsString[]; + static const XMLCh fgImpliedString[]; + static const XMLCh fgIgnoreString[]; + static const XMLCh fgIncludeString[]; + static const XMLCh fgISO88591EncodingString[]; + static const XMLCh fgISO88591EncodingString2[]; + static const XMLCh fgISO88591EncodingString3[]; + static const XMLCh fgISO88591EncodingString4[]; + static const XMLCh fgISO88591EncodingString5[]; + static const XMLCh fgISO88591EncodingString6[]; + static const XMLCh fgISO88591EncodingString7[]; + static const XMLCh fgISO88591EncodingString8[]; + static const XMLCh fgISO88591EncodingString9[]; + static const XMLCh fgISO88591EncodingString10[]; + static const XMLCh fgISO88591EncodingString11[]; + static const XMLCh fgISO88591EncodingString12[]; + static const XMLCh fgLocalHostString[]; + static const XMLCh fgNoString[]; + static const XMLCh fgNotationString[]; + static const XMLCh fgNDATAString[]; + static const XMLCh fgNmTokenString[]; + static const XMLCh fgNmTokensString[]; + static const XMLCh fgPCDATAString[]; + static const XMLCh fgPIString[]; + static const XMLCh fgPubIDString[]; + static const XMLCh fgRefString[]; + static const XMLCh fgRequiredString[]; + static const XMLCh fgStandaloneString[]; + static const XMLCh fgVersion1[]; + static const XMLCh fgVersion1_0[]; + static const XMLCh fgVersion1_1[]; + static const XMLCh fgSysIDString[]; + static const XMLCh fgUnknownURIName[]; + static const XMLCh fgUCS4EncodingString[]; + static const XMLCh fgUCS4EncodingString2[]; + static const XMLCh fgUCS4EncodingString3[]; + static const XMLCh fgUCS4EncodingString4[]; + static const XMLCh fgUCS4EncodingString5[]; + static const XMLCh fgUCS4BEncodingString[]; + static const XMLCh fgUCS4BEncodingString2[]; + static const XMLCh fgUCS4LEncodingString[]; + static const XMLCh fgUCS4LEncodingString2[]; + static const XMLCh fgUSASCIIEncodingString[]; + static const XMLCh fgUSASCIIEncodingString2[]; + static const XMLCh fgUSASCIIEncodingString3[]; + static const XMLCh fgUSASCIIEncodingString4[]; + static const XMLCh fgUTF8EncodingString[]; + static const XMLCh fgUTF8EncodingString2[]; + static const XMLCh fgUTF16EncodingString[]; + static const XMLCh fgUTF16EncodingString2[]; + static const XMLCh fgUTF16EncodingString3[]; + static const XMLCh fgUTF16EncodingString4[]; + static const XMLCh fgUTF16EncodingString5[]; + static const XMLCh fgUTF16EncodingString6[]; + static const XMLCh fgUTF16EncodingString7[]; + static const XMLCh fgUTF16BEncodingString[]; + static const XMLCh fgUTF16BEncodingString2[]; + static const XMLCh fgUTF16LEncodingString[]; + static const XMLCh fgUTF16LEncodingString2[]; + static const XMLCh fgVersionString[]; + static const XMLCh fgValidityDomain[]; + static const XMLCh fgWin1252EncodingString[]; + static const XMLCh fgXMLChEncodingString[]; + static const XMLCh fgXMLDOMMsgDomain[]; + static const XMLCh fgXMLString[]; + static const XMLCh fgXMLStringSpace[]; + static const XMLCh fgXMLStringHTab[]; + static const XMLCh fgXMLStringCR[]; + static const XMLCh fgXMLStringLF[]; + static const XMLCh fgXMLStringSpaceU[]; + static const XMLCh fgXMLStringHTabU[]; + static const XMLCh fgXMLStringCRU[]; + static const XMLCh fgXMLStringLFU[]; + static const XMLCh fgXMLDeclString[]; + static const XMLCh fgXMLDeclStringSpace[]; + static const XMLCh fgXMLDeclStringHTab[]; + static const XMLCh fgXMLDeclStringLF[]; + static const XMLCh fgXMLDeclStringCR[]; + static const XMLCh fgXMLDeclStringSpaceU[]; + static const XMLCh fgXMLDeclStringHTabU[]; + static const XMLCh fgXMLDeclStringLFU[]; + static const XMLCh fgXMLDeclStringCRU[]; + static const XMLCh fgXMLNSString[]; + static const XMLCh fgXMLNSColonString[]; + static const XMLCh fgXMLNSURIName[]; + static const XMLCh fgXMLErrDomain[]; + static const XMLCh fgXMLURIName[]; + static const XMLCh fgInfosetURIName[]; + static const XMLCh fgYesString[]; + static const XMLCh fgZeroLenString[]; + static const XMLCh fgDTDEntityString[]; + static const XMLCh fgAmp[]; + static const XMLCh fgLT[]; + static const XMLCh fgGT[]; + static const XMLCh fgQuot[]; + static const XMLCh fgApos[]; + static const XMLCh fgWFXMLScanner[]; + static const XMLCh fgIGXMLScanner[]; + static const XMLCh fgSGXMLScanner[]; + static const XMLCh fgDGXMLScanner[]; + static const XMLCh fgXSAXMLScanner[]; + static const XMLCh fgCDataStart[]; + static const XMLCh fgCDataEnd[]; + + // Exception Name + static const XMLCh fgArrayIndexOutOfBoundsException_Name[]; + static const XMLCh fgEmptyStackException_Name[]; + static const XMLCh fgIllegalArgumentException_Name[]; + static const XMLCh fgInvalidCastException_Name[]; + static const XMLCh fgIOException_Name[]; + static const XMLCh fgNoSuchElementException_Name[]; + static const XMLCh fgNullPointerException_Name[]; + static const XMLCh fgXMLPlatformUtilsException_Name[]; + static const XMLCh fgRuntimeException_Name[]; + static const XMLCh fgTranscodingException_Name[]; + static const XMLCh fgUnexpectedEOFException_Name[]; + static const XMLCh fgUnsupportedEncodingException_Name[]; + static const XMLCh fgUTFDataFormatException_Name[]; + static const XMLCh fgNetAccessorException_Name[]; + static const XMLCh fgMalformedURLException_Name[]; + static const XMLCh fgNumberFormatException_Name[]; + static const XMLCh fgParseException_Name[]; + static const XMLCh fgInvalidDatatypeFacetException_Name[]; + static const XMLCh fgInvalidDatatypeValueException_Name[]; + static const XMLCh fgSchemaDateTimeException_Name[]; + static const XMLCh fgXPathException_Name[]; + static const XMLCh fgXSerializationException_Name[]; + static const XMLCh fgXMLXIncludeException_Name[]; + + // Numerical String + static const XMLCh fgNegINFString[]; + static const XMLCh fgNegZeroString[]; + static const XMLCh fgPosZeroString[]; + static const XMLCh fgPosINFString[]; + static const XMLCh fgNaNString[]; + static const XMLCh fgEString[]; + static const XMLCh fgZeroString[]; + static const XMLCh fgNullString[]; + + // Xerces features/properties names + static const XMLCh fgXercesDynamic[]; + static const XMLCh fgXercesSchema[]; + static const XMLCh fgXercesSchemaFullChecking[]; + static const XMLCh fgXercesLoadSchema[]; + static const XMLCh fgXercesIdentityConstraintChecking[]; + static const XMLCh fgXercesSchemaExternalSchemaLocation[]; + static const XMLCh fgXercesSchemaExternalNoNameSpaceSchemaLocation[]; + static const XMLCh fgXercesSecurityManager[]; + static const XMLCh fgXercesLoadExternalDTD[]; + static const XMLCh fgXercesContinueAfterFatalError[]; + static const XMLCh fgXercesValidationErrorAsFatal[]; + static const XMLCh fgXercesUserAdoptsDOMDocument[]; + static const XMLCh fgXercesCacheGrammarFromParse[]; + static const XMLCh fgXercesUseCachedGrammarInParse[]; + static const XMLCh fgXercesScannerName[]; + static const XMLCh fgXercesParserUseDocumentFromImplementation[]; + static const XMLCh fgXercesCalculateSrcOfs[]; + static const XMLCh fgXercesStandardUriConformant[]; + static const XMLCh fgXercesDOMHasPSVIInfo[]; + static const XMLCh fgXercesGenerateSyntheticAnnotations[]; + static const XMLCh fgXercesValidateAnnotations[]; + static const XMLCh fgXercesIgnoreCachedDTD[]; + static const XMLCh fgXercesIgnoreAnnotations[]; + static const XMLCh fgXercesDisableDefaultEntityResolution[]; + static const XMLCh fgXercesSkipDTDValidation[]; + static const XMLCh fgXercesEntityResolver[]; + static const XMLCh fgXercesHandleMultipleImports[]; + static const XMLCh fgXercesDoXInclude[]; + static const XMLCh fgXercesLowWaterMark[]; + + // SAX2 features/properties names + static const XMLCh fgSAX2CoreValidation[]; + static const XMLCh fgSAX2CoreNameSpaces[]; + static const XMLCh fgSAX2CoreNameSpacePrefixes[]; + + // Introduced in DOM Level 3 + // DOMLSParser features + static const XMLCh fgDOMCanonicalForm[]; + static const XMLCh fgDOMCDATASections[]; + static const XMLCh fgDOMComments[]; + static const XMLCh fgDOMCharsetOverridesXMLEncoding[]; + static const XMLCh fgDOMCheckCharacterNormalization[]; + static const XMLCh fgDOMDatatypeNormalization[]; + static const XMLCh fgDOMDisallowDoctype[]; + static const XMLCh fgDOMElementContentWhitespace[]; + static const XMLCh fgDOMErrorHandler[]; + static const XMLCh fgDOMEntities[]; + static const XMLCh fgDOMIgnoreUnknownCharacterDenormalization[]; + static const XMLCh fgDOMInfoset[]; + static const XMLCh fgDOMNamespaces[]; + static const XMLCh fgDOMNamespaceDeclarations[]; + static const XMLCh fgDOMNormalizeCharacters[]; + static const XMLCh fgDOMResourceResolver[]; + static const XMLCh fgDOMSchemaLocation[]; + static const XMLCh fgDOMSchemaType[]; + static const XMLCh fgDOMSplitCDATASections[]; + static const XMLCh fgDOMSupportedMediatypesOnly[]; + static const XMLCh fgDOMValidate[]; + static const XMLCh fgDOMValidateIfSchema[]; + static const XMLCh fgDOMWellFormed[]; + + static const XMLCh fgDOMXMLSchemaType[]; + static const XMLCh fgDOMDTDType[]; + + // Introduced in DOM Level 3 + // DOMLSSerializer feature + static const XMLCh fgDOMWRTCanonicalForm[]; + static const XMLCh fgDOMWRTDiscardDefaultContent[]; + static const XMLCh fgDOMWRTEntities[]; + static const XMLCh fgDOMWRTFormatPrettyPrint[]; + static const XMLCh fgDOMWRTNormalizeCharacters[]; + static const XMLCh fgDOMWRTSplitCdataSections[]; + static const XMLCh fgDOMWRTValidation[]; + static const XMLCh fgDOMWRTWhitespaceInElementContent[]; + static const XMLCh fgDOMWRTBOM[]; + static const XMLCh fgDOMXMLDeclaration[]; + static const XMLCh fgDOMWRTXercesPrettyPrint[]; + + // Private interface names + static const XMLCh fgXercescInterfacePSVITypeInfo[]; + static const XMLCh fgXercescInterfaceDOMDocumentTypeImpl[]; + static const XMLCh fgXercescInterfaceDOMDocumentImpl[]; + static const XMLCh fgXercescInterfaceDOMMemoryManager[]; + + // Locale + static const char fgXercescDefaultLocale[]; + + // Default Exception String + static const XMLCh fgDefErrMsg[]; + + // Datatype + static const XMLCh fgValueZero[]; + static const XMLCh fgNegOne[]; + static const XMLCh fgValueOne[]; + static const XMLCh fgLongMaxInc[]; + static const XMLCh fgLongMinInc[]; + static const XMLCh fgIntMaxInc[]; + static const XMLCh fgIntMinInc[]; + static const XMLCh fgShortMaxInc[]; + static const XMLCh fgShortMinInc[]; + static const XMLCh fgByteMaxInc[]; + static const XMLCh fgByteMinInc[]; + static const XMLCh fgULongMaxInc[]; + static const XMLCh fgUIntMaxInc[]; + static const XMLCh fgUShortMaxInc[]; + static const XMLCh fgUByteMaxInc[]; + static const XMLCh fgLangPattern[]; + + static const XMLCh fgBooleanValueSpace[][8]; + static const XMLSize_t fgBooleanValueSpaceArraySize; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLUni(); +}; + +#if defined __GNUC__ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5)) +# pragma GCC diagnostic pop +#endif + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLUniDefs.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLUniDefs.hpp new file mode 100644 index 000000000000..fc2cece07eb8 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLUniDefs.hpp @@ -0,0 +1,154 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLUNIDEFS_HPP) +#define XERCESC_INCLUDE_GUARD_XMLUNIDEFS_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Constants for the Unicode characters of interest to us in an XML parser +// We don't put these inside the class because then they could not be const +// inline values, which would have significant performance ramifications. +// +// We cannot use a namespace because of the requirement to support old +// compilers. +// --------------------------------------------------------------------------- +const XMLCh chNull = 0x00; +const XMLCh chHTab = 0x09; +const XMLCh chLF = 0x0A; +const XMLCh chVTab = 0x0B; +const XMLCh chFF = 0x0C; +const XMLCh chCR = 0x0D; +const XMLCh chAmpersand = 0x26; +const XMLCh chAsterisk = 0x2A; +const XMLCh chAt = 0x40; +const XMLCh chBackSlash = 0x5C; +const XMLCh chBang = 0x21; +const XMLCh chCaret = 0x5E; +const XMLCh chCloseAngle = 0x3E; +const XMLCh chCloseCurly = 0x7D; +const XMLCh chCloseParen = 0x29; +const XMLCh chCloseSquare = 0x5D; +const XMLCh chColon = 0x3A; +const XMLCh chComma = 0x2C; +const XMLCh chDash = 0x2D; +const XMLCh chDollarSign = 0x24; +const XMLCh chDoubleQuote = 0x22; +const XMLCh chEqual = 0x3D; +const XMLCh chForwardSlash = 0x2F; +const XMLCh chGrave = 0x60; +const XMLCh chNEL = 0x85; +const XMLCh chOpenAngle = 0x3C; +const XMLCh chOpenCurly = 0x7B; +const XMLCh chOpenParen = 0x28; +const XMLCh chOpenSquare = 0x5B; +const XMLCh chPercent = 0x25; +const XMLCh chPeriod = 0x2E; +const XMLCh chPipe = 0x7C; +const XMLCh chPlus = 0x2B; +const XMLCh chPound = 0x23; +const XMLCh chQuestion = 0x3F; +const XMLCh chSingleQuote = 0x27; +const XMLCh chSpace = 0x20; +const XMLCh chSemiColon = 0x3B; +const XMLCh chTilde = 0x7E; +const XMLCh chUnderscore = 0x5F; + +const XMLCh chSwappedUnicodeMarker = XMLCh(0xFFFE); +const XMLCh chUnicodeMarker = XMLCh(0xFEFF); + +const XMLCh chDigit_0 = 0x30; +const XMLCh chDigit_1 = 0x31; +const XMLCh chDigit_2 = 0x32; +const XMLCh chDigit_3 = 0x33; +const XMLCh chDigit_4 = 0x34; +const XMLCh chDigit_5 = 0x35; +const XMLCh chDigit_6 = 0x36; +const XMLCh chDigit_7 = 0x37; +const XMLCh chDigit_8 = 0x38; +const XMLCh chDigit_9 = 0x39; + +const XMLCh chLatin_A = 0x41; +const XMLCh chLatin_B = 0x42; +const XMLCh chLatin_C = 0x43; +const XMLCh chLatin_D = 0x44; +const XMLCh chLatin_E = 0x45; +const XMLCh chLatin_F = 0x46; +const XMLCh chLatin_G = 0x47; +const XMLCh chLatin_H = 0x48; +const XMLCh chLatin_I = 0x49; +const XMLCh chLatin_J = 0x4A; +const XMLCh chLatin_K = 0x4B; +const XMLCh chLatin_L = 0x4C; +const XMLCh chLatin_M = 0x4D; +const XMLCh chLatin_N = 0x4E; +const XMLCh chLatin_O = 0x4F; +const XMLCh chLatin_P = 0x50; +const XMLCh chLatin_Q = 0x51; +const XMLCh chLatin_R = 0x52; +const XMLCh chLatin_S = 0x53; +const XMLCh chLatin_T = 0x54; +const XMLCh chLatin_U = 0x55; +const XMLCh chLatin_V = 0x56; +const XMLCh chLatin_W = 0x57; +const XMLCh chLatin_X = 0x58; +const XMLCh chLatin_Y = 0x59; +const XMLCh chLatin_Z = 0x5A; + +const XMLCh chLatin_a = 0x61; +const XMLCh chLatin_b = 0x62; +const XMLCh chLatin_c = 0x63; +const XMLCh chLatin_d = 0x64; +const XMLCh chLatin_e = 0x65; +const XMLCh chLatin_f = 0x66; +const XMLCh chLatin_g = 0x67; +const XMLCh chLatin_h = 0x68; +const XMLCh chLatin_i = 0x69; +const XMLCh chLatin_j = 0x6A; +const XMLCh chLatin_k = 0x6B; +const XMLCh chLatin_l = 0x6C; +const XMLCh chLatin_m = 0x6D; +const XMLCh chLatin_n = 0x6E; +const XMLCh chLatin_o = 0x6F; +const XMLCh chLatin_p = 0x70; +const XMLCh chLatin_q = 0x71; +const XMLCh chLatin_r = 0x72; +const XMLCh chLatin_s = 0x73; +const XMLCh chLatin_t = 0x74; +const XMLCh chLatin_u = 0x75; +const XMLCh chLatin_v = 0x76; +const XMLCh chLatin_w = 0x77; +const XMLCh chLatin_x = 0x78; +const XMLCh chLatin_y = 0x79; +const XMLCh chLatin_z = 0x7A; + +const XMLCh chYenSign = 0xA5; +const XMLCh chWonSign = 0x20A9; + +const XMLCh chLineSeparator = 0x2028; +const XMLCh chParagraphSeparator = 0x2029; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLUri.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLUri.hpp new file mode 100644 index 000000000000..94099fde69dd --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLUri.hpp @@ -0,0 +1,663 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLURI_HPP) +#define XERCESC_INCLUDE_GUARD_XMLURI_HPP + +#include +#include + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/* + * This class is a direct port of Java's URI class, to distinguish + * itself from the XMLURL, we use the name XMLUri instead of + * XMLURI. + * + * TODO: how to relate XMLUri and XMLURL since URL is part of URI. + * + */ + +class XMLUTIL_EXPORT XMLUri : public XSerializable, public XMemory +{ +public: + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** + * Construct a new URI from a URI specification string. + * + * If the specification follows the "generic URI" syntax, (two slashes + * following the first colon), the specification will be parsed + * accordingly - setting the + * scheme, + * userinfo, + * host, + * port, + * path, + * querystring and + * fragment + * fields as necessary. + * + * If the specification does not follow the "generic URI" syntax, + * the specification is parsed into a + * scheme and + * scheme-specific part (stored as the path) only. + * + * @param uriSpec the URI specification string (cannot be null or empty) + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * + * ctor# 2 + * + */ + XMLUri(const XMLCh* const uriSpec, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Construct a new URI from a base URI and a URI specification string. + * The URI specification string may be a relative URI. + * + * @param baseURI the base URI (cannot be null if uriSpec is null or + * empty) + * + * @param uriSpec the URI specification string (cannot be null or + * empty if base is null) + * + * @param manager Pointer to the memory manager to be used to + * allocate objects. + * + * ctor# 7 relative ctor + * + */ + XMLUri(const XMLUri* const baseURI + , const XMLCh* const uriSpec + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Copy constructor + */ + XMLUri(const XMLUri& toCopy); + XMLUri& operator=(const XMLUri& toAssign); + + virtual ~XMLUri(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** + * Get the URI as a string specification. See RFC 2396 Section 5.2. + * + * @return the URI string specification + */ + const XMLCh* getUriText() const; + + /** + * Get the scheme for this URI. + * + * @return the scheme for this URI + */ + const XMLCh* getScheme() const; + + /** + * Get the userinfo for this URI. + * + * @return the userinfo for this URI (null if not specified). + */ + const XMLCh* getUserInfo() const; + + + /** + * Get the host for this URI. + * + * @return the host for this URI (null if not specified). + */ + const XMLCh* getHost() const; + + /** + * Get the port for this URI. + * + * @return the port for this URI (-1 if not specified). + */ + int getPort() const; + + /** + * Get the registry based authority for this URI. + * + * @return the registry based authority (null if not specified). + */ + const XMLCh* getRegBasedAuthority() const; + + /** + * Get the path for this URI. Note that the value returned is the path + * only and does not include the query string or fragment. + * + * @return the path for this URI. + */ + const XMLCh* getPath() const; + + /** + * Get the query string for this URI. + * + * @return the query string for this URI. Null is returned if there + * was no "?" in the URI spec, empty string if there was a + * "?" but no query string following it. + */ + const XMLCh* getQueryString() const; + + /** + * Get the fragment for this URI. + * + * @return the fragment for this URI. Null is returned if there + * was no "#" in the URI spec, empty string if there was a + * "#" but no fragment following it. + */ + const XMLCh* getFragment() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** + * Set the scheme for this URI. The scheme is converted to lowercase + * before it is set. + * + * @param newScheme the scheme for this URI (cannot be null) + * + */ + void setScheme(const XMLCh* const newScheme); + + /** + * Set the userinfo for this URI. If a non-null value is passed in and + * the host value is null, then an exception is thrown. + * + * @param newUserInfo the userinfo for this URI + * + */ + void setUserInfo(const XMLCh* const newUserInfo); + + /** + * Set the host for this URI. If null is passed in, the userinfo + * field is also set to null and the port is set to -1. + * + * Note: This method overwrites registry based authority if it + * previously existed in this URI. + * + * @param newHost the host for this URI + * + */ + void setHost(const XMLCh* const newHost); + + /** + * Set the port for this URI. -1 is used to indicate that the port is + * not specified, otherwise valid port numbers are between 0 and 65535. + * If a valid port number is passed in and the host field is null, + * an exception is thrown. + * + * @param newPort the port number for this URI + * + */ + void setPort(int newPort); + + /** + * Sets the registry based authority for this URI. + * + * Note: This method overwrites server based authority + * if it previously existed in this URI. + * + * @param newRegAuth the registry based authority for this URI + */ + void setRegBasedAuthority(const XMLCh* const newRegAuth); + + /** + * Set the path for this URI. + * + * If the supplied path is null, then the + * query string and fragment are set to null as well. + * + * If the supplied path includes a query string and/or fragment, + * these fields will be parsed and set as well. + * + * Note: + * + * For URIs following the "generic URI" syntax, the path + * specified should start with a slash. + * + * For URIs that do not follow the generic URI syntax, this method + * sets the scheme-specific part. + * + * @param newPath the path for this URI (may be null) + * + */ + void setPath(const XMLCh* const newPath); + + /** + * Set the query string for this URI. A non-null value is valid only + * if this is an URI conforming to the generic URI syntax and + * the path value is not null. + * + * @param newQueryString the query string for this URI + * + */ + void setQueryString(const XMLCh* const newQueryString); + + /** + * Set the fragment for this URI. A non-null value is valid only + * if this is a URI conforming to the generic URI syntax and + * the path value is not null. + * + * @param newFragment the fragment for this URI + * + */ + void setFragment(const XMLCh* const newFragment); + + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + + /** + * Determine whether a given string contains only URI characters (also + * called "uric" in RFC 2396). uric consist of all reserved + * characters, unreserved characters and escaped characters. + * + * @return true if the string is comprised of uric, false otherwise + */ + static bool isURIString(const XMLCh* const uric); + + /** + * Determine whether a given string is a valid URI + */ + static bool isValidURI( const XMLUri* const baseURI + , const XMLCh* const uriStr + , bool bAllowSpaces=false); + /** + * Determine whether a given string is a valid URI + */ + static bool isValidURI( bool haveBaseURI + , const XMLCh* const uriStr + , bool bAllowSpaces=false); + + + static void normalizeURI(const XMLCh* const systemURI, + XMLBuffer& normalizedURI); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLUri) + + XMLUri(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + + static const XMLCh MARK_OR_RESERVED_CHARACTERS[]; + static const XMLCh RESERVED_CHARACTERS[]; + static const XMLCh MARK_CHARACTERS[]; + static const XMLCh SCHEME_CHARACTERS[]; + static const XMLCh USERINFO_CHARACTERS[]; + static const XMLCh REG_NAME_CHARACTERS[]; + static const XMLCh PATH_CHARACTERS[]; + + //helper method for getUriText + void buildFullText(); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + + /** + * Determine whether a character is a reserved character: + * + * @return true if the string contains any reserved characters + */ + static bool isReservedCharacter(const XMLCh theChar); + + /** + * Determine whether a character is a path character: + * + * @return true if the character is path character + */ + static bool isPathCharacter(const XMLCh theChar); + + /** + * Determine whether a char is an unreserved character. + * + * @return true if the char is unreserved, false otherwise + */ + static bool isUnreservedCharacter(const XMLCh theChar); + + /** + * Determine whether a char is an reserved or unreserved character. + * + * @return true if the char is reserved or unreserved, false otherwise + */ + static bool isReservedOrUnreservedCharacter(const XMLCh theChar); + + /** + * Determine whether a scheme conforms to the rules for a scheme name. + * A scheme is conformant if it starts with an alphanumeric, and + * contains only alphanumerics, '+','-' and '.'. + * + * @return true if the scheme is conformant, false otherwise + */ + static bool isConformantSchemeName(const XMLCh* const scheme); + + /** + * Determine whether a userInfo conforms to the rules for a userinfo. + * + * @return true if the scheme is conformant, false otherwise + */ + static void isConformantUserInfo(const XMLCh* const userInfo + , MemoryManager* const manager); + + /** + * Determines whether the components host, port, and user info + * are valid as a server authority. + * + * @return true if the given host, port, and userinfo compose + * a valid server authority + */ + static bool isValidServerBasedAuthority(const XMLCh* const host + , const XMLSize_t hostLen + , const int port + , const XMLCh* const userinfo + , const XMLSize_t userLen); + + /** + * Determines whether the components host, port, and user info + * are valid as a server authority. + * + * @return true if the given host, port, and userinfo compose + * a valid server authority + */ + static bool isValidServerBasedAuthority(const XMLCh* const host + , const int port + , const XMLCh* const userinfo + , MemoryManager* const manager); + + /** + * Determines whether the given string is a registry based authority. + * + * @param authority the authority component of a URI + * + * @return true if the given string is a registry based authority + */ + static bool isValidRegistryBasedAuthority(const XMLCh* const authority + , const XMLSize_t authLen); + + /** + * Determines whether the given string is a registry based authority. + * + * @param authority the authority component of a URI + * + * @return true if the given string is a registry based authority + */ + static bool isValidRegistryBasedAuthority(const XMLCh* const authority); + + /** + * Determine whether a string is syntactically capable of representing + * a valid IPv4 address, IPv6 reference or the domain name of a network host. + * + * A valid IPv4 address consists of four decimal digit groups + * separated by a '.'. + * + * See RFC 2732 Section 3, and RFC 2373 Section 2.2, for the + * definition of IPv6 references. + * + * A hostname consists of domain labels (each of which must begin and + * end with an alphanumeric but may contain '-') separated by a '.'. + * See RFC 2396 Section 3.2.2. + * + * @return true if the string is a syntactically valid IPv4 address + * or hostname + */ + static bool isWellFormedAddress(const XMLCh* const addr + , MemoryManager* const manager); + + /** + * Determines whether a string is an IPv4 address as defined by + * RFC 2373, and under the further constraint that it must be a 32-bit + * address. Though not expressed in the grammar, in order to satisfy + * the 32-bit address constraint, each segment of the address cannot + * be greater than 255 (8 bits of information). + * + * @return true if the string is a syntactically valid IPv4 address + */ + static bool isWellFormedIPv4Address(const XMLCh* const addr, const XMLSize_t length); + + /** + * Determines whether a string is an IPv6 reference as defined + * by RFC 2732, where IPv6address is defined in RFC 2373. The + * IPv6 address is parsed according to Section 2.2 of RFC 2373, + * with the additional constraint that the address be composed of + * 128 bits of information. + * + * Note: The BNF expressed in RFC 2373 Appendix B does not + * accurately describe section 2.2, and was in fact removed from + * RFC 3513, the successor of RFC 2373. + * + * @return true if the string is a syntactically valid IPv6 reference + */ + static bool isWellFormedIPv6Reference(const XMLCh* const addr, const XMLSize_t length); + + /** + * Helper function for isWellFormedIPv6Reference which scans the + * hex sequences of an IPv6 address. It returns the index of the + * next character to scan in the address, or -1 if the string + * cannot match a valid IPv6 address. + * + * @param address the string to be scanned + * @param index the beginning index (inclusive) + * @param end the ending index (exclusive) + * @param counter a counter for the number of 16-bit sections read + * in the address + * + * @return the index of the next character to scan, or -1 if the + * string cannot match a valid IPv6 address + */ + static int scanHexSequence (const XMLCh* const addr, XMLSize_t index, XMLSize_t end, int& counter); + + /** + * Get the indicator as to whether this URI uses the "generic URI" + * syntax. + * + * @return true if this URI uses the "generic URI" syntax, false + * otherwise + */ + bool isGenericURI(); + + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + + /** + * Initialize all fields of this URI from another URI. + * + * @param toCopy the URI to copy (cannot be null) + */ + void initialize(const XMLUri& toCopy); + + /** + * Initializes this URI from a base URI and a URI specification string. + * See RFC 2396 Section 4 and Appendix B for specifications on parsing + * the URI and Section 5 for specifications on resolving relative URIs + * and relative paths. + * + * @param baseURI the base URI (may be null if uriSpec is an absolute + * URI) + * + * @param uriSpec the URI spec string which may be an absolute or + * relative URI (can only be null/empty if base + * is not null) + * + */ + void initialize(const XMLUri* const baseURI + , const XMLCh* const uriSpec); + + /** + * Initialize the scheme for this URI from a URI string spec. + * + * @param uriSpec the URI specification (cannot be null) + * + */ + void initializeScheme(const XMLCh* const uriSpec); + + /** + * Initialize the authority (userinfo, host and port) for this + * URI from a URI string spec. + * + * @param uriSpec the URI specification (cannot be null) + * + */ + void initializeAuthority(const XMLCh* const uriSpec); + + /** + * Initialize the path for this URI from a URI string spec. + * + * @param uriSpec the URI specification (cannot be null) + * + */ + void initializePath(const XMLCh* const uriSpec); + + /** + * cleanup the data variables + * + */ + void cleanUp(); + + static bool isConformantSchemeName(const XMLCh* const scheme, + const XMLSize_t schemeLen); + static bool processScheme(const XMLCh* const uriStr, XMLSize_t& index); + static bool processAuthority(const XMLCh* const uriStr, const XMLSize_t authLen); + static bool isWellFormedAddress(const XMLCh* const addr, const XMLSize_t addrLen); + static bool processPath(const XMLCh* const pathStr, const XMLSize_t pathStrLen, + const bool isSchemePresent, const bool bAllowSpaces=false); + + // ----------------------------------------------------------------------- + // Data members + // + // for all the data member, we own it, + // responsible for the creation and/or deletion for + // the memory allocated. + // + // ----------------------------------------------------------------------- + int fPort; + XMLCh* fScheme; + XMLCh* fUserInfo; + XMLCh* fHost; + XMLCh* fRegAuth; + XMLCh* fPath; + XMLCh* fQueryString; + XMLCh* fFragment; + XMLCh* fURIText; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// XMLUri: Getter methods +// --------------------------------------------------------------------------- +inline const XMLCh* XMLUri::getScheme() const +{ + return fScheme; +} + +inline const XMLCh* XMLUri::getUserInfo() const +{ + return fUserInfo; +} + +inline const XMLCh* XMLUri::getHost() const +{ + return fHost; +} + +inline int XMLUri::getPort() const +{ + return fPort; +} + +inline const XMLCh* XMLUri::getRegBasedAuthority() const +{ + return fRegAuth; +} + +inline const XMLCh* XMLUri::getPath() const +{ + return fPath; +} + +inline const XMLCh* XMLUri::getQueryString() const +{ + return fQueryString; +} + +inline const XMLCh* XMLUri::getFragment() const +{ + return fFragment; +} + +inline const XMLCh* XMLUri::getUriText() const +{ + // + // Fault it in if not already. Since this is a const method and we + // can't use mutable members due the compilers we have to support, + // we have to cast off the constness. + // + if (!fURIText) + (const_cast(this))->buildFullText(); + + return fURIText; +} + +// --------------------------------------------------------------------------- +// XMLUri: Helper methods +// --------------------------------------------------------------------------- +inline bool XMLUri::isReservedOrUnreservedCharacter(const XMLCh theChar) +{ + return (XMLString::isAlphaNum(theChar) || + XMLString::indexOf(MARK_OR_RESERVED_CHARACTERS, theChar) != -1); +} + +inline bool XMLUri::isReservedCharacter(const XMLCh theChar) +{ + return (XMLString::indexOf(RESERVED_CHARACTERS, theChar) != -1); +} + +inline bool XMLUri::isPathCharacter(const XMLCh theChar) +{ + return (XMLString::indexOf(PATH_CHARACTERS, theChar) != -1); +} + +inline bool XMLUri::isUnreservedCharacter(const XMLCh theChar) +{ + return (XMLString::isAlphaNum(theChar) || + XMLString::indexOf(MARK_CHARACTERS, theChar) != -1); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMLWin1252Transcoder.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMLWin1252Transcoder.hpp new file mode 100644 index 000000000000..aa3913be2aef --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMLWin1252Transcoder.hpp @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLWIN1252TRANSCODER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLWIN1252TRANSCODER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +// +// This class provides an implementation of the XMLTranscoder interface +// for the Windows variant of Latin1, called Windows-1252. Its close to +// Latin1, but is somewhat different. +// +class XMLUTIL_EXPORT XMLWin1252Transcoder : public XML256TableTranscoder +{ +public : + // ----------------------------------------------------------------------- + // Public constructors and destructor + // ----------------------------------------------------------------------- + XMLWin1252Transcoder + ( + const XMLCh* const encodingName + , const XMLSize_t blockSize + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~XMLWin1252Transcoder(); + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLWin1252Transcoder(); + XMLWin1252Transcoder(const XMLWin1252Transcoder&); + XMLWin1252Transcoder& operator=(const XMLWin1252Transcoder&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XMemory.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XMemory.hpp new file mode 100644 index 000000000000..869ccce937f0 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XMemory.hpp @@ -0,0 +1,144 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMEMORY_HPP) +#define XERCESC_INCLUDE_GUARD_XMEMORY_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class MemoryManager; + +/** + * This class makes it possible to override the C++ memory management by + * adding new/delete operators to this base class. + * + * This class is used in conjunction with the pluggable memory manager. It + * allows applications to control Xerces memory management. + */ + +class XMLUTIL_EXPORT XMemory +{ +public : + // ----------------------------------------------------------------------- + // The C++ memory management + // ----------------------------------------------------------------------- + /** @name The C++ memory management */ + //@{ + + /** + * This method overrides operator new + * + * @param size The requested memory size + */ + void* operator new(size_t size); + +#if defined(XERCES_MFC_SUPPORT) + /** + * This method overrides the MFC debug version of the operator new + * + * @param size The requested memory size + * @param file The file where the allocation was requested + * @param line The line where the allocation was requested + */ + void* operator new(size_t size, const char* file, int line); + /** + * This method provides a matching delete for the MFC debug new + * + * @param p The pointer to the allocated memory + * @param file The file where the allocation was requested + * @param line The line where the allocation was requested + */ + void operator delete(void* p, const char* file, int line); +#endif + + /** + * This method defines a custom operator new, that will use the provided + * memory manager to perform the allocation + * + * @param size The requested memory size + * @param memMgr An application's memory manager + */ + void* operator new(size_t size, MemoryManager* memMgr); + + /** + * This method overrides placement operator new + * + * @param size The requested memory size + * @param ptr The memory location where the object should be allocated + */ + void* operator new(size_t size, void* ptr); + + /** + * This method overrides operator delete + * + * @param p The pointer to the allocated memory + */ + void operator delete(void* p); + + //The Borland compiler is complaining about duplicate overloading of delete +#if !defined(XERCES_NO_MATCHING_DELETE_OPERATOR) + /** + * This method provides a matching delete for the custom operator new + * + * @param p The pointer to the allocated memory + * @param memMgr An application's memory manager + */ + void operator delete(void* p, MemoryManager* memMgr); + + /** + * This method provides a matching delete for the placement new + * + * @param p The pointer to the allocated memory + * @param ptr The memory location where the object had to be allocated + */ + void operator delete(void* p, void* ptr); +#endif + + //@} + +protected : + // ----------------------------------------------------------------------- + // Hidden Constructors + // ----------------------------------------------------------------------- + /** @name Constructor */ + //@{ + + /** + * Protected default constructor + */ + XMemory() + { + } + //@} + +#if defined(XERCES_NEED_XMEMORY_VIRTUAL_DESTRUCTOR) + virtual ~XMemory() + { + } +#endif +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XercesDefs.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XercesDefs.hpp new file mode 100644 index 000000000000..80712600d8e4 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XercesDefs.hpp @@ -0,0 +1,173 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XERCESDEFS_HPP) +#define XERCESC_INCLUDE_GUARD_XERCESDEFS_HPP + +// --------------------------------------------------------------------------- +// The file xerces_hdr_config defines critical configuration information +// used by the remainder of this file. +// +// There are two major configuration files: +// - xerces_autoconf_config.hpp-- Contains defines that are safe for +// access through public headers. +// +// - config.h -- Contains defines that may conflict +// with other packages; should only be +// included by Xerces implementation files. +// +// Both of these files are generated through the autoconf/configure process. +// --------------------------------------------------------------------------- + +// +// If this is an autoconf configured build, we include Xerces_autoconf_config.hpp +// Otherwise we include a preconfigured config appropriate for the particular +// platform that the specific makefile should copy over. +// +// If the next line generates an error then you haven't run ./configure +#include + +// --------------------------------------------------------------------------- +// Include the Xerces version information; this is kept in a separate file to +// make modification simple and obvious. Updates to the version header file +// --------------------------------------------------------------------------- +#include + + +// --------------------------------------------------------------------------- +// Some general typedefs that are defined for internal flexibility. +// +// Note that UTF16Ch is fixed at 16 bits, whereas XMLCh floats in size per +// platform, to whatever is the native wide char format there. UCS4Ch is +// fixed at 32 bits. The types we defined them in terms of are defined per +// compiler, using whatever types are the right ones for them to get these +// 16/32 bit sizes. +// +// --------------------------------------------------------------------------- +typedef unsigned char XMLByte; +typedef XMLUInt16 UTF16Ch; +typedef XMLUInt32 UCS4Ch; + + +// --------------------------------------------------------------------------- +// Handle boolean. If the platform can handle booleans itself, then we +// map our boolean type to the native type. Otherwise we create a default +// one as an int and define const values for true and false. +// +// This flag will be set in the per-development environment stuff above. +// --------------------------------------------------------------------------- +#if defined(XERCES_NO_NATIVE_BOOL) + #ifndef bool + typedef int bool; + #endif + #ifndef true + #define true 1 + #endif + #ifndef false + #define false 0 + #endif +#endif + +// --------------------------------------------------------------------------- +// According to whether the compiler supports L"" type strings, we define +// the XMLStrL() macro one way or another. +// --------------------------------------------------------------------------- +#if defined(XERCES_LSTRSUPPORT) +#define XMLStrL(str) L##str +#else +#define XMLStrL(str) str +#endif + + +// --------------------------------------------------------------------------- +// Define namespace symbols if the compiler supports it. +// --------------------------------------------------------------------------- +#if defined(XERCES_HAS_CPP_NAMESPACE) + #define XERCES_CPP_NAMESPACE_BEGIN namespace XERCES_CPP_NAMESPACE { + #define XERCES_CPP_NAMESPACE_END } + #define XERCES_CPP_NAMESPACE_USE using namespace XERCES_CPP_NAMESPACE; + #define XERCES_CPP_NAMESPACE_QUALIFIER XERCES_CPP_NAMESPACE:: + + namespace XERCES_CPP_NAMESPACE { } + namespace xercesc = XERCES_CPP_NAMESPACE; +#else + #define XERCES_CPP_NAMESPACE_BEGIN + #define XERCES_CPP_NAMESPACE_END + #define XERCES_CPP_NAMESPACE_USE + #define XERCES_CPP_NAMESPACE_QUALIFIER +#endif + +#if defined(XERCES_STD_NAMESPACE) + #define XERCES_USING_STD(NAME) using std :: NAME; + #define XERCES_STD_QUALIFIER std :: +#else + #define XERCES_USING_STD(NAME) + #define XERCES_STD_QUALIFIER +#endif + + +// --------------------------------------------------------------------------- +// Set up the import/export keyword for our core projects. The +// PLATFORM_XXXX keywords are set in the per-development environment +// include above. +// --------------------------------------------------------------------------- + +// The DLL_EXPORT flag should be defined on the command line during the build of a DLL +// configure conspires to make this happen. + +#if defined(DLL_EXPORT) + #if defined(XERCES_BUILDING_LIBRARY) + #define XMLUTIL_EXPORT XERCES_PLATFORM_EXPORT + #define XMLPARSER_EXPORT XERCES_PLATFORM_EXPORT + #define SAX_EXPORT XERCES_PLATFORM_EXPORT + #define SAX2_EXPORT XERCES_PLATFORM_EXPORT + #define CDOM_EXPORT XERCES_PLATFORM_EXPORT + #define PARSERS_EXPORT XERCES_PLATFORM_EXPORT + #define VALIDATORS_EXPORT XERCES_PLATFORM_EXPORT + #define XINCLUDE_EXPORT XERCES_PLATFORM_EXPORT + #else + #define XMLUTIL_EXPORT XERCES_PLATFORM_IMPORT + #define XMLPARSER_EXPORT XERCES_PLATFORM_IMPORT + #define SAX_EXPORT XERCES_PLATFORM_IMPORT + #define SAX2_EXPORT XERCES_PLATFORM_IMPORT + #define CDOM_EXPORT XERCES_PLATFORM_IMPORT + #define PARSERS_EXPORT XERCES_PLATFORM_IMPORT + #define VALIDATORS_EXPORT XERCES_PLATFORM_IMPORT + #define XINCLUDE_EXPORT XERCES_PLATFORM_IMPORT + #endif + #if defined(XERCES_BUILDING_DEPRECATED_LIBRARY) + #define DEPRECATED_DOM_EXPORT XERCES_PLATFORM_EXPORT + #else + #define DEPRECATED_DOM_EXPORT XERCES_PLATFORM_IMPORT + #endif +#else + #define XMLUTIL_EXPORT + #define XMLPARSER_EXPORT + #define SAX_EXPORT + #define SAX2_EXPORT + #define CDOM_EXPORT + #define DEPRECATED_DOM_EXPORT + #define PARSERS_EXPORT + #define VALIDATORS_EXPORT + #define XINCLUDE_EXPORT +#endif + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/XercesVersion.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/XercesVersion.hpp new file mode 100644 index 000000000000..c9a4c70b365d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/XercesVersion.hpp @@ -0,0 +1,219 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XERCESVERSION_HPP) +#define XERCESC_INCLUDE_GUARD_XERCESVERSION_HPP + +// --------------------------------------------------------------------------- +// X E R C E S V E R S I O N H E A D E R D O C U M E N T A T I O N + +/** + * User Documentation for Xerces Version Values: + * + * + * + * Xerces Notes: + * + * Xerces Committers Documentation: + * + * Xerces committers normally only need to modify one or two of the + * following macros: + * + * XERCES_VERSION_MAJOR + * XERCES_VERSION_MINOR + * XERCES_VERSION_REVISION + * + * The integer values of these macros define the Xerces version number. All + * other constants and preprocessor macros are automatically generated from + * these three definitions. + * + * The macro XERCES_GRAMMAR_SERIALIZATION_LEVEL has been added so that during + * development if users are using the latest code they can use the grammar + * serialization/deserialization features. Whenever a change is made to the + * serialization code this macro should be incremented. + * + * Xerces User Documentation: + * + * The following sections in the user documentation have examples based upon + * the following three version input values: + * + * #define XERCES_VERSION_MAJOR 19 + * #define XERCES_VERSION_MINOR 3 + * #define XERCES_VERSION_REVISION 74 + * + * The minor and revision (patch level) numbers have two digits of resolution + * which means that '3' becomes '03' in this example. This policy guarantees + * that when using preprocessor macros, version 19.3.74 will be greater than + * version 1.94.74 since the first will expand to 190374 and the second to + * 19474. + * + * Preprocessor Macros: + * + * _XERCES_VERSION defines the primary preprocessor macro that users will + * introduce into their code to perform conditional compilation where the + * version of Xerces is detected in order to enable or disable version + * specific capabilities. The value of _XERCES_VERSION for the above example + * will be 190374. To use it a user would perform an operation such as the + * following: + * + * #if _XERCES_VERSION >= 190374 + * // code specific to new version of Xerces... + * #else + * // old code here... + * #endif + * + * XERCES_FULLVERSIONSTR is a preprocessor macro that expands to a string + * constant whose value, for the above example, will be "19_3_74". + * + * XERCES_FULLVERSIONDOT is a preprocessor macro that expands to a string + * constant whose value, for the above example, will be "19.3.74". + * + * XERCES_VERSIONSTR is a preprocessor macro that expands to a string + * constant whose value, for the above example, will be "19_3". This + * particular macro is very dangerous if it were to be used for comparing + * version numbers since ordering will not be guaranteed. + * + * Xerces_DLLVersionStr is a preprocessor macro that expands to a string + * constant whose value, for the above example, will be "19_3_74". This + * macro is provided for backwards compatibility to pre-1.7 versions of + * Xerces. + * + * String Constants: + * + * gXercesVersionStr is a global string constant whose value corresponds to + * the value "19_3" for the above example. + * + * gXercesFullVersionStr is a global string constant whose value corresponds + * to the value "19_3_74" for the above example. + * + * Numeric Constants: + * + * gXercesMajVersion is a global integer constant whose value corresponds to + * the major version number. For the above example its value will be 19. + * + * gXercesMinVersion is a global integer constant whose value corresponds to + * the minor version number. For the above example its value will be 3. + * + * gXercesRevision is a global integer constant whose value corresponds to + * the revision (patch) version number. For the above example its value will + * be 74. + * + */ + +// --------------------------------------------------------------------------- +// X E R C E S V E R S I O N S P E C I F I C A T I O N + +/** + * MODIFY THESE NUMERIC VALUES TO COINCIDE WITH XERCES VERSION + * AND DO NOT MODIFY ANYTHING ELSE IN THIS VERSION HEADER FILE + */ + +#define XERCES_VERSION_MAJOR 3 +#define XERCES_VERSION_MINOR 2 +#define XERCES_VERSION_REVISION 4 + +/*** + * + * XERCES_GRAMMAR_SERIALIZATION_LEVEL = 4 SchemaAttDef, SchemaElementDecl serialize fPSVIScope + * XERCES_GRAMMAR_SERIALIZATION_LEVEL = 5 XercesStep serializes the axis as an int + * XERCES_GRAMMAR_SERIALIZATION_LEVEL = 6 added fIsExternal to XMLEntityDecl + * XERCES_GRAMMAR_SERIALIZATION_LEVEL = 7 size of line/column fields has changed + * + ***/ +#define XERCES_GRAMMAR_SERIALIZATION_LEVEL 7 + +/** DO NOT MODIFY BELOW THIS LINE */ + +/** + * MAGIC THAT AUTOMATICALLY GENERATES THE FOLLOWING: + * + * Xerces_DLLVersionStr, gXercesVersionStr, gXercesFullVersionStr, + * gXercesMajVersion, gXercesMinVersion, gXercesRevision + */ + +// --------------------------------------------------------------------------- +// T W O A R G U M E N T C O N C A T E N A T I O N M A C R O S + +// two argument concatenation routines +#define CAT2_SEP_UNDERSCORE(a, b) #a "_" #b +#define CAT2_SEP_PERIOD(a, b) #a "." #b +#define CAT2_SEP_NIL(a, b) #a #b +#define CAT2_RAW_NUMERIC(a, b) a ## b + +// two argument macro invokers +#define INVK_CAT2_SEP_UNDERSCORE(a,b) CAT2_SEP_UNDERSCORE(a,b) +#define INVK_CAT2_SEP_PERIOD(a,b) CAT2_SEP_PERIOD(a,b) +#define INVK_CAT2_STR_SEP_NIL(a,b) CAT2_SEP_NIL(a,b) +#define INVK_CAT2_RAW_NUMERIC(a,b) CAT2_RAW_NUMERIC(a,b) + +// --------------------------------------------------------------------------- +// T H R E E A R G U M E N T C O N C A T E N A T I O N M A C R O S + +// three argument concatenation routines +#define CAT3_SEP_UNDERSCORE(a, b, c) #a "_" #b "_" #c +#define CAT3_SEP_PERIOD(a, b, c) #a "." #b "." #c +#define CAT3_SEP_NIL(a, b, c) #a #b #c +#define CAT3_RAW_NUMERIC(a, b, c) a ## b ## c +#define CAT3_RAW_NUMERIC_SEP_UNDERSCORE(a, b, c) a ## _ ## b ## _ ## c + +// three argument macro invokers +#define INVK_CAT3_SEP_UNDERSCORE(a,b,c) CAT3_SEP_UNDERSCORE(a,b,c) +#define INVK_CAT3_SEP_PERIOD(a,b,c) CAT3_SEP_PERIOD(a,b,c) +#define INVK_CAT3_SEP_NIL(a,b,c) CAT3_SEP_NIL(a,b,c) +#define INVK_CAT3_RAW_NUMERIC(a,b,c) CAT3_RAW_NUMERIC(a,b,c) +#define INVK_CAT3_RAW_NUMERIC_SEP_UNDERSCORE(a,b,c) CAT3_RAW_NUMERIC_SEP_UNDERSCORE(a,b,c) + +// --------------------------------------------------------------------------- +// C A L C U L A T E V E R S I O N - E X P A N D E D F O R M + +#define MULTIPLY(factor,value) factor * value +#define CALC_EXPANDED_FORM(a,b,c) ( MULTIPLY(10000,a) + MULTIPLY(100,b) + MULTIPLY(1,c) ) + +// --------------------------------------------------------------------------- +// X E R C E S V E R S I O N I N F O R M A T I O N + +// Xerces version strings; these particular macros cannot be used for +// conditional compilation as they are not numeric constants + +#define XERCES_FULLVERSIONSTR INVK_CAT3_SEP_UNDERSCORE(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVISION) +#define XERCES_FULLVERSIONDOT INVK_CAT3_SEP_PERIOD(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVISION) +#define XERCES_FULLVERSIONNUM INVK_CAT3_SEP_NIL(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVISION) +#define XERCES_VERSIONSTR INVK_CAT2_SEP_UNDERSCORE(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR) + +// Xerces C++ Namespace string, concatenated with full version string +#define XERCES_PRODUCT xercesc +#define XERCES_CPP_NAMESPACE INVK_CAT3_RAW_NUMERIC_SEP_UNDERSCORE(XERCES_PRODUCT,XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR) + +// original from Xerces header +#define Xerces_DLLVersionStr XERCES_FULLVERSIONSTR + +const char* const gXercesVersionStr = XERCES_VERSIONSTR; +const char* const gXercesFullVersionStr = XERCES_FULLVERSIONSTR; +const unsigned int gXercesMajVersion = XERCES_VERSION_MAJOR; +const unsigned int gXercesMinVersion = XERCES_VERSION_MINOR; +const unsigned int gXercesRevision = XERCES_VERSION_REVISION; + +// Xerces version numeric constants that can be used for conditional +// compilation purposes. + +#define _XERCES_VERSION CALC_EXPANDED_FORM (XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVISION) + +#endif // XERCESVERSION_HPP diff --git a/extern/xerces-c/include/xercesc/util/Xerces_autoconf_config.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/Xerces_autoconf_config.hpp similarity index 100% rename from extern/xerces-c/include/xercesc/util/Xerces_autoconf_config.hpp rename to src/libs/xerces-c/msvc/include/xercesc/util/Xerces_autoconf_config.hpp diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/ASCIIRangeFactory.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/ASCIIRangeFactory.hpp new file mode 100644 index 000000000000..1515ffabd7f2 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/ASCIIRangeFactory.hpp @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ASCIIRANGEFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_ASCIIRANGEFACTORY_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT ASCIIRangeFactory: public RangeFactory { + +public: + // ----------------------------------------------------------------------- + // Constructors and operators + // ----------------------------------------------------------------------- + ASCIIRangeFactory(); + ~ASCIIRangeFactory(); + + // ----------------------------------------------------------------------- + // Initialization methods + // ----------------------------------------------------------------------- + void initializeKeywordMap(RangeTokenMap *rangeTokMap = 0); + +protected: + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + void buildRanges(RangeTokenMap *rangeTokMap = 0); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ASCIIRangeFactory(const ASCIIRangeFactory&); + ASCIIRangeFactory& operator=(const ASCIIRangeFactory&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file ASCIIRangeFactory.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/BMPattern.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/BMPattern.hpp new file mode 100644 index 000000000000..ea1b64a2f5da --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/BMPattern.hpp @@ -0,0 +1,157 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BMPATTERN_HPP) +#define XERCESC_INCLUDE_GUARD_BMPATTERN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BMPattern : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * This is the constructor which takes the pattern information. A default + * shift table size is used. + * + * @param pattern The pattern to match against. + * + * @param ignoreCase A flag to indicate whether to ignore case + * matching or not. + * + * @param manager The configurable memory manager + */ + BMPattern + ( + const XMLCh* const pattern + , bool ignoreCase + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * This is the constructor which takes all of the information + * required to construct a BM pattern object. + * + * @param pattern The pattern to match against. + * + * @param tableSize Indicates the size of the shift table. + * + * @param ignoreCase A flag to indicate whether to ignore case + * matching or not. + * + * @param manager The configurable memory manager + */ + BMPattern + ( + const XMLCh* const pattern + , int tableSize + , bool ignoreCase + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** @name Destructor. */ + //@{ + + /** + * Destructor of BMPattern + */ + ~BMPattern(); + + //@} + + // ----------------------------------------------------------------------- + // Matching functions + // ----------------------------------------------------------------------- + /** @name Matching Functions */ + //@{ + + /** + * This method will perform a match of the given content against a + * predefined pattern. + */ + int matches(const XMLCh* const content, XMLSize_t start, XMLSize_t limit) const; + + //@} + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + BMPattern(); + BMPattern(const BMPattern&); + BMPattern& operator=(const BMPattern&); + + // ----------------------------------------------------------------------- + // This method will perform a case insensitive match + // ----------------------------------------------------------------------- + bool matchesIgnoreCase(const XMLCh ch1, const XMLCh ch2); + + // ----------------------------------------------------------------------- + // Initialize/Clean up methods + // ----------------------------------------------------------------------- + void initialize(); + void cleanUp(); + + // ----------------------------------------------------------------------- + // Private data members + // + // fPattern + // fUppercasePattern + // This is the pattern to match against, and its upper case form. + // + // fIgnoreCase + // This is an indicator whether cases should be ignored during + // matching. + // + // fShiftTable + // fShiftTableLen + // This is a table of offsets for shifting purposes used by the BM + // search algorithm, and its length. + // ----------------------------------------------------------------------- + bool fIgnoreCase; + unsigned int fShiftTableLen; + XMLSize_t* fShiftTable; + XMLCh* fPattern; + XMLCh* fUppercasePattern; + MemoryManager* fMemoryManager; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/* + * End of file BMPattern.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/BlockRangeFactory.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/BlockRangeFactory.hpp new file mode 100644 index 000000000000..d1e0b3cf9dbc --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/BlockRangeFactory.hpp @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BLOCKRANGEFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_BLOCKRANGEFACTORY_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT BlockRangeFactory: public RangeFactory { + +public: + // ----------------------------------------------------------------------- + // Constructors and operators + // ----------------------------------------------------------------------- + BlockRangeFactory(); + ~BlockRangeFactory(); + + // ----------------------------------------------------------------------- + // Initialization methods + // ----------------------------------------------------------------------- + void initializeKeywordMap(RangeTokenMap *rangeTokMap = 0); + +protected: + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + void buildRanges(RangeTokenMap *rangeTokMap = 0); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + BlockRangeFactory(const BlockRangeFactory&); + BlockRangeFactory& operator=(const BlockRangeFactory&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file BlockRangeFactory.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/CharToken.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/CharToken.hpp new file mode 100644 index 000000000000..c53471ac721c --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/CharToken.hpp @@ -0,0 +1,88 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CHARTOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_CHARTOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT CharToken : public Token { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + CharToken(const tokType tkType, const XMLInt32 ch + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~CharToken(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLInt32 getChar() const; + + // ----------------------------------------------------------------------- + // Match methods + // ----------------------------------------------------------------------- + bool match(const XMLInt32 ch); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CharToken(const CharToken&); + CharToken& operator=(const CharToken&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + XMLInt32 fCharData; +}; + + +// --------------------------------------------------------------------------- +// CharToken: getter methods +// --------------------------------------------------------------------------- +inline XMLInt32 CharToken::getChar() const { + + return fCharData; +} + + +// --------------------------------------------------------------------------- +// CharToken: getter methods +// --------------------------------------------------------------------------- +inline bool CharToken::match(const XMLInt32 ch){ + + return ch == fCharData; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file CharToken.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/ClosureToken.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/ClosureToken.hpp new file mode 100644 index 000000000000..7321e3d80742 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/ClosureToken.hpp @@ -0,0 +1,114 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CLOSURETOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_CLOSURETOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT ClosureToken : public Token { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + ClosureToken(const tokType tkType, Token* const tok + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ClosureToken(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t size() const; + int getMin() const; + int getMax() const; + Token* getChild(const XMLSize_t index) const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setMin(const int minVal); + void setMax(const int maxVal); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ClosureToken(const ClosureToken&); + ClosureToken& operator=(const ClosureToken&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + int fMin; + int fMax; + Token* fChild; +}; + + +// --------------------------------------------------------------------------- +// ClosureToken: getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t ClosureToken::size() const { + + return 1; +} + + +inline int ClosureToken::getMax() const { + + return fMax; +} + +inline int ClosureToken::getMin() const { + + return fMin; +} + +inline Token* ClosureToken::getChild(const XMLSize_t) const { + + return fChild; +} + +// --------------------------------------------------------------------------- +// ClosureToken: setter methods +// --------------------------------------------------------------------------- +inline void ClosureToken::setMax(const int maxVal) { + + fMax = maxVal; +} + +inline void ClosureToken::setMin(const int minVal) { + + fMin = minVal; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ClosureToken.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/ConcatToken.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/ConcatToken.hpp new file mode 100644 index 000000000000..84d120351712 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/ConcatToken.hpp @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CONCATTOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_CONCATTOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT ConcatToken : public Token { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + ConcatToken(Token* const tok1, Token* const tok2 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ConcatToken(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + Token* getChild(const XMLSize_t index) const; + XMLSize_t size() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ConcatToken(const ConcatToken&); + ConcatToken& operator=(const ConcatToken&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + Token* fChild1; + Token* fChild2; +}; + + +// --------------------------------------------------------------------------- +// StringToken: getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t ConcatToken::size() const { + + return 2; +} + +inline Token* ConcatToken::getChild(const XMLSize_t index) const { + + return index == 0 ? fChild1 : fChild2; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ConcatToken.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/Match.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/Match.hpp new file mode 100644 index 000000000000..82cbf7dd7922 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/Match.hpp @@ -0,0 +1,163 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_MATCH_HPP) +#define XERCESC_INCLUDE_GUARD_MATCH_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * An instance of this class has ranges captured in matching + */ + class XMLUTIL_EXPORT Match : public XMemory +{ +public: + + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + Match(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /** + * Copy constructor + */ + Match(const Match& toCopy); + Match& operator=(const Match& toAssign); + + virtual ~Match(); + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + int getNoGroups() const; + int getStartPos(int index) const; + int getEndPos(int index) const; + + // ----------------------------------------------------------------------- + // Setter functions + // ----------------------------------------------------------------------- + void setNoGroups(const int n); + void setStartPos(const int index, const int value); + void setEndPos(const int index, const int value); + +private: + // ----------------------------------------------------------------------- + // Initialize/Clean up methods + // ----------------------------------------------------------------------- + void initialize(const Match& toCopy); + void cleanUp(); + + // ----------------------------------------------------------------------- + // Private data members + // + // fNoGroups + // Represents no of regular expression groups + // + // fStartPositions + // Array of start positions in the target text matched to specific + // regular expression group + // + // fEndPositions + // Array of end positions in the target text matched to specific + // regular expression group + // + // fPositionsSize + // Actual size of Start/EndPositions array. + // ----------------------------------------------------------------------- + int fNoGroups; + int fPositionsSize; + int* fStartPositions; + int* fEndPositions; + MemoryManager* fMemoryManager; +}; + +/** + * Inline Methods + */ + +// --------------------------------------------------------------------------- +// Match: getter methods +// --------------------------------------------------------------------------- +inline int Match::getNoGroups() const { + + if (fNoGroups < 0) + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_Result_Not_Set, fMemoryManager); + + return fNoGroups; +} + +inline int Match::getStartPos(int index) const { + + if (!fStartPositions) + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_Result_Not_Set, fMemoryManager); + + if (index < 0 || fNoGroups <= index) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + + return fStartPositions[index]; +} + +inline int Match::getEndPos(int index) const { + + if (!fEndPositions) + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_Result_Not_Set, fMemoryManager); + + if (index < 0 || fNoGroups <= index) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + + return fEndPositions[index]; +} + +// --------------------------------------------------------------------------- +// Match: setter methods +// --------------------------------------------------------------------------- +inline void Match::setStartPos(const int index, const int value) { + + if (!fStartPositions) + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_Result_Not_Set, fMemoryManager); + + if (index < 0 || fNoGroups <= index) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + + fStartPositions[index] = value; +} + +inline void Match::setEndPos(const int index, const int value) { + + if (!fEndPositions) + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_Result_Not_Set, fMemoryManager); + + if (index < 0 || fNoGroups <= index) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + + fEndPositions[index] = value; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/Op.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/Op.hpp new file mode 100644 index 000000000000..426c535ac4ef --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/Op.hpp @@ -0,0 +1,306 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_OP_HPP) +#define XERCESC_INCLUDE_GUARD_OP_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class Token; + + +class XMLUTIL_EXPORT Op : public XMemory +{ +public: + + typedef enum { + O_DOT = 0, + O_CHAR = 1, + O_RANGE = 3, + O_NRANGE = 4, + O_ANCHOR = 5, + O_STRING = 6, + O_CLOSURE = 7, + O_NONGREEDYCLOSURE = 8, + O_FINITE_CLOSURE = 9, + O_FINITE_NONGREEDYCLOSURE = 10, + O_QUESTION = 11, + O_NONGREEDYQUESTION = 12, + O_UNION = 13, + O_CAPTURE = 15, + O_BACKREFERENCE = 16 + } opType; + + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + virtual ~Op() { } + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + opType getOpType() const; + const Op* getNextOp() const; + virtual XMLInt32 getData() const; + virtual XMLInt32 getData2() const; + virtual XMLSize_t getSize() const; + virtual const Op* elementAt(XMLSize_t index) const; + virtual const Op* getChild() const; + virtual const Token* getToken() const; + virtual const XMLCh* getLiteral() const; + + // ----------------------------------------------------------------------- + // Setter functions + // ----------------------------------------------------------------------- + void setOpType(const opType type); + void setNextOp(const Op* const next); + +protected: + // ----------------------------------------------------------------------- + // Protected Constructors + // ----------------------------------------------------------------------- + Op(const opType type, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + friend class OpFactory; + + MemoryManager* const fMemoryManager; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Op(const Op&); + Op& operator=(const Op&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fOpType + // Indicates the type of operation + // + // fNextOp + // Points to the next operation in the chain + // ----------------------------------------------------------------------- + opType fOpType; + const Op* fNextOp; +}; + + +class XMLUTIL_EXPORT CharOp: public Op { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + CharOp(const opType type, const XMLInt32 charData, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~CharOp() {} + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + XMLInt32 getData() const; + +private: + // Private data members + XMLInt32 fCharData; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CharOp(const CharOp&); + CharOp& operator=(const CharOp&); +}; + +class XMLUTIL_EXPORT UnionOp : public Op { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + UnionOp(const opType type, const XMLSize_t size, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~UnionOp() { delete fBranches; } + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + XMLSize_t getSize() const; + const Op* elementAt(XMLSize_t index) const; + + // ----------------------------------------------------------------------- + // Setter functions + // ----------------------------------------------------------------------- + void addElement(Op* const op); + +private: + // Private Data members + RefVectorOf* fBranches; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + UnionOp(const UnionOp&); + UnionOp& operator=(const UnionOp&); +}; + + +class XMLUTIL_EXPORT ChildOp: public Op { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + ChildOp(const opType type, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ChildOp() {} + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + const Op* getChild() const; + + // ----------------------------------------------------------------------- + // Setter functions + // ----------------------------------------------------------------------- + void setChild(const Op* const child); + +private: + // Private data members + const Op* fChild; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ChildOp(const ChildOp&); + ChildOp& operator=(const ChildOp&); +}; + +class XMLUTIL_EXPORT ModifierOp: public ChildOp { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + ModifierOp(const opType type, const XMLInt32 v1, const XMLInt32 v2, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ModifierOp() {} + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + XMLInt32 getData() const; + XMLInt32 getData2() const; + +private: + // Private data members + XMLInt32 fVal1; + XMLInt32 fVal2; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ModifierOp(const ModifierOp&); + ModifierOp& operator=(const ModifierOp&); +}; + +class XMLUTIL_EXPORT RangeOp: public Op { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + RangeOp(const opType type, const Token* const token, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~RangeOp() {} + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + const Token* getToken() const; + +private: + // Private data members + const Token* fToken; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RangeOp(const RangeOp&); + RangeOp& operator=(const RangeOp&); +}; + +class XMLUTIL_EXPORT StringOp: public Op { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + StringOp(const opType type, const XMLCh* const literal, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~StringOp() { fMemoryManager->deallocate(fLiteral);} + + // ----------------------------------------------------------------------- + // Getter functions + // ----------------------------------------------------------------------- + const XMLCh* getLiteral() const; + +private: + // Private data members + XMLCh* fLiteral; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + StringOp(const StringOp&); + StringOp& operator=(const StringOp&); +}; + +// --------------------------------------------------------------------------- +// Op: getter methods +// --------------------------------------------------------------------------- +inline Op::opType Op::getOpType() const { + + return fOpType; +} + +inline const Op* Op::getNextOp() const { + + return fNextOp; +} + +// --------------------------------------------------------------------------- +// Op: setter methods +// --------------------------------------------------------------------------- +inline void Op::setOpType(const Op::opType type) { + + fOpType = type; +} + +inline void Op::setNextOp(const Op* const nextOp) { + + fNextOp = nextOp; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file Op.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/OpFactory.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/OpFactory.hpp new file mode 100644 index 000000000000..9b178e0dae1f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/OpFactory.hpp @@ -0,0 +1,116 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_OPFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_OPFACTORY_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class Op; +class CharOp; +class UnionOp; +class ChildOp; +class RangeOp; +class StringOp; +class ModifierOp; +class Token; + +/* + * A Factory class used by 'RegularExpression' to create different types of + * operations (Op) objects. The class will keep track of all objects created + * for cleanup purposes. Each 'RegularExpression' object will have its own + * instance of OpFactory and when a 'RegularExpression' object is deleted + * all associated Op objects will be deleted. + */ + +class XMLUTIL_EXPORT OpFactory : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and destructors + // ----------------------------------------------------------------------- + OpFactory(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~OpFactory(); + + // ----------------------------------------------------------------------- + // Factory methods + // ----------------------------------------------------------------------- + Op* createDotOp(); + CharOp* createCharOp(XMLInt32 data); + CharOp* createAnchorOp(XMLInt32 data); + CharOp* createCaptureOp(int number, const Op* const next); + UnionOp* createUnionOp(XMLSize_t size); + ChildOp* createClosureOp(int id); + ChildOp* createNonGreedyClosureOp(); + ChildOp* createQuestionOp(bool nonGreedy); + RangeOp* createRangeOp(const Token* const token); + CharOp* createBackReferenceOp(int refNo); + StringOp* createStringOp(const XMLCh* const literal); + + // ----------------------------------------------------------------------- + // Reset methods + // ----------------------------------------------------------------------- + /* + * Remove all created Op objects from Vector + */ + void reset(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + OpFactory(const OpFactory&); + OpFactory& operator=(const OpFactory&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fOpVector + // Contains Op objects. Used for memory cleanup. + // ----------------------------------------------------------------------- + RefVectorOf* fOpVector; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// OpFactory - Factory methods +// --------------------------------------------------------------------------- +inline void OpFactory::reset() { + + fOpVector->removeAllElements(); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file OpFactory + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/ParenToken.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/ParenToken.hpp new file mode 100644 index 000000000000..79b8dc40434d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/ParenToken.hpp @@ -0,0 +1,87 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PARENTOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_PARENTOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT ParenToken : public Token { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + ParenToken(const tokType tkType, Token* const tok, + const int noParen, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ParenToken(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t size() const; + int getNoParen() const; + Token* getChild(const XMLSize_t index) const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ParenToken(const ParenToken&); + ParenToken& operator=(const ParenToken&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + int fNoParen; + Token* fChild; +}; + + +// --------------------------------------------------------------------------- +// ParenToken: getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t ParenToken::size() const { + + return 1; +} + +inline int ParenToken::getNoParen() const { + + return fNoParen; +} + +inline Token* ParenToken::getChild(const XMLSize_t) const { + + return fChild; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ParenToken.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/ParserForXMLSchema.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/ParserForXMLSchema.hpp new file mode 100644 index 000000000000..4a277f072f68 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/ParserForXMLSchema.hpp @@ -0,0 +1,86 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PARSERFORXMLSCHEMA_HPP) +#define XERCESC_INCLUDE_GUARD_PARSERFORXMLSCHEMA_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class Token; +class RangeToken; + +class XMLUTIL_EXPORT ParserForXMLSchema : public RegxParser { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + ParserForXMLSchema(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ParserForXMLSchema(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + +protected: + // ----------------------------------------------------------------------- + // Parsing/Processing methods + // ----------------------------------------------------------------------- + Token* processCaret(); + Token* processDollar(); + Token* processStar(Token* const tok); + Token* processPlus(Token* const tok); + Token* processQuestion(Token* const tok); + Token* processParen(); + Token* processBackReference(); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + bool checkQuestion(const XMLSize_t off); + XMLInt32 decodeEscaped(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ParserForXMLSchema(const ParserForXMLSchema&); + ParserForXMLSchema& operator=(const ParserForXMLSchema&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ParserForXMLSchema.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/RangeFactory.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/RangeFactory.hpp new file mode 100644 index 000000000000..754017b3ac05 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/RangeFactory.hpp @@ -0,0 +1,89 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_RANGEFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_RANGEFACTORY_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class RangeTokenMap; + +class XMLUTIL_EXPORT RangeFactory : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors and destructors + // ----------------------------------------------------------------------- + virtual ~RangeFactory(); + + //----------------------------------------------------------------------- + // Initialization methods + // ----------------------------------------------------------------------- + /** + * To maintain src code compatibility, we added a default parameter. + * The caller is expected to pass in a valid RangeTokenMap instance. + */ + virtual void initializeKeywordMap(RangeTokenMap *rangeTokMap = 0) = 0; + + /* + * Used by children to build commonly used ranges + * To maintain src code compatibility, we added a default parameter. + * The caller is expected to pass in a valid RangeTokenMap instance. + */ + virtual void buildRanges(RangeTokenMap *rangeTokMap = 0) = 0; + +protected: + // ----------------------------------------------------------------------- + // Constructor and destructors + // ----------------------------------------------------------------------- + RangeFactory(); + + //friend class RangeTokenMap; + + // ----------------------------------------------------------------------- + // Data + // ----------------------------------------------------------------------- + bool fRangesCreated; + bool fKeywordsInitialized; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RangeFactory(const RangeFactory&); + RangeFactory& operator=(const RangeFactory&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file RangeFactory.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/RangeToken.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/RangeToken.hpp new file mode 100644 index 000000000000..6a0c0d269ba1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/RangeToken.hpp @@ -0,0 +1,146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_RANGETOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_RANGETOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class TokenFactory; + + +class XMLUTIL_EXPORT RangeToken : public Token { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + RangeToken(const tokType tkType, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~RangeToken(); + + // ----------------------------------------------------------------------- + // Public Constants + // ----------------------------------------------------------------------- + static const int MAPSIZE; + static const unsigned int INITIALSIZE; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + RangeToken* getCaseInsensitiveToken(TokenFactory* const tokFactory); + + void setCaseInsensitiveToken(RangeToken* tok); + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setRangeValues(XMLInt32* const rangeValues, const unsigned int count); + + // ----------------------------------------------------------------------- + // Range manipulation methods + // ----------------------------------------------------------------------- + void addRange(const XMLInt32 start, const XMLInt32 end); + void mergeRanges(const Token *const tok); + void sortRanges(); + void compactRanges(); + void subtractRanges(RangeToken* const tok); + void intersectRanges(RangeToken* const tok); + static RangeToken* complementRanges(RangeToken* const tok, + TokenFactory* const tokFactory, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + bool empty() const; + + // ----------------------------------------------------------------------- + // Match methods + // ----------------------------------------------------------------------- + bool match(const XMLInt32 ch); + + // ----------------------------------------------------------------------- + // Creates the map. This will happen automatically, + // necessary. + // ----------------------------------------------------------------------- + void createMap(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RangeToken(const RangeToken&); + RangeToken& operator=(const RangeToken&); + + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + void expand(const unsigned int length); + + void doCreateMap(); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fSorted; + bool fCompacted; + int fNonMapIndex; + unsigned int fElemCount; + unsigned int fMaxCount; + int* fMap; + XMLInt32* fRanges; + RangeToken* fCaseIToken; + MemoryManager* fMemoryManager; +}; + + +inline void RangeToken::setCaseInsensitiveToken(RangeToken* tok) +{ + fCaseIToken = tok; +} + +inline void RangeToken::createMap() +{ + if (!fMap) + { + doCreateMap(); + } +} + +inline bool RangeToken::empty() const +{ + return fElemCount==0; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file RangeToken.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/RangeTokenMap.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/RangeTokenMap.hpp new file mode 100644 index 000000000000..25376ca530b5 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/RangeTokenMap.hpp @@ -0,0 +1,232 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_RANGETOKENMAP_HPP) +#define XERCESC_INCLUDE_GUARD_RANGETOKENMAP_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class RangeToken; +class RangeFactory; +class TokenFactory; +class XMLStringPool; + +class XMLUTIL_EXPORT RangeTokenElemMap : public XMemory +{ + +public: + RangeTokenElemMap(unsigned int categoryId); + ~RangeTokenElemMap(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + unsigned int getCategoryId() const; + RangeToken* getRangeToken(const bool complement = false) const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setRangeToken(RangeToken* const tok, const bool complement = false); + void setCategoryId(const unsigned int categId); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RangeTokenElemMap(const RangeTokenElemMap&); + RangeTokenElemMap& operator=(const RangeTokenElemMap&); + + // Data members + unsigned int fCategoryId; + RangeToken* fRange; + RangeToken* fNRange; +}; + + +class XMLUTIL_EXPORT RangeTokenMap : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Putter methods + // ----------------------------------------------------------------------- + void addCategory(const XMLCh* const categoryName); + void addRangeMap(const XMLCh* const categoryName, + RangeFactory* const rangeFactory); + void addKeywordMap(const XMLCh* const keyword, + const XMLCh* const categoryName); + + // ----------------------------------------------------------------------- + // Instance methods + // ----------------------------------------------------------------------- + static RangeTokenMap* instance(); + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setRangeToken(const XMLCh* const keyword, RangeToken* const tok, + const bool complement = false); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + TokenFactory* getTokenFactory() const; + +protected: + // ----------------------------------------------------------------------- + // Constructor and destructors + // ----------------------------------------------------------------------- + RangeTokenMap(MemoryManager* manager); + ~RangeTokenMap(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /* + * Gets a commonly used RangeToken from the token registry based on the + * range name - Called by TokenFactory. + */ + RangeToken* getRange(const XMLCh* const name, + const bool complement = false); + + RefHashTableOf* getTokenRegistry() const; + RefHashTableOf* getRangeMap() const; + XMLStringPool* getCategories() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RangeTokenMap(const RangeTokenMap&); + RangeTokenMap& operator=(const RangeTokenMap&); + + // ----------------------------------------------------------------------- + // Private Helpers methods + // ----------------------------------------------------------------------- + /* + * Initializes the registry with a set of commonly used RangeToken + * objects. + */ + void initializeRegistry(); + void buildTokenRanges(); + void cleanUp(); + friend class TokenFactory; + + // ----------------------------------------------------------------------- + // Private data members + // + // fTokenRegistry + // Contains a set of commonly used tokens + // + // fRangeMap + // Contains a map between a category name and a RangeFactory object. + // + // fCategories + // Contains range categories names + // + // fTokenFactory + // Token factory object + // + // fInstance + // A RangeTokenMap instance + // + // fMutex + // A mutex object for synchronization + // ----------------------------------------------------------------------- + RefHashTableOf* fTokenRegistry; + RefHashTableOf* fRangeMap; + XMLStringPool* fCategories; + TokenFactory* fTokenFactory; + XMLMutex fMutex; + static RangeTokenMap* fInstance; + + friend class XMLInitializer; +}; + +// --------------------------------------------------------------------------- +// RangeTokenElemMap: Getter methods +// --------------------------------------------------------------------------- +inline unsigned int RangeTokenElemMap::getCategoryId() const { + + return fCategoryId; +} + +inline RangeToken* RangeTokenElemMap::getRangeToken(const bool complement) const { + + return complement ? fNRange : fRange; +} + +// --------------------------------------------------------------------------- +// RangeTokenElemMap: Setter methods +// --------------------------------------------------------------------------- +inline void RangeTokenElemMap::setCategoryId(const unsigned int categId) { + + fCategoryId = categId; +} + +inline void RangeTokenElemMap::setRangeToken(RangeToken* const tok, + const bool complement) { + + if (complement) + fNRange = tok; + else + fRange = tok; +} + +// --------------------------------------------------------------------------- +// RangeTokenMap: Getter methods +// --------------------------------------------------------------------------- +inline RefHashTableOf* RangeTokenMap::getTokenRegistry() const { + + return fTokenRegistry; +} + +inline RefHashTableOf* RangeTokenMap::getRangeMap() const { + + return fRangeMap; +} + +inline XMLStringPool* RangeTokenMap::getCategories() const { + + return fCategories; +} + +inline TokenFactory* RangeTokenMap::getTokenFactory() const { + + return fTokenFactory; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file RangeToken.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/RegularExpression.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/RegularExpression.hpp new file mode 100644 index 000000000000..6133ebd81038 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/RegularExpression.hpp @@ -0,0 +1,772 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REGULAREXPRESSION_HPP) +#define XERCESC_INCLUDE_GUARD_REGULAREXPRESSION_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class RangeToken; +class Match; +class RegxParser; + +/** + * The RegularExpression class represents a parsed executable regular expression. + * This class is thread safe. Two similar regular expression syntaxes are + * supported: + * + *
    + *
  1. The XPath 2.0 / XQuery regular expression syntax. + *
  2. The XML Schema regular expression syntax.
  3. + *
+ * + * XPath 2.0 regular expression syntax is used unless the "X" option is specified during construction. + * + * Options can be specified during construction to change the way that the regular expression is handled. + * Options are specified by a string consisting of any number of the following characters: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
CharacterMeaning
i + * Ignore case when matching the regular expression.
m + * Multi-line mode. The meta characters "^" and "$" will match the beginning and end of lines.
s + * Single-line mode. The meta character "." will match a newline character.
xAllow extended comments.
FProhibit the fixed string optimization.
HProhibit the head character optimization.
XParse the regular expression according to the + * XML Schema regular expression syntax.
+ */ +class XMLUTIL_EXPORT RegularExpression : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors and destructor */ + //@{ + + /** Parses the given regular expression. + * + * @param pattern the regular expression in the local code page + * @param manager the memory manager to use + */ + RegularExpression + ( + const char* const pattern + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Parses the given regular expression using the options specified. + * + * @param pattern the regular expression in the local code page + * @param options the options string in the local code page + * @param manager the memory manager to use + */ + RegularExpression + ( + const char* const pattern + , const char* const options + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Parses the given regular expression. + * + * @param pattern the regular expression + * @param manager the memory manager to use + */ + RegularExpression + ( + const XMLCh* const pattern + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** Parses the given regular expression using the options specified. + * + * @param pattern the regular expression + * @param options the options string + * @param manager the memory manager to use + */ + RegularExpression + ( + const XMLCh* const pattern + , const XMLCh* const options + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~RegularExpression(); + + //@} + + // ----------------------------------------------------------------------- + // Public Constants + // ----------------------------------------------------------------------- + static const unsigned int IGNORE_CASE; + static const unsigned int SINGLE_LINE; + static const unsigned int MULTIPLE_LINE; + static const unsigned int EXTENDED_COMMENT; + static const unsigned int PROHIBIT_HEAD_CHARACTER_OPTIMIZATION; + static const unsigned int PROHIBIT_FIXED_STRING_OPTIMIZATION; + static const unsigned int XMLSCHEMA_MODE; + typedef enum + { + wordTypeIgnore = 0, + wordTypeLetter = 1, + wordTypeOther = 2 + } wordType; + + // ----------------------------------------------------------------------- + // Public Helper methods + // ----------------------------------------------------------------------- + + /** @name Public helper methods */ + //@{ + + static int getOptionValue(const XMLCh ch); + static bool isSet(const int options, const int flag); + + //@} + + // ----------------------------------------------------------------------- + // Matching methods + // ----------------------------------------------------------------------- + + /** @name Matching methods */ + //@{ + + /** Tries to match the given null terminated string against the regular expression, returning + * true if successful. + * + * @param matchString the string to match in the local code page + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const char* const matchString, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given string between the specified start and end offsets + * against the regular expression, returning true if successful. + * + * @param matchString the string to match in the local code page + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const char* const matchString, const XMLSize_t start, const XMLSize_t end, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given null terminated string against the regular expression, returning + * true if successful. + * + * @param matchString the string to match in the local code page + * @param pMatch a Match object, which will be populated with the offsets for the + * regular expression match and sub-matches. + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const char* const matchString, Match* const pMatch, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given string between the specified start and end offsets + * against the regular expression, returning true if successful. + * + * @param matchString the string to match in the local code page + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param pMatch a Match object, which will be populated with the offsets for the + * regular expression match and sub-matches. + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const char* const matchString, const XMLSize_t start, const XMLSize_t end, + Match* const pMatch, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given null terminated string against the regular expression, returning + * true if successful. + * + * @param matchString the string to match + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const XMLCh* const matchString, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given string between the specified start and end offsets + * against the regular expression, returning true if successful. + * + * @param matchString the string to match + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const XMLCh* const matchString, const XMLSize_t start, const XMLSize_t end, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given null terminated string against the regular expression, returning + * true if successful. + * + * @param matchString the string to match + * @param pMatch a Match object, which will be populated with the offsets for the + * regular expression match and sub-matches. + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const XMLCh* const matchString, Match* const pMatch, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given string between the specified start and end offsets + * against the regular expression, returning true if successful. + * + * @param matchString the string to match + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param pMatch a Match object, which will be populated with the offsets for the + * regular expression match and sub-matches. + * @param manager the memory manager to use + * + * @return Whether the string matched the regular expression or not. + */ + bool matches(const XMLCh* const matchString, const XMLSize_t start, const XMLSize_t end, + Match* const pMatch, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tries to match the given string between the specified start and end offsets + * against the regular expression. The subEx vector is populated with the details + * for every non-overlapping occurrence of a match in the string. + * + * @param matchString the string to match + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param subEx a RefVectorOf Match objects, populated with the offsets for the + * regular expression match and sub-matches. + * @param manager the memory manager to use + */ + void allMatches(const XMLCh* const matchString, const XMLSize_t start, const XMLSize_t end, + RefVectorOf *subEx, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + //@} + + // ----------------------------------------------------------------------- + // Tokenize methods + // ----------------------------------------------------------------------- + // Note: The caller owns the string vector that is returned, and is responsible + // for deleting it. + + /** @name Tokenize methods */ + //@{ + + /** Tokenizes the null terminated string according to the regular expression, returning + * the parts of the string that do not match the regular expression. + * + * @param matchString the string to match in the local code page + * @param manager the memory manager to use + * + * @return A RefArrayVectorOf sub-strings that do not match the regular expression allocated using the + * given MemoryManager. The caller owns the string vector that is returned, and is responsible for + * deleting it. + */ + RefArrayVectorOf *tokenize(const char* const matchString, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tokenizes the string between the specified start and end offsets according to the regular + * expression, returning the parts of the string that do not match the regular expression. + * + * @param matchString the string to match in the local code page + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param manager the memory manager to use + * + * @return A RefArrayVectorOf sub-strings that do not match the regular expression allocated using the + * given MemoryManager. The caller owns the string vector that is returned, and is responsible for + * deleting it. + */ + RefArrayVectorOf *tokenize(const char* const matchString, const XMLSize_t start, const XMLSize_t end, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tokenizes the null terminated string according to the regular expression, returning + * the parts of the string that do not match the regular expression. + * + * @param matchString the string to match + * @param manager the memory manager to use + * + * @return A RefArrayVectorOf sub-strings that do not match the regular expression allocated using the + * given MemoryManager. The caller owns the string vector that is returned, and is responsible for + * deleting it. + */ + RefArrayVectorOf *tokenize(const XMLCh* const matchString, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Tokenizes the string between the specified start and end offsets according to the regular + * expression, returning the parts of the string that do not match the regular expression. + * + * @param matchString the string to match + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param manager the memory manager to use + * + * @return A RefArrayVectorOf sub-strings that do not match the regular expression allocated using the + * given MemoryManager. The caller owns the string vector that is returned, and is responsible for + * deleting it. + */ + RefArrayVectorOf *tokenize(const XMLCh* const matchString, const XMLSize_t start, const XMLSize_t end, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + //@} + + // ----------------------------------------------------------------------- + // Replace methods + // ----------------------------------------------------------------------- + // Note: The caller owns the XMLCh* that is returned, and is responsible for + // deleting it. + + /** @name Replace methods */ + //@{ + + /** Performs a search and replace on the given null terminated string, replacing + * any substring that matches the regular expression with a string derived from + * the replacement string. + * + * @param matchString the string to match in the local code page + * @param replaceString the string to replace in the local code page + * @param manager the memory manager to use + * + * @return The resulting string allocated using the given MemoryManager. The caller owns the string + * that is returned, and is responsible for deleting it. + */ + XMLCh *replace(const char* const matchString, const char* const replaceString, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Performs a search and replace on the given string between the specified start and end offsets, replacing + * any substring that matches the regular expression with a string derived from + * the replacement string. + * + * @param matchString the string to match in the local code page + * @param replaceString the string to replace in the local code page + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param manager the memory manager to use + * + * @return The resulting string allocated using the given MemoryManager. The caller owns the string + * that is returned, and is responsible for deleting it. + */ + XMLCh *replace(const char* const matchString, const char* const replaceString, + const XMLSize_t start, const XMLSize_t end, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Performs a search and replace on the given null terminated string, replacing + * any substring that matches the regular expression with a string derived from + * the replacement string. + * + * @param matchString the string to match + * @param replaceString the string to replace + * @param manager the memory manager to use + * + * @return The resulting string allocated using the given MemoryManager. The caller owns the string + * that is returned, and is responsible for deleting it. + */ + XMLCh *replace(const XMLCh* const matchString, const XMLCh* const replaceString, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + /** Performs a search and replace on the given string between the specified start and end offsets, replacing + * any substring that matches the regular expression with a string derived from + * the replacement string. + * + * @param matchString the string to match + * @param replaceString the string to replace + * @param start the offset of the start of the string + * @param end the offset of the end of the string + * @param manager the memory manager to use + * + * @return The resulting string allocated using the given MemoryManager. The caller owns the string + * that is returned, and is responsible for deleting it. + */ + XMLCh *replace(const XMLCh* const matchString, const XMLCh* const replaceString, + const XMLSize_t start, const XMLSize_t end, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; + + //@} + + // ----------------------------------------------------------------------- + // Static initialize and cleanup methods + // ----------------------------------------------------------------------- + + /** @name Static initilize and cleanup methods */ + //@{ + + static void + staticInitialize(MemoryManager* memoryManager); + + static void + staticCleanup(); + + //@} + +protected: + virtual RegxParser* getRegexParser(const int options, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ----------------------------------------------------------------------- + // Cleanup methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setPattern(const XMLCh* const pattern, const XMLCh* const options=0); + + // ----------------------------------------------------------------------- + // Protected data types + // ----------------------------------------------------------------------- + class XMLUTIL_EXPORT Context : public XMemory + { + public : + Context(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + Context(Context* src); + ~Context(); + + Context& operator= (const Context& other); + inline const XMLCh* getString() const { return fString; } + void reset(const XMLCh* const string, const XMLSize_t stringLen, + const XMLSize_t start, const XMLSize_t limit, const int noClosures, + const unsigned int options); + bool nextCh(XMLInt32& ch, XMLSize_t& offset); + + bool fAdoptMatch; + XMLSize_t fStart; + XMLSize_t fLimit; + XMLSize_t fLength; // fLimit - fStart + int fSize; + XMLSize_t fStringMaxLen; + int* fOffsets; + Match* fMatch; + const XMLCh* fString; + unsigned int fOptions; + MemoryManager* fMemoryManager; + }; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RegularExpression(const RegularExpression&); + RegularExpression& operator=(const RegularExpression&); + + // ----------------------------------------------------------------------- + // Protected Helper methods + // ----------------------------------------------------------------------- + void prepare(); + int parseOptions(const XMLCh* const options); + + /** + * Matching helpers + */ + int match(Context* const context, const Op* const operations, XMLSize_t offset) const; + bool matchIgnoreCase(const XMLInt32 ch1, const XMLInt32 ch2) const; + + /** + * Helper methods used by match(Context* ...) + */ + bool matchChar(Context* const context, const XMLInt32 ch, XMLSize_t& offset, + const bool ignoreCase) const; + bool matchDot(Context* const context, XMLSize_t& offset) const; + bool matchRange(Context* const context, const Op* const op, + XMLSize_t& offset, const bool ignoreCase) const; + bool matchAnchor(Context* const context, const XMLInt32 ch, + const XMLSize_t offset) const; + bool matchBackReference(Context* const context, const XMLInt32 ch, + XMLSize_t& offset, const bool ignoreCase) const; + bool matchString(Context* const context, const XMLCh* const literal, + XMLSize_t& offset, const bool ignoreCase) const; + int matchUnion(Context* const context, const Op* const op, XMLSize_t offset) const; + int matchCapture(Context* const context, const Op* const op, XMLSize_t offset) const; + + /** + * Replace helpers + */ + void subInExp(const XMLCh* const repString, + const XMLCh* const origString, + const Match* subEx, + XMLBuffer &result, + MemoryManager* const manager) const; + /** + * Converts a token tree into an operation tree + */ + void compile(const Token* const token); + Op* compile(const Token* const token, Op* const next, + const bool reverse); + /** + * Helper methods used by compile + */ + Op* compileUnion(const Token* const token, Op* const next, + const bool reverse); + Op* compileParenthesis(const Token* const token, Op* const next, + const bool reverse); + Op* compileConcat(const Token* const token, Op* const next, + const bool reverse); + Op* compileClosure(const Token* const token, Op* const next, + const bool reverse, const Token::tokType tkType); + + bool doTokenOverlap(const Op* op, Token* token); + + // ----------------------------------------------------------------------- + // Protected data members + // ----------------------------------------------------------------------- + bool fHasBackReferences; + bool fFixedStringOnly; + int fNoGroups; + XMLSize_t fMinLength; + unsigned int fNoClosures; + unsigned int fOptions; + const BMPattern* fBMPattern; + XMLCh* fPattern; + XMLCh* fFixedString; + const Op* fOperations; + Token* fTokenTree; + RangeToken* fFirstChar; + static RangeToken* fWordRange; + OpFactory fOpFactory; + TokenFactory* fTokenFactory; + MemoryManager* fMemoryManager; +}; + + + + // ----------------------------------------------------------------------- + // RegularExpression: Static initialize and cleanup methods + // ----------------------------------------------------------------------- + inline void RegularExpression::staticCleanup() + { + fWordRange = 0; + } + + // --------------------------------------------------------------------------- + // RegularExpression: Cleanup methods + // --------------------------------------------------------------------------- + inline void RegularExpression::cleanUp() { + + fMemoryManager->deallocate(fPattern);//delete [] fPattern; + fMemoryManager->deallocate(fFixedString);//delete [] fFixedString; + delete fBMPattern; + delete fTokenFactory; + } + + // --------------------------------------------------------------------------- + // RegularExpression: Helper methods + // --------------------------------------------------------------------------- + inline bool RegularExpression::isSet(const int options, const int flag) { + + return (options & flag) == flag; + } + + + inline Op* RegularExpression::compileUnion(const Token* const token, + Op* const next, + const bool reverse) { + + XMLSize_t tokSize = token->size(); + UnionOp* uniOp = fOpFactory.createUnionOp(tokSize); + + for (XMLSize_t i=0; iaddElement(compile(token->getChild(i), next, reverse)); + } + + return uniOp; + } + + + inline Op* RegularExpression::compileParenthesis(const Token* const token, + Op* const next, + const bool reverse) { + + if (token->getNoParen() == 0) + return compile(token->getChild(0), next, reverse); + + Op* captureOp = 0; + + if (reverse) { + + captureOp = fOpFactory.createCaptureOp(token->getNoParen(), next); + captureOp = compile(token->getChild(0), captureOp, reverse); + + return fOpFactory.createCaptureOp(-token->getNoParen(), captureOp); + } + + captureOp = fOpFactory.createCaptureOp(-token->getNoParen(), next); + captureOp = compile(token->getChild(0), captureOp, reverse); + + return fOpFactory.createCaptureOp(token->getNoParen(), captureOp); + } + + inline Op* RegularExpression::compileConcat(const Token* const token, + Op* const next, + const bool reverse) { + + Op* ret = next; + XMLSize_t tokSize = token->size(); + + if (!reverse) { + + for (XMLSize_t i= tokSize; i>0; i--) { + ret = compile(token->getChild(i-1), ret, false); + } + } + else { + + for (XMLSize_t i= 0; i< tokSize; i++) { + ret = compile(token->getChild(i), ret, true); + } + } + + return ret; + } + + inline Op* RegularExpression::compileClosure(const Token* const token, + Op* const next, + const bool reverse, + const Token::tokType tkType) { + + Op* ret = 0; + Token* childTok = token->getChild(0); + int min = token->getMin(); + int max = token->getMax(); + + if (min >= 0 && min == max) { + + ret = next; + for (int i=0; i< min; i++) { + ret = compile(childTok, ret, reverse); + } + + return ret; + } + + if (min > 0 && max > 0) + max -= min; + + if (max > 0) { + + ret = next; + for (int i=0; isetNextOp(next); + childOp->setChild(compile(childTok, ret, reverse)); + ret = childOp; + } + } + else { + + ChildOp* childOp = 0; + + if (tkType == Token::T_NONGREEDYCLOSURE) { + childOp = fOpFactory.createNonGreedyClosureOp(); + } + else { + + if (childTok->getMinLength() == 0) + childOp = fOpFactory.createClosureOp(fNoClosures++); + else + childOp = fOpFactory.createClosureOp(-1); + } + + childOp->setNextOp(next); + if(next==NULL || !doTokenOverlap(next, childTok)) + { + childOp->setOpType(tkType == Token::T_NONGREEDYCLOSURE?Op::O_FINITE_NONGREEDYCLOSURE:Op::O_FINITE_CLOSURE); + childOp->setChild(compile(childTok, NULL, reverse)); + } + else + { + childOp->setChild(compile(childTok, childOp, reverse)); + } + ret = childOp; + } + + if (min > 0) { + + for (int i=0; i< min; i++) { + ret = compile(childTok, ret, reverse); + } + } + + return ret; + } + +XERCES_CPP_NAMESPACE_END + +#endif +/** + * End of file RegularExpression.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/RegxDefs.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/RegxDefs.hpp new file mode 100644 index 000000000000..2b9ba1302a51 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/RegxDefs.hpp @@ -0,0 +1,239 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REGXDEFS_HPP) +#define XERCESC_INCLUDE_GUARD_REGXDEFS_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +static const XMLCh fgXMLCategory[] = +{ + chLatin_X, chLatin_M, chLatin_L, chNull +}; + +static const XMLCh fgASCIICategory[] = +{ + chLatin_A, chLatin_S, chLatin_C, chLatin_I, chLatin_I, chNull +}; + +static const XMLCh fgUnicodeCategory[] = +{ + chLatin_U, chLatin_N, chLatin_I, chLatin_C, chLatin_O, chLatin_D, + chLatin_E, chNull +}; + +static const XMLCh fgBlockCategory[] = +{ + chLatin_B, chLatin_L, chLatin_O, chLatin_C, chLatin_K, chNull +}; + +static const XMLCh fgXMLSpace[] = +{ + chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_S, + chLatin_p, chLatin_a, chLatin_c, chLatin_e, chNull +}; + +static const XMLCh fgXMLDigit[] = +{ + chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_D, + chLatin_i, chLatin_g, chLatin_i, chLatin_t, chNull +}; + +static const XMLCh fgXMLWord[] = +{ + chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_W, + chLatin_o, chLatin_r, chLatin_d, chNull +}; + +static const XMLCh fgXMLNameChar[] = +{ + chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_N, + chLatin_a, chLatin_m, chLatin_e, chLatin_C, chLatin_h, chLatin_a, + chLatin_r, chNull +}; + +static const XMLCh fgXMLInitialNameChar[] = +{ + chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_I, + chLatin_n, chLatin_i, chLatin_t, chLatin_i, chLatin_a, chLatin_l, + chLatin_N, chLatin_a, chLatin_m, chLatin_e, chLatin_C, chLatin_h, + chLatin_a, chLatin_r, chNull +}; + +static const XMLCh fgASCII[] = +{ + chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i, + chLatin_s, chLatin_A, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chNull +}; + +static const XMLCh fgASCIIDigit[] = +{ + chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i, + chLatin_s, chLatin_D, chLatin_i, chLatin_g, chLatin_i, chLatin_t, chNull +}; + +static const XMLCh fgASCIIWord[] = +{ + chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i, + chLatin_s, chLatin_W, chLatin_o, chLatin_r, chLatin_d, chNull +}; + +static const XMLCh fgASCIISpace[] = +{ + chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i, + chLatin_s, chLatin_S, chLatin_p, chLatin_a, chLatin_c, chLatin_e, chNull +}; + +static const XMLCh fgASCIIXDigit[] = +{ + chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i, + chLatin_s, chLatin_X, chLatin_D, chLatin_i, chLatin_g, chLatin_i, + chLatin_t, chNull +}; + + +static const XMLCh fgUniAll[] = +{ + chLatin_A, chLatin_L, chLatin_L, chNull +}; + +static const XMLCh fgUniIsAlpha[] = +{ + chLatin_I, chLatin_s, chLatin_A, chLatin_l, chLatin_p, chLatin_h, + chLatin_a, chNull +}; + +static const XMLCh fgUniIsAlnum[] = +{ + chLatin_I, chLatin_s, chLatin_A, chLatin_l, chLatin_n, chLatin_u, + chLatin_m, chNull +}; + +static const XMLCh fgUniIsWord[] = +{ + chLatin_I, chLatin_s, chLatin_W, chLatin_o, chLatin_r, chLatin_d, + chNull +}; + + +static const XMLCh fgUniIsDigit[] = +{ + chLatin_I, chLatin_s, chLatin_D, chLatin_i, chLatin_g, chLatin_i, + chLatin_t, chNull +}; + +static const XMLCh fgUniIsUpper[] = +{ + chLatin_I, chLatin_s, chLatin_U, chLatin_p, chLatin_p, chLatin_e, + chLatin_r, chNull +}; + +static const XMLCh fgUniIsLower[] = +{ + chLatin_I, chLatin_s, chLatin_L, chLatin_o, chLatin_w, chLatin_e, + chLatin_r, chNull +}; + +static const XMLCh fgUniIsPunct[] = +{ + chLatin_I, chLatin_s, chLatin_P, chLatin_u, chLatin_n, chLatin_c, + chLatin_t, chNull +}; + +static const XMLCh fgUniIsSpace[] = +{ + chLatin_I, chLatin_s, chLatin_S, chLatin_p, chLatin_a, chLatin_c, + chLatin_e, chNull +}; + +static const XMLCh fgUniAssigned[] = +{ + chLatin_A, chLatin_S, chLatin_S, chLatin_I, chLatin_G, chLatin_N, + chLatin_E, chLatin_D, chNull +}; + + +static const XMLCh fgUniDecimalDigit[] = +{ + chLatin_N, chLatin_d, chNull +}; + +static const XMLCh fgBlockIsSpecials[] = +{ + chLatin_I, chLatin_s, chLatin_S, chLatin_p, chLatin_e, chLatin_c, chLatin_i, chLatin_a, + chLatin_l, chLatin_s, chNull +}; + +static const XMLCh fgBlockIsPrivateUse[] = +{ + chLatin_I, chLatin_s, chLatin_P, chLatin_r, chLatin_i, chLatin_v, chLatin_a, chLatin_t, chLatin_e, + chLatin_U, chLatin_s, chLatin_e, chNull +}; + +static const XMLCh fgUniLetter[] = +{ + chLatin_L, chNull +}; + +static const XMLCh fgUniNumber[] = +{ + chLatin_N, chNull +}; + +static const XMLCh fgUniMark[] = +{ + chLatin_M, chNull +}; + +static const XMLCh fgUniSeparator[] = +{ + chLatin_Z, chNull +}; + +static const XMLCh fgUniPunctuation[] = +{ + chLatin_P, chNull +}; + +static const XMLCh fgUniControl[] = +{ + chLatin_C, chNull +}; + +static const XMLCh fgUniSymbol[] = +{ + chLatin_S, chNull +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file RegxDefs.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/RegxParser.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/RegxParser.hpp new file mode 100644 index 000000000000..43c5efda6575 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/RegxParser.hpp @@ -0,0 +1,284 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REGXPARSER_HPP) +#define XERCESC_INCLUDE_GUARD_REGXPARSER_HPP + +/* + * A regular expression parser + */ +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class Token; +class RangeToken; +class TokenFactory; + +class XMLUTIL_EXPORT RegxParser : public XMemory +{ +public: + + // ----------------------------------------------------------------------- + // Public constant data + // ----------------------------------------------------------------------- + // Parse tokens + typedef enum { + REGX_T_CHAR = 0, + REGX_T_EOF = 1, + REGX_T_OR = 2, + REGX_T_STAR = 3, + REGX_T_PLUS = 4, + REGX_T_QUESTION = 5, + REGX_T_LPAREN = 6, + REGX_T_RPAREN = 7, + REGX_T_DOT = 8, + REGX_T_LBRACKET = 9, + REGX_T_BACKSOLIDUS = 10, + REGX_T_CARET = 11, + REGX_T_DOLLAR = 12, + REGX_T_XMLSCHEMA_CC_SUBTRACTION = 13 + } parserState; + + typedef enum { + regexParserStateNormal = 0, + regexParserStateInBrackets = 1 + } parserStateContext; + + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + RegxParser(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~RegxParser(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + parserStateContext getParseContext() const; + parserState getState() const; + XMLInt32 getCharData() const; + int getNoParen() const; + XMLSize_t getOffset() const; + bool hasBackReferences() const; + TokenFactory* getTokenFactory() const; + int getOptions() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setParseContext(const parserStateContext value); + void setTokenFactory(TokenFactory* const tokFactory); + void setOptions(const int options); + + // ----------------------------------------------------------------------- + // Public Parsing methods + // ----------------------------------------------------------------------- + Token* parse(const XMLCh* const regxStr, const int options); + +protected: + // ----------------------------------------------------------------------- + // Protected Helper methods + // ----------------------------------------------------------------------- + virtual bool checkQuestion(const XMLSize_t off); + virtual XMLInt32 decodeEscaped(); + MemoryManager* getMemoryManager() const; + // ----------------------------------------------------------------------- + // Protected Parsing/Processing methods + // ----------------------------------------------------------------------- + void processNext(); + + Token* parseRegx(const bool matchingRParen = false); + virtual Token* processCaret(); + virtual Token* processDollar(); + virtual Token* processBackReference(); + virtual Token* processStar(Token* const tok); + virtual Token* processPlus(Token* const tok); + virtual Token* processQuestion(Token* const tok); + virtual Token* processParen(); + + RangeToken* parseCharacterClass(const bool useNRange); + RangeToken* processBacksolidus_pP(const XMLInt32 ch); + + // ----------------------------------------------------------------------- + // Protected PreCreated RangeToken access methods + // ----------------------------------------------------------------------- + RangeToken* getTokenForShorthand(const XMLInt32 ch); + + bool isSet(const int flag); +private: + // ----------------------------------------------------------------------- + // Private parsing/processing methods + // ----------------------------------------------------------------------- + Token* parseTerm(const bool matchingRParen = false); + Token* parseFactor(); + Token* parseAtom(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RegxParser(const RegxParser&); + RegxParser& operator=(const RegxParser&); + + // ----------------------------------------------------------------------- + // Private data types + // ----------------------------------------------------------------------- + class ReferencePosition : public XMemory + { + public : + ReferencePosition(const int refNo, const XMLSize_t position); + + int fReferenceNo; + XMLSize_t fPosition; + }; + + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + int hexChar(const XMLInt32 ch); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + bool fHasBackReferences; + int fOptions; + XMLSize_t fOffset; + int fNoGroups; + parserStateContext fParseContext; + XMLSize_t fStringLen; + parserState fState; + XMLInt32 fCharData; + XMLCh* fString; + RefVectorOf* fReferences; + TokenFactory* fTokenFactory; +}; + + +// --------------------------------------------------------------------------- +// RegxParser: Getter Methods +// --------------------------------------------------------------------------- +inline RegxParser::parserStateContext RegxParser::getParseContext() const { + + return fParseContext; +} + +inline RegxParser::parserState RegxParser::getState() const { + + return fState; +} + +inline XMLInt32 RegxParser::getCharData() const { + + return fCharData; +} + +inline int RegxParser::getNoParen() const { + + return fNoGroups; +} + +inline XMLSize_t RegxParser::getOffset() const { + + return fOffset; +} + +inline bool RegxParser::hasBackReferences() const { + + return fHasBackReferences; +} + +inline TokenFactory* RegxParser::getTokenFactory() const { + + return fTokenFactory; +} + +inline MemoryManager* RegxParser::getMemoryManager() const { + return fMemoryManager; +} + +inline int RegxParser::getOptions() const { + + return fOptions; +} + +// --------------------------------------------------------------------------- +// RegxParser: Setter Methods +// --------------------------------------------------------------------------- +inline void RegxParser::setParseContext(const RegxParser::parserStateContext value) { + + fParseContext = value; +} + +inline void RegxParser::setTokenFactory(TokenFactory* const tokFactory) { + + fTokenFactory = tokFactory; +} + +inline void RegxParser::setOptions(const int options) { + + fOptions = options; +} + +// --------------------------------------------------------------------------- +// RegxParser: Helper Methods +// --------------------------------------------------------------------------- +inline bool RegxParser::isSet(const int flag) { + + return (fOptions & flag) == flag; +} + + +inline int RegxParser::hexChar(const XMLInt32 ch) { + + if (ch < chDigit_0 || ch > chLatin_f) + return -1; + + if (ch <= chDigit_9) + return ch - chDigit_0; + + if (ch < chLatin_A) + return -1; + + if (ch <= chLatin_F) + return ch - chLatin_A + 10; + + if (ch < chLatin_a) + return -1; + + return ch - chLatin_a + 10; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file RegxParser.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/RegxUtil.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/RegxUtil.hpp new file mode 100644 index 000000000000..1417badf3fc3 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/RegxUtil.hpp @@ -0,0 +1,109 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_REGXUTIL_HPP) +#define XERCESC_INCLUDE_GUARD_REGXUTIL_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +class MemoryManager; + +class XMLUTIL_EXPORT RegxUtil { +public: + + // ----------------------------------------------------------------------- + // Constructors and destructors + // ----------------------------------------------------------------------- + ~RegxUtil() {} + + static XMLInt32 composeFromSurrogate(const XMLCh high, const XMLCh low); + static bool isEOLChar(const XMLCh); + static bool isWordChar(const XMLCh); + static bool isLowSurrogate(const XMLCh ch); + static bool isHighSurrogate(const XMLCh ch); + static void decomposeToSurrogates(XMLInt32 ch, XMLCh& high, XMLCh& low); + + static XMLCh* decomposeToSurrogates(XMLInt32 ch, + MemoryManager* const manager); + static XMLCh* stripExtendedComment(const XMLCh* const expression, + MemoryManager* const manager = 0); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + RegxUtil(); +}; + + +inline bool RegxUtil::isEOLChar(const XMLCh ch) { + + return (ch == chLF || ch == chCR || ch == chLineSeparator + || ch == chParagraphSeparator); +} + +inline XMLInt32 RegxUtil::composeFromSurrogate(const XMLCh high, const XMLCh low) { + // see http://unicode.org/unicode/faq/utf_bom.html#35 + const XMLInt32 SURROGATE_OFFSET = 0x10000 - (0xD800 << 10) - 0xDC00; + return (high << 10) + low + SURROGATE_OFFSET; +} + +inline bool RegxUtil::isLowSurrogate(const XMLCh ch) { + + return (ch & 0xFC00) == 0xDC00; +} + +inline bool RegxUtil::isHighSurrogate(const XMLCh ch) { + + return (ch & 0xFC00) == 0xD800; +} + +inline void RegxUtil::decomposeToSurrogates(XMLInt32 ch, XMLCh& high, XMLCh& low) { + // see http://unicode.org/unicode/faq/utf_bom.html#35 + const XMLInt32 LEAD_OFFSET = 0xD800 - (0x10000 >> 10); + high = XMLCh(LEAD_OFFSET + (ch >> 10)); + low = XMLCh(0xDC00 + (ch & 0x3FF)); +} + +inline bool RegxUtil::isWordChar(const XMLCh ch) { + + if ((ch == chUnderscore) + || (ch >= chDigit_0 && ch <= chDigit_9) + || (ch >= chLatin_A && ch <= chLatin_Z) + || (ch >= chLatin_a && ch <= chLatin_z)) + return true; + + return false; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file RegxUtil.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/StringToken.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/StringToken.hpp new file mode 100644 index 000000000000..6f937ec88d91 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/StringToken.hpp @@ -0,0 +1,100 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_STRINGTOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_STRINGTOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT StringToken : public Token { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + StringToken(const tokType tkType, + const XMLCh* const literal, + const int refNo, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~StringToken(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + int getReferenceNo() const; + const XMLCh* getString() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setString(const XMLCh* const literal); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + StringToken(const StringToken&); + StringToken& operator=(const StringToken&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + int fRefNo; + XMLCh* fString; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// StringToken: getter methods +// --------------------------------------------------------------------------- +inline int StringToken::getReferenceNo() const { + + return fRefNo; +} + +inline const XMLCh* StringToken::getString() const { + + return fString; +} + +// --------------------------------------------------------------------------- +// StringToken: Setter methods +// --------------------------------------------------------------------------- +inline void StringToken::setString(const XMLCh* const literal) { + + fMemoryManager->deallocate(fString);//delete [] fString; + fString = 0; + fString = XMLString::replicate(literal, fMemoryManager); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file StringToken.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/Token.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/Token.hpp new file mode 100644 index 000000000000..80507266a1c1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/Token.hpp @@ -0,0 +1,262 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_TOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class RangeToken; +class TokenFactory; + + +class XMLUTIL_EXPORT Token : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constants + // ----------------------------------------------------------------------- + // Token types + typedef enum { + T_CHAR = 0, + T_CONCAT = 1, + T_UNION = 2, + T_CLOSURE = 3, + T_RANGE = 4, + T_NRANGE = 5, + T_PAREN = 6, + T_EMPTY = 7, + T_ANCHOR = 8, + T_NONGREEDYCLOSURE = 9, + T_STRING = 10, + T_DOT = 11, + T_BACKREFERENCE = 12 + } tokType; + + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + Token(const tokType tkType + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~Token(); + + static const XMLInt32 UTF16_MAX; + + typedef enum { + FC_CONTINUE = 0, + FC_TERMINAL = 1, + FC_ANY = 2 + } firstCharacterOptions; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + tokType getTokenType() const; + XMLSize_t getMinLength() const; + int getMaxLength() const; + virtual Token* getChild(const XMLSize_t index) const; + virtual XMLSize_t size() const; + virtual int getMin() const; + virtual int getMax() const; + virtual int getNoParen() const; + virtual int getReferenceNo() const; + virtual const XMLCh* getString() const; + virtual XMLInt32 getChar() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setTokenType(const tokType tokType); + virtual void setMin(const int minVal); + virtual void setMax(const int maxVal); + + // ----------------------------------------------------------------------- + // Range manipulation methods + // ----------------------------------------------------------------------- + virtual void addRange(const XMLInt32 start, const XMLInt32 end); + virtual void mergeRanges(const Token *const tok); + virtual void sortRanges(); + virtual void compactRanges(); + virtual void subtractRanges(RangeToken* const tok); + virtual void intersectRanges(RangeToken* const tok); + + // ----------------------------------------------------------------------- + // Putter methods + // ----------------------------------------------------------------------- + virtual void addChild(Token* const child, TokenFactory* const tokFactory); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + firstCharacterOptions analyzeFirstCharacter(RangeToken* const rangeTok, const int options, + TokenFactory* const tokFactory); + Token* findFixedString(int options, int& outOptions); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Token(const Token&); + Token& operator=(const Token&); + + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + bool isSet(const int options, const unsigned int flag); + bool isShorterThan(Token* const tok); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + tokType fTokenType; +protected: + MemoryManager* const fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// Token: getter methods +// --------------------------------------------------------------------------- +inline Token::tokType Token::getTokenType() const { + + return fTokenType; +} + +inline XMLSize_t Token::size() const { + + return 0; +} + +inline Token* Token::getChild(const XMLSize_t) const { + + return 0; +} + +inline int Token::getMin() const { + + return -1; +} + +inline int Token::getMax() const { + + return -1; +} + +inline int Token::getReferenceNo() const { + + return 0; +} + +inline int Token::getNoParen() const { + + return 0; +} + +inline const XMLCh* Token::getString() const { + + return 0; +} + +inline XMLInt32 Token::getChar() const { + + return -1; +} + +// --------------------------------------------------------------------------- +// Token: setter methods +// --------------------------------------------------------------------------- +inline void Token::setTokenType(const Token::tokType tokType) { + + fTokenType = tokType; +} + +inline void Token::setMax(const int) { + // ClosureToken +} + +inline void Token::setMin(const int) { + // ClosureToken +} + +inline bool Token::isSet(const int options, const unsigned int flag) { + + return (options & flag) == flag; +} + +// --------------------------------------------------------------------------- +// Token: setter methods +// --------------------------------------------------------------------------- +inline void Token::addChild(Token* const, TokenFactory* const) { + + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager); +} + +// --------------------------------------------------------------------------- +// Token: Range manipulation methods +// --------------------------------------------------------------------------- +inline void Token::addRange(const XMLInt32, const XMLInt32) { + + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager); +} + +inline void Token::mergeRanges(const Token *const) { + + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager); +} + +inline void Token::sortRanges() { + + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager); +} + +inline void Token::compactRanges() { + + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager); +} + +inline void Token::subtractRanges(RangeToken* const) { + + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager); +} + +inline void Token::intersectRanges(RangeToken* const) { + + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file Token.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/TokenFactory.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/TokenFactory.hpp new file mode 100644 index 000000000000..a605e7f87c97 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/TokenFactory.hpp @@ -0,0 +1,134 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TOKENFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_TOKENFACTORY_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class RangeToken; +class CharToken; +class ClosureToken; +class ConcatToken; +class ParenToken; +class StringToken; +class UnionToken; + +class XMLUTIL_EXPORT TokenFactory : public XMemory +{ + +public: + // ----------------------------------------------------------------------- + // Constructors and destructors + // ----------------------------------------------------------------------- + TokenFactory(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~TokenFactory(); + + // ----------------------------------------------------------------------- + // Factory methods + // ----------------------------------------------------------------------- + Token* createToken(const Token::tokType tkType); + + ParenToken* createParenthesis(Token* const token, const int noGroups); + ClosureToken* createClosure(Token* const token, bool isNonGreedy = false); + ConcatToken* createConcat(Token* const token1, Token* const token2); + UnionToken* createUnion(const bool isConcat = false); + RangeToken* createRange(const bool isNegRange = false); + CharToken* createChar(const XMLUInt32 ch, const bool isAnchor = false); + StringToken* createBackReference(const int refNo); + StringToken* createString(const XMLCh* const literal); + + + //static void printUnicode(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /* + * Gets a commonly used RangeToken from the token registry based on the + * range name. + */ + RangeToken* getRange(const XMLCh* const name,const bool complement=false); + Token* getLineBegin(); + Token* getLineEnd(); + Token* getDot(); + MemoryManager* getMemoryManager() const; + + static RangeToken* staticGetRange(const XMLCh* const name,const bool complement=false); + + // ----------------------------------------------------------------------- + // Notification that lazy data has been deleted + // ----------------------------------------------------------------------- + static void reinitTokenFactoryMutex(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + TokenFactory(const TokenFactory&); + TokenFactory& operator=(const TokenFactory&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fRangeInitialized + // Indicates whether we have initialized the RangeFactory instance or + // not + // + // fToken + // Contains user created Token objects. Used for memory cleanup. + // ----------------------------------------------------------------------- + RefVectorOf* fTokens; + Token* fEmpty; + Token* fLineBegin; + Token* fLineEnd; + Token* fDot; + MemoryManager* fMemoryManager; +}; + +inline RangeToken* TokenFactory::getRange(const XMLCh* const name,const bool complement) +{ + return staticGetRange(name, complement); +} + +inline MemoryManager* TokenFactory::getMemoryManager() const +{ + return fMemoryManager; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file TokenFactory + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/TokenInc.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/TokenInc.hpp new file mode 100644 index 000000000000..fa08b4364b7e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/TokenInc.hpp @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TOKENINC_HPP) +#define XERCESC_INCLUDE_GUARD_TOKENINC_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file TokenInc.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/UniCharTable.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/UniCharTable.hpp new file mode 100644 index 000000000000..a2c9a758f60a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/UniCharTable.hpp @@ -0,0 +1,4131 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// These are Unicode character type lookup table. The table is used by the +// XMLUniCharacter class to return the type of a given XMLCh char +// (i.e LowercaseLetter, TitlecaseLetter, DigitOther, etc...) in case +// ICU is not used. +// +// The table is generated by invoking the TokenFactory::printUnicode() +// method (which is commented out). +// --------------------------------------------------------------------------- +const XMLByte fgUniCharsTable[0x10000] = +{ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + , 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + , 0x0C, 0x17, 0x17, 0x17, 0x19, 0x17, 0x17, 0x17, 0x14, 0x15, 0x17, 0x18, 0x17, 0x13, 0x17, 0x17 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x17, 0x17, 0x18, 0x18, 0x18, 0x17 + , 0x17, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x14, 0x17, 0x15, 0x1A, 0x16 + , 0x1A, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x14, 0x18, 0x15, 0x18, 0x0F + , 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + , 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + , 0x0C, 0x17, 0x19, 0x19, 0x19, 0x19, 0x1B, 0x1B, 0x1A, 0x1B, 0x02, 0x1C, 0x18, 0x10, 0x1B, 0x1A + , 0x1B, 0x18, 0x0B, 0x0B, 0x1A, 0x02, 0x1B, 0x17, 0x1A, 0x0B, 0x02, 0x1D, 0x0B, 0x0B, 0x0B, 0x17 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x18, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01 + , 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x02 + , 0x02, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01 + , 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x02, 0x01 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x02, 0x02, 0x01, 0x02, 0x01, 0x01 + , 0x02, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0x02, 0x02, 0x05, 0x01, 0x02, 0x02, 0x02 + , 0x05, 0x05, 0x05, 0x05, 0x01, 0x03, 0x02, 0x01, 0x03, 0x02, 0x01, 0x03, 0x02, 0x01, 0x02, 0x01 + , 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x02, 0x01, 0x03, 0x02, 0x01, 0x02, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 + , 0x04, 0x04, 0x1A, 0x1A, 0x1A, 0x1A, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 + , 0x04, 0x04, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A + , 0x04, 0x04, 0x04, 0x04, 0x04, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x04, 0x1A + , 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x00, 0x00, 0x00, 0x00, 0x1A, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x1A, 0x1A, 0x01, 0x17, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01 + , 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00 + , 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x18, 0x01, 0x02, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x1B, 0x06, 0x06, 0x06, 0x06, 0x00, 0x07, 0x07, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x04, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17 + , 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x17, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x17, 0x06 + , 0x17, 0x06, 0x06, 0x17, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x1B, 0x1B + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17 + , 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x17, 0x17, 0x17, 0x17, 0x05, 0x05 + , 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x17, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x10, 0x07, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x04, 0x06, 0x06, 0x1B, 0x06, 0x06, 0x06, 0x06, 0x05, 0x05 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x05, 0x05, 0x05, 0x1B, 0x1B, 0x05 + , 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x00, 0x10 + , 0x05, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x05, 0x05, 0x05 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x06, 0x06, 0x08, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x06, 0x05, 0x08, 0x08 + , 0x08, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08, 0x08, 0x08, 0x06, 0x00, 0x00 + , 0x05, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x06, 0x06, 0x17, 0x17, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x06, 0x08, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x05 + , 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x06, 0x05, 0x08, 0x08 + , 0x08, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x06, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x05 + , 0x05, 0x05, 0x06, 0x06, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x05, 0x05, 0x19, 0x19, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x06, 0x06, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x05 + , 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x05, 0x00, 0x05, 0x05, 0x00, 0x05, 0x05, 0x00, 0x00, 0x06, 0x00, 0x08, 0x08 + , 0x08, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x06, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x06, 0x06, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x06, 0x06, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05 + , 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x06, 0x05, 0x08, 0x08 + , 0x08, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x08, 0x00, 0x08, 0x08, 0x06, 0x00, 0x00 + , 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x06, 0x06, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x06, 0x08, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x05 + , 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x06, 0x05, 0x08, 0x06 + , 0x08, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x06, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x05 + , 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x1B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x06, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05 + , 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 + , 0x06, 0x08, 0x08, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x08, 0x08, 0x08, 0x06, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x0B, 0x0B, 0x0B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x19, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x08, 0x08, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06 + , 0x06, 0x08, 0x08, 0x08, 0x08, 0x00, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x08, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x06, 0x05, 0x08, 0x06 + , 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x06, 0x08, 0x08, 0x00, 0x08, 0x08, 0x06, 0x06, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00 + , 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x08, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05 + , 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 + , 0x08, 0x06, 0x06, 0x06, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x08, 0x08, 0x08, 0x06, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x08, 0x08, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x08 + , 0x08, 0x08, 0x06, 0x06, 0x06, 0x00, 0x06, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x08, 0x08, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x06, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x19 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x17 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x05, 0x05, 0x00, 0x05, 0x00, 0x00, 0x05, 0x05, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x00, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x00, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05 + , 0x05, 0x06, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x05, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x04, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x1B, 0x1B, 0x1B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17 + , 0x17, 0x17, 0x17, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x06, 0x06, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x1B, 0x06, 0x1B, 0x06, 0x1B, 0x06, 0x14, 0x15, 0x14, 0x15, 0x08, 0x08 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x08 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x17, 0x06, 0x06, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x06, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x1B + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x00, 0x08, 0x06, 0x06, 0x06 + , 0x06, 0x08, 0x06, 0x00, 0x00, 0x00, 0x06, 0x06, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x08, 0x08, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x09, 0x09, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x17, 0x17, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x0C, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x14, 0x15, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x17, 0x17, 0x17, 0x0A, 0x0A + , 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05 + , 0x05, 0x05, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x06, 0x06, 0x06, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05 + , 0x05, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x10, 0x10, 0x08, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08 + , 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, 0x08, 0x08, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x06, 0x06, 0x06, 0x06, 0x17, 0x17, 0x17, 0x04, 0x17, 0x17, 0x17, 0x19, 0x05, 0x06, 0x00, 0x00 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x13, 0x17, 0x17, 0x17, 0x17, 0x06, 0x06, 0x06, 0x0C, 0x00 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00 + , 0x06, 0x06, 0x06, 0x08, 0x08, 0x08, 0x08, 0x06, 0x06, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00 + , 0x08, 0x08, 0x06, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x00, 0x00, 0x00, 0x17, 0x17, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04 + , 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 + , 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 + , 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 + , 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 + , 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x03, 0x1A, 0x02, 0x1A + , 0x1A, 0x1A, 0x02, 0x02, 0x02, 0x00, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x03, 0x1A, 0x1A, 0x1A + , 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x1A, 0x1A, 0x1A + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x1A, 0x1A, 0x1A + , 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x03, 0x1A, 0x1A, 0x00 + , 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x10 + , 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x17, 0x17, 0x1C, 0x1D, 0x14, 0x1C, 0x1C, 0x1D, 0x14, 0x1C + , 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x0D, 0x0E, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0C + , 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x1C, 0x1D, 0x17, 0x17, 0x17, 0x17, 0x16 + , 0x16, 0x17, 0x17, 0x17, 0x18, 0x14, 0x15, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17 + , 0x17, 0x17, 0x18, 0x17, 0x16, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C + , 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10 + , 0x0B, 0x02, 0x00, 0x00, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x18, 0x18, 0x18, 0x14, 0x15, 0x02 + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x18, 0x18, 0x18, 0x14, 0x15, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19 + , 0x19, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07 + , 0x07, 0x06, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x01, 0x1B, 0x1B, 0x1B, 0x1B, 0x01, 0x1B, 0x1B, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02 + , 0x01, 0x01, 0x01, 0x02, 0x1B, 0x01, 0x1B, 0x1B, 0x1B, 0x01, 0x01, 0x01, 0x01, 0x01, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x01, 0x1B, 0x01, 0x1B, 0x01, 0x1B, 0x01, 0x01, 0x01, 0x01, 0x1B, 0x02 + , 0x01, 0x01, 0x1B, 0x01, 0x02, 0x05, 0x05, 0x05, 0x05, 0x02, 0x1B, 0x1B, 0x00, 0x02, 0x01, 0x01 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x01, 0x02, 0x02, 0x02, 0x02, 0x1B, 0x18, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A + , 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A + , 0x0A, 0x0A, 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x18, 0x1B, 0x1B, 0x1B, 0x1B + , 0x18, 0x1B, 0x1B, 0x18, 0x1B, 0x1B, 0x18, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x18 + , 0x1B, 0x1B, 0x18, 0x1B, 0x18, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x18, 0x18, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x14, 0x15, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x14, 0x15, 0x17, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x18, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x18 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x1B, 0x00, 0x1B + , 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00 + , 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15 + , 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x1B, 0x00, 0x00, 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x00, 0x00, 0x00, 0x00 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14 + , 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x14, 0x15, 0x14, 0x15, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x14, 0x15, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00 + , 0x0C, 0x17, 0x17, 0x17, 0x1B, 0x04, 0x05, 0x0A, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15 + , 0x14, 0x15, 0x1B, 0x1B, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x13, 0x14, 0x15, 0x15 + , 0x1B, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x13, 0x04, 0x04, 0x04, 0x04, 0x04, 0x1B, 0x1B, 0x0A, 0x0A, 0x0A, 0x04, 0x05, 0x17, 0x1B, 0x1B + , 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x06, 0x06, 0x1A, 0x1A, 0x04, 0x04, 0x05 + , 0x13, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x16, 0x04, 0x04, 0x04, 0x05 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00 + , 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x1B, 0x1B, 0x0B, 0x0B, 0x0B, 0x0B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00 + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x1B + , 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00 + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B + , 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x18, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00 + , 0x05, 0x05, 0x00, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x14, 0x15 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x19, 0x1B, 0x00, 0x00 + , 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + , 0x17, 0x13, 0x13, 0x16, 0x16, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x14 + , 0x15, 0x14, 0x15, 0x14, 0x15, 0x17, 0x17, 0x14, 0x15, 0x17, 0x17, 0x17, 0x17, 0x16, 0x16, 0x16 + , 0x17, 0x17, 0x17, 0x00, 0x17, 0x17, 0x17, 0x17, 0x13, 0x14, 0x15, 0x14, 0x15, 0x14, 0x15, 0x17 + , 0x17, 0x17, 0x18, 0x13, 0x18, 0x18, 0x18, 0x00, 0x17, 0x19, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x10 + , 0x00, 0x17, 0x17, 0x17, 0x19, 0x17, 0x17, 0x17, 0x14, 0x15, 0x17, 0x18, 0x17, 0x13, 0x17, 0x17 + , 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x17, 0x17, 0x18, 0x18, 0x18, 0x17 + , 0x17, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + , 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x14, 0x17, 0x15, 0x1A, 0x16 + , 0x1A, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 + , 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x14, 0x18, 0x15, 0x18, 0x14 + , 0x15, 0x17, 0x14, 0x15, 0x17, 0x16, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00 + , 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 + , 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x05, 0x05, 0x05, 0x00, 0x00, 0x00 + , 0x19, 0x19, 0x18, 0x1A, 0x1B, 0x19, 0x19, 0x00, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x1B, 0x1B, 0x00 + , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x1B, 0x1B, 0x00, 0x00 +}; + + +XERCES_CPP_NAMESPACE_END diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/UnicodeRangeFactory.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/UnicodeRangeFactory.hpp new file mode 100644 index 000000000000..92cc37a57860 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/UnicodeRangeFactory.hpp @@ -0,0 +1,88 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_UNICODERANGEFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_UNICODERANGEFACTORY_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT UnicodeRangeFactory: public RangeFactory { + +public: + // ----------------------------------------------------------------------- + // Public Constants + // ----------------------------------------------------------------------- + // Unicode categories + enum { + CHAR_LETTER = XMLUniCharacter::FINAL_PUNCTUATION+1, + CHAR_MARK, + CHAR_NUMBER, + CHAR_SEPARATOR, + CHAR_OTHER, + CHAR_PUNCTUATION, + CHAR_SYMBOL, + UNICATEGSIZE + }; + + // ----------------------------------------------------------------------- + // Constructors and operators + // ----------------------------------------------------------------------- + UnicodeRangeFactory(); + ~UnicodeRangeFactory(); + + // ----------------------------------------------------------------------- + // Initialization methods + // ----------------------------------------------------------------------- + void initializeKeywordMap(RangeTokenMap *rangeTokMap = 0); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + static unsigned short getUniCategory(const unsigned short type); + +protected: + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + void buildRanges(RangeTokenMap *rangeTokMap = 0); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + UnicodeRangeFactory(const UnicodeRangeFactory&); + UnicodeRangeFactory& operator=(const UnicodeRangeFactory&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file UnicodeRangeFactory.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/UnionToken.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/UnionToken.hpp new file mode 100644 index 000000000000..6a8e73a690a5 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/UnionToken.hpp @@ -0,0 +1,91 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_UNIONTOKEN_HPP) +#define XERCESC_INCLUDE_GUARD_UNIONTOKEN_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT UnionToken : public Token { +public: + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + UnionToken(const tokType tkType + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~UnionToken(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t size() const; + Token* getChild(const XMLSize_t index) const; + + // ----------------------------------------------------------------------- + // Children manipulation methods + // ----------------------------------------------------------------------- + void addChild(Token* const child, TokenFactory* const tokFactory); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + UnionToken(const UnionToken&); + UnionToken& operator=(const UnionToken&); + + // ----------------------------------------------------------------------- + // Private Constants + // ----------------------------------------------------------------------- + static const unsigned short INITIALSIZE; + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + RefVectorOf* fChildren; +}; + + +// --------------------------------------------------------------------------- +// UnionToken: getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t UnionToken::size() const { + + return fChildren == 0 ? 0 : fChildren->size(); +} + +inline Token* UnionToken::getChild(const XMLSize_t index) const { + + return fChildren->elementAt(index); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file UnionToken.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/XMLRangeFactory.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/XMLRangeFactory.hpp new file mode 100644 index 000000000000..849f1631be0a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/XMLRangeFactory.hpp @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLRANGEFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_XMLRANGEFACTORY_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLUTIL_EXPORT XMLRangeFactory: public RangeFactory { + +public: + // ----------------------------------------------------------------------- + // Constructors and operators + // ----------------------------------------------------------------------- + XMLRangeFactory(); + ~XMLRangeFactory(); + + // ----------------------------------------------------------------------- + // Initialization methods + // ----------------------------------------------------------------------- + void initializeKeywordMap(RangeTokenMap *rangeTokMap = 0); + +protected: + // ----------------------------------------------------------------------- + // Protected Helper methods + // ----------------------------------------------------------------------- + void buildRanges(RangeTokenMap *rangeTokMap = 0); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLRangeFactory(const XMLRangeFactory&); + XMLRangeFactory& operator=(const XMLRangeFactory&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End file XMLRangeFactory.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/util/regx/XMLUniCharacter.hpp b/src/libs/xerces-c/msvc/include/xercesc/util/regx/XMLUniCharacter.hpp new file mode 100644 index 000000000000..a2d97132855f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/util/regx/XMLUniCharacter.hpp @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLUNICHARACTER_HPP) +#define XERCESC_INCLUDE_GUARD_XMLUNICHARACTER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/** + * Class for representing unicode characters + */ +class XMLUTIL_EXPORT XMLUniCharacter +{ +public: + // ----------------------------------------------------------------------- + // Public Constants + // ----------------------------------------------------------------------- + // Unicode char types + enum { + UNASSIGNED = 0, + UPPERCASE_LETTER = 1, + LOWERCASE_LETTER = 2, + TITLECASE_LETTER = 3, + MODIFIER_LETTER = 4, + OTHER_LETTER = 5, + NON_SPACING_MARK = 6, + ENCLOSING_MARK = 7, + COMBINING_SPACING_MARK = 8, + DECIMAL_DIGIT_NUMBER = 9, + LETTER_NUMBER = 10, + OTHER_NUMBER = 11, + SPACE_SEPARATOR = 12, + LINE_SEPARATOR = 13, + PARAGRAPH_SEPARATOR = 14, + CONTROL = 15, + FORMAT = 16, + PRIVATE_USE = 17, + SURROGATE = 18, + DASH_PUNCTUATION = 19, + START_PUNCTUATION = 20, + END_PUNCTUATION = 21, + CONNECTOR_PUNCTUATION = 22, + OTHER_PUNCTUATION = 23, + MATH_SYMBOL = 24, + CURRENCY_SYMBOL = 25, + MODIFIER_SYMBOL = 26, + OTHER_SYMBOL = 27, + INITIAL_PUNCTUATION = 28, + FINAL_PUNCTUATION = 29 + }; + + /** destructor */ + ~XMLUniCharacter() {} + + /* Static methods for getting unicode character type */ + /** @name Getter functions */ + //@{ + + /** Gets the unicode type of a given character + * + * @param ch The character we want to get its unicode type + */ + static unsigned short getType(const XMLCh ch); + //@} + +private : + + /** @name Constructors and Destructor */ + //@{ + /** Unimplemented default constructor */ + XMLUniCharacter(); + //@} +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XMLUniCharacter.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDAttDef.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDAttDef.hpp new file mode 100644 index 000000000000..1d6da485911e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDAttDef.hpp @@ -0,0 +1,141 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDATTDEF_HPP) +#define XERCESC_INCLUDE_GUARD_DTDATTDEF_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class is a derivative of the core XMLAttDef class. This class adds +// any DTD specific data members and provides DTD specific implementations +// of any underlying attribute def virtual methods. +// +// In the DTD we don't do namespaces, so the attribute names are just the +// QName literally from the DTD. This is what we return as the full name, +// which is what is used to key these in any name keyed collections. +// +class VALIDATORS_EXPORT DTDAttDef : public XMLAttDef +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructors + // ----------------------------------------------------------------------- + DTDAttDef(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + DTDAttDef + ( + const XMLCh* const attName + , const XMLAttDef::AttTypes type = CData + , const XMLAttDef::DefAttTypes defType = Implied + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DTDAttDef + ( + const XMLCh* const attName + , const XMLCh* const attValue + , const XMLAttDef::AttTypes type + , const XMLAttDef::DefAttTypes defType + , const XMLCh* const enumValues = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~DTDAttDef(); + + + // ----------------------------------------------------------------------- + // Implementation of the XMLAttDef interface + // ----------------------------------------------------------------------- + virtual const XMLCh* getFullName() const; + + //does nothing currently + virtual void reset() {}; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t getElemId() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setElemId(const XMLSize_t newId); + void setName(const XMLCh* const newName); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DTDAttDef) + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DTDAttDef(const DTDAttDef &); + DTDAttDef& operator = (const DTDAttDef&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fElemId + // This is the id of the element (the id is into the element decl + // pool) of the element this attribute def said it belonged to. + // This is used later to link back to the element, mostly for + // validation purposes. + // + // fName + // This is the name of the attribute. Since we don't do namespaces + // in the DTD, its just the fully qualified name. + // ----------------------------------------------------------------------- + XMLSize_t fElemId; + XMLCh* fName; +}; + + +// --------------------------------------------------------------------------- +// DTDAttDef: Implementation of the XMLAttDef interface +// --------------------------------------------------------------------------- +inline const XMLCh* DTDAttDef::getFullName() const +{ + return fName; +} + + +// --------------------------------------------------------------------------- +// DTDAttDef: Getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t DTDAttDef::getElemId() const +{ + return fElemId; +} + +// --------------------------------------------------------------------------- +// DTDAttDef: Setter methods +// --------------------------------------------------------------------------- +inline void DTDAttDef::setElemId(const XMLSize_t newId) +{ + fElemId = newId; +} + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDAttDefList.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDAttDefList.hpp new file mode 100644 index 000000000000..e034e215e21b --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDAttDefList.hpp @@ -0,0 +1,161 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDATTDEFLIST_HPP) +#define XERCESC_INCLUDE_GUARD_DTDATTDEFLIST_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This is a derivative of the framework abstract class which defines the +// interface to a list of attribute defs that belong to a particular +// element. The scanner needs to be able to get a list of the attributes +// that an element supports, for use during the validation process and for +// fixed/default attribute processing. +// +// Since each validator can store attributes differently, this abstract +// interface allows each validator to provide an implementation of this +// data structure that works best for it. +// +// For us, we just wrap the RefHashTableOf collection that the DTDElementDecl +// class uses to store the attributes that belong to it. +// +// This clss does not adopt the hash table, it just references it. The +// hash table is owned by the element decl it is a member of. +// +class VALIDATORS_EXPORT DTDAttDefList : public XMLAttDefList +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DTDAttDefList + ( + RefHashTableOf* const listToUse, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~DTDAttDefList(); + + + // ----------------------------------------------------------------------- + // Implementation of the virtual interface + // ----------------------------------------------------------------------- + + virtual bool isEmpty() const; + virtual XMLAttDef* findAttDef + ( + const unsigned int uriID + , const XMLCh* const attName + ); + virtual const XMLAttDef* findAttDef + ( + const unsigned int uriID + , const XMLCh* const attName + ) const; + virtual XMLAttDef* findAttDef + ( + const XMLCh* const attURI + , const XMLCh* const attName + ); + virtual const XMLAttDef* findAttDef + ( + const XMLCh* const attURI + , const XMLCh* const attName + ) const; + + /** + * return total number of attributes in this list + */ + virtual XMLSize_t getAttDefCount() const ; + + /** + * return attribute at the index-th position in the list. + */ + virtual XMLAttDef &getAttDef(XMLSize_t index) ; + + /** + * return attribute at the index-th position in the list. + */ + virtual const XMLAttDef &getAttDef(XMLSize_t index) const ; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DTDAttDefList) + + DTDAttDefList(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private : + + void addAttDef(DTDAttDef *toAdd); + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DTDAttDefList(const DTDAttDefList &); + DTDAttDefList& operator = (const DTDAttDefList&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fEnum + // This is an enerator for the list that we use to do the enumerator + // type methods of this class. + // + // fList + // The list of DTDAttDef objects that represent the attributes that + // a particular element supports. + // fArray + // vector of pointers to the DTDAttDef objects contained in this list + // fSize + // size of fArray + // fCount + // number of DTDAttDef objects currently stored in this list + // ----------------------------------------------------------------------- + RefHashTableOfEnumerator* fEnum; + RefHashTableOf* fList; + DTDAttDef** fArray; + XMLSize_t fSize; + XMLSize_t fCount; + + friend class DTDElementDecl; +}; + +inline void DTDAttDefList::addAttDef(DTDAttDef *toAdd) +{ + if(fCount == fSize) + { + // need to grow fArray + fSize <<= 1; + DTDAttDef** newArray = (DTDAttDef **)((getMemoryManager())->allocate( sizeof(DTDAttDef*) * fSize )); + memcpy(newArray, fArray, fCount * sizeof(DTDAttDef *)); + (getMemoryManager())->deallocate(fArray); + fArray = newArray; + } + fArray[fCount++] = toAdd; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDElementDecl.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDElementDecl.hpp new file mode 100644 index 000000000000..777950aef3f7 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDElementDecl.hpp @@ -0,0 +1,247 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDELEMENTDECL_HPP) +#define XERCESC_INCLUDE_GUARD_DTDELEMENTDECL_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentSpecNode; +class DTDAttDefList; + + +// +// This class is a derivative of the basic element decl. This one implements +// the virtuals so that they work for a DTD. The big difference is that +// they don't live in any URL in the DTD. The names are just stored as full +// QNames, so they are not split out and element decls don't live within +// URL namespaces or anything like that. +// + +class VALIDATORS_EXPORT DTDElementDecl : public XMLElementDecl +{ +public : + // ----------------------------------------------------------------------- + // Class specific types + // + // ModelTypes + // Indicates the type of content model that an element has. This + // indicates how the content model is represented and validated. + // ----------------------------------------------------------------------- + enum ModelTypes + { + Empty + , Any + , Mixed_Simple + , Children + + , ModelTypes_Count + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DTDElementDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + DTDElementDecl + ( + const XMLCh* const elemRawName + , const unsigned int uriId + , const ModelTypes modelType + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DTDElementDecl + ( + QName* const elementName + , const ModelTypes modelType = Any + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~DTDElementDecl(); + + + // ----------------------------------------------------------------------- + // The virtual element decl interface + // ----------------------------------------------------------------------- + virtual XMLAttDefList& getAttDefList() const; + virtual CharDataOpts getCharDataOpts() const; + virtual bool hasAttDefs() const; + virtual const ContentSpecNode* getContentSpec() const; + virtual ContentSpecNode* getContentSpec(); + virtual void setContentSpec(ContentSpecNode* toAdopt); + virtual XMLContentModel* getContentModel(); + virtual void setContentModel(XMLContentModel* const newModelToAdopt); + virtual const XMLCh* getFormattedContentModel () const; + + // ----------------------------------------------------------------------- + // Support keyed collections + // + // This method allows objects of this type be placed into one of the + // standard keyed collections. This method will return the full name of + // the element, which will vary depending upon the type of the grammar. + // ----------------------------------------------------------------------- + const XMLCh* getKey() const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const DTDAttDef* getAttDef(const XMLCh* const attName) const; + DTDAttDef* getAttDef(const XMLCh* const attName); + ModelTypes getModelType() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void addAttDef(DTDAttDef* const toAdd); + void setModelType(const DTDElementDecl::ModelTypes toSet); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DTDElementDecl) + + virtual XMLElementDecl::objectType getObjectType() const; + +private : + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void faultInAttDefList() const; + XMLContentModel* createChildModel() ; + XMLContentModel* makeContentModel() ; + XMLCh* formatContentModel () const ; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DTDElementDecl(const DTDElementDecl &); + DTDElementDecl& operator = (const DTDElementDecl&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fAttDefs + // The list of attributes that are defined for this element. Each + // element is its own little 'namespace' for attributes, so each + // element maintains its own list of owned attribute defs. It is + // faulted in when an attribute is actually added. + // + // fAttList + // We have to return a view of our att defs via the abstract view + // that the scanner understands. It may or may not ever be asked + // for so we fault it in as needed. + // + // fContentSpec + // This is the content spec for the node. It contains the original + // content spec that was read from the DTD, as a tree of nodes. This + // one is always set up, and is used to build the fContentModel + // version if we are validating. + // + // fModelType + // The content model type of this element. This tells us what kind + // of content model to create. + // + // fContentModel + // The content model object for this element. It is stored here via + // its abstract interface. + // + // fFormattedModel + // This is a faulted in member. When the outside world asks for + // our content model as a string, we format it and fault it into + // this field (to avoid doing the formatted over and over.) + // ----------------------------------------------------------------------- + ModelTypes fModelType; + + RefHashTableOf* fAttDefs; + DTDAttDefList* fAttList; + ContentSpecNode* fContentSpec; + XMLContentModel* fContentModel; + XMLCh* fFormattedModel; +}; + +// --------------------------------------------------------------------------- +// DTDElementDecl: XMLElementDecl virtual interface implementation +// --------------------------------------------------------------------------- +inline ContentSpecNode* DTDElementDecl::getContentSpec() +{ + return fContentSpec; +} + +inline const ContentSpecNode* DTDElementDecl::getContentSpec() const +{ + return fContentSpec; +} + +inline XMLContentModel* DTDElementDecl::getContentModel() +{ + if (!fContentModel) + fContentModel = makeContentModel(); + return fContentModel; +} + +inline void +DTDElementDecl::setContentModel(XMLContentModel* const newModelToAdopt) +{ + delete fContentModel; + fContentModel = newModelToAdopt; + + // reset formattedModel + if (fFormattedModel) + { + getMemoryManager()->deallocate(fFormattedModel); + fFormattedModel = 0; + } +} + +// --------------------------------------------------------------------------- +// DTDElementDecl: Miscellaneous methods +// --------------------------------------------------------------------------- +inline const XMLCh* DTDElementDecl::getKey() const +{ + return getFullName(); +} + +// --------------------------------------------------------------------------- +// DTDElementDecl: Getter methods +// --------------------------------------------------------------------------- +inline DTDElementDecl::ModelTypes DTDElementDecl::getModelType() const +{ + return fModelType; +} + +// --------------------------------------------------------------------------- +// DTDElementDecl: Setter methods +// --------------------------------------------------------------------------- +inline void +DTDElementDecl::setModelType(const DTDElementDecl::ModelTypes toSet) +{ + fModelType = toSet; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDEntityDecl.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDEntityDecl.hpp new file mode 100644 index 000000000000..26e4df788e69 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDEntityDecl.hpp @@ -0,0 +1,204 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDENTITYDECL_HPP) +#define XERCESC_INCLUDE_GUARD_DTDENTITYDECL_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This is a derivative of the abstract version of an entity decl in the +// framework directory. We just need to provide implementation of a couple +// of methods. +// +class VALIDATORS_EXPORT DTDEntityDecl : public XMLEntityDecl +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DTDEntityDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + DTDEntityDecl + ( + const XMLCh* const entName + , const bool fromIntSubset = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DTDEntityDecl + ( + const XMLCh* const entName + , const XMLCh* const value + , const bool fromIntSubset = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DTDEntityDecl + ( + const XMLCh* const entName + , const XMLCh value + , const bool fromIntSubset = false + , const bool specialChar = false + ); + ~DTDEntityDecl(); + + + // ----------------------------------------------------------------------- + // Implementation of the virtual XMLEntityDecl interface + // ----------------------------------------------------------------------- + virtual bool getDeclaredInIntSubset() const; + virtual bool getIsParameter() const; + virtual bool getIsSpecialChar() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setDeclaredInIntSubset(const bool newValue); + void setIsParameter(const bool newValue); + void setIsSpecialChar(const bool newValue); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DTDEntityDecl) + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DTDEntityDecl(const DTDEntityDecl&); + DTDEntityDecl& operator=(DTDEntityDecl&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fDeclaredInIntSubset + // Indicates whether the entity was declared in the internal subset + // or not. If not, it cannot be referred to from a standalone + // document. + // + // fIsParameter + // Indicates whether this is a parameter entity or a general entity. + // + // fIsSpecialChar + // This indicates that its one of the special character entities, + // e.g. lt or gt or amp. We need to know this because there are + // places where only a numeric char ref or special char ref is valid + // and all others are ignored or illegal. + // ----------------------------------------------------------------------- + bool fDeclaredInIntSubset; + bool fIsParameter; + bool fIsSpecialChar; +}; + + +// --------------------------------------------------------------------------- +// DTDEntityDecl: Constructors and Destructor +// --------------------------------------------------------------------------- +inline DTDEntityDecl::DTDEntityDecl(MemoryManager* const manager) : + + XMLEntityDecl(manager) + , fDeclaredInIntSubset(false) + , fIsParameter(false) + , fIsSpecialChar(false) +{ +} + +inline DTDEntityDecl::DTDEntityDecl( const XMLCh* const entName + , const bool fromIntSubset + , MemoryManager* const manager) : + + XMLEntityDecl(entName, manager) + , fDeclaredInIntSubset(fromIntSubset) + , fIsParameter(false) + , fIsSpecialChar(false) +{ +} + +inline DTDEntityDecl::DTDEntityDecl( const XMLCh* const entName + , const XMLCh* const value + , const bool fromIntSubset + , MemoryManager* const manager) : + XMLEntityDecl(entName, value, manager) + , fDeclaredInIntSubset(fromIntSubset) + , fIsParameter(false) + , fIsSpecialChar(false) +{ +} + +inline DTDEntityDecl::DTDEntityDecl(const XMLCh* const entName + , const XMLCh value + , const bool fromIntSubset + , const bool specialChar) : + XMLEntityDecl(entName, value, XMLPlatformUtils::fgMemoryManager) + , fDeclaredInIntSubset(fromIntSubset) + , fIsParameter(false) + , fIsSpecialChar(specialChar) +{ +} + +inline DTDEntityDecl::~DTDEntityDecl() +{ +} + + +// --------------------------------------------------------------------------- +// DTDEntityDecl: Getter methods +// --------------------------------------------------------------------------- +inline bool DTDEntityDecl::getDeclaredInIntSubset() const +{ + return fDeclaredInIntSubset; +} + +inline bool DTDEntityDecl::getIsParameter() const +{ + return fIsParameter; +} + +inline bool DTDEntityDecl::getIsSpecialChar() const +{ + return fIsSpecialChar; +} + + +// --------------------------------------------------------------------------- +// DTDEntityDecl: Setter methods +// --------------------------------------------------------------------------- +inline void DTDEntityDecl::setDeclaredInIntSubset(const bool newValue) +{ + fDeclaredInIntSubset = newValue; +} + +inline void DTDEntityDecl::setIsParameter(const bool newValue) +{ + fIsParameter = newValue; +} + +inline void DTDEntityDecl::setIsSpecialChar(const bool newValue) +{ + fIsSpecialChar = newValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDGrammar.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDGrammar.hpp new file mode 100644 index 000000000000..391613e019b4 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDGrammar.hpp @@ -0,0 +1,391 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDGRAMMAR_HPP) +#define XERCESC_INCLUDE_GUARD_DTDGRAMMAR_HPP + +#include +#include +#include +#include +#include +#include +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class stores the DTD information +// NOTE: DTDs are not namespace aware, so we just use regular NameIdPool +// data structures to store element and attribute decls. They are all set +// to be in the global namespace and the full QName is used as the base name +// of the decl. This means that all the URI parameters below are expected +// to be null pointers (and anything else will cause an exception.) +// + +class VALIDATORS_EXPORT DTDGrammar : public Grammar +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DTDGrammar(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~DTDGrammar(); + + // ----------------------------------------------------------------------- + // Implementation of Virtual Interface + // ----------------------------------------------------------------------- + virtual Grammar::GrammarType getGrammarType() const; + virtual const XMLCh* getTargetNamespace() const; + + // this method should only be used while the grammar is being + // constructed, not while it is being used + // in a validation episode! + virtual XMLElementDecl* findOrAddElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const prefixName + , const XMLCh* const qName + , unsigned int scope + , bool& wasAdded + ) ; + + virtual XMLSize_t getElemId + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ) const ; + + virtual const XMLElementDecl* getElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ) const ; + + virtual XMLElementDecl* getElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ); + + virtual const XMLElementDecl* getElemDecl + ( + const unsigned int elemId + ) const; + + virtual XMLElementDecl* getElemDecl + ( + const unsigned int elemId + ); + + virtual const XMLNotationDecl* getNotationDecl + ( + const XMLCh* const notName + ) const; + + virtual XMLNotationDecl* getNotationDecl + ( + const XMLCh* const notName + ); + + virtual bool getValidated() const; + + virtual XMLElementDecl* putElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const prefixName + , const XMLCh* const qName + , unsigned int scope + , const bool notDeclared = false + ); + + virtual XMLSize_t putElemDecl + ( + XMLElementDecl* const elemDecl + , const bool notDeclared = false + ) ; + + virtual XMLSize_t putNotationDecl + ( + XMLNotationDecl* const notationDecl + ) const; + + virtual void setValidated(const bool newState); + + virtual void reset(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + const DTDEntityDecl* getEntityDecl(const XMLCh* const entName) const; + DTDEntityDecl* getEntityDecl(const XMLCh* const entName); + NameIdPool* getEntityDeclPool(); + const NameIdPool* getEntityDeclPool() const; + NameIdPoolEnumerator getElemEnumerator() const; + NameIdPoolEnumerator getEntityEnumerator() const; + NameIdPoolEnumerator getNotationEnumerator() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + virtual void setGrammarDescription( XMLGrammarDescription*); + virtual XMLGrammarDescription* getGrammarDescription() const; + + // ----------------------------------------------------------------------- + // Content management methods + // ----------------------------------------------------------------------- + XMLSize_t putEntityDecl(DTDEntityDecl* const entityDecl) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DTDGrammar) + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DTDGrammar(const DTDGrammar &); + DTDGrammar& operator = (const DTDGrammar&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fElemDeclPool + // This is the element decl pool. It contains all of the elements + // declared in the DTD (and their associated attributes.) + // + // fElemNonDeclPool + // This is the element decl pool that is is populated as new elements + // are seen in the XML document (not declared in the DTD), and they + // are given default characteristics. + // + // fEntityDeclPool + // This is a pool of EntityDecl objects, which contains all of the + // general entities that are declared in the DTD subsets, plus the + // default entities (such as > < ...) defined by the XML Standard. + // + // fNotationDeclPool + // This is a pool of NotationDecl objects, which contains all of the + // notations declared in the DTD subsets. + // + // fValidated + // Indicates if the content of the Grammar has been pre-validated + // or not. When using a cached grammar, no need for pre content + // validation. + // + // fGramDesc: adopted + // + // ----------------------------------------------------------------------- + static NameIdPool* fDefaultEntities; + MemoryManager* fMemoryManager; + NameIdPool* fElemDeclPool; + NameIdPool* fElemNonDeclPool; + NameIdPool* fEntityDeclPool; + NameIdPool* fNotationDeclPool; + XMLDTDDescription* fGramDesc; + + bool fValidated; + + friend class XMLInitializer; +}; + +// --------------------------------------------------------------------------- +// DTDGrammar: Getter methods +// --------------------------------------------------------------------------- +inline NameIdPoolEnumerator +DTDGrammar::getElemEnumerator() const +{ + return NameIdPoolEnumerator(fElemDeclPool, fMemoryManager); +} + +inline NameIdPoolEnumerator +DTDGrammar::getEntityEnumerator() const +{ + return NameIdPoolEnumerator(fEntityDeclPool, fMemoryManager); +} + +inline NameIdPoolEnumerator +DTDGrammar::getNotationEnumerator() const +{ + return NameIdPoolEnumerator(fNotationDeclPool, fMemoryManager); +} + +inline const DTDEntityDecl* +DTDGrammar::getEntityDecl(const XMLCh* const entName) const +{ + DTDEntityDecl* decl = fDefaultEntities->getByKey(entName); + + if (!decl) + return fEntityDeclPool->getByKey(entName); + + return decl; +} + +inline DTDEntityDecl* DTDGrammar::getEntityDecl(const XMLCh* const entName) +{ + DTDEntityDecl* decl = fDefaultEntities->getByKey(entName); + + if (!decl) + return fEntityDeclPool->getByKey(entName); + + return decl; +} + + +inline NameIdPool* DTDGrammar::getEntityDeclPool() +{ + return fEntityDeclPool; +} + +inline const NameIdPool* DTDGrammar::getEntityDeclPool() const +{ + return fEntityDeclPool; +} + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- +inline XMLSize_t DTDGrammar::putEntityDecl(DTDEntityDecl* const entityDecl) const +{ + return fEntityDeclPool->put(entityDecl); +} + + +// --------------------------------------------------------------------------- +// DTDGrammar: Virtual methods +// --------------------------------------------------------------------------- +inline Grammar::GrammarType DTDGrammar::getGrammarType() const { + return Grammar::DTDGrammarType; +} + +inline const XMLCh* DTDGrammar::getTargetNamespace() const { + return XMLUni::fgZeroLenString; +} + +// Element Decl +inline XMLSize_t DTDGrammar::getElemId (const unsigned int + , const XMLCh* const + , const XMLCh* const qName + , unsigned int) const +{ + // + // In this case, we don't return zero to mean 'not found', so we have to + // map it to the official not found value if we don't find it. + // + const DTDElementDecl* decl = fElemDeclPool->getByKey(qName); + if (!decl) + return XMLElementDecl::fgInvalidElemId; + return decl->getId(); +} + +inline const XMLElementDecl* DTDGrammar::getElemDecl( const unsigned int + , const XMLCh* const + , const XMLCh* const qName + , unsigned int) const +{ + const XMLElementDecl* elemDecl = fElemDeclPool->getByKey(qName); + + if (!elemDecl && fElemNonDeclPool) + elemDecl = fElemNonDeclPool->getByKey(qName); + + return elemDecl; +} + +inline XMLElementDecl* DTDGrammar::getElemDecl (const unsigned int + , const XMLCh* const + , const XMLCh* const qName + , unsigned int) +{ + XMLElementDecl* elemDecl = fElemDeclPool->getByKey(qName); + + if (!elemDecl && fElemNonDeclPool) + elemDecl = fElemNonDeclPool->getByKey(qName); + + return elemDecl; +} + +inline const XMLElementDecl* DTDGrammar::getElemDecl(const unsigned int elemId) const +{ + // Look up this element decl by id + return fElemDeclPool->getById(elemId); +} + +inline XMLElementDecl* DTDGrammar::getElemDecl(const unsigned int elemId) +{ + // Look up this element decl by id + return fElemDeclPool->getById(elemId); +} + +inline XMLSize_t +DTDGrammar::putElemDecl(XMLElementDecl* const elemDecl, + const bool notDeclared) +{ + if (notDeclared) + { + if(!fElemNonDeclPool) + fElemNonDeclPool = new (fMemoryManager) NameIdPool(29, 128, fMemoryManager); + return fElemNonDeclPool->put((DTDElementDecl*) elemDecl); + } + + return fElemDeclPool->put((DTDElementDecl*) elemDecl); +} + +// Notation Decl +inline const XMLNotationDecl* DTDGrammar::getNotationDecl(const XMLCh* const notName) const +{ + return fNotationDeclPool->getByKey(notName); +} + +inline XMLNotationDecl* DTDGrammar::getNotationDecl(const XMLCh* const notName) +{ + return fNotationDeclPool->getByKey(notName); +} + +inline XMLSize_t DTDGrammar::putNotationDecl(XMLNotationDecl* const notationDecl) const +{ + return fNotationDeclPool->put(notationDecl); +} + +inline bool DTDGrammar::getValidated() const +{ + return fValidated; +} + +inline void DTDGrammar::setValidated(const bool newState) +{ + fValidated = newState; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDScanner.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDScanner.hpp new file mode 100644 index 000000000000..3c7ae13dd99c --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDScanner.hpp @@ -0,0 +1,278 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDSCANNER_HPP) +#define XERCESC_INCLUDE_GUARD_DTDSCANNER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLScanner; + +/* + * Default implementation of an XML DTD scanner. + */ +class DocTypeHandler; + +class VALIDATORS_EXPORT DTDScanner : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Class specific types + // + // EntityExpRes + // Returned from scanEntityRef() to indicate how the expanded text + // was treated. + // + // IDTypes + // Type of the ID + // ----------------------------------------------------------------------- + enum EntityExpRes + { + EntityExp_Failed + , EntityExp_Pushed + , EntityExp_Returned + }; + + enum IDTypes + { + IDType_Public + , IDType_External + , IDType_Either + }; + + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DTDScanner + ( + DTDGrammar* dtdGrammar + , DocTypeHandler* const docTypeHandler + , MemoryManager* const grammarPoolMemoryManager + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~DTDScanner(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + DocTypeHandler* getDocTypeHandler(); + const DocTypeHandler* getDocTypeHandler() const; + + // ----------------------------------------------------------------------- + // Setter methods + // + // setScannerInfo() is called by the scanner to tell the DTDScanner + // about the stuff it needs to have access to. + // ----------------------------------------------------------------------- + void setScannerInfo + ( + XMLScanner* const owningScanner + , ReaderMgr* const readerMgr + , XMLBufferMgr* const bufMgr + ); + + void setDocTypeHandler + ( + DocTypeHandler* const handlerToSet + ); + + void scanExtSubsetDecl(const bool inIncludeSect, const bool isDTD); + bool scanInternalSubset(); + bool scanId + ( + XMLBuffer& pubIdToFill + , XMLBuffer& sysIdToFill + , const IDTypes whatKind + ); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DTDScanner(const DTDScanner &); + DTDScanner& operator = (const DTDScanner&); + + // ----------------------------------------------------------------------- + // Private DTD scanning methods. These are all in XMLValidator2.cpp + // ----------------------------------------------------------------------- + bool checkForPERef + ( + const bool inLiteral + , const bool inMarkup + ); + bool expandPERef + ( + const bool scanExternal + , const bool inLiteral + , const bool inMarkup + , const bool throwEndOfExt = false + ); + bool getQuotedString(XMLBuffer& toFill); + XMLAttDef* scanAttDef(DTDElementDecl& elemDecl, XMLBuffer& bufToUse); + bool scanAttValue + ( + const XMLCh* const attrName + , XMLBuffer& toFill + , const XMLAttDef::AttTypes type + ); + void scanAttListDecl(); + ContentSpecNode* scanChildren + ( + const DTDElementDecl& elemDecl + , XMLBuffer& bufToUse + , unsigned int& depth + ); + bool scanCharRef(XMLCh& toFill, XMLCh& second); + void scanComment(); + bool scanContentSpec(DTDElementDecl& toFill); + void scanDefaultDecl(DTDAttDef& toFill); + void scanElementDecl(); + void scanEntityDecl(); + bool scanEntityDef(); + bool scanEntityLiteral(XMLBuffer& toFill); + bool scanEntityDef(DTDEntityDecl& decl, const bool isPEDecl); + EntityExpRes scanEntityRef(XMLCh& firstCh, XMLCh& secondCh, bool& escaped); + bool scanEnumeration + ( + const DTDAttDef& attDef + , XMLBuffer& toFill + , const bool notation + ); + bool scanEq(); + void scanIgnoredSection(); + void scanMarkupDecl(const bool parseTextDecl); + bool scanMixed(DTDElementDecl& toFill); + void scanNotationDecl(); + void scanPI(); + bool scanPublicLiteral(XMLBuffer& toFill); + bool scanSystemLiteral(XMLBuffer& toFill); + void scanTextDecl(); + bool isReadingExternalEntity(); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fDocTypeHandler + // This holds the optional doc type handler that can be installed + // and used to call back for all markup events. It is DTD specific. + // + // fDumAttDef + // fDumElemDecl + // fDumEntityDecl + // These are dummy objects into which mark decls are parsed when + // they are just overrides of previously declared markup decls. In + // such situations, the first one wins but we need to have somewhere + // to parse them into. So these are lazily created and used as needed + // when such markup decls are seen. + // + // fInternalSubset + // This is used to track whether we are in the internal subset or not, + // in which case we are in the external subset. + // + // fNextAttrId + // Since att defs are per-element, we don't have a validator wide + // attribute def pool. So we use a simpler data structure in each + // element decl to store its att defs, and we use this simple counter + // to apply a unique id to each new attribute. + // + // fDTDGrammar + // The DTD information we scanned like element decl, attribute decl + // are stored in this Grammar. + // + // fBufMgr + // This is the buffer manager of the scanner. This is provided as a + // convenience so that the DTDScanner doesn't have to create its own + // buffer manager during the parse process. + // + // fReaderMgr + // This is a pointer to the reader manager that is being used by the scanner. + // + // fScanner + // The pointer to the scanner to which this DTDScanner belongs + // + // fPEntityDeclPool + // This is a pool of EntityDecl objects, which contains all of the + // parameter entities that are declared in the DTD subsets. + // + // fEmptyNamespaceId + // The uri for all DTD decls + // + // fDocTypeReaderId + // The original reader in the fReaderMgr - to be compared against the + // current reader to decide whether we are processing an external/internal + // declaration + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + MemoryManager* fGrammarPoolMemoryManager; + DocTypeHandler* fDocTypeHandler; + DTDAttDef* fDumAttDef; + DTDElementDecl* fDumElemDecl; + DTDEntityDecl* fDumEntityDecl; + bool fInternalSubset; + unsigned int fNextAttrId; + DTDGrammar* fDTDGrammar; + XMLBufferMgr* fBufMgr; + ReaderMgr* fReaderMgr; + XMLScanner* fScanner; + NameIdPool* fPEntityDeclPool; + unsigned int fEmptyNamespaceId; + XMLSize_t fDocTypeReaderId; +}; + + +// --------------------------------------------------------------------------- +// DTDScanner: Getter methods +// --------------------------------------------------------------------------- +inline DocTypeHandler* DTDScanner::getDocTypeHandler() +{ + return fDocTypeHandler; +} + +inline const DocTypeHandler* DTDScanner::getDocTypeHandler() const +{ + return fDocTypeHandler; +} + + +// --------------------------------------------------------------------------- +// DTDScanner: Setter methods +// --------------------------------------------------------------------------- +inline void DTDScanner::setDocTypeHandler(DocTypeHandler* const handlerToSet) +{ + fDocTypeHandler = handlerToSet; +} + +// ----------------------------------------------------------------------- +// Helper methods +// ----------------------------------------------------------------------- +inline bool DTDScanner::isReadingExternalEntity() { + return (fDocTypeReaderId != fReaderMgr->getCurrentReaderNum()); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDValidator.hpp new file mode 100644 index 000000000000..1701a7dc110f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DTDValidator.hpp @@ -0,0 +1,158 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DTDVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DTDVALIDATOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLMsgLoader; + + +// +// This is a derivative of the abstract validator interface. This class +// implements a validator that supports standard XML 1.0 DTD semantics. +// This class handles scanning the internal and external subsets of the +// DTD, and provides the standard validation services against the DTD info +// it found. +// +class VALIDATORS_EXPORT DTDValidator : public XMLValidator +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DTDValidator(XMLErrorReporter* const errReporter = 0); + virtual ~DTDValidator(); + + // ----------------------------------------------------------------------- + // Implementation of the XMLValidator interface + // ----------------------------------------------------------------------- + virtual bool checkContent + ( + XMLElementDecl* const elemDecl + , QName** const children + , XMLSize_t childCount + , XMLSize_t* indexFailingChild + ); + + virtual void faultInAttr + ( + XMLAttr& toFill + , const XMLAttDef& attDef + ) const; + + virtual void preContentValidation(bool reuseGrammar, + bool validateDefAttr = false); + + virtual void postParseValidation(); + + virtual void reset(); + + virtual bool requiresNamespaces() const; + + virtual void validateAttrValue + ( + const XMLAttDef* attDef + , const XMLCh* const attrValue + , bool preValidation = false + , const XMLElementDecl* elemDecl = 0 + ); + virtual void validateElement + ( + const XMLElementDecl* elemDef + ); + virtual Grammar* getGrammar() const; + virtual void setGrammar(Grammar* aGrammar); + + // ----------------------------------------------------------------------- + // Virtual DTD handler interface. + // ----------------------------------------------------------------------- + virtual bool handlesDTD() const; + + // ----------------------------------------------------------------------- + // Virtual Schema handler interface. handlesSchema() always return false. + // ----------------------------------------------------------------------- + virtual bool handlesSchema() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DTDValidator(const DTDValidator &); + DTDValidator& operator = (const DTDValidator&); + + // ----------------------------------------------------------------------- + // Helper + // ----------------------------------------------------------------------- + void checkTokenList(const XMLAttDef& attDef + , bool toValidateNotation); + + // ----------------------------------------------------------------------- + // Private data members + // + // fDTDGrammar + // The DTD information stored. + // + // ----------------------------------------------------------------------- + DTDGrammar* fDTDGrammar; +}; + +// --------------------------------------------------------------------------- +// Virtual interface +// --------------------------------------------------------------------------- +inline Grammar* DTDValidator::getGrammar() const { + return fDTDGrammar; +} + +inline void DTDValidator::setGrammar(Grammar* aGrammar) { + fDTDGrammar = (DTDGrammar*) aGrammar; +} + +inline void DTDValidator::validateElement (const XMLElementDecl*) { + // no special DTD Element validation +} + +// --------------------------------------------------------------------------- +// DTDValidator: DTD handler interface +// --------------------------------------------------------------------------- +inline bool DTDValidator::handlesDTD() const +{ + // We definitely want to handle DTD scanning + return true; +} + +// --------------------------------------------------------------------------- +// DTDValidator: Schema handler interface +// --------------------------------------------------------------------------- +inline bool DTDValidator::handlesSchema() const +{ + // No Schema scanning + return false; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DocTypeHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DocTypeHandler.hpp new file mode 100644 index 000000000000..d1fae822dc29 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/DocTypeHandler.hpp @@ -0,0 +1,145 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOCTYPEHANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_DOCTYPEHANDLER_HPP + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This abstract class defines the document type handler API's which can be +// used to process the DTD events generated by the DTDScanner as it scans the +// internal and external subset. + +class VALIDATORS_EXPORT DocTypeHandler +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DocTypeHandler() + { + } + + virtual ~DocTypeHandler() + { + } + + + // ----------------------------------------------------------------------- + // The document type handler virtual handler interface + // ----------------------------------------------------------------------- + virtual void attDef + ( + const DTDElementDecl& elemDecl + , const DTDAttDef& attDef + , const bool ignoring + ) = 0; + + virtual void doctypeComment + ( + const XMLCh* const comment + ) = 0; + + virtual void doctypeDecl + ( + const DTDElementDecl& elemDecl + , const XMLCh* const publicId + , const XMLCh* const systemId + , const bool hasIntSubset + , const bool hasExtSubset = false + ) = 0; + + virtual void doctypePI + ( + const XMLCh* const target + , const XMLCh* const data + ) = 0; + + virtual void doctypeWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + ) = 0; + + virtual void elementDecl + ( + const DTDElementDecl& decl + , const bool isIgnored + ) = 0; + + virtual void endAttList + ( + const DTDElementDecl& elemDecl + ) = 0; + + virtual void endIntSubset() = 0; + + virtual void endExtSubset() = 0; + + virtual void entityDecl + ( + const DTDEntityDecl& entityDecl + , const bool isPEDecl + , const bool isIgnored + ) = 0; + + virtual void resetDocType() = 0; + + virtual void notationDecl + ( + const XMLNotationDecl& notDecl + , const bool isIgnored + ) = 0; + + virtual void startAttList + ( + const DTDElementDecl& elemDecl + ) = 0; + + virtual void startIntSubset() = 0; + + virtual void startExtSubset() = 0; + + virtual void TextDecl + ( + const XMLCh* const versionStr + , const XMLCh* const encodingStr + ) = 0; + + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DocTypeHandler(const DocTypeHandler&); + DocTypeHandler& operator=(const DocTypeHandler&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp new file mode 100644 index 000000000000..0b3e42f01fd1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp @@ -0,0 +1,108 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLDTDDESCRIPTIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLDTDDESCRIPTIONIMPL_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT XMLDTDDescriptionImpl : public XMLDTDDescription +{ +public : + // ----------------------------------------------------------------------- + /** @name constructor and destructor */ + // ----------------------------------------------------------------------- + //@{ + XMLDTDDescriptionImpl( + const XMLCh* const systemId + , MemoryManager* const memMgr + ); + + ~XMLDTDDescriptionImpl(); + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of GrammarDescription Interface */ + // ----------------------------------------------------------------------- + //@{ + /** + * getGrammarKey + * + */ + virtual const XMLCh* getGrammarKey() const ; + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of DTDDescription Interface */ + // ----------------------------------------------------------------------- + //@{ + /** + * Getter + * + */ + virtual const XMLCh* getRootName() const; + virtual const XMLCh* getSystemId() const; + + /** + * Setter + * + */ + virtual void setRootName(const XMLCh* const); + virtual void setSystemId(const XMLCh* const); + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLDTDDescriptionImpl) + + XMLDTDDescriptionImpl(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); + +private : + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + XMLDTDDescriptionImpl(const XMLDTDDescriptionImpl& ); + XMLDTDDescriptionImpl& operator=(const XMLDTDDescriptionImpl& ); + //@} + + // ----------------------------------------------------------------------- + // + // fSystemId: + // SYSTEM ID of the grammar + // + // fRootName: + // root name of the grammar + // + // ----------------------------------------------------------------------- + + const XMLCh* fSystemId; + const XMLCh* fRootName; + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/common/AllContentModel.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/common/AllContentModel.hpp new file mode 100644 index 000000000000..5c9ef894280e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/common/AllContentModel.hpp @@ -0,0 +1,177 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ALLCONTENTMODEL_HPP) +#define XERCESC_INCLUDE_GUARD_ALLCONTENTMODEL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentSpecNode; + +// +// AllContentModel is a derivative of the abstract content model base +// class that handles the special case of feature in schema. If a model +// is , all non-optional children must appear +// +// So, all we have to do is to keep an array of the possible children and +// validate by just looking up each child being validated by looking it up +// in the list, and make sure all non-optional children appear. +// +class AllContentModel : public XMLContentModel +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + AllContentModel + ( + ContentSpecNode* const parentContentSpec + , const bool isMixed + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~AllContentModel(); + + // ----------------------------------------------------------------------- + // Implementation of the ContentModel virtual interface + // ----------------------------------------------------------------------- + virtual bool validateContent + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual bool validateContentSpecial + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual ContentLeafNameTypeVector* getContentLeafNameTypeVector() const ; + + virtual unsigned int getNextState(unsigned int currentState, + XMLSize_t elementIndex) const; + + virtual bool handleRepetitions( const QName* const curElem, + unsigned int curState, + unsigned int currentLoop, + unsigned int& nextState, + unsigned int& nextLoop, + XMLSize_t elementIndex, + SubstitutionGroupComparator * comparator) const; + + virtual void checkUniqueParticleAttribution + ( + SchemaGrammar* const pGrammar + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLValidator* const pValidator + , unsigned int* const pContentSpecOrgURI + , const XMLCh* pComplexTypeName = 0 + ) ; + +private : + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void buildChildList + ( + ContentSpecNode* const curNode + , ValueVectorOf& toFill + , ValueVectorOf& toType + ); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + AllContentModel(); + AllContentModel(const AllContentModel&); + AllContentModel& operator=(const AllContentModel&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fCount + // The count of possible children in the fChildren member. + // + // fChildren + // The list of possible children that we have to accept. This array + // is allocated as large as needed in the constructor. + // + // fChildOptional + // The corresponding list of optional state of each child in fChildren + // True if the child is optional (i.e. minOccurs = 0). + // + // fNumRequired + // The number of required children in (i.e. minOccurs = 1) + // + // fIsMixed + // AllContentModel with mixed PCDATA. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + XMLSize_t fCount; + QName** fChildren; + bool* fChildOptional; + unsigned int fNumRequired; + bool fIsMixed; + bool fHasOptionalContent; +}; + +inline ContentLeafNameTypeVector* AllContentModel::getContentLeafNameTypeVector() const +{ + return 0; +} + +inline unsigned int +AllContentModel::getNextState(unsigned int, + XMLSize_t) const { + + return XMLContentModel::gInvalidTrans; +} + +inline bool +AllContentModel::handleRepetitions( const QName* const /*curElem*/, + unsigned int /*curState*/, + unsigned int /*currentLoop*/, + unsigned int& /*nextState*/, + unsigned int& /*nextLoop*/, + XMLSize_t /*elementIndex*/, + SubstitutionGroupComparator * /*comparator*/) const +{ + return true; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMAny.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMAny.hpp new file mode 100644 index 000000000000..6792de9e2024 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMAny.hpp @@ -0,0 +1,99 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CMANY_HPP) +#define XERCESC_INCLUDE_GUARD_CMANY_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class CMStateSet; + +class CMAny : public CMNode +{ +public : + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + CMAny + ( + ContentSpecNode::NodeTypes type + , unsigned int URI + , unsigned int position + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~CMAny(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + unsigned int getURI() const; + + unsigned int getPosition() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setPosition(const unsigned int newPosition); + + // ----------------------------------------------------------------------- + // Implementation of the public CMNode virtual interface + // ----------------------------------------------------------------------- + virtual void orphanChild(); + + +protected : + // ----------------------------------------------------------------------- + // Implementation of the protected CMNode virtual interface + // ----------------------------------------------------------------------- + void calcFirstPos(CMStateSet& toSet) const; + void calcLastPos(CMStateSet& toSet) const; + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fURI; + // URI of the any content model. This value is set if the type is + // of the following: + // XMLContentSpec.CONTENTSPECNODE_ANY, + // XMLContentSpec.CONTENTSPECNODE_ANY_OTHER. + // + // fPosition + // Part of the algorithm to convert a regex directly to a DFA + // numbers each leaf sequentially. If its -1, that means its an + // epsilon node. Zero and greater are non-epsilon positions. + // ----------------------------------------------------------------------- + unsigned int fURI; + unsigned int fPosition; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CMAny(const CMAny&); + CMAny& operator=(const CMAny&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMBinaryOp.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMBinaryOp.hpp new file mode 100644 index 000000000000..60a8cb983f45 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMBinaryOp.hpp @@ -0,0 +1,92 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CMBINARYOP_HPP) +#define XERCESC_INCLUDE_GUARD_CMBINARYOP_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class CMStateSet; + +class CMBinaryOp : public CMNode +{ +public : + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + CMBinaryOp + ( + ContentSpecNode::NodeTypes type + , CMNode* const leftToAdopt + , CMNode* const rightToAdopt + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~CMBinaryOp(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const CMNode* getLeft() const; + CMNode* getLeft(); + const CMNode* getRight() const; + CMNode* getRight(); + + + // ----------------------------------------------------------------------- + // Implementation of the public CMNode virtual interface + // ----------------------------------------------------------------------- + virtual void orphanChild(); + + +protected : + // ----------------------------------------------------------------------- + // Implementation of the protected CMNode virtual interface + // ----------------------------------------------------------------------- + void calcFirstPos(CMStateSet& toSet) const; + void calcLastPos(CMStateSet& toSet) const; + + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fLeftChild + // fRightChild + // These are the references to the two nodes that are on either side + // of this binary operation. We own them both. + // ----------------------------------------------------------------------- + CMNode* fLeftChild; + CMNode* fRightChild; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CMBinaryOp(const CMBinaryOp&); + CMBinaryOp& operator=(const CMBinaryOp&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMLeaf.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMLeaf.hpp new file mode 100644 index 000000000000..0863f5e2f4d7 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMLeaf.hpp @@ -0,0 +1,253 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CMLEAF_HPP) +#define XERCESC_INCLUDE_GUARD_CMLEAF_HPP + +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class represents a leaf in the content spec node tree of an +// element's content model. It just has an element qname and a position value, +// the latter of which is used during the building of a DFA. +// +class CMLeaf : public CMNode +{ +public : + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + CMLeaf + ( + QName* const element + , unsigned int position + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + CMLeaf + ( + QName* const element + , unsigned int position + , bool adopt + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~CMLeaf(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + QName* getElement(); + const QName* getElement() const; + unsigned int getPosition() const; + + virtual bool isRepeatableLeaf() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setPosition(const unsigned int newPosition); + + + // ----------------------------------------------------------------------- + // Implementation of public CMNode virtual interface + // ----------------------------------------------------------------------- + virtual void orphanChild(); + +protected : + // ----------------------------------------------------------------------- + // Implementation of protected CMNode virtual interface + // ----------------------------------------------------------------------- + void calcFirstPos(CMStateSet& toSet) const; + void calcLastPos(CMStateSet& toSet) const; + + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fElement + // This is the element that this leaf represents. + // + // fPosition + // Part of the algorithm to convert a regex directly to a DFA + // numbers each leaf sequentially. If its -1, that means its an + // epsilon node. All others are non-epsilon positions. + // + // fAdopt + // This node is responsible for the storage of the fElement QName. + // ----------------------------------------------------------------------- + QName* fElement; + unsigned int fPosition; + bool fAdopt; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CMLeaf(const CMLeaf&); + CMLeaf& operator=(const CMLeaf&); +}; + + +// ----------------------------------------------------------------------- +// Constructors +// ----------------------------------------------------------------------- +inline CMLeaf::CMLeaf( QName* const element + , unsigned int position + , unsigned int maxStates + , MemoryManager* const manager) : + CMNode(ContentSpecNode::Leaf, maxStates, manager) + , fElement(0) + , fPosition(position) + , fAdopt(false) +{ + if (!element) + { + fElement = new (fMemoryManager) QName + ( + XMLUni::fgZeroLenString + , XMLUni::fgZeroLenString + , XMLElementDecl::fgInvalidElemId + , fMemoryManager + ); + // We have to be responsible for this QName - override default fAdopt + fAdopt = true; + } + else + { + fElement = element; + } + // Leaf nodes are never nullable unless its an epsilon node + fIsNullable=(fPosition == epsilonNode); +} + +inline CMLeaf::CMLeaf( QName* const element + , unsigned int position + , bool adopt + , unsigned int maxStates + , MemoryManager* const manager) : + CMNode(ContentSpecNode::Leaf, maxStates, manager) + , fElement(0) + , fPosition(position) + , fAdopt(adopt) +{ + if (!element) + { + fElement = new (fMemoryManager) QName + ( + XMLUni::fgZeroLenString + , XMLUni::fgZeroLenString + , XMLElementDecl::fgInvalidElemId + , fMemoryManager + ); + // We have to be responsible for this QName - override adopt parameter + fAdopt = true; + } + else + { + fElement = element; + } + // Leaf nodes are never nullable unless its an epsilon node + fIsNullable=(fPosition == epsilonNode); +} + +inline CMLeaf::~CMLeaf() +{ + if (fAdopt) + delete fElement; +} + + +// --------------------------------------------------------------------------- +// Getter methods +// --------------------------------------------------------------------------- +inline QName* CMLeaf::getElement() +{ + return fElement; +} + +inline const QName* CMLeaf::getElement() const +{ + return fElement; +} + +inline unsigned int CMLeaf::getPosition() const +{ + return fPosition; +} + +inline bool CMLeaf::isRepeatableLeaf() const +{ + return false; +} + +// --------------------------------------------------------------------------- +// Setter methods +// --------------------------------------------------------------------------- +inline void CMLeaf::setPosition(const unsigned int newPosition) +{ + fPosition = newPosition; +} + + +// --------------------------------------------------------------------------- +// Implementation of public CMNode virtual interface +// --------------------------------------------------------------------------- +inline void CMLeaf::orphanChild() +{ +} + +// --------------------------------------------------------------------------- +// Implementation of protected CMNode virtual interface +// --------------------------------------------------------------------------- +inline void CMLeaf::calcFirstPos(CMStateSet& toSet) const +{ + // If we are an epsilon node, then the first pos is an empty set + if (isNullable()) + { + toSet.zeroBits(); + return; + } + + // Otherwise, its just the one bit of our position + toSet.setBit(fPosition); +} + +inline void CMLeaf::calcLastPos(CMStateSet& toSet) const +{ + // If we are an epsilon node, then the last pos is an empty set + if (isNullable()) + { + toSet.zeroBits(); + return; + } + + // Otherwise, its just the one bit of our position + toSet.setBit(fPosition); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMNode.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMNode.hpp new file mode 100644 index 000000000000..86416710916e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMNode.hpp @@ -0,0 +1,193 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CMNODE_HPP) +#define XERCESC_INCLUDE_GUARD_CMNODE_HPP + +#include + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class CMNode : public XMemory +{ +public : + enum { + // Special value to indicate a nullable node + epsilonNode = UINT_MAX - 1 + }; + + // ----------------------------------------------------------------------- + // Constructors and Destructors + // ----------------------------------------------------------------------- + CMNode + ( + const ContentSpecNode::NodeTypes type + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~CMNode(); + + + // ----------------------------------------------------------------------- + // Virtual methods to be provided derived node classes + // ----------------------------------------------------------------------- + virtual void orphanChild() = 0; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + ContentSpecNode::NodeTypes getType() const; + const CMStateSet& getFirstPos(); + const CMStateSet& getLastPos(); + bool isNullable() const; + +protected : + // ----------------------------------------------------------------------- + // Protected, abstract methods + // ----------------------------------------------------------------------- + virtual void calcFirstPos(CMStateSet& toUpdate) const = 0; + virtual void calcLastPos(CMStateSet& toUpdate) const = 0; + + // ----------------------------------------------------------------------- + // Protected data members + // + // fMemoryManager + // Pluggable memory manager for dynamic allocation/deallocation. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CMNode(); + CMNode(const CMNode&); + CMNode& operator=(const CMNode&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fType + // The type of node. This indicates whether its a leaf or an + // operation. + // + // fFirstPos + // The set of NFA states that represent the entry states of this + // node in the DFA. + // + // fLastPos + // The set of NFA states that represent the final states of this + // node in the DFA. + // + // fMaxStates + // The maximum number of states that the NFA has, which means the + // max number of NFA states that have to be traced in the state + // sets during the building of the DFA. Its unfortunate that it + // has to be stored redundantly, but we need to fault in the + // state set members and they have to be sized to this size. + // + // fIsNullable + // Whether the node can be empty + // ----------------------------------------------------------------------- + ContentSpecNode::NodeTypes fType; + CMStateSet* fFirstPos; + CMStateSet* fLastPos; + unsigned int fMaxStates; + +protected: + bool fIsNullable; +}; + + + +// --------------------------------------------------------------------------- +// CMNode: Constructors and Destructors +// --------------------------------------------------------------------------- +inline CMNode::CMNode(const ContentSpecNode::NodeTypes type + , unsigned int maxStates + , MemoryManager* const manager) : + + fMemoryManager(manager) + , fType(type) + , fFirstPos(0) + , fLastPos(0) + , fMaxStates(maxStates) + , fIsNullable(false) +{ +} + +inline CMNode::~CMNode() +{ + // Clean up any position sets that got created + delete fFirstPos; + delete fLastPos; +} + + +// --------------------------------------------------------------------------- +// CMNode: Getter methods +// --------------------------------------------------------------------------- +inline ContentSpecNode::NodeTypes CMNode::getType() const +{ + return fType; +} + +inline const CMStateSet& CMNode::getFirstPos() +{ + // + // Fault in the state set if needed. Since we can't use mutable members + // cast off the const'ness. + // + if (!fFirstPos) + { + fFirstPos = new (fMemoryManager) CMStateSet(fMaxStates, fMemoryManager); + calcFirstPos(*fFirstPos); + } + return *fFirstPos; +} + +inline const CMStateSet& CMNode::getLastPos() +{ + // + // Fault in the state set if needed. Since we can't use mutable members + // cast off the const'ness. + // + if (!fLastPos) + { + fLastPos = new (fMemoryManager) CMStateSet(fMaxStates, fMemoryManager); + calcLastPos(*fLastPos); + } + return *fLastPos; +} + +inline bool CMNode::isNullable() const +{ + return fIsNullable; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMRepeatingLeaf.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMRepeatingLeaf.hpp new file mode 100644 index 000000000000..3f6d0c1794f7 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMRepeatingLeaf.hpp @@ -0,0 +1,136 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CMREPEATINGLEAF_HPP) +#define XERCESC_INCLUDE_GUARD_CMREPEATINGLEAF_HPP + +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +// +// A compound content model leaf node which carries occurence information. +// +class CMRepeatingLeaf : public CMLeaf +{ +public : + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + CMRepeatingLeaf + ( + QName* const element + , int minOccurs + , int maxOccurs + , unsigned int position + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + CMRepeatingLeaf + ( + QName* const element + , int minOccurs + , int maxOccurs + , unsigned int position + , bool adopt + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + int getMinOccurs() const; + int getMaxOccurs() const; + + virtual bool isRepeatableLeaf() const; + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fMinOccurs + // fMaxOccurs + // The cardinality of the repeating leaf + // + // ----------------------------------------------------------------------- + int fMinOccurs; + int fMaxOccurs; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CMRepeatingLeaf(const CMRepeatingLeaf&); + CMRepeatingLeaf& operator=(const CMRepeatingLeaf&); +}; + + +// ----------------------------------------------------------------------- +// Constructors +// ----------------------------------------------------------------------- +inline CMRepeatingLeaf::CMRepeatingLeaf( QName* const element + , int minOccurs + , int maxOccurs + , unsigned int position + , unsigned int maxStates + , MemoryManager* const manager) : + CMLeaf(element, position, maxStates, manager) + , fMinOccurs(minOccurs) + , fMaxOccurs(maxOccurs) +{ +} + +inline CMRepeatingLeaf::CMRepeatingLeaf( QName* const element + , int minOccurs + , int maxOccurs + , unsigned int position + , bool adopt + , unsigned int maxStates + , MemoryManager* const manager) : + CMLeaf(element, position, adopt, maxStates, manager) + , fMinOccurs(minOccurs) + , fMaxOccurs(maxOccurs) +{ +} + +// --------------------------------------------------------------------------- +// Getter methods +// --------------------------------------------------------------------------- +inline int CMRepeatingLeaf::getMinOccurs() const +{ + return fMinOccurs; +} + +inline int CMRepeatingLeaf::getMaxOccurs() const +{ + return fMaxOccurs; +} + +inline bool CMRepeatingLeaf::isRepeatableLeaf() const +{ + return true; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMStateSet.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMStateSet.hpp new file mode 100644 index 000000000000..e018dc80a7fa --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMStateSet.hpp @@ -0,0 +1,636 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CMSTATESET_HPP) +#define XERCESC_INCLUDE_GUARD_CMSTATESET_HPP + +// DESCRIPTION: +// +// This class is a specialized bitset class for the content model code of +// the validator. It assumes that its never called with two objects of +// different bit counts, and that bit sets smaller than a threshold are far +// and away the most common. So it can be a lot more optimized than a general +// purpose utility bitset class +// + +#include +#include +#include +#include +#include +#include + +#if XERCES_HAVE_EMMINTRIN_H +# include +#endif + +XERCES_CPP_NAMESPACE_BEGIN + +class CMStateSetEnumerator; + +// This value must be 4 in order to use the SSE2 instruction set +#define CMSTATE_CACHED_INT32_SIZE 4 + +// This value must be a multiple of 128 in order to use the SSE2 instruction set +#define CMSTATE_BITFIELD_CHUNK 1024 +#define CMSTATE_BITFIELD_INT32_SIZE (1024 / 32) + +struct CMDynamicBuffer +{ + // fArraySize + // This indicates the number of elements of the fBitArray vector + // + // fBitArray + // A vector of arrays of XMLInt32; each array is allocated on demand + // if a bit needs to be set in that range + // + // fMemoryManager + // The memory manager used to allocate and deallocate memory + // + XMLSize_t fArraySize; + XMLInt32** fBitArray; + MemoryManager* fMemoryManager; +}; + +class CMStateSet : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + CMStateSet( const XMLSize_t bitCount + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) : + + fBitCount(bitCount) + , fDynamicBuffer(0) + { + // + // See if we need to allocate the byte array or whether we can live + // within the cached bit high performance scheme. + // + if (fBitCount > (CMSTATE_CACHED_INT32_SIZE * 32)) + { + fDynamicBuffer = (CMDynamicBuffer*)manager->allocate(sizeof(CMDynamicBuffer)); + fDynamicBuffer->fMemoryManager = manager; + // allocate an array of vectors, each one containing CMSTATE_BITFIELD_CHUNK bits + fDynamicBuffer->fArraySize = fBitCount / CMSTATE_BITFIELD_CHUNK; + if (fBitCount % CMSTATE_BITFIELD_CHUNK) + fDynamicBuffer->fArraySize++; + try + { + fDynamicBuffer->fBitArray = (XMLInt32**) fDynamicBuffer->fMemoryManager->allocate(fDynamicBuffer->fArraySize*sizeof(XMLInt32*)); + } + catch( const OutOfMemoryException& ) + { + fDynamicBuffer->fMemoryManager->deallocate(fDynamicBuffer); + throw; + } + for(XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + fDynamicBuffer->fBitArray[index]=NULL; + } + else + { + for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) + fBits[index] = 0; + } + } + + CMStateSet(const CMStateSet& toCopy) : + XMemory(toCopy) + , fBitCount(toCopy.fBitCount) + , fDynamicBuffer(0) + { + // + // See if we need to allocate the byte array or whether we can live + // within the cahced bit high performance scheme. + // + if (fBitCount > (CMSTATE_CACHED_INT32_SIZE * 32)) + { + fDynamicBuffer = (CMDynamicBuffer*) toCopy.fDynamicBuffer->fMemoryManager->allocate(sizeof(CMDynamicBuffer)); + fDynamicBuffer->fMemoryManager = toCopy.fDynamicBuffer->fMemoryManager; + fDynamicBuffer->fArraySize = fBitCount / CMSTATE_BITFIELD_CHUNK; + if (fBitCount % CMSTATE_BITFIELD_CHUNK) + fDynamicBuffer->fArraySize++; + fDynamicBuffer->fBitArray = (XMLInt32**) fDynamicBuffer->fMemoryManager->allocate(fDynamicBuffer->fArraySize*sizeof(XMLInt32*)); + for(XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + { + if(toCopy.fDynamicBuffer->fBitArray[index]!=NULL) + { + allocateChunk(index); + memcpy((void *) fDynamicBuffer->fBitArray[index], + (const void *) toCopy.fDynamicBuffer->fBitArray[index], + CMSTATE_BITFIELD_INT32_SIZE * sizeof(XMLInt32)); + } + else + fDynamicBuffer->fBitArray[index]=NULL; + } + } + else + { + memcpy((void *) fBits, + (const void *) toCopy.fBits, + CMSTATE_CACHED_INT32_SIZE * sizeof(XMLInt32)); + } + } + + ~CMStateSet() + { + if(fDynamicBuffer) + { + for(XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + if(fDynamicBuffer->fBitArray[index]!=NULL) + deallocateChunk(index); + fDynamicBuffer->fMemoryManager->deallocate(fDynamicBuffer->fBitArray); + fDynamicBuffer->fMemoryManager->deallocate(fDynamicBuffer); + } + } + + + // ----------------------------------------------------------------------- + // Set manipulation methods + // ----------------------------------------------------------------------- + void operator|=(const CMStateSet& setToOr) + { + if(fDynamicBuffer==0) + { +#ifdef XERCES_HAVE_SSE2_INTRINSIC + if(XMLPlatformUtils::fgSSE2ok) + { + __m128i xmm1 = _mm_loadu_si128(reinterpret_cast(fBits)); + __m128i xmm2 = _mm_loadu_si128(reinterpret_cast(setToOr.fBits)); + __m128i xmm3 = _mm_or_si128(xmm1, xmm2); // OR 4 32-bit words + _mm_storeu_si128(reinterpret_cast<__m128i*>(fBits), xmm3); + } + else +#endif + { + for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) + if(setToOr.fBits[index]) + { + if(fBits[index]) + fBits[index] |= setToOr.fBits[index]; + else + fBits[index] = setToOr.fBits[index]; + } + } + } + else + { + for (XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + { + XMLInt32 *& other = setToOr.fDynamicBuffer->fBitArray[index]; + if(other!=NULL) + { + // if we haven't allocated the subvector yet, allocate it and copy + if(fDynamicBuffer->fBitArray[index]==NULL) + { + allocateChunk(index); + memcpy((void *) fDynamicBuffer->fBitArray[index], + (const void *) other, + CMSTATE_BITFIELD_INT32_SIZE * sizeof(XMLInt32)); + } + else + { + // otherwise, merge them + XMLInt32*& mine = fDynamicBuffer->fBitArray[index]; +#ifdef XERCES_HAVE_SSE2_INTRINSIC + if(XMLPlatformUtils::fgSSE2ok) + { + for(XMLSize_t subIndex = 0; subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex+=4) + { + __m128i xmm1 = _mm_load_si128(reinterpret_cast(&other[subIndex])); + __m128i xmm2 = _mm_load_si128(reinterpret_cast(&mine[subIndex])); + __m128i xmm3 = _mm_or_si128(xmm1, xmm2); // OR 4 32-bit words + _mm_store_si128(reinterpret_cast<__m128i*>(&mine[subIndex]), xmm3); + } + } + else +#endif + { + for(XMLSize_t subIndex = 0; subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) + if(setToOr.fDynamicBuffer->fBitArray[index][subIndex]) + { + if(fDynamicBuffer->fBitArray[index][subIndex]) + fDynamicBuffer->fBitArray[index][subIndex] |= setToOr.fDynamicBuffer->fBitArray[index][subIndex]; + else + fDynamicBuffer->fBitArray[index][subIndex] = setToOr.fDynamicBuffer->fBitArray[index][subIndex]; + } + } + } + } + } + } + } + + bool operator==(const CMStateSet& setToCompare) const + { + if (fBitCount != setToCompare.fBitCount) + return false; + + if(fDynamicBuffer==0) + { + for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) + { + if (fBits[index] != setToCompare.fBits[index]) + return false; + } + } + else + { + for (XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + { + XMLInt32 *& other = setToCompare.fDynamicBuffer->fBitArray[index], + *& mine = fDynamicBuffer->fBitArray[index]; + if(mine==NULL && other==NULL) + continue; + else if(mine==NULL || other==NULL) // the other should have been empty too + return false; + else + { + for(XMLSize_t subIndex = 0; subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) + if(mine[subIndex]!=other[subIndex]) + return false; + } + } + } + return true; + } + + CMStateSet& operator=(const CMStateSet& srcSet) + { + if (this == &srcSet) + return *this; + + // They have to be the same size + if (fBitCount != srcSet.fBitCount) + { + if(fDynamicBuffer) + ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Bitset_NotEqualSize, fDynamicBuffer->fMemoryManager); + else + ThrowXML(RuntimeException, XMLExcepts::Bitset_NotEqualSize); + } + + if(fDynamicBuffer==0) + { + for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) + fBits[index] = srcSet.fBits[index]; + } + else + { + for (XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + if(srcSet.fDynamicBuffer->fBitArray[index]==NULL) + { + // delete this subentry + if(fDynamicBuffer->fBitArray[index]!=NULL) + deallocateChunk(index); + } + else + { + // if we haven't allocated the subvector yet, allocate it and copy + if(fDynamicBuffer->fBitArray[index]==NULL) + allocateChunk(index); + memcpy((void *) fDynamicBuffer->fBitArray[index], + (const void *) srcSet.fDynamicBuffer->fBitArray[index], + CMSTATE_BITFIELD_INT32_SIZE * sizeof(XMLInt32)); + } + } + return *this; + } + + XMLSize_t getBitCountInRange(XMLSize_t start, XMLSize_t end) const + { + XMLSize_t count = 0; + end /= 32; + if(fDynamicBuffer==0) + { + if(end > CMSTATE_CACHED_INT32_SIZE) + end = CMSTATE_CACHED_INT32_SIZE; + for (XMLSize_t index = start / 32; index < end; index++) + { + if (fBits[index] != 0) + for(int i=0;i<32;i++) + { + const XMLInt32 mask = 1UL << i; + if(fBits[index] & mask) + count++; + } + } + } + else + { + if(end > fDynamicBuffer->fArraySize) + end = fDynamicBuffer->fArraySize; + for (XMLSize_t index = start / 32; index < end; index++) + { + if(fDynamicBuffer->fBitArray[index]==NULL) + continue; + for(XMLSize_t subIndex=0;subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) + { + if (fDynamicBuffer->fBitArray[index][subIndex] != 0) + for(int i=0;i<32;i++) + { + const XMLInt32 mask = 1UL << i; + if(fDynamicBuffer->fBitArray[index][subIndex] & mask) + count++; + } + } + } + } + return count; + } + + bool getBit(const XMLSize_t bitToGet) const + { + if (bitToGet >= fBitCount) + { + if(fDynamicBuffer) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Bitset_BadIndex, fDynamicBuffer->fMemoryManager); + else + ThrowXML(ArrayIndexOutOfBoundsException, XMLExcepts::Bitset_BadIndex); + } + + // And access the right bit and byte + if(fDynamicBuffer==0) + { + const XMLInt32 mask = 1UL << (bitToGet % 32); + const XMLSize_t byteOfs = bitToGet / 32; + return (fBits[byteOfs]!=0 && (fBits[byteOfs] & mask) != 0); + } + else + { + const XMLSize_t vectorOfs = bitToGet / CMSTATE_BITFIELD_CHUNK; + if(fDynamicBuffer->fBitArray[vectorOfs]==NULL) + return false; + const XMLInt32 mask = 1UL << (bitToGet % 32); + const XMLSize_t byteOfs = (bitToGet % CMSTATE_BITFIELD_CHUNK) / 32; + return (fDynamicBuffer->fBitArray[vectorOfs][byteOfs]!=0 && (fDynamicBuffer->fBitArray[vectorOfs][byteOfs] & mask) != 0); + } + } + + bool isEmpty() const + { + if(fDynamicBuffer==0) + { + for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) + { + if (fBits[index] != 0) + return false; + } + } + else + { + for (XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + { + if(fDynamicBuffer->fBitArray[index]==NULL) + continue; + for(XMLSize_t subIndex=0;subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) + { + if (fDynamicBuffer->fBitArray[index][subIndex] != 0) + return false; + } + } + } + return true; + } + + void setBit(const XMLSize_t bitToSet) + { + if (bitToSet >= fBitCount) + { + if(fDynamicBuffer) + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Bitset_BadIndex, fDynamicBuffer->fMemoryManager); + else + ThrowXML(ArrayIndexOutOfBoundsException, XMLExcepts::Bitset_BadIndex); + } + + const XMLInt32 mask = 1UL << (bitToSet % 32); + + // And access the right bit and byte + if(fDynamicBuffer==0) + { + const XMLSize_t byteOfs = bitToSet / 32; + fBits[byteOfs] &= ~mask; + fBits[byteOfs] |= mask; + } + else + { + const XMLSize_t vectorOfs = bitToSet / CMSTATE_BITFIELD_CHUNK; + if(fDynamicBuffer->fBitArray[vectorOfs]==NULL) + { + allocateChunk(vectorOfs); + for(XMLSize_t index=0;index < CMSTATE_BITFIELD_INT32_SIZE; index++) + fDynamicBuffer->fBitArray[vectorOfs][index]=0; + } + const XMLSize_t byteOfs = (bitToSet % CMSTATE_BITFIELD_CHUNK) / 32; + fDynamicBuffer->fBitArray[vectorOfs][byteOfs] &= ~mask; + fDynamicBuffer->fBitArray[vectorOfs][byteOfs] |= mask; + } + } + + void zeroBits() + { + if(fDynamicBuffer==0) + { + for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) + fBits[index] = 0; + } + else + { + for (XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) + // delete this subentry + if(fDynamicBuffer->fBitArray[index]!=NULL) + deallocateChunk(index); + } + } + + XMLSize_t hashCode() const + { + XMLSize_t hash = 0; + if(fDynamicBuffer==0) + { + for (XMLSize_t index = 0; indexfArraySize; index++) + { + if(fDynamicBuffer->fBitArray[index]==NULL) + // simulates the iteration on the missing bits + for(XMLSize_t subIndex=0;subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) + hash *= 31; + else + for(XMLSize_t subIndex=0;subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) + hash = fDynamicBuffer->fBitArray[index][subIndex] + hash * 31; + } + } + return hash; + } + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CMStateSet(); + + // ----------------------------------------------------------------------- + // Helpers + // ----------------------------------------------------------------------- + void allocateChunk(const XMLSize_t index) + { +#ifdef XERCES_HAVE_SSE2_INTRINSIC + if(XMLPlatformUtils::fgSSE2ok) + fDynamicBuffer->fBitArray[index]=(XMLInt32*)_mm_malloc(CMSTATE_BITFIELD_INT32_SIZE * sizeof(XMLInt32), 16); + else +#endif + fDynamicBuffer->fBitArray[index]=(XMLInt32*)fDynamicBuffer->fMemoryManager->allocate(CMSTATE_BITFIELD_INT32_SIZE * sizeof(XMLInt32)); + } + + void deallocateChunk(const XMLSize_t index) + { +#ifdef XERCES_HAVE_SSE2_INTRINSIC + if(XMLPlatformUtils::fgSSE2ok) + _mm_free(fDynamicBuffer->fBitArray[index]); + else +#endif + fDynamicBuffer->fMemoryManager->deallocate(fDynamicBuffer->fBitArray[index]); + fDynamicBuffer->fBitArray[index]=NULL; + } + + // ----------------------------------------------------------------------- + // Private data members + // + // fBitCount + // The count of bits that the outside world wants to support, + // so its the max bit index plus one. + // + // fBits + // When the bit count is less than a threshold (very common), these hold the bits. + // Otherwise, the fDynamicBuffer member holds htem. + // + // fDynamicBuffer + // If the bit count is greater than the threshold, then we allocate this structure to + // store the bits, the length, and the memory manager to allocate/deallocate + // the memory + // + // ----------------------------------------------------------------------- + XMLSize_t fBitCount; + XMLInt32 fBits[CMSTATE_CACHED_INT32_SIZE]; + CMDynamicBuffer* fDynamicBuffer; + + friend class CMStateSetEnumerator; +}; + +class CMStateSetEnumerator : public XMemory +{ +public: + CMStateSetEnumerator(const CMStateSet* toEnum, XMLSize_t start = 0) : + fToEnum(toEnum), + fIndexCount((XMLSize_t)-1), + fLastValue(0) + { + // if a starting bit is specified, place fIndexCount at the beginning of the previous 32 bit area + // so the findNext moves to the one where 'start' is located + if(start > 32) + fIndexCount = (start/32 - 1) * 32; + findNext(); + // if we found data, and fIndexCount is still pointing to the area where 'start' is located, erase the bits before 'start' + if(hasMoreElements() && fIndexCount < start) + { + for(XMLSize_t i=0;i< (start - fIndexCount);i++) + { + XMLInt32 mask=1UL << i; + if(fLastValue & mask) + fLastValue &= ~mask; + } + // in case the 32 bit area contained only bits before 'start', advance + if(fLastValue==0) + findNext(); + } + } + + bool hasMoreElements() + { + return fLastValue!=0; + } + + unsigned int nextElement() + { + for(int i=0;i<32;i++) + { + XMLInt32 mask=1UL << i; + if(fLastValue & mask) + { + fLastValue &= ~mask; + unsigned int retVal=(unsigned int)fIndexCount+i; + if(fLastValue==0) + findNext(); + return retVal; + } + } + return 0; + } + +private: + void findNext() + { + if(fToEnum->fDynamicBuffer==0) + { + XMLSize_t nOffset=((fIndexCount==(XMLSize_t)-1)?0:(fIndexCount/32)+1); + for(XMLSize_t index=nOffset;indexfBits[index]!=0) + { + fIndexCount=index*32; + fLastValue=fToEnum->fBits[index]; + return; + } + } + } + else + { + XMLSize_t nOffset=((fIndexCount==(XMLSize_t)-1)?0:(fIndexCount/CMSTATE_BITFIELD_CHUNK)); + XMLSize_t nSubOffset=((fIndexCount==(XMLSize_t)-1)?0:((fIndexCount % CMSTATE_BITFIELD_CHUNK) /32)+1); + for (XMLSize_t index = nOffset; indexfDynamicBuffer->fArraySize; index++) + { + if(fToEnum->fDynamicBuffer->fBitArray[index]!=NULL) + { + for(XMLSize_t subIndex=nSubOffset;subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) + if(fToEnum->fDynamicBuffer->fBitArray[index][subIndex]!=0) + { + fIndexCount=index*CMSTATE_BITFIELD_CHUNK + subIndex*32; + fLastValue=fToEnum->fDynamicBuffer->fBitArray[index][subIndex]; + return; + } + } + nSubOffset = 0; // next chunks will be processed from the beginning + } + } + } + + const CMStateSet* fToEnum; + XMLSize_t fIndexCount; + XMLInt32 fLastValue; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMUnaryOp.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMUnaryOp.hpp new file mode 100644 index 000000000000..bf39eb8bcf24 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/common/CMUnaryOp.hpp @@ -0,0 +1,88 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CMUNARYOP_HPP) +#define XERCESC_INCLUDE_GUARD_CMUNARYOP_HPP + +#include + + +XERCES_CPP_NAMESPACE_BEGIN + +class CMStateSet; + +class CMUnaryOp : public CMNode +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + CMUnaryOp + ( + ContentSpecNode::NodeTypes type + , CMNode* const nodeToAdopt + , unsigned int maxStates + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~CMUnaryOp(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const CMNode* getChild() const; + CMNode* getChild(); + + + // ----------------------------------------------------------------------- + // Implementation of the public CMNode virtual interface + // ----------------------------------------------------------------------- + virtual void orphanChild(); + + +protected : + // ----------------------------------------------------------------------- + // Implementation of the protected CMNode virtual interface + // ----------------------------------------------------------------------- + void calcFirstPos(CMStateSet& toSet) const; + void calcLastPos(CMStateSet& toSet) const; + + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fChild + // This is the reference to the one child that we have for this + // unary operation. We own it. + // ----------------------------------------------------------------------- + CMNode* fChild; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + CMUnaryOp(const CMUnaryOp&); + CMUnaryOp& operator=(const CMUnaryOp&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/common/ContentLeafNameTypeVector.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/common/ContentLeafNameTypeVector.hpp new file mode 100644 index 000000000000..4534e0ac6337 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/common/ContentLeafNameTypeVector.hpp @@ -0,0 +1,119 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CONTENTLEAFNAMETYPEVECTOR_HPP) +#define XERCESC_INCLUDE_GUARD_CONTENTLEAFNAMETYPEVECTOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLPARSER_EXPORT ContentLeafNameTypeVector : public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Class specific types + // ----------------------------------------------------------------------- + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ContentLeafNameTypeVector + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ContentLeafNameTypeVector + ( + QName** const qName + , ContentSpecNode::NodeTypes* const types + , const XMLSize_t count + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~ContentLeafNameTypeVector(); + + ContentLeafNameTypeVector(const ContentLeafNameTypeVector&); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + QName* getLeafNameAt(const XMLSize_t pos) const; + + ContentSpecNode::NodeTypes getLeafTypeAt(const XMLSize_t pos) const; + XMLSize_t getLeafCount() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setValues + ( + QName** const qName + , ContentSpecNode::NodeTypes* const types + , const XMLSize_t count + ); + + // ----------------------------------------------------------------------- + // Miscellaneous + // ----------------------------------------------------------------------- + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ContentLeafNameTypeVector& operator=(const ContentLeafNameTypeVector&); + + // ----------------------------------------------------------------------- + // helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + void init(const XMLSize_t size); + + // ----------------------------------------------------------------------- + // Private Data Members + // + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + QName** fLeafNames; + ContentSpecNode::NodeTypes *fLeafTypes; + XMLSize_t fLeafCount; +}; + +inline void ContentLeafNameTypeVector::cleanUp() +{ + fMemoryManager->deallocate(fLeafNames); //delete [] fLeafNames; + fMemoryManager->deallocate(fLeafTypes); //delete [] fLeafTypes; +} + +inline void ContentLeafNameTypeVector::init(const XMLSize_t size) +{ + fLeafNames = (QName**) fMemoryManager->allocate(size * sizeof(QName*));//new QName*[size]; + fLeafTypes = (ContentSpecNode::NodeTypes *) fMemoryManager->allocate + ( + size * sizeof(ContentSpecNode::NodeTypes) + ); //new ContentSpecNode::NodeTypes [size]; + fLeafCount = size; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/common/ContentSpecNode.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/common/ContentSpecNode.hpp new file mode 100644 index 000000000000..32f6264b9f4b --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/common/ContentSpecNode.hpp @@ -0,0 +1,459 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_CONTENTSPECNODE_HPP) +#define XERCESC_INCLUDE_GUARD_CONTENTSPECNODE_HPP + +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLBuffer; +class Grammar; + + +class XMLUTIL_EXPORT ContentSpecNode : public XSerializable, public XMemory +{ +public : + // ----------------------------------------------------------------------- + // Class specific types + // ----------------------------------------------------------------------- + enum NodeTypes + { + Leaf = 0 + , ZeroOrOne + , ZeroOrMore + , OneOrMore + , Choice + , Sequence + , Any + , Any_Other + , Any_NS = 8 + , All = 9 + , Loop = 10 + , Any_NS_Choice = 20 // 16 + 4 (Choice) + , ModelGroupSequence = 21 // 16 + 5 (Sequence) + , Any_Lax = 22 // 16 + 6 (Any) + , Any_Other_Lax = 23 // 16 + 7 (Any_Other) + , Any_NS_Lax = 24 // 16 + 8 (Any_NS) + , ModelGroupChoice = 36 // 32 + 4 (Choice) + , Any_Skip = 38 // 32 + 6 (Any) + , Any_Other_Skip = 39 // 32 + 7 (Any_Other) + , Any_NS_Skip = 40 // 32 + 8 (Any_NS) + + , UnknownType = -1 + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + ContentSpecNode(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ContentSpecNode + ( + QName* const toAdopt + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ContentSpecNode + ( + XMLElementDecl* const elemDecl + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ContentSpecNode + ( + QName* const toAdopt + , const bool copyQName + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ContentSpecNode + ( + const NodeTypes type + , ContentSpecNode* const firstToAdopt + , ContentSpecNode* const secondToAdopt + , const bool adoptFirst = true + , const bool adoptSecond = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ContentSpecNode(const ContentSpecNode&); + ~ContentSpecNode(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + QName* getElement(); + const QName* getElement() const; + XMLElementDecl* getElementDecl(); + const XMLElementDecl* getElementDecl() const; + ContentSpecNode* getFirst(); + const ContentSpecNode* getFirst() const; + ContentSpecNode* getSecond(); + const ContentSpecNode* getSecond() const; + NodeTypes getType() const; + ContentSpecNode* orphanFirst(); + ContentSpecNode* orphanSecond(); + int getMinOccurs() const; + int getMaxOccurs() const; + bool isFirstAdopted() const; + bool isSecondAdopted() const; + + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setElement(QName* const toAdopt); + void setFirst(ContentSpecNode* const toAdopt); + void setSecond(ContentSpecNode* const toAdopt); + void setType(const NodeTypes type); + void setMinOccurs(int min); + void setMaxOccurs(int max); + void setAdoptFirst(bool adoptFirst); + void setAdoptSecond(bool adoptSecond); + + + // ----------------------------------------------------------------------- + // Miscellaneous + // ----------------------------------------------------------------------- + void formatSpec (XMLBuffer& bufToFill) const; + bool hasAllContent(); + int getMinTotalRange() const; + int getMaxTotalRange() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(ContentSpecNode) + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ContentSpecNode& operator=(const ContentSpecNode&); + + void cleanup(); + + // ----------------------------------------------------------------------- + // Helper functions + // ----------------------------------------------------------------------- + void deleteChildNode(ContentSpecNode* node); + + // ----------------------------------------------------------------------- + // Private Data Members + // + // fElement + // If the type is Leaf/Any*, then this is the qName of the element. If the URI + // is fgPCDataElemId, then its a PCData node. Else, it is zero. + // + // fFirst + // fSecond + // The optional first and second nodes. The fType field indicates + // which of these are valid. The validity constraints are: + // + // Leaf = Neither valid + // ZeroOrOne, ZeroOrMore = First + // Choice, Sequence, All = First and Second + // Any* = Neither valid + // + // fType + // The type of node. This controls how many of the child node fields + // are used. + // + // fAdoptFirst + // Indicate if this ContentSpecNode adopts the fFirst, and is responsible + // for deleting it. + // + // fAdoptSecond + // Indicate if this ContentSpecNode adopts the fSecond, and is responsible + // for deleting it. + // + // fMinOccurs + // Indicate the minimum times that this node can occur + // + // fMaxOccurs + // Indicate the maximum times that this node can occur + // -1 (Unbounded), default (1) + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + QName* fElement; + XMLElementDecl* fElementDecl; + ContentSpecNode* fFirst; + ContentSpecNode* fSecond; + NodeTypes fType; + bool fAdoptFirst; + bool fAdoptSecond; + int fMinOccurs; + int fMaxOccurs; +}; + +// --------------------------------------------------------------------------- +// ContentSpecNode: Constructors and Destructor +// --------------------------------------------------------------------------- +inline ContentSpecNode::ContentSpecNode(MemoryManager* const manager) : + + fMemoryManager(manager) + , fElement(0) + , fElementDecl(0) + , fFirst(0) + , fSecond(0) + , fType(ContentSpecNode::Leaf) + , fAdoptFirst(true) + , fAdoptSecond(true) + , fMinOccurs(1) + , fMaxOccurs(1) +{ +} + +inline +ContentSpecNode::ContentSpecNode(QName* const element, + MemoryManager* const manager) : + + fMemoryManager(manager) + , fElement(0) + , fElementDecl(0) + , fFirst(0) + , fSecond(0) + , fType(ContentSpecNode::Leaf) + , fAdoptFirst(true) + , fAdoptSecond(true) + , fMinOccurs(1) + , fMaxOccurs(1) +{ + if (element) + fElement = new (fMemoryManager) QName(*element); +} + +inline +ContentSpecNode::ContentSpecNode(XMLElementDecl* const elemDecl, + MemoryManager* const manager) : + + fMemoryManager(manager) + , fElement(0) + , fElementDecl(elemDecl) + , fFirst(0) + , fSecond(0) + , fType(ContentSpecNode::Leaf) + , fAdoptFirst(true) + , fAdoptSecond(true) + , fMinOccurs(1) + , fMaxOccurs(1) +{ + if (elemDecl) + fElement = new (manager) QName(*(elemDecl->getElementName())); +} + +inline +ContentSpecNode::ContentSpecNode( QName* const element + , const bool copyQName + , MemoryManager* const manager) : + + fMemoryManager(manager) + , fElement(0) + , fElementDecl(0) + , fFirst(0) + , fSecond(0) + , fType(ContentSpecNode::Leaf) + , fAdoptFirst(true) + , fAdoptSecond(true) + , fMinOccurs(1) + , fMaxOccurs(1) +{ + if (copyQName) + { + if (element) + fElement = new (fMemoryManager) QName(*element); + } + else + { + fElement = element; + } +} + +inline +ContentSpecNode::ContentSpecNode(const NodeTypes type + , ContentSpecNode* const firstAdopt + , ContentSpecNode* const secondAdopt + , const bool adoptFirst + , const bool adoptSecond + , MemoryManager* const manager) : + + fMemoryManager(manager) + , fElement(0) + , fElementDecl(0) + , fFirst(firstAdopt) + , fSecond(secondAdopt) + , fType(type) + , fAdoptFirst(adoptFirst) + , fAdoptSecond(adoptSecond) + , fMinOccurs(1) + , fMaxOccurs(1) +{ +} + +// --------------------------------------------------------------------------- +// ContentSpecNode: Getter methods +// --------------------------------------------------------------------------- +inline QName* ContentSpecNode::getElement() +{ + return fElement; +} + +inline const QName* ContentSpecNode::getElement() const +{ + return fElement; +} + +inline XMLElementDecl* ContentSpecNode::getElementDecl() +{ + return fElementDecl; +} + +inline const XMLElementDecl* ContentSpecNode::getElementDecl() const +{ + return fElementDecl; +} + +inline ContentSpecNode* ContentSpecNode::getFirst() +{ + return fFirst; +} + +inline const ContentSpecNode* ContentSpecNode::getFirst() const +{ + return fFirst; +} + +inline ContentSpecNode* ContentSpecNode::getSecond() +{ + return fSecond; +} + +inline const ContentSpecNode* ContentSpecNode::getSecond() const +{ + return fSecond; +} + +inline ContentSpecNode::NodeTypes ContentSpecNode::getType() const +{ + return fType; +} + +inline ContentSpecNode* ContentSpecNode::orphanFirst() +{ + ContentSpecNode* retNode = fFirst; + fFirst = 0; + return retNode; +} + +inline ContentSpecNode* ContentSpecNode::orphanSecond() +{ + ContentSpecNode* retNode = fSecond; + fSecond = 0; + return retNode; +} + +inline int ContentSpecNode::getMinOccurs() const +{ + return fMinOccurs; +} + +inline int ContentSpecNode::getMaxOccurs() const +{ + return fMaxOccurs; +} + +inline bool ContentSpecNode::isFirstAdopted() const +{ + return fAdoptFirst; +} + +inline bool ContentSpecNode::isSecondAdopted() const +{ + return fAdoptSecond; +} + + +// --------------------------------------------------------------------------- +// ContentSpecType: Setter methods +// --------------------------------------------------------------------------- +inline void ContentSpecNode::setElement(QName* const element) +{ + delete fElement; + fElement = 0; + if (element) + fElement = new (fMemoryManager) QName(*element); +} + +inline void ContentSpecNode::setFirst(ContentSpecNode* const toAdopt) +{ + if (fAdoptFirst) + delete fFirst; + fFirst = toAdopt; +} + +inline void ContentSpecNode::setSecond(ContentSpecNode* const toAdopt) +{ + if (fAdoptSecond) + delete fSecond; + fSecond = toAdopt; +} + +inline void ContentSpecNode::setType(const NodeTypes type) +{ + fType = type; +} + +inline void ContentSpecNode::setMinOccurs(int min) +{ + fMinOccurs = min; +} + +inline void ContentSpecNode::setMaxOccurs(int max) +{ + fMaxOccurs = max; +} + +inline void ContentSpecNode::setAdoptFirst(bool newState) +{ + fAdoptFirst = newState; +} + +inline void ContentSpecNode::setAdoptSecond(bool newState) +{ + fAdoptSecond = newState; +} + +// --------------------------------------------------------------------------- +// ContentSpecNode: Miscellaneous +// --------------------------------------------------------------------------- +inline bool ContentSpecNode::hasAllContent() { + + if (fType == ContentSpecNode::ZeroOrOne) { + return (fFirst->getType() == ContentSpecNode::All); + } + + return (fType == ContentSpecNode::All); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/common/DFAContentModel.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/common/DFAContentModel.hpp new file mode 100644 index 000000000000..1ef847baffa6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/common/DFAContentModel.hpp @@ -0,0 +1,275 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DFACONTENTMODEL_HPP) +#define XERCESC_INCLUDE_GUARD_DFACONTENTMODEL_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentSpecNode; +class CMLeaf; +class CMRepeatingLeaf; +class CMNode; +class CMStateSet; + +// +// DFAContentModel is the heavy weight derivative of ContentModel that does +// all of the non-trivial element content validation. This guy does the full +// bore regular expression to DFA conversion to create a DFA that it then +// uses in its validation algorithm. +// +// NOTE: Upstream work insures that this guy will never see a content model +// with PCDATA in it. Any model with PCDATA is 'mixed' and is handled +// via the MixedContentModel class, since mixed models are very +// constrained in form and easily handled via a special case. This +// also makes our life much easier here. +// +class DFAContentModel : public XMLContentModel +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + DFAContentModel + ( + const bool dtd + , ContentSpecNode* const elemContentSpec + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DFAContentModel + ( + const bool dtd + , ContentSpecNode* const elemContentSpec + , const bool isMixed + , MemoryManager* const manager + ); + + virtual ~DFAContentModel(); + + + // ----------------------------------------------------------------------- + // Implementation of the virtual content model interface + // ----------------------------------------------------------------------- + virtual bool validateContent + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual bool validateContentSpecial + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual void checkUniqueParticleAttribution + ( + SchemaGrammar* const pGrammar + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLValidator* const pValidator + , unsigned int* const pContentSpecOrgURI + , const XMLCh* pComplexTypeName = 0 + ) ; + + virtual ContentLeafNameTypeVector* getContentLeafNameTypeVector() const ; + + virtual unsigned int getNextState(unsigned int currentState, + XMLSize_t elementIndex) const; + + virtual bool handleRepetitions( const QName* const curElem, + unsigned int curState, + unsigned int currentLoop, + unsigned int& nextState, + unsigned int& nextLoop, + XMLSize_t elementIndex, + SubstitutionGroupComparator * comparator) const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DFAContentModel(); + DFAContentModel(const DFAContentModel&); + DFAContentModel& operator=(const DFAContentModel&); + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void cleanup(); + void buildDFA(ContentSpecNode* const curNode); + CMNode* buildSyntaxTree(ContentSpecNode* const curNode, unsigned int& curIndex); + unsigned int* makeDefStateList() const; + unsigned int countLeafNodes(ContentSpecNode* const curNode); + + class Occurence : public XMemory + { + public: + Occurence(int minOcc, int maxOcc, int eltIndex); + + int minOccurs; + int maxOccurs; + int elemIndex; + }; + + // ----------------------------------------------------------------------- + // Private data members + // + // fElemMap + // fElemMapSize + // This is the map of unique input symbol elements to indices into + // each state's per-input symbol transition table entry. This is part + // of the built DFA information that must be kept around to do the + // actual validation. + // + // fElemMapType + // This is a map of whether the element map contains information + // related to ANY models. + // + // fEmptyOk + // This is an optimization. While building the transition table we + // can see whether this content model would approve of an empty + // content (which could happen if everything was optional.) So we + // set this flag and short circuit that check, which would otherwise + // be ugly and time consuming if we tried to determine it at each + // validation call. + // + // fEOCPos + // The NFA position of the special EOC (end of content) node. This + // is saved away since its used during the DFA build. + // + // fFinalStateFlags + // This is an array of booleans, one per state (there are + // fTransTableSize states in the DFA) that indicates whether that + // state is a final state. + // + // fFollowList + // The list of follow positions for each NFA position (i.e. for each + // non-epsilon leaf node.) This is only used during the building of + // the DFA, and is let go afterwards. + // + // fHeadNode + // This is the head node of our intermediate representation. It is + // only non-null during the building of the DFA (just so that it + // does not have to be passed all around.) Once the DFA is built, + // this is no longer required so its deleted. + // + // fLeafCount + // The count of leaf nodes. This is an important number that set some + // limits on the sizes of data structures in the DFA process. + // + // fLeafList + // An array of non-epsilon leaf nodes, which is used during the DFA + // build operation, then dropped. These are just references to nodes + // pointed to by fHeadNode, so we don't have to clean them up, just + // the actually leaf list array itself needs cleanup. + // + // fLeafListType + // Array mapping ANY types to the leaf list. + // + // fTransTable + // fTransTableSize + // This is the transition table that is the main by product of all + // of the effort here. It is an array of arrays of ints. The first + // dimension is the number of states we end up with in the DFA. The + // second dimensions is the number of unique elements in the content + // model (fElemMapSize). Each entry in the second dimension indicates + // the new state given that input for the first dimension's start + // state. + // + // The fElemMap array handles mapping from element indexes to + // positions in the second dimension of the transition table. + // + // fTransTableSize is the number of valid entries in the transition + // table, and in the other related tables such as fFinalStateFlags. + // + // fCountingStates + // This is the table holding the minOccurs/maxOccurs for elements + // that can be repeated a finite number of times. + // + // fDTD + // Boolean to allow DTDs to validate even with namespace support. + // + // fIsMixed + // DFA ContentModel with mixed PCDATA. + // ----------------------------------------------------------------------- + QName** fElemMap; + ContentSpecNode::NodeTypes* fElemMapType; + unsigned int fElemMapSize; + bool fEmptyOk; + unsigned int fEOCPos; + bool* fFinalStateFlags; + CMStateSet** fFollowList; + CMNode* fHeadNode; + unsigned int fLeafCount; + CMLeaf** fLeafList; + ContentSpecNode::NodeTypes* fLeafListType; + unsigned int** fTransTable; + unsigned int fTransTableSize; + Occurence** fCountingStates; + bool fDTD; + bool fIsMixed; + ContentLeafNameTypeVector * fLeafNameTypeVector; + MemoryManager* fMemoryManager; +}; + + +inline unsigned int +DFAContentModel::getNextState(unsigned int currentState, + XMLSize_t elementIndex) const { + + if (currentState == XMLContentModel::gInvalidTrans) { + return XMLContentModel::gInvalidTrans; + } + + if (currentState >= fTransTableSize || elementIndex >= fElemMapSize) { + ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); + } + + return fTransTable[currentState][elementIndex]; +} + +inline +DFAContentModel::Occurence::Occurence(int minOcc, int maxOcc, int eltIndex) +{ + minOccurs = minOcc; + maxOccurs = maxOcc; + elemIndex = eltIndex; +} + +XERCES_CPP_NAMESPACE_END + +#endif + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/common/Grammar.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/common/Grammar.hpp new file mode 100644 index 000000000000..159c7f4df43a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/common/Grammar.hpp @@ -0,0 +1,204 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_GRAMMAR_HPP) +#define XERCESC_INCLUDE_GUARD_GRAMMAR_HPP + +#include + +#include +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLGrammarDescription; + +// +// This abstract class specifies the interface for a Grammar +// + +class VALIDATORS_EXPORT Grammar : public XSerializable, public XMemory +{ +public: + + // ----------------------------------------------------------------------- + // Class Specific Types + // + // DTDGrammarType - Indicate this Grammar is built from a DTD. + // SchemaGrammarType - Indicate this Grammar is built from a Schema. + // + // TOP_LEVEL_SCOPE - outermost scope level (i.e. global) of a declaration. + // For DTD, all element decls and attribute decls always + // have TOP_LEVEL_SCOPE. For schema, it may vary if + // it is inside a complex type. + // + // UNKNOWN_SCOPE - unknown scope level. None of the decls should have this. + // + // ----------------------------------------------------------------------- + enum GrammarType { + DTDGrammarType + , SchemaGrammarType + , UnKnown + }; + + enum { + // These are well-known values that must simply be larger + // than any reasonable scope + UNKNOWN_SCOPE = UINT_MAX - 0 + , TOP_LEVEL_SCOPE = UINT_MAX - 1 + }; + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + virtual ~Grammar(){}; + + // ----------------------------------------------------------------------- + // Virtual Getter methods + // ----------------------------------------------------------------------- + virtual GrammarType getGrammarType() const =0; + virtual const XMLCh* getTargetNamespace() const =0; + virtual bool getValidated() const = 0; + + // Element Decl + + // this method should only be used while the grammar is being + // constructed, not while it is being used + // in a validation episode! + virtual XMLElementDecl* findOrAddElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const prefixName + , const XMLCh* const qName + , unsigned int scope + , bool& wasAdded + ) = 0; + + virtual XMLSize_t getElemId + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ) const = 0; + + virtual const XMLElementDecl* getElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ) const = 0; + + virtual XMLElementDecl* getElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ) = 0; + + virtual const XMLElementDecl* getElemDecl + ( + const unsigned int elemId + ) const = 0; + + virtual XMLElementDecl* getElemDecl + ( + const unsigned int elemId + ) = 0; + + // Notation + virtual const XMLNotationDecl* getNotationDecl + ( + const XMLCh* const notName + ) const=0; + + virtual XMLNotationDecl* getNotationDecl + ( + const XMLCh* const notName + )=0; + + // ----------------------------------------------------------------------- + // Virtual Setter methods + // ----------------------------------------------------------------------- + virtual XMLElementDecl* putElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const prefixName + , const XMLCh* const qName + , unsigned int scope + , const bool notDeclared = false + ) = 0; + + virtual XMLSize_t putElemDecl + ( + XMLElementDecl* const elemDecl + , const bool notDeclared = false + ) = 0; + + virtual XMLSize_t putNotationDecl + ( + XMLNotationDecl* const notationDecl + ) const=0; + + virtual void setValidated(const bool newState) = 0; + + // ----------------------------------------------------------------------- + // Virtual methods + // ----------------------------------------------------------------------- + virtual void reset()=0; + + virtual void setGrammarDescription( XMLGrammarDescription*) = 0; + virtual XMLGrammarDescription* getGrammarDescription() const = 0; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(Grammar) + + static void storeGrammar(XSerializeEngine& serEng + , Grammar* const grammar); + + static Grammar* loadGrammar(XSerializeEngine& serEng); + +protected : + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + Grammar(){}; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Grammar(const Grammar&); + Grammar& operator=(const Grammar&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/common/GrammarResolver.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/common/GrammarResolver.hpp new file mode 100644 index 000000000000..eb4b3587b897 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/common/GrammarResolver.hpp @@ -0,0 +1,271 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_GRAMMARRESOLVER_HPP) +#define XERCESC_INCLUDE_GUARD_GRAMMARRESOLVER_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DatatypeValidator; +class DatatypeValidatorFactory; +class XMLGrammarDescription; + +/** + * This class embodies the representation of a Grammar pool Resolver. + * This class is called from the validator. + * + */ + +class VALIDATORS_EXPORT GrammarResolver : public XMemory +{ +public: + + /** @name Constructor and Destructor */ + //@{ + /** + * + * Default Constructor + */ + GrammarResolver( + XMLGrammarPool* const gramPool + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + /** + * Destructor + */ + ~GrammarResolver(); + + //@} + + /** @name Getter methods */ + //@{ + /** + * Retrieve the DatatypeValidator + * + * @param uriStr the namespace URI + * @param typeName the type name + * @return the DatatypeValidator associated with namespace & type name + */ + DatatypeValidator* getDatatypeValidator(const XMLCh* const uriStr, + const XMLCh* const typeName); + + /** + * Retrieve the DatatypeValidatorFactory used for built-in schema types + * + * @return the DatatypeValidator associated with namespace for XMLSchema + */ + DatatypeValidatorFactory* getBuiltinDatatypeValidatorFactory(); + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param gramDesc grammar description for the grammar + * @return Grammar abstraction associated with the grammar description + */ + Grammar* getGrammar( XMLGrammarDescription* const gramDesc ) ; + + /** + * Retrieve the grammar that is associated with the specified namespace key + * + * @param namespaceKey Namespace key into Grammar pool + * @return Grammar abstraction associated with the NameSpace key. + */ + Grammar* getGrammar( const XMLCh* const namespaceKey ) ; + + /** + * Get an enumeration of Grammar in the Grammar pool + * + * @return enumeration of Grammar in Grammar pool + */ + RefHashTableOfEnumerator getGrammarEnumerator() const; + + /** + * Get an enumeration of the referenced Grammars + * + * @return enumeration of referenced Grammars + */ + RefHashTableOfEnumerator getReferencedGrammarEnumerator() const; + + /** + * Get an enumeration of the cached Grammars in the Grammar pool + * + * @return enumeration of the cached Grammars in Grammar pool + */ + RefHashTableOfEnumerator getCachedGrammarEnumerator() const; + + /** + * Get a string pool of schema grammar element/attribute names/prefixes + * (used by TraverseSchema) + * + * @return a string pool of schema grammar element/attribute names/prefixes + */ + XMLStringPool* getStringPool(); + + /** + * Is the specified Namespace key in Grammar pool? + * + * @param nameSpaceKey Namespace key + * @return True if Namespace key association is in the Grammar pool. + */ + bool containsNameSpace( const XMLCh* const nameSpaceKey ); + + inline XMLGrammarPool* getGrammarPool() const; + + inline MemoryManager* getGrammarPoolMemoryManager() const; + + //@} + + /** @name Setter methods */ + //@{ + + /** + * Set the 'Grammar caching' flag + */ + void cacheGrammarFromParse(const bool newState); + + /** + * Set the 'Use cached grammar' flag + */ + void useCachedGrammarInParse(const bool newState); + + //@} + + + /** @name GrammarResolver methods */ + //@{ + /** + * Add the Grammar with Namespace Key associated to the Grammar Pool. + * The Grammar will be owned by the Grammar Pool. + * + * @param grammarToAdopt Grammar abstraction used by validator. + */ + void putGrammar(Grammar* const grammarToAdopt ); + + /** + * Returns the Grammar with Namespace Key associated from the Grammar Pool + * The Key entry is removed from the table (grammar is not deleted if + * adopted - now owned by caller). + * + * @param nameSpaceKey Key to associate with Grammar abstraction + */ + Grammar* orphanGrammar(const XMLCh* const nameSpaceKey); + + /** + * Cache the grammars in fGrammarBucket to fCachedGrammarRegistry. + * If a grammar with the same key is already cached, an exception is + * thrown and none of the grammars will be cached. + */ + void cacheGrammars(); + + /** + * Reset internal Namespace/Grammar registry. + */ + void reset(); + void resetCachedGrammar(); + + /** + * Returns an XSModel, either from the GrammarPool or by creating one + */ + XSModel* getXSModel(); + + + ValueVectorOf* getGrammarsToAddToXSModel(); + + //@} + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + GrammarResolver(const GrammarResolver&); + GrammarResolver& operator=(const GrammarResolver&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fStringPool The string pool used by TraverseSchema to store + // element/attribute names and prefixes. + // Always owned by Grammar pool implementation + // + // fGrammarBucket The parsed Grammar Pool, if no caching option. + // + // fGrammarFromPool Referenced Grammar Set, not owned + // + // fGrammarPool The Grammar Set either plugged or created. + // + // fDataTypeReg DatatypeValidatorFactory registry + // + // fMemoryManager Pluggable memory manager for dynamic memory + // allocation/deallocation + // ----------------------------------------------------------------------- + bool fCacheGrammar; + bool fUseCachedGrammar; + bool fGrammarPoolFromExternalApplication; + XMLStringPool* fStringPool; + RefHashTableOf* fGrammarBucket; + RefHashTableOf* fGrammarFromPool; + DatatypeValidatorFactory* fDataTypeReg; + MemoryManager* fMemoryManager; + XMLGrammarPool* fGrammarPool; + XSModel* fXSModel; + XSModel* fGrammarPoolXSModel; + ValueVectorOf* fGrammarsToAddToXSModel; +}; + +inline XMLStringPool* GrammarResolver::getStringPool() { + + return fStringPool; +} + + +inline void GrammarResolver::useCachedGrammarInParse(const bool aValue) +{ + fUseCachedGrammar = aValue; +} + +inline XMLGrammarPool* GrammarResolver::getGrammarPool() const +{ + return fGrammarPool; +} + +inline MemoryManager* GrammarResolver::getGrammarPoolMemoryManager() const +{ + return fGrammarPool->getMemoryManager(); +} + +inline ValueVectorOf* GrammarResolver::getGrammarsToAddToXSModel() +{ + return fGrammarsToAddToXSModel; +} + +inline DatatypeValidatorFactory* GrammarResolver::getBuiltinDatatypeValidatorFactory() +{ + return fDataTypeReg; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/common/MixedContentModel.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/common/MixedContentModel.hpp new file mode 100644 index 000000000000..5b4d1f227e78 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/common/MixedContentModel.hpp @@ -0,0 +1,212 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_MIXEDCONTENTMODEL_HPP) +#define XERCESC_INCLUDE_GUARD_MIXEDCONTENTMODEL_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentSpecNode; + +// +// MixedContentModel is a derivative of the abstract content model base +// class that handles the special case of mixed model elements. If an element +// is mixed model, it has PCDATA as its first possible content, followed +// by an alternation of the possible children. The children cannot have any +// numeration or order, so it must look like this: +// +// +// +// So, all we have to do is to keep an array of the possible children and +// validate by just looking up each child being validated by looking it up +// in the list. +// +class MixedContentModel : public XMLContentModel +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + MixedContentModel + ( + const bool dtd + , ContentSpecNode* const parentContentSpec + , const bool ordered = false + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~MixedContentModel(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool hasDups() const; + + // ----------------------------------------------------------------------- + // Implementation of the ContentModel virtual interface + // ----------------------------------------------------------------------- + virtual bool validateContent + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual bool validateContentSpecial + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual ContentLeafNameTypeVector* getContentLeafNameTypeVector() const ; + + virtual unsigned int getNextState(unsigned int currentState, + XMLSize_t elementIndex) const; + + virtual bool handleRepetitions( const QName* const curElem, + unsigned int curState, + unsigned int currentLoop, + unsigned int& nextState, + unsigned int& nextLoop, + XMLSize_t elementIndex, + SubstitutionGroupComparator * comparator) const; + + virtual void checkUniqueParticleAttribution + ( + SchemaGrammar* const pGrammar + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLValidator* const pValidator + , unsigned int* const pContentSpecOrgURI + , const XMLCh* pComplexTypeName = 0 + ) ; + +private : + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void buildChildList + ( + ContentSpecNode* const curNode + , ValueVectorOf& toFill + , ValueVectorOf& toType + ); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + MixedContentModel(); + MixedContentModel(const MixedContentModel&); + MixedContentModel& operator=(const MixedContentModel&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fCount + // The count of possible children in the fChildren member. + // + // fChildren + // The list of possible children that we have to accept. This array + // is allocated as large as needed in the constructor. + // + // fChildTypes + // The type of the children to support ANY. + // + // fOrdered + // True if mixed content model is ordered. DTD mixed content models + // are always unordered. + // + // fDTD + // Boolean to allow DTDs to validate even with namespace support. + // + // ----------------------------------------------------------------------- + XMLSize_t fCount; + QName** fChildren; + ContentSpecNode::NodeTypes* fChildTypes; + bool fOrdered; + bool fDTD; + MemoryManager* fMemoryManager; +}; + +inline ContentLeafNameTypeVector* MixedContentModel::getContentLeafNameTypeVector() const +{ + return 0; +} + +inline unsigned int +MixedContentModel::getNextState(unsigned int, + XMLSize_t) const { + + return XMLContentModel::gInvalidTrans; +} + +inline bool +MixedContentModel::handleRepetitions( const QName* const /*curElem*/, + unsigned int /*curState*/, + unsigned int /*currentLoop*/, + unsigned int& /*nextState*/, + unsigned int& /*nextLoop*/, + XMLSize_t /*elementIndex*/, + SubstitutionGroupComparator * /*comparator*/) const +{ + return true; +} + +inline void MixedContentModel::checkUniqueParticleAttribution + ( + SchemaGrammar* const + , GrammarResolver* const + , XMLStringPool* const + , XMLValidator* const + , unsigned int* const pContentSpecOrgURI + , const XMLCh* /*pComplexTypeName*/ /*= 0*/ + ) +{ + // rename back + unsigned int i = 0; + for (i = 0; i < fCount; i++) { + unsigned int orgURIIndex = fChildren[i]->getURI(); + if ((orgURIIndex != XMLContentModel::gEOCFakeId) && + (orgURIIndex != XMLElementDecl::fgInvalidElemId) && + (orgURIIndex != XMLElementDecl::fgPCDataElemId)) + fChildren[i]->setURI(pContentSpecOrgURI[orgURIIndex]); + } + + // for mixed content model, it's only a sequence + // UPA checking is not necessary +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/common/SimpleContentModel.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/common/SimpleContentModel.hpp new file mode 100644 index 000000000000..4555a7313d24 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/common/SimpleContentModel.hpp @@ -0,0 +1,212 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SIMPLECONTENTMODEL_HPP) +#define XERCESC_INCLUDE_GUARD_SIMPLECONTENTMODEL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// SimpleContentModel is a derivative of the abstract content model base +// class that handles a small set of simple content models that are just +// way overkill to give the DFA treatment. +// +// DESCRIPTION: +// +// This guy handles the following scenarios: +// +// a +// a? +// a* +// a+ +// a,b +// a|b +// +// These all involve a unary operation with one element type, or a binary +// operation with two elements. These are very simple and can be checked +// in a simple way without a DFA and without the overhead of setting up a +// DFA for such a simple check. +// +// NOTE: Pass the XMLElementDecl::fgPCDataElemId value to represent a +// PCData node. Pass XMLElementDecl::fgInvalidElemId for unused element +// +class SimpleContentModel : public XMLContentModel +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + SimpleContentModel + ( + const bool dtd + , QName* const firstChild + , QName* const secondChild + , const ContentSpecNode::NodeTypes cmOp + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~SimpleContentModel(); + + + // ----------------------------------------------------------------------- + // Implementation of the ContentModel virtual interface + // ----------------------------------------------------------------------- + virtual bool validateContent + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual bool validateContentSpecial + ( + QName** const children + , XMLSize_t childCount + , unsigned int emptyNamespaceId + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLSize_t* indexFailingChild + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) const; + + virtual ContentLeafNameTypeVector *getContentLeafNameTypeVector() const; + + virtual unsigned int getNextState(unsigned int currentState, + XMLSize_t elementIndex) const; + + virtual bool handleRepetitions( const QName* const curElem, + unsigned int curState, + unsigned int currentLoop, + unsigned int& nextState, + unsigned int& nextLoop, + XMLSize_t elementIndex, + SubstitutionGroupComparator * comparator) const; + + virtual void checkUniqueParticleAttribution + ( + SchemaGrammar* const pGrammar + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLValidator* const pValidator + , unsigned int* const pContentSpecOrgURI + , const XMLCh* pComplexTypeName = 0 + ) ; + + private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SimpleContentModel(); + SimpleContentModel(const SimpleContentModel&); + SimpleContentModel& operator=(const SimpleContentModel&); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fFirstChild + // fSecondChild + // The first (and optional second) child node. The + // operation code tells us whether the second child is used or not. + // + // fOp + // The operation that this object represents. Since this class only + // does simple contents, there is only ever a single operation + // involved (i.e. the children of the operation are always one or + // two leafs.) + // + // fDTD + // Boolean to allow DTDs to validate even with namespace support. */ + // + // ----------------------------------------------------------------------- + QName* fFirstChild; + QName* fSecondChild; + ContentSpecNode::NodeTypes fOp; + bool fDTD; + MemoryManager* const fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// SimpleContentModel: Constructors and Destructor +// --------------------------------------------------------------------------- +inline SimpleContentModel::SimpleContentModel +( + const bool dtd + , QName* const firstChild + , QName* const secondChild + , const ContentSpecNode::NodeTypes cmOp + , MemoryManager* const manager +) + : fFirstChild(0) + , fSecondChild(0) + , fOp(cmOp) + , fDTD(dtd) + , fMemoryManager(manager) +{ + if (firstChild) + fFirstChild = new (manager) QName(*firstChild); + else + fFirstChild = new (manager) QName(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, XMLElementDecl::fgInvalidElemId, manager); + + if (secondChild) + fSecondChild = new (manager) QName(*secondChild); + else + fSecondChild = new (manager) QName(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, XMLElementDecl::fgInvalidElemId, manager); +} + +inline SimpleContentModel::~SimpleContentModel() +{ + delete fFirstChild; + delete fSecondChild; +} + + +// --------------------------------------------------------------------------- +// SimpleContentModel: Virtual methods +// --------------------------------------------------------------------------- +inline unsigned int +SimpleContentModel::getNextState(unsigned int, + XMLSize_t) const { + + return XMLContentModel::gInvalidTrans; +} + +inline bool +SimpleContentModel::handleRepetitions( const QName* const /*curElem*/, + unsigned int /*curState*/, + unsigned int /*currentLoop*/, + unsigned int& /*nextState*/, + unsigned int& /*nextLoop*/, + XMLSize_t /*elementIndex*/, + SubstitutionGroupComparator * /*comparator*/) const +{ + return true; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp new file mode 100644 index 000000000000..8f1b32eb31a6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp @@ -0,0 +1,201 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ABSTRACT_NUMERIC_FACET_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ABSTRACT_NUMERIC_FACET_VALIDATOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT AbstractNumericFacetValidator : public DatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructor. */ + //@{ + + virtual ~AbstractNumericFacetValidator(); + + //@} + + virtual const RefArrayVectorOf* getEnumString() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(AbstractNumericFacetValidator) + +protected: + + AbstractNumericFacetValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + void init(RefArrayVectorOf* const enums + , MemoryManager* const manager); + + // + // Abstract interface + // + virtual void assignAdditionalFacet(const XMLCh* const key + , const XMLCh* const value + , MemoryManager* const manager); + + virtual void inheritAdditionalFacet(); + + virtual void checkAdditionalFacetConstraints(MemoryManager* const manager) const; + + virtual void checkAdditionalFacetConstraintsBase(MemoryManager* const manager) const; + + virtual int compareValues(const XMLNumber* const lValue + , const XMLNumber* const rValue) = 0; + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager) = 0; + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- + + virtual void setMaxInclusive(const XMLCh* const) = 0; + + virtual void setMaxExclusive(const XMLCh* const) = 0; + + virtual void setMinInclusive(const XMLCh* const) = 0; + + virtual void setMinExclusive(const XMLCh* const) = 0; + + virtual void setEnumeration(MemoryManager* const manager) = 0; + + static const int INDETERMINATE; + +public: +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + + inline XMLNumber* getMaxInclusive() const; + + inline XMLNumber* getMaxExclusive() const; + + inline XMLNumber* getMinInclusive() const; + + inline XMLNumber* getMinExclusive() const; + + inline RefVectorOf* getEnumeration() const; + +protected: + // ----------------------------------------------------------------------- + // Protected data members + // + // Allow access to derived class + // + // ----------------------------------------------------------------------- + bool fMaxInclusiveInherited; + bool fMaxExclusiveInherited; + bool fMinInclusiveInherited; + bool fMinExclusiveInherited; + bool fEnumerationInherited; + + XMLNumber* fMaxInclusive; + XMLNumber* fMaxExclusive; + XMLNumber* fMinInclusive; + XMLNumber* fMinExclusive; + + RefVectorOf* fEnumeration; // save the actual value + RefArrayVectorOf* fStrEnumeration; + +private: + + void assignFacet(MemoryManager* const manager); + + void inspectFacet(MemoryManager* const manager); + + void inspectFacetBase(MemoryManager* const manager); + + void inheritFacet(); + + void storeClusive(XSerializeEngine& + , bool + , XMLNumber*); + + void loadClusive(XSerializeEngine& + , bool& + , XMLNumber*& + , XMLNumber::NumberType + , int ); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + AbstractNumericFacetValidator(const AbstractNumericFacetValidator&); + AbstractNumericFacetValidator& operator=(const AbstractNumericFacetValidator&); +}; + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + +inline XMLNumber* AbstractNumericFacetValidator::getMaxInclusive() const +{ + return fMaxInclusive; +} + +inline XMLNumber* AbstractNumericFacetValidator::getMaxExclusive() const +{ + return fMaxExclusive; +} + +inline XMLNumber* AbstractNumericFacetValidator::getMinInclusive() const +{ + return fMinInclusive; +} + +inline XMLNumber* AbstractNumericFacetValidator::getMinExclusive() const +{ + return fMinExclusive; +} + +inline RefVectorOf* AbstractNumericFacetValidator::getEnumeration() const +{ + return fEnumeration; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file AbstractNumericFacetValidator.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/AbstractNumericValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/AbstractNumericValidator.hpp new file mode 100644 index 000000000000..568aa61afb48 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/AbstractNumericValidator.hpp @@ -0,0 +1,109 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ABSTRACT_NUMERIC_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ABSTRACT_NUMERIC_VALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT AbstractNumericValidator : public AbstractNumericFacetValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructor. */ + //@{ + + virtual ~AbstractNumericValidator(); + + //@} + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(AbstractNumericValidator) + +protected: + + AbstractNumericValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + inline void init(RefArrayVectorOf* const enums + , MemoryManager* const manager); + + // + // Abstract interface + // + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager) = 0; + + void boundsCheck(const XMLNumber* const + , MemoryManager* const manager); + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + AbstractNumericValidator(const AbstractNumericValidator&); + AbstractNumericValidator& operator=(const AbstractNumericValidator&); +}; + +inline void AbstractNumericValidator::init(RefArrayVectorOf* const enums + , MemoryManager* const manager) +{ + AbstractNumericFacetValidator::init(enums, manager); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file AbstractNumericValidator.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/AbstractStringValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/AbstractStringValidator.hpp new file mode 100644 index 000000000000..ff2b9d447437 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/AbstractStringValidator.hpp @@ -0,0 +1,250 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ABSTRACT_STRING_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ABSTRACT_STRING_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT AbstractStringValidator : public DatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructor. */ + //@{ + + virtual ~AbstractStringValidator(); + + //@} + + virtual const RefArrayVectorOf* getEnumString() const; + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + virtual int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(AbstractStringValidator) + +protected: + + AbstractStringValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + void init(RefArrayVectorOf* const enums + , MemoryManager* const manager); + + // + // Abstract interface + // + virtual void assignAdditionalFacet(const XMLCh* const key + , const XMLCh* const value + , MemoryManager* const manager); + + virtual void inheritAdditionalFacet(); + + virtual void checkAdditionalFacetConstraints(MemoryManager* const manager) const; + + virtual void checkAdditionalFacet(const XMLCh* const content + , MemoryManager* const manager) const; + + virtual XMLSize_t getLength(const XMLCh* const content + , MemoryManager* const manager) const; + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager) = 0; + + // + // to Allow ListDTV to overwrite + // + virtual void inspectFacetBase(MemoryManager* const manager); + + virtual void inheritFacet(); + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); + + /* + ** Base64BinaryDatatypeValidator to overwrite + */ + virtual void normalizeEnumeration(MemoryManager* const manager); + + virtual void normalizeContent(XMLCh* const, MemoryManager* const manager) const; + +public: +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + + inline XMLSize_t getLength() const; + + inline XMLSize_t getMaxLength() const; + + inline XMLSize_t getMinLength() const; + + inline RefArrayVectorOf* getEnumeration() const; + +protected: +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- + + inline void setLength(XMLSize_t); + + inline void setMaxLength(XMLSize_t); + + inline void setMinLength(XMLSize_t); + + inline void setEnumeration(RefArrayVectorOf*, bool); + +private: + + void assignFacet(MemoryManager* const manager); + + void inspectFacet(MemoryManager* const manager); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + AbstractStringValidator(const AbstractStringValidator&); + AbstractStringValidator& operator=(const AbstractStringValidator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // ----------------------------------------------------------------------- + XMLSize_t fLength; + XMLSize_t fMaxLength; + XMLSize_t fMinLength; + bool fEnumerationInherited; + RefArrayVectorOf* fEnumeration; +}; + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + +inline XMLSize_t AbstractStringValidator::getLength() const +{ + return fLength; +} + +inline XMLSize_t AbstractStringValidator::getMaxLength() const +{ + return fMaxLength; +} + +inline XMLSize_t AbstractStringValidator::getMinLength() const +{ + return fMinLength; +} + +inline RefArrayVectorOf* AbstractStringValidator:: getEnumeration() const +{ + return fEnumeration; +} + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- + +inline void AbstractStringValidator::setLength(XMLSize_t newLength) +{ + fLength = newLength; +} + +inline void AbstractStringValidator::setMaxLength(XMLSize_t newMaxLength) +{ + fMaxLength = newMaxLength; +} + +inline void AbstractStringValidator::setMinLength(XMLSize_t newMinLength) +{ + fMinLength = newMinLength; +} + +inline void AbstractStringValidator::setEnumeration(RefArrayVectorOf* enums + , bool inherited) +{ + if (enums) + { + if ( !fEnumerationInherited && fEnumeration) + delete fEnumeration; + + fEnumeration = enums; + fEnumerationInherited = inherited; + setFacetsDefined(DatatypeValidator::FACET_ENUMERATION); + } +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file AbstractStringValidator.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp new file mode 100644 index 000000000000..b30b4c6e8df3 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp @@ -0,0 +1,180 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ANYSIMPLETYPEDATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ANYSIMPLETYPEDATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT AnySimpleTypeDatatypeValidator : public DatatypeValidator +{ +public: + // ----------------------------------------------------------------------- + // Public Constructor + // ----------------------------------------------------------------------- + /** @name Constructor */ + //@{ + + AnySimpleTypeDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + // ----------------------------------------------------------------------- + // Public Destructor + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + + virtual ~AnySimpleTypeDatatypeValidator(); + + //@} + + virtual const RefArrayVectorOf* getEnumString() const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Getter Functions */ + //@{ + + /** + * Returns whether the type is atomic or not + */ + virtual bool isAtomic() const; + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * Checks that the "content" string is valid datatype. + * If invalid, a Datatype validation exception is thrown. + * + * @param content A string containing the content to be validated + * + */ + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Checks whether a given type can be used as a substitute + * + * @param toCheck A datatype validator of the type to be used as a + * substitute + * + */ + + virtual bool isSubstitutableBy(const DatatypeValidator* const toCheck); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compares content in the Domain value vs. lexical value. + * + * @param value1 string to compare + * + * @param value2 string to compare + * + */ + virtual int compare(const XMLCh* const value1, const XMLCh* const value2 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(AnySimpleTypeDatatypeValidator) + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + AnySimpleTypeDatatypeValidator(const AnySimpleTypeDatatypeValidator&); + AnySimpleTypeDatatypeValidator& operator=(const AnySimpleTypeDatatypeValidator&); +}; + + +// --------------------------------------------------------------------------- +// DatatypeValidator: Getters +// --------------------------------------------------------------------------- +inline bool AnySimpleTypeDatatypeValidator::isAtomic() const { + + return false; +} + +// --------------------------------------------------------------------------- +// DatatypeValidators: Validation methods +// --------------------------------------------------------------------------- +inline bool +AnySimpleTypeDatatypeValidator::isSubstitutableBy(const DatatypeValidator* const) +{ + return true; +} + +inline void +AnySimpleTypeDatatypeValidator::validate(const XMLCh* const + , ValidationContext* const + , MemoryManager* const) +{ + return; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file AnySimpleTypeDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp new file mode 100644 index 000000000000..2b0b4b847929 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ANYURI_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ANYURI_DATATYPEVALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLBuffer; + +class VALIDATORS_EXPORT AnyURIDatatypeValidator : public AbstractStringValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + AnyURIDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + AnyURIDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~AnyURIDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(AnyURIDatatypeValidator) + +protected: + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + AnyURIDatatypeValidator(const AnyURIDatatypeValidator&); + AnyURIDatatypeValidator& operator=(const AnyURIDatatypeValidator&); + void encode(const XMLCh* const content, const XMLSize_t len, XMLBuffer& encoded, MemoryManager* const manager); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file AnyURIDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp new file mode 100644 index 000000000000..595084b75b17 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp @@ -0,0 +1,100 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BASE64BINARY_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_BASE64BINARY_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT Base64BinaryDatatypeValidator : public AbstractStringValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + Base64BinaryDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + Base64BinaryDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~Base64BinaryDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(Base64BinaryDatatypeValidator) + +protected: + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + + virtual XMLSize_t getLength(const XMLCh* const content + , MemoryManager* const manager) const; + + virtual void normalizeEnumeration(MemoryManager* const manager); + + virtual void normalizeContent(XMLCh* const, MemoryManager* const manager) const; + +private: + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + Base64BinaryDatatypeValidator(const Base64BinaryDatatypeValidator&); + Base64BinaryDatatypeValidator& operator=(const Base64BinaryDatatypeValidator&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file Base64BinaryDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/BooleanDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/BooleanDatatypeValidator.hpp new file mode 100644 index 000000000000..a20263b31a66 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/BooleanDatatypeValidator.hpp @@ -0,0 +1,193 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_BOOLEAN_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_BOOLEAN_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT BooleanDatatypeValidator : public DatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructor. */ + //@{ + + BooleanDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + BooleanDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~BooleanDatatypeValidator(); + + //@} + + virtual const RefArrayVectorOf* getEnumString() const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Getter Functions */ + //@{ + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(BooleanDatatypeValidator) + +private: + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); + + // ----------------------------------------------------------------------- + // Unimplemented methods. + // ----------------------------------------------------------------------- + BooleanDatatypeValidator(const BooleanDatatypeValidator&); + BooleanDatatypeValidator& operator=(const BooleanDatatypeValidator&); + +}; + +// --------------------------------------------------------------------------- +// Constructors and Destructor +// --------------------------------------------------------------------------- +inline BooleanDatatypeValidator::BooleanDatatypeValidator(MemoryManager* const manager) +:DatatypeValidator(0, 0, 0, DatatypeValidator::Boolean, manager) +{ + setFinite(true); +} + +inline BooleanDatatypeValidator::~BooleanDatatypeValidator() +{ +} + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + + +// ----------------------------------------------------------------------- +// Compare methods +// ----------------------------------------------------------------------- + +inline DatatypeValidator* BooleanDatatypeValidator::newInstance +( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager +) +{ + return (DatatypeValidator*) new (manager) BooleanDatatypeValidator(this, facets, enums, finalSet, manager); +} + +inline void BooleanDatatypeValidator::validate( const XMLCh* const content + , ValidationContext* const context + , MemoryManager* const manager) +{ + checkContent(content, context, false, manager); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file BooleanDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DatatypeValidator.hpp new file mode 100644 index 000000000000..185392299779 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DatatypeValidator.hpp @@ -0,0 +1,750 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DATATYPEVALIDATOR_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class MemoryManager; + +/** + * DataTypeValidator defines the interface that data type validators must + * obey. These validators can be supplied by the application writer and may + * be useful as standalone code as well as plugins to the validator + * architecture. + * + * Notice: + * The datatype validator will own the facets hashtable passed to it during + * construction, which means that the datatype validator will be responsible + * for the deletion. The facets hashtable will be created during parsing and + * passed to the appropriate datatype validator which in turn will delete it + * upon its destruction. + * + */ + + +class VALIDATORS_EXPORT DatatypeValidator : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constant data + // ----------------------------------------------------------------------- + //facets + enum { + FACET_LENGTH = 1, + FACET_MINLENGTH = 1<<1, + FACET_MAXLENGTH = 1<<2, + FACET_PATTERN = 1<<3, + FACET_ENUMERATION = 1<<4, + FACET_MAXINCLUSIVE = 1<<5, + FACET_MAXEXCLUSIVE = 1<<6, + FACET_MININCLUSIVE = 1<<7, + FACET_MINEXCLUSIVE = 1<<8, + FACET_TOTALDIGITS = 1<<9, + FACET_FRACTIONDIGITS = 1<<10, + FACET_ENCODING = 1<<11, + FACET_DURATION = 1<<12, + FACET_PERIOD = 1<<13, + FACET_WHITESPACE = 1<<14 + }; + + //2.4.2.6 whiteSpace - Datatypes + enum { + PRESERVE = 0, + REPLACE = 1, + COLLAPSE = 2 + }; + + enum ValidatorType { + String, + AnyURI, + QName, + Name, + NCName, + Boolean, + Float, + Double, + Decimal, + HexBinary, + Base64Binary, + Duration, + DateTime, + Date, + Time, + MonthDay, + YearMonth, + Year, + Month, + Day, + ID, + IDREF, + ENTITY, + NOTATION, + List, + Union, + AnySimpleType, + UnKnown + }; + + // ----------------------------------------------------------------------- + // Public Destructor + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + + virtual ~DatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Getter Functions */ + //@{ + + /** + * Returns the final values of the simpleType + */ + int getFinalSet() const; + + /** + * Returns the datatype facet if any is set. + */ + RefHashTableOf* getFacets() const; + + /** + * Returns default value (collapse) for whiteSpace facet. + * This function is overwritten in StringDatatypeValidator. + */ + short getWSFacet () const; + + /** + * Returns the base datatype validator if set. + */ + DatatypeValidator* getBaseValidator() const; + + /** + * Returns the 'class' type of datatype validator + */ + ValidatorType getType() const; + + /** + * Returns whether the type is atomic or not + * + * To be redefined in List/Union validators + */ + virtual bool isAtomic() const; + + /** + * Returns the datatype enumeration if any is set. + * Derived class shall provide their own copy. + */ + virtual const RefArrayVectorOf* getEnumString() const = 0; + + /** + * returns true if this type is anonymous + **/ + bool getAnonymous() const; + + /** + * sets this type to be anonymous + **/ + void setAnonymous(); + + /** + * Fundamental Facet: ordered + */ + XSSimpleTypeDefinition::ORDERING getOrdered() const; + + /** + * Fundamental Facet: cardinality. + */ + bool getFinite() const; + + /** + * Fundamental Facet: bounded. + */ + bool getBounded() const; + + /** + * Fundamental Facet: numeric. + */ + bool getNumeric() const; + + /** + * Canonical Representation + * + * Derivative datatype may overwrite this method once + * it has its own canonical representation other than + * the default one. + * + * @param rawData: data in raw string + * @param memMgr: memory manager + * @param toValiate: to validate the raw string or not + * + * @return: canonical representation of the data + * + * Note: + * + * 1. the return value is kept in memory allocated + * by the memory manager passed in or by dv's + * if no memory manager is provided. + * + * 2. client application is responsible for the + * proper deallocation of the memory allocated + * for the returned value. + * + * 3. In the case where the rawData is not valid + * with regards to the fundamental datatype, + * a null string is returned. + * + */ + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * Checks that the "content" string is valid datatype. + * If invalid, a Datatype validation exception is thrown. + * + * @param content A string containing the content to be validated + * + */ + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) = 0; + + /** + * Checks whether a given type can be used as a substitute + * + * @param toCheck A datatype validator of the type to be used as a + * substitute + * + * To be redefined in UnionDatatypeValidator + */ + + virtual bool isSubstitutableBy(const DatatypeValidator* const toCheck); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compares content in the Domain value vs. lexical value. + * + * e.g. If type is a float then 1.0 may be equivalent to 1 even though + * both are lexically different. + * + * @param value1 string to compare + * + * @param value2 string to compare + * + * We will provide a default behavior that should be redefined at the + * children level, if necessary (i.e. boolean case). + */ + virtual int compare(const XMLCh* const value1, const XMLCh* const value2 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ) = 0; + + /** + * Returns the uri,name of the type this validator is for + */ + const XMLCh* getTypeName() const; + + /** + * sets the uri,name that this validator is for - typeName is uri,name string. + * due to the internals of xerces this will set the uri to be the schema uri if + * there is no comma in typeName + */ + void setTypeName(const XMLCh* const typeName); + + /** + * sets the uri,name that this validator is for + */ + void setTypeName(const XMLCh* const name, const XMLCh* const uri); + + /** + * Returns the uri of the type this validator is for + */ + const XMLCh* getTypeUri() const; + + /** + * Returns the name of the type this validator is for + */ + const XMLCh* getTypeLocalName() const; + + /** + * Returns the plugged-in memory manager + */ + MemoryManager* getMemoryManager() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DatatypeValidator) + + /*** + * + * Serialize DatatypeValidator derivative + * + * Param + * serEng: serialize engine + * dv: DatatypeValidator derivative + * + * Return: + * + ***/ + static void storeDV(XSerializeEngine& serEng + , DatatypeValidator* const dv); + + /*** + * + * Create a DatatypeValidator derivative from the binary + * stream. + * + * Param + * serEng: serialize engine + * + * Return: + * DatatypeValidator derivative + * + ***/ + static DatatypeValidator* loadDV(XSerializeEngine& serEng); + +protected: + // ----------------------------------------------------------------------- + // Protected Constructors + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + /** + * + * @param baseValidator The base datatype validator for derived + * validators. Null if native validator. + * + * @param facets A hashtable of datatype facets (except enum). + * + * @param finalSet 'final' value of the simpleType + */ + + DatatypeValidator(DatatypeValidator* const baseValidator, + RefHashTableOf* const facets, + const int finalSet, + const ValidatorType type, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + + friend class DatatypeValidatorFactory; + friend class XSObjectFactory; + + /** + * facetDefined + */ + int getFacetsDefined() const; + void setFacetsDefined(int); + + /** + * fixed + */ + int getFixed() const; + void setFixed(int); + + + /** + * fPattern + */ + const XMLCh* getPattern() const; + void setPattern(const XMLCh* ); + + /** + * fRegex + */ + RegularExpression* getRegex() const; + void setRegex(RegularExpression* const); + + /** + * set fType + */ + void setType(ValidatorType); + + /** + * set fWhiteSpace + */ + void setWhiteSpace(short); + + /** + * get WSString + */ + const XMLCh* getWSstring(const short WSType) const; + + /** + * Fundamental Facet: ordered + */ + void setOrdered(XSSimpleTypeDefinition::ORDERING ordered); + + /** + * Fundamental Facet: cardinality. + */ + void setFinite(bool finite); + + /** + * Fundamental Facet: bounded. + */ + void setBounded(bool bounded); + + /** + * Fundamental Facet: numeric. + */ + void setNumeric(bool numeric); + +private: + // ----------------------------------------------------------------------- + // CleanUp methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DatatypeValidator(const DatatypeValidator&); + DatatypeValidator& operator=(const DatatypeValidator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fFinalSet + // stores "final" values of simpleTypes + // + // fBaseValidator + // This is a pointer to a base datatype validator. If value is null, + // it means we have a native datatype validator not a derived one. + // + // fFacets + // This is a hashtable of dataype facets. + // + // fType + // Stores the class type of datatype validator + // + // fFacetsDefined + // Stores the constaiting facets flag + // + // fPattern + // the pointer to the String of the pattern. The actual data is + // in the Facets. + // + // fRegex + // pointer to the RegularExpress object + // + // + // fFixed + // if {fixed} is true, then types for which this type is the + // {base type definition} cannot specify a value for a specific + // facet. + // + // fTypeName + // the uri,name of the type this validator will validate + // + // fTypeLocalName + // the name of the type this validator will validate + // + // fTypeUri + // the uri of the type this validator will validate + // fAnonymous + // true if this type is anonynous + // + // ----------------------------------------------------------------------- + bool fAnonymous; + bool fFinite; + bool fBounded; + bool fNumeric; + + short fWhiteSpace; + int fFinalSet; + int fFacetsDefined; + int fFixed; + + ValidatorType fType; + XSSimpleTypeDefinition::ORDERING fOrdered; + + DatatypeValidator* fBaseValidator; + RefHashTableOf* fFacets; + XMLCh* fPattern; + RegularExpression* fRegex; + XMLCh* fTypeName; + const XMLCh* fTypeLocalName; + const XMLCh* fTypeUri; + +protected: + // ----------------------------------------------------------------------- + // Protected data members + // + // fMemoryManager + // Pluggable memory manager for dynamic allocation/deallocation. + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + +}; + + +// --------------------------------------------------------------------------- +// DatatypeValidator: Getters +// --------------------------------------------------------------------------- +inline int DatatypeValidator::getFinalSet() const { + + return fFinalSet; +} + +inline RefHashTableOf* DatatypeValidator::getFacets() const { + + return fFacets; +} + +inline DatatypeValidator* DatatypeValidator::getBaseValidator() const { + + return fBaseValidator; +} + +inline short DatatypeValidator::getWSFacet() const { + + return fWhiteSpace; +} + +inline DatatypeValidator::ValidatorType DatatypeValidator::getType() const +{ + return fType; +} + +inline int DatatypeValidator::getFacetsDefined() const +{ + return fFacetsDefined; +} + +inline int DatatypeValidator::getFixed() const +{ + return fFixed; +} + +inline const XMLCh* DatatypeValidator::getPattern() const +{ + return fPattern; +} + +inline RegularExpression* DatatypeValidator::getRegex() const +{ + return fRegex; +} + +inline const XMLCh* DatatypeValidator::getTypeName() const +{ + return fTypeName; +} + +inline bool DatatypeValidator::getAnonymous() const +{ + return fAnonymous; +} + +inline const XMLCh* DatatypeValidator::getTypeLocalName() const +{ + return fTypeLocalName; +} + +inline const XMLCh* DatatypeValidator::getTypeUri() const +{ + return fTypeUri; +} + +inline MemoryManager* DatatypeValidator::getMemoryManager() const +{ + return fMemoryManager; +} + +inline XSSimpleTypeDefinition::ORDERING DatatypeValidator::getOrdered() const +{ + return fOrdered; +} + +inline bool DatatypeValidator::getFinite() const +{ + return fFinite; +} + +inline bool DatatypeValidator::getBounded() const +{ + return fBounded; +} + +inline bool DatatypeValidator::getNumeric() const +{ + return fNumeric; +} + +// --------------------------------------------------------------------------- +// DatatypeValidator: Setters +// --------------------------------------------------------------------------- +inline void DatatypeValidator::setType(ValidatorType theType) +{ + fType = theType; +} + +inline void DatatypeValidator::setWhiteSpace(short newValue) +{ + fWhiteSpace = newValue; +} + +inline void DatatypeValidator::setFacetsDefined(int facets) +{ + fFacetsDefined |= facets; +} + +inline void DatatypeValidator::setFixed(int fixed) +{ + fFixed |= fixed; +} + +inline void DatatypeValidator::setPattern(const XMLCh* pattern) +{ + if (fPattern) { + fMemoryManager->deallocate(fPattern);//delete [] fPattern; + delete fRegex; + } + fPattern = XMLString::replicate(pattern, fMemoryManager); + fRegex = new (fMemoryManager) RegularExpression(fPattern, SchemaSymbols::fgRegEx_XOption, fMemoryManager); +} + +inline void DatatypeValidator::setRegex(RegularExpression* const regex) +{ + fRegex = regex; +} + +inline bool DatatypeValidator::isAtomic() const { + + return true; +} + +inline void DatatypeValidator::setAnonymous() { + fAnonymous = true; +} + +inline void DatatypeValidator::setOrdered(XSSimpleTypeDefinition::ORDERING ordered) +{ + fOrdered = ordered; +} + +inline void DatatypeValidator::setFinite(bool finite) +{ + fFinite = finite; +} + +inline void DatatypeValidator::setBounded(bool bounded) +{ + fBounded = bounded; +} + +inline void DatatypeValidator::setNumeric(bool numeric) +{ + fNumeric = numeric; +} + +// --------------------------------------------------------------------------- +// DatatypeValidators: Compare methods +// --------------------------------------------------------------------------- +inline int DatatypeValidator::compare(const XMLCh* const lValue, + const XMLCh* const rValue + , MemoryManager* const) +{ + return XMLString::compareString(lValue, rValue); +} + +// --------------------------------------------------------------------------- +// DatatypeValidators: Validation methods +// --------------------------------------------------------------------------- +inline bool +DatatypeValidator::isSubstitutableBy(const DatatypeValidator* const toCheck) +{ + const DatatypeValidator* dv = toCheck; + + while (dv != 0) { + + if (dv == this) { + return true; + } + + dv = dv->getBaseValidator(); + } + + return false; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DatatypeValidatorFactory.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DatatypeValidatorFactory.hpp new file mode 100644 index 000000000000..172a2f194c2b --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DatatypeValidatorFactory.hpp @@ -0,0 +1,285 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DATATYPEVALIDATORFACTORY_HPP) +#define XERCESC_INCLUDE_GUARD_DATATYPEVALIDATORFACTORY_HPP + +/** + * This class implements a factory of Datatype Validators. Internally the + * DatatypeValidators are kept in a registry. + * There is one instance of DatatypeValidatorFactory per Parser. + * There is one datatype Registry per instance of DatatypeValidatorFactory, + * such registry is first allocated with the number DatatypeValidators needed. + * e.g. + * If Parser finds an XML document with a DTD, a registry of DTD validators (only + * 9 validators) get initialized in the registry. + * The initialization process consist of instantiating the Datatype and + * facets and registering the Datatype into registry table. + * This implementation uses a Hashtable as a registry. The datatype validators created + * by the factory will be deleted by the registry. + * + * As the Parser parses an instance document it knows if validation needs + * to be checked. If no validation is necessary we should not instantiate a + * DatatypeValidatorFactory. + * If validation is needed, we need to instantiate a DatatypeValidatorFactory. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// DatatypeValidatorFactory: Local declaration +// --------------------------------------------------------------------------- +typedef RefHashTableOf KVStringPairHashTable; +typedef RefHashTableOf DVHashTable; +typedef RefArrayVectorOf XMLChRefVector; + + +class VALIDATORS_EXPORT DatatypeValidatorFactory : public XSerializable, public XMemory +{ +public: + + // ----------------------------------------------------------------------- + // Public Constructors and Destructor + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + + DatatypeValidatorFactory + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** @name Destructor. */ + //@{ + + ~DatatypeValidatorFactory(); + + //@} + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Getter Functions */ + //@{ + + /** + * Returns the datatype validator + * + * @param dvType Datatype validator name/type + */ + DatatypeValidator* getDatatypeValidator(const XMLCh* const dvType) const; + + /** + * Returns the user defined registry of types + **/ + DVHashTable* getUserDefinedRegistry() const; + + + /** + * Returns the built in registry of types + **/ + static DVHashTable* getBuiltInRegistry(); + + //@} + + private: + /** + * Initializes registry with primitive and derived Simple types. + * + * This method does not clear the registry to clear the registry you + * have to call resetRegistry. + * + * The net effect of this method is to start with the smallest set of + * datatypes needed by the validator. + * + * If we start with Schema's then we initialize to full set of + * validators. + */ + void expandRegistryToFullSchemaSet(); + + public: + // ----------------------------------------------------------------------- + // Canonical Representation Group + // ----------------------------------------------------------------------- + void initCanRepRegistory(); + + static XMLCanRepGroup::CanRepGroup getCanRepGroup(const DatatypeValidator* const); + + static DatatypeValidator* getBuiltInBaseValidator(const DatatypeValidator* const); + + // ----------------------------------------------------------------------- + // Validator Factory methods + // ----------------------------------------------------------------------- + /** @name Validator Factory Functions */ + //@{ + + /** + * Creates a new datatype validator of type baseValidator's class and + * adds it to the registry + * + * @param typeName Datatype validator name + * + * @param baseValidator Base datatype validator + * + * @param facets datatype facets if any + * + * @param enums vector of values for enum facet + * + * @param isDerivedByList Indicates whether the datatype is derived by + * list or not + * + * @param finalSet 'final' values of the simpleType + * + * @param isUserDefined Indicates whether the datatype is built-in or + * user defined + */ + DatatypeValidator* createDatatypeValidator + ( + const XMLCh* const typeName + , DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const bool isDerivedByList + , const int finalSet = 0 + , const bool isUserDefined = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Creates a new datatype validator of type UnionDatatypeValidator and + * adds it to the registry + * + * @param typeName Datatype validator name + * + * @param validators Vector of datatype validators + * + * @param finalSet 'final' values of the simpleType + * + * @param isUserDefined Indicates whether the datatype is built-in or + * user defined + */ + DatatypeValidator* createDatatypeValidator + ( + const XMLCh* const typeName + , RefVectorOf* const validators + , const int finalSet + , const bool isUserDefined = true + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Reset datatype validator registry + */ + void resetRegistry(); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DatatypeValidatorFactory) + +private: + + // ----------------------------------------------------------------------- + // CleanUp methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DatatypeValidatorFactory(const DatatypeValidatorFactory&); + DatatypeValidatorFactory& operator=(const DatatypeValidatorFactory&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fUserDefinedRegistry + // This is a hashtable of user defined dataype validators. + // + // fBuiltInRegistry + // This is a hashtable of built-in primitive datatype validators. + // ----------------------------------------------------------------------- + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf* fUserDefinedRegistry; + static XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf* fBuiltInRegistry; + static XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf* fCanRepRegistry; + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const fMemoryManager; + + friend class XPath2ContextImpl; + friend class XMLInitializer; +}; + +inline DatatypeValidator* +DatatypeValidatorFactory::getDatatypeValidator(const XMLCh* const dvType) const +{ + if (dvType) { + if (fBuiltInRegistry && fBuiltInRegistry->containsKey(dvType)) { + return fBuiltInRegistry->get(dvType); + } + + if (fUserDefinedRegistry && fUserDefinedRegistry->containsKey(dvType)) { + return fUserDefinedRegistry->get(dvType); + + } + } + return 0; +} + +inline DVHashTable* +DatatypeValidatorFactory::getUserDefinedRegistry() const { + return fUserDefinedRegistry; +} + +inline DVHashTable* +DatatypeValidatorFactory::getBuiltInRegistry() { + return fBuiltInRegistry; +} +// --------------------------------------------------------------------------- +// DatatypeValidator: CleanUp methods +// --------------------------------------------------------------------------- +inline void DatatypeValidatorFactory::cleanUp() { + + if (fUserDefinedRegistry) + { + delete fUserDefinedRegistry; + fUserDefinedRegistry = 0; + } +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DatatypeValidatorFactory.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DateDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DateDatatypeValidator.hpp new file mode 100644 index 000000000000..4c873a144bff --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DateDatatypeValidator.hpp @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DATE_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DATE_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT DateDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + DateDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DateDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~DateDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DateDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DateDatatypeValidator(const DateDatatypeValidator&); + DateDatatypeValidator& operator=(const DateDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DateDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp new file mode 100644 index 000000000000..e5a65468c22e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp @@ -0,0 +1,102 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DATETIME_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DATETIME_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT DateTimeDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + DateTimeDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DateTimeDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~DateTimeDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DateTimeDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DateTimeDatatypeValidator(const DateTimeDatatypeValidator&); + DateTimeDatatypeValidator& operator=(const DateTimeDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DateTimeDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DateTimeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DateTimeValidator.hpp new file mode 100644 index 000000000000..efc936f76235 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DateTimeValidator.hpp @@ -0,0 +1,126 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DATETIME_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DATETIME_VALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT DateTimeValidator : public AbstractNumericFacetValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public dtor + // ----------------------------------------------------------------------- + /** @name Constructor. */ + //@{ + + virtual ~DateTimeValidator(); + + //@} + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual int compare(const XMLCh* const value1 + , const XMLCh* const value2 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DateTimeValidator) + +protected: + + // ----------------------------------------------------------------------- + // ctor used by derived class + // ----------------------------------------------------------------------- + DateTimeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // + // Abstract interface + // + + virtual int compareValues(const XMLNumber* const lValue + , const XMLNumber* const rValue); + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); + + virtual void setMaxInclusive(const XMLCh* const); + + virtual void setMaxExclusive(const XMLCh* const); + + virtual void setMinInclusive(const XMLCh* const); + + virtual void setMinExclusive(const XMLCh* const); + + virtual void setEnumeration(MemoryManager* const manager); + +protected: + + // ----------------------------------------------------------------------- + // helper interface: to be implemented/overwritten by derived class + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager) = 0; + virtual void parse(XMLDateTime* const) = 0; + + // to be overwritten by duration + virtual int compareDates(const XMLDateTime* const lValue + , const XMLDateTime* const rValue + , bool strict); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DateTimeValidator(const DateTimeValidator&); + DateTimeValidator& operator=(const DateTimeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DateTimeValidator.hpp + */ + + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DayDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DayDatatypeValidator.hpp new file mode 100644 index 000000000000..f1cba5f8d836 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DayDatatypeValidator.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DAY_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DAY_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT DayDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor*/ + //@{ + + DayDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DayDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~DayDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DayDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DayDatatypeValidator(const DayDatatypeValidator&); + DayDatatypeValidator& operator=(const DayDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DayDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DecimalDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DecimalDatatypeValidator.hpp new file mode 100644 index 000000000000..cc8e89334a3c --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DecimalDatatypeValidator.hpp @@ -0,0 +1,218 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DECIMAL_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DECIMAL_DATATYPEVALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLBigDecimal; + +class VALIDATORS_EXPORT DecimalDatatypeValidator : public AbstractNumericValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + DecimalDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DecimalDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~DecimalDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + virtual int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DecimalDatatypeValidator) + +protected: + +// ----------------------------------------------------------------------- +// ctor provided to be used by derived classes +// ----------------------------------------------------------------------- + DecimalDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + +// ----------------------------------------------------------------------- +// Abstract interface from AbstractNumericFacetValidator +// ----------------------------------------------------------------------- + + virtual void assignAdditionalFacet(const XMLCh* const key + , const XMLCh* const value + , MemoryManager* const manager); + + virtual void inheritAdditionalFacet(); + + virtual void checkAdditionalFacetConstraints(MemoryManager* const manager) const; + + virtual void checkAdditionalFacetConstraintsBase(MemoryManager* const manager) const; + + virtual int compareValues(const XMLNumber* const lValue + , const XMLNumber* const rValue); + + virtual void setMaxInclusive(const XMLCh* const); + + virtual void setMaxExclusive(const XMLCh* const); + + virtual void setMinInclusive(const XMLCh* const); + + virtual void setMinExclusive(const XMLCh* const); + + virtual void setEnumeration(MemoryManager* const manager); + +// ----------------------------------------------------------------------- +// Abstract interface from AbstractNumericValidator +// ----------------------------------------------------------------------- + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); +public: + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + + inline unsigned int getTotalDigits() const; + + inline unsigned int getFractionDigits() const; + +private: +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- + + inline void setTotalDigits(unsigned int); + + inline void setFractionDigits(unsigned int); + + // ----------------------------------------------------------------------- + // Private data members + // + // ----------------------------------------------------------------------- + unsigned int fTotalDigits; + unsigned int fFractionDigits; + + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DecimalDatatypeValidator(const DecimalDatatypeValidator&); + DecimalDatatypeValidator& operator=(const DecimalDatatypeValidator&); +}; + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + +inline unsigned int DecimalDatatypeValidator::getTotalDigits() const +{ + return fTotalDigits; +} + +inline unsigned int DecimalDatatypeValidator::getFractionDigits() const +{ + return fFractionDigits; +} + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- + +inline void DecimalDatatypeValidator::setTotalDigits(unsigned int newTotalDigits) +{ + fTotalDigits = newTotalDigits; +} + +inline void DecimalDatatypeValidator::setFractionDigits(unsigned int newFractionDigits) +{ + fFractionDigits = newFractionDigits; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DecimalDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DoubleDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DoubleDatatypeValidator.hpp new file mode 100644 index 000000000000..ef7e0002cd13 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DoubleDatatypeValidator.hpp @@ -0,0 +1,146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DOUBLE_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DOUBLE_DATATYPEVALIDATOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT DoubleDatatypeValidator : public AbstractNumericValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + DoubleDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DoubleDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~DoubleDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + virtual int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DoubleDatatypeValidator) + +protected: + +// ----------------------------------------------------------------------- +// ctor provided to be used by derived classes +// ----------------------------------------------------------------------- + DoubleDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + +// ----------------------------------------------------------------------- +// Abstract interface from AbstractNumericFacetValidator +// ----------------------------------------------------------------------- + + virtual int compareValues(const XMLNumber* const lValue + , const XMLNumber* const rValue); + + virtual void setMaxInclusive(const XMLCh* const); + + virtual void setMaxExclusive(const XMLCh* const); + + virtual void setMinInclusive(const XMLCh* const); + + virtual void setMinExclusive(const XMLCh* const); + + virtual void setEnumeration(MemoryManager* const manager); + +// ----------------------------------------------------------------------- +// Abstract interface from AbstractNumericValidator +// ----------------------------------------------------------------------- + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DoubleDatatypeValidator(const DoubleDatatypeValidator &); + DoubleDatatypeValidator& operator = (const DoubleDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DoubleDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DurationDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DurationDatatypeValidator.hpp new file mode 100644 index 000000000000..4e2b1ca7148f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/DurationDatatypeValidator.hpp @@ -0,0 +1,98 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_DURATION_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_DURATION_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT DurationDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor. */ + //@{ + + DurationDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + DurationDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~DurationDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(DurationDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + virtual int compareDates(const XMLDateTime* const + , const XMLDateTime* const + , bool ); +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + DurationDatatypeValidator(const DurationDatatypeValidator &); + DurationDatatypeValidator& operator = (const DurationDatatypeValidator&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file DurationDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp new file mode 100644 index 000000000000..1ee29a85e36d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp @@ -0,0 +1,144 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ENTITY_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ENTITY_DATATYPEVALIDATOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT ENTITYDatatypeValidator : public StringDatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor. */ + //@{ + + ENTITYDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ENTITYDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~ENTITYDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + virtual int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(ENTITYDatatypeValidator) + +protected: + + // + // ctor provided to be used by derived classes + // + ENTITYDatatypeValidator(DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type); + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ENTITYDatatypeValidator(const ENTITYDatatypeValidator&); + ENTITYDatatypeValidator& operator = (const ENTITYDatatypeValidator&); + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ENTITYDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/FloatDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/FloatDatatypeValidator.hpp new file mode 100644 index 000000000000..c10a50f9e7b4 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/FloatDatatypeValidator.hpp @@ -0,0 +1,145 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_FLOAT_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_FLOAT_DATATYPEVALIDATOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT FloatDatatypeValidator : public AbstractNumericValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + FloatDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + FloatDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~FloatDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + virtual int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(FloatDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // ctor provided to be used by derived classes + // ----------------------------------------------------------------------- + FloatDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // ----------------------------------------------------------------------- + // Abstract interface from AbstractNumericFacetValidator + // ----------------------------------------------------------------------- + + virtual int compareValues(const XMLNumber* const lValue + , const XMLNumber* const rValue); + + virtual void setMaxInclusive(const XMLCh* const); + + virtual void setMaxExclusive(const XMLCh* const); + + virtual void setMinInclusive(const XMLCh* const); + + virtual void setMinExclusive(const XMLCh* const); + + virtual void setEnumeration(MemoryManager* const manager); + +// ----------------------------------------------------------------------- +// Abstract interface from AbstractNumericValidator +// ----------------------------------------------------------------------- + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + FloatDatatypeValidator(const FloatDatatypeValidator&); + FloatDatatypeValidator& operator = (const FloatDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file FloatDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp new file mode 100644 index 000000000000..b2815026d7ea --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_HEXBINARY_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_HEXBINARY_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT HexBinaryDatatypeValidator : public AbstractStringValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + HexBinaryDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + HexBinaryDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~HexBinaryDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(HexBinaryDatatypeValidator) + +protected: + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + + virtual XMLSize_t getLength(const XMLCh* const content + , MemoryManager* const manager) const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + HexBinaryDatatypeValidator(const HexBinaryDatatypeValidator&); + HexBinaryDatatypeValidator& operator=(const HexBinaryDatatypeValidator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // Nil. + // ----------------------------------------------------------------------- +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file HexBinaryDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/IDDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/IDDatatypeValidator.hpp new file mode 100644 index 000000000000..9011e6411c0a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/IDDatatypeValidator.hpp @@ -0,0 +1,132 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_ID_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_ID_DATATYPEVALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT IDDatatypeValidator : public StringDatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + IDDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + IDDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~IDDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IDDatatypeValidator) + +protected: + + // + // ctor provided to be used by derived classes + // + IDDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IDDatatypeValidator(const IDDatatypeValidator&); + IDDatatypeValidator& operator=(const IDDatatypeValidator&); + // ----------------------------------------------------------------------- + // Private data members + // + // + // ----------------------------------------------------------------------- +}; + +XERCES_CPP_NAMESPACE_END + +#endif +/** + * End of file IDDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/IDREFDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/IDREFDatatypeValidator.hpp new file mode 100644 index 000000000000..cb7c1aa9c443 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/IDREFDatatypeValidator.hpp @@ -0,0 +1,135 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IDREF_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_IDREF_DATATYPEVALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT IDREFDatatypeValidator : public StringDatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + IDREFDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + IDREFDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~IDREFDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IDREFDatatypeValidator) + +protected: + + // + // ctor provided to be used by derived classes + // + IDREFDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IDREFDatatypeValidator(const IDREFDatatypeValidator&); + IDREFDatatypeValidator& operator=(const IDREFDatatypeValidator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // + // ----------------------------------------------------------------------- + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IDREFDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/InvalidDatatypeFacetException.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/InvalidDatatypeFacetException.hpp new file mode 100644 index 000000000000..4670d807ac7c --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/InvalidDatatypeFacetException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_INVALIDDATATYPEFACETEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_INVALIDDATATYPEFACETEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(InvalidDatatypeFacetException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/InvalidDatatypeValueException.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/InvalidDatatypeValueException.hpp new file mode 100644 index 000000000000..368da890f303 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/InvalidDatatypeValueException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_INVALIDDATATYPEVALUEEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_INVALIDDATATYPEVALUEEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(InvalidDatatypeValueException, XMLUTIL_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/ListDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/ListDatatypeValidator.hpp new file mode 100644 index 000000000000..9d696cc00140 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/ListDatatypeValidator.hpp @@ -0,0 +1,226 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_LIST_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_LIST_DATATYPEVALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT ListDatatypeValidator : public AbstractStringValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + ListDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ListDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~ListDatatypeValidator(); + + //@} + + /** @name Getter Functions */ + //@{ + /** + * Returns whether the type is atomic or not + */ + virtual bool isAtomic() const; + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + DatatypeValidator* getItemTypeDTV() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(ListDatatypeValidator) + +protected: + + // + // ctor provided to be used by derived classes: No + // + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + + virtual XMLSize_t getLength(const XMLCh* const content + , MemoryManager* const manager) const; + + // + // Overwrite AbstractStringValidator's + // + virtual void inspectFacetBase(MemoryManager* const manager); + + virtual void inheritFacet(); + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); + +private: + + void checkContent( BaseRefVectorOf* tokenVector + , const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager + ); + + bool valueSpaceCheck(BaseRefVectorOf* tokenVector + , const XMLCh* const enumStr + , MemoryManager* const manager) const; + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- + + inline const XMLCh* getContent() const; + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- + + inline void setContent(const XMLCh* const content); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ListDatatypeValidator(const ListDatatypeValidator&); + ListDatatypeValidator& operator=(const ListDatatypeValidator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fContent + // temporary var referencing the content to be validated, + // for error reporting purpose. + // + // ----------------------------------------------------------------------- + const XMLCh* fContent; +}; + +// ----------------------------------------------------------------------- +// Getter methods +// ----------------------------------------------------------------------- +inline const XMLCh* ListDatatypeValidator::getContent() const +{ + return fContent; +} + +inline bool ListDatatypeValidator::isAtomic() const +{ + return false; +} + +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- +inline void ListDatatypeValidator::setContent(const XMLCh* const content) +{ + fContent = content; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ListDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/MonthDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/MonthDatatypeValidator.hpp new file mode 100644 index 000000000000..32d0ff530a01 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/MonthDatatypeValidator.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_MONTH_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_MONTH_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT MonthDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + MonthDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + MonthDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~MonthDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(MonthDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + MonthDatatypeValidator(const MonthDatatypeValidator&); + MonthDatatypeValidator& operator=(const MonthDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file MonthDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp new file mode 100644 index 000000000000..76a30a4b53f7 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_MONTHDAY_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_MONTHDAY_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT MonthDayDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + MonthDayDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + MonthDayDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~MonthDayDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(MonthDayDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + MonthDayDatatypeValidator(const MonthDayDatatypeValidator&); + MonthDayDatatypeValidator& operator=(const MonthDayDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file MonthDayDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/NCNameDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/NCNameDatatypeValidator.hpp new file mode 100644 index 000000000000..3b89cfc962d8 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/NCNameDatatypeValidator.hpp @@ -0,0 +1,152 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NCNAME_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_NCNAME_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT NCNameDatatypeValidator : public StringDatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + NCNameDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + NCNameDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~NCNameDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + virtual int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(NCNameDatatypeValidator) + +protected: + + // + // ctor provided to be used by derived classes + // + NCNameDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + NCNameDatatypeValidator(const NCNameDatatypeValidator&); + NCNameDatatypeValidator& operator=(const NCNameDatatypeValidator&); + // ----------------------------------------------------------------------- + // Private data members + // + // + // ----------------------------------------------------------------------- + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file NCNameDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp new file mode 100644 index 000000000000..9d0e7096b601 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NOTATION_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_NOTATION_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT NOTATIONDatatypeValidator : public AbstractStringValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + NOTATIONDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + NOTATIONDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual ~NOTATIONDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(NOTATIONDatatypeValidator) + +protected: + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + NOTATIONDatatypeValidator(const NOTATIONDatatypeValidator&); + NOTATIONDatatypeValidator& operator=(const NOTATIONDatatypeValidator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // Nil + // ----------------------------------------------------------------------- +}; + +XERCES_CPP_NAMESPACE_END + +#endif +/** + * End of file NOTATIONDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/NameDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/NameDatatypeValidator.hpp new file mode 100644 index 000000000000..b9d91c1cef91 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/NameDatatypeValidator.hpp @@ -0,0 +1,151 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NAME_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_NAME_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT NameDatatypeValidator : public StringDatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + NameDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + NameDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~NameDatatypeValidator(); + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + virtual int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(NameDatatypeValidator) + +protected: + + // + // ctor provided to be used by derived classes + // + NameDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + NameDatatypeValidator(const NameDatatypeValidator&); + NameDatatypeValidator& operator=(const NameDatatypeValidator&); + // ----------------------------------------------------------------------- + // Private data members + // + // + // ----------------------------------------------------------------------- + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file NameDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/QNameDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/QNameDatatypeValidator.hpp new file mode 100644 index 000000000000..830e2d9e97ce --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/QNameDatatypeValidator.hpp @@ -0,0 +1,106 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_QNAME_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_QNAME_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT QNameDatatypeValidator : public AbstractStringValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + QNameDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + QNameDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~QNameDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(QNameDatatypeValidator) + +protected: + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); + + virtual void inspectFacetBase(MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + QNameDatatypeValidator(const QNameDatatypeValidator&); + QNameDatatypeValidator& operator=(const QNameDatatypeValidator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // Nil + // ----------------------------------------------------------------------- + +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file QNameDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/StringDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/StringDatatypeValidator.hpp new file mode 100644 index 000000000000..26feecce9e03 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/StringDatatypeValidator.hpp @@ -0,0 +1,114 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_STRING_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_STRING_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT StringDatatypeValidator : public AbstractStringValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + StringDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + StringDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~StringDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(StringDatatypeValidator) + +protected: + + // + // ctor provided to be used by derived classes + // + StringDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , const int finalSet + , const ValidatorType type + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual void assignAdditionalFacet(const XMLCh* const key + , const XMLCh* const value + , MemoryManager* const manager); + + virtual void inheritAdditionalFacet(); + + virtual void checkAdditionalFacetConstraints(MemoryManager* const manager) const; + + virtual void checkAdditionalFacet(const XMLCh* const content + , MemoryManager* const manager) const; + + virtual void checkValueSpace(const XMLCh* const content + , MemoryManager* const manager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + StringDatatypeValidator(const StringDatatypeValidator&); + StringDatatypeValidator& operator=(const StringDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file StringDatatypeValidator.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/TimeDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/TimeDatatypeValidator.hpp new file mode 100644 index 000000000000..ab3df71ca0a8 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/TimeDatatypeValidator.hpp @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TIME_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_TIME_DATATYPE_VALIDATOR_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT TimeDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + TimeDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + TimeDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~TimeDatatypeValidator(); + + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(TimeDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + TimeDatatypeValidator(const TimeDatatypeValidator&); + TimeDatatypeValidator& operator=(const TimeDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file TimeDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/UnionDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/UnionDatatypeValidator.hpp new file mode 100644 index 000000000000..d7b847128a3d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/UnionDatatypeValidator.hpp @@ -0,0 +1,320 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_UNION_DATATYPEVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_UNION_DATATYPEVALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT UnionDatatypeValidator : public DatatypeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor. */ + //@{ + + UnionDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // + // constructor for native Union datatype validator + // + // + // + // + UnionDatatypeValidator + ( + RefVectorOf* const memberTypeValidators + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // + // constructor for derived Union datatype validator + // + // + // + // + // + // + // + UnionDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , RefVectorOf* const memberTypeValidators = 0 + , const bool memberTypesInherited = true + ); + + virtual ~UnionDatatypeValidator(); + + //@} + + virtual const RefArrayVectorOf* getEnumString() const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + /** @name Getter Functions */ + //@{ + /** + * Returns whether the type is atomic or not + */ + virtual bool isAtomic() const; + + virtual const XMLCh* getCanonicalRepresentation + ( + const XMLCh* const rawData + , MemoryManager* const memMgr = 0 + , bool toValidate = false + ) const; + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * validate that a string matches the boolean datatype + * @param content A string containing the content to be validated + * + * @exception throws InvalidDatatypeException if the content is + * is not valid. + */ + + virtual void validate + ( + const XMLCh* const content + , ValidationContext* const context = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /** + * Checks whether a given type can be used as a substitute + * + * @param toCheck A datatype validator of the type to be used as a + * substitute + * + * To be redefined in UnionDatatypeValidator + */ + + virtual bool isSubstitutableBy(const DatatypeValidator* const toCheck); + + //@} + + // ----------------------------------------------------------------------- + // Compare methods + // ----------------------------------------------------------------------- + /** @name Compare Function */ + //@{ + + /** + * Compare two boolean data types + * + * @param content1 + * @param content2 + * @return + */ + int compare(const XMLCh* const, const XMLCh* const + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(UnionDatatypeValidator) + + + RefVectorOf* getMemberTypeValidators() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + UnionDatatypeValidator(const UnionDatatypeValidator&); + UnionDatatypeValidator& operator=(const UnionDatatypeValidator&); + + virtual void checkContent(const XMLCh* const content + , ValidationContext* const context + , bool asBase + , MemoryManager* const manager); + + void init(DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , MemoryManager* const manager); + + void cleanUp(); + + RefArrayVectorOf* getEnumeration() const; + + void setEnumeration(RefArrayVectorOf*, bool); + + + // ----------------------------------------------------------------------- + // Private data members + // + // fEnumeration + // we own it (or not, depending on state of fEnumerationInherited). + // + // fMemberTypeValidators + // we own it (or not, depending on the state of fMemberTypesInherited). + // + // ----------------------------------------------------------------------- + + bool fEnumerationInherited; + bool fMemberTypesInherited; + RefArrayVectorOf* fEnumeration; + RefVectorOf* fMemberTypeValidators; +}; + +inline DatatypeValidator* UnionDatatypeValidator::newInstance +( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager +) +{ + return (DatatypeValidator*) new (manager) UnionDatatypeValidator(this, facets, enums, finalSet, manager, fMemberTypeValidators, true); +} + +inline void UnionDatatypeValidator::validate( const XMLCh* const content + , ValidationContext* const context + , MemoryManager* const manager) +{ + checkContent(content, context, false, manager); +} + +inline void UnionDatatypeValidator::cleanUp() +{ + //~RefVectorOf will delete all adopted elements + if ( !fEnumerationInherited && fEnumeration) + delete fEnumeration; + + if (!fMemberTypesInherited && fMemberTypeValidators) + delete fMemberTypeValidators; + +} + +inline RefArrayVectorOf* UnionDatatypeValidator:: getEnumeration() const +{ + return fEnumeration; +} + +inline void UnionDatatypeValidator::setEnumeration(RefArrayVectorOf* enums + , bool inherited) +{ + if (enums) + { + if ( !fEnumerationInherited && fEnumeration) + delete fEnumeration; + + fEnumeration = enums; + fEnumerationInherited = inherited; + setFacetsDefined(DatatypeValidator::FACET_ENUMERATION); + } +} + +// +// get the native UnionDTV's fMemberTypeValidators +// +inline +RefVectorOf* UnionDatatypeValidator::getMemberTypeValidators() const +{ + return this->fMemberTypeValidators; +} + +inline bool UnionDatatypeValidator::isAtomic() const { + + + + if (!fMemberTypeValidators) { + return false; + } + + XMLSize_t memberSize = fMemberTypeValidators->size(); + + for (XMLSize_t i=0; i < memberSize; i++) { + if (!fMemberTypeValidators->elementAt(i)->isAtomic()) { + return false; + } + } + + return true; +} + +inline bool UnionDatatypeValidator::isSubstitutableBy(const DatatypeValidator* const toCheck) { + + if (toCheck == this) { + return true; + } + + if (fMemberTypeValidators) { + XMLSize_t memberSize = fMemberTypeValidators->size(); + + for (XMLSize_t i=0; i < memberSize; i++) { + if ((fMemberTypeValidators->elementAt(i)->getType() == DatatypeValidator::Union) && + (fMemberTypeValidators->elementAt(i) == toCheck)) + return false; + if (fMemberTypeValidators->elementAt(i)->isSubstitutableBy(toCheck)) { + return true; + } + } + } + return false; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file UnionDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/XMLCanRepGroup.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/XMLCanRepGroup.hpp new file mode 100644 index 000000000000..66c56bd9ed23 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/XMLCanRepGroup.hpp @@ -0,0 +1,75 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLCANREPGROUP_HPP) +#define XERCESC_INCLUDE_GUARD_XMLCANREPGROUP_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT XMLCanRepGroup : public XMemory +{ +public: + + enum CanRepGroup { + Boolean, + DoubleFloat, + DateTime, + Time, + Decimal, + Decimal_Derived_signed, + Decimal_Derived_unsigned, + Decimal_Derived_npi, + String + }; + + ~XMLCanRepGroup(); + + XMLCanRepGroup(CanRepGroup val); + + inline CanRepGroup getGroup() const; + +private: + + CanRepGroup fData; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XMLCanRepGroup(const XMLCanRepGroup&); + XMLCanRepGroup& operator=(const XMLCanRepGroup&); + +}; + +inline XMLCanRepGroup::CanRepGroup XMLCanRepGroup::getGroup() const +{ + return fData; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XMLCanRepGroup.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/YearDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/YearDatatypeValidator.hpp new file mode 100644 index 000000000000..fd5edce9df84 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/YearDatatypeValidator.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_YEAR_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_YEAR_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT YearDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + YearDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + YearDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~YearDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(YearDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + YearDatatypeValidator(const YearDatatypeValidator&); + YearDatatypeValidator& operator=(const YearDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file YearDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp new file mode 100644 index 000000000000..7479fdc36336 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_YEARMONTH_DATATYPE_VALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_YEARMONTH_DATATYPE_VALIDATOR_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT YearMonthDatatypeValidator : public DateTimeValidator +{ +public: + + // ----------------------------------------------------------------------- + // Public ctor/dtor + // ----------------------------------------------------------------------- + /** @name Constructors and Destructor */ + //@{ + + YearMonthDatatypeValidator + ( + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + YearMonthDatatypeValidator + ( + DatatypeValidator* const baseValidator + , RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~YearMonthDatatypeValidator(); + + //@} + + /** + * Returns an instance of the base datatype validator class + * Used by the DatatypeValidatorFactory. + */ + virtual DatatypeValidator* newInstance + ( + RefHashTableOf* const facets + , RefArrayVectorOf* const enums + , const int finalSet + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(YearMonthDatatypeValidator) + +protected: + + // ----------------------------------------------------------------------- + // implementation of (DateTimeValidator's) virtual interface + // ----------------------------------------------------------------------- + virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); + virtual void parse(XMLDateTime* const); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + YearMonthDatatypeValidator(const YearMonthDatatypeValidator&); + YearMonthDatatypeValidator& operator=(const YearMonthDatatypeValidator&); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file YearMonthDatatypeValidator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/ComplexTypeInfo.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/ComplexTypeInfo.hpp new file mode 100644 index 000000000000..5cd78ed5abfe --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/ComplexTypeInfo.hpp @@ -0,0 +1,531 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_COMPLEXTYPEINFO_HPP) +#define XERCESC_INCLUDE_GUARD_COMPLEXTYPEINFO_HPP + + +/** + * The class act as a place holder to store complex type information. + * + * The class is intended for internal use. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- +class DatatypeValidator; +class ContentSpecNode; +class SchemaAttDefList; +class SchemaElementDecl; +class XSDLocator; + + +class VALIDATORS_EXPORT ComplexTypeInfo : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constructors/Destructor + // ----------------------------------------------------------------------- + ComplexTypeInfo(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ComplexTypeInfo(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getAbstract() const; + bool getAdoptContentSpec() const; + bool containsAttWithTypeId() const; + bool getPreprocessed() const; + int getDerivedBy() const; + int getBlockSet() const; + int getFinalSet() const; + unsigned int getScopeDefined() const; + unsigned int getElementId() const; + int getContentType() const; + XMLSize_t elementCount() const; + XMLCh* getTypeName() const; + DatatypeValidator* getBaseDatatypeValidator() const; + DatatypeValidator* getDatatypeValidator() const; + ComplexTypeInfo* getBaseComplexTypeInfo() const; + ContentSpecNode* getContentSpec() const; + const SchemaAttDef* getAttWildCard() const; + SchemaAttDef* getAttWildCard(); + const SchemaAttDef* getAttDef(const XMLCh* const baseName, + const int uriId) const; + SchemaAttDef* getAttDef(const XMLCh* const baseName, + const int uriId); + XMLAttDefList& getAttDefList() const; + const SchemaElementDecl* elementAt(const XMLSize_t index) const; + SchemaElementDecl* elementAt(const XMLSize_t index); + XMLContentModel* getContentModel(const bool checkUPA = false); + const XMLCh* getFormattedContentModel () const; + XSDLocator* getLocator() const; + const XMLCh* getTypeLocalName() const; + const XMLCh* getTypeUri() const; + + /** + * returns true if this type is anonymous + **/ + bool getAnonymous() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setAbstract(const bool isAbstract); + void setAdoptContentSpec(const bool toAdopt); + void setAttWithTypeId(const bool value); + void setPreprocessed(const bool aValue = true); + void setDerivedBy(const int derivedBy); + void setBlockSet(const int blockSet); + void setFinalSet(const int finalSet); + void setScopeDefined(const unsigned int scopeDefined); + void setElementId(const unsigned int elemId); + void setTypeName(const XMLCh* const typeName); + void setContentType(const int contentType); + void setBaseDatatypeValidator(DatatypeValidator* const baseValidator); + void setDatatypeValidator(DatatypeValidator* const validator); + void setBaseComplexTypeInfo(ComplexTypeInfo* const typeInfo); + void setContentSpec(ContentSpecNode* const toAdopt); + void setAttWildCard(SchemaAttDef* const toAdopt); + void addAttDef(SchemaAttDef* const toAdd); + void addElement(SchemaElementDecl* const toAdd); + void setLocator(XSDLocator* const aLocator); + + /** + * sets this type to be anonymous + **/ + void setAnonymous(); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + bool hasAttDefs() const; + bool contains(const XMLCh* const attName); + void checkUniqueParticleAttribution + ( + SchemaGrammar* const pGrammar + , GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool + , XMLValidator* const pValidator + ) ; + + /** + * Return a singleton that represents 'anyType' + * + * @param emptyNSId the uri id of the empty namespace + */ + static ComplexTypeInfo* getAnyType(unsigned int emptyNSId); + + /** + * Notification that lazy data has been deleted + */ + static void reinitAnyType(); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(ComplexTypeInfo) + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ComplexTypeInfo(const ComplexTypeInfo& elemInfo); + ComplexTypeInfo& operator= (const ComplexTypeInfo& other); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void faultInAttDefList() const; + bool useRepeatingLeafNodes(ContentSpecNode* particle); + XMLContentModel* makeContentModel(bool checkUPA = false); + XMLCh* formatContentModel () const ; + ContentSpecNode* expandContentModel(ContentSpecNode* const curNode, int minOccurs, int maxOccurs, bool bAllowCompactSyntax); + ContentSpecNode* convertContentSpecTree(ContentSpecNode* const curNode, bool checkUPA, bool bAllowCompactSyntax); + void resizeContentSpecOrgURI(); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fAnonymous; + bool fAbstract; + bool fAdoptContentSpec; + bool fAttWithTypeId; + bool fPreprocessed; + int fDerivedBy; + int fBlockSet; + int fFinalSet; + unsigned int fScopeDefined; + int fContentType; + + unsigned int fElementId; + unsigned int fUniqueURI; + unsigned int fContentSpecOrgURISize; + + XMLCh* fTypeName; + XMLCh* fTypeLocalName; + XMLCh* fTypeUri; + DatatypeValidator* fBaseDatatypeValidator; + DatatypeValidator* fDatatypeValidator; + ComplexTypeInfo* fBaseComplexTypeInfo; + ContentSpecNode* fContentSpec; + SchemaAttDef* fAttWildCard; + SchemaAttDefList* fAttList; + RefVectorOf* fElements; + RefHash2KeysTableOf* fAttDefs; + XMLContentModel* fContentModel; + XMLCh* fFormattedModel; + unsigned int* fContentSpecOrgURI; + XSDLocator* fLocator; + MemoryManager* fMemoryManager; + + static ComplexTypeInfo* fAnyType; + + friend class XMLInitializer; +}; + +// --------------------------------------------------------------------------- +// ComplexTypeInfo: Getter methods +// --------------------------------------------------------------------------- +inline bool ComplexTypeInfo::getAbstract() const { + + return fAbstract; +} + +inline bool ComplexTypeInfo::getAdoptContentSpec() const { + + return fAdoptContentSpec; +} + +inline bool ComplexTypeInfo::containsAttWithTypeId() const { + + return fAttWithTypeId; +} + +inline bool ComplexTypeInfo::getPreprocessed() const { + + return fPreprocessed; +} + +inline int ComplexTypeInfo::getDerivedBy() const { + + return fDerivedBy; +} + +inline int ComplexTypeInfo::getBlockSet() const { + + return fBlockSet; +} + +inline int ComplexTypeInfo::getFinalSet() const { + + return fFinalSet; +} + +inline unsigned int ComplexTypeInfo::getScopeDefined() const { + + return fScopeDefined; +} + +inline unsigned int ComplexTypeInfo::getElementId() const { + + return fElementId; +} + +inline int ComplexTypeInfo::getContentType() const { + + return fContentType; +} + +inline XMLSize_t ComplexTypeInfo::elementCount() const { + + if (fElements) { + return fElements->size(); + } + + return 0; +} + +inline XMLCh* ComplexTypeInfo::getTypeName() const { + return fTypeName; +} + +inline DatatypeValidator* ComplexTypeInfo::getBaseDatatypeValidator() const { + + return fBaseDatatypeValidator; +} + +inline DatatypeValidator* ComplexTypeInfo::getDatatypeValidator() const { + + return fDatatypeValidator; +} + +inline ComplexTypeInfo* ComplexTypeInfo::getBaseComplexTypeInfo() const { + + return fBaseComplexTypeInfo; +} + +inline ContentSpecNode* ComplexTypeInfo::getContentSpec() const { + + return fContentSpec; +} + +inline const SchemaAttDef* ComplexTypeInfo::getAttWildCard() const { + + return fAttWildCard; +} + +inline SchemaAttDef* ComplexTypeInfo::getAttWildCard() { + + return fAttWildCard; +} + +inline const SchemaAttDef* ComplexTypeInfo::getAttDef(const XMLCh* const baseName, + const int uriId) const { + + return fAttDefs->get(baseName, uriId); +} + +inline SchemaAttDef* ComplexTypeInfo::getAttDef(const XMLCh* const baseName, + const int uriId) +{ + return fAttDefs->get(baseName, uriId); +} + +inline SchemaElementDecl* +ComplexTypeInfo::elementAt(const XMLSize_t index) { + + if (!fElements) { + return 0; // REVISIT - need to throw an exception + } + + return fElements->elementAt(index); +} + +inline const SchemaElementDecl* +ComplexTypeInfo::elementAt(const XMLSize_t index) const { + + if (!fElements) { + return 0; // REVISIT - need to throw an exception + } + + return fElements->elementAt(index); +} + +inline XMLContentModel* ComplexTypeInfo::getContentModel(const bool checkUPA) +{ + if (!fContentModel && fContentSpec) + fContentModel = makeContentModel(checkUPA); + + return fContentModel; +} + +inline XSDLocator* ComplexTypeInfo::getLocator() const +{ + return fLocator; +} + +inline bool ComplexTypeInfo::getAnonymous() const { + return fAnonymous; +} + +inline const XMLCh* ComplexTypeInfo::getTypeLocalName() const +{ + return fTypeLocalName; +} + +inline const XMLCh* ComplexTypeInfo::getTypeUri() const +{ + return fTypeUri; +} + +// --------------------------------------------------------------------------- +// ComplexTypeInfo: Setter methods +// --------------------------------------------------------------------------- +inline void ComplexTypeInfo::setAbstract(const bool isAbstract) { + + fAbstract = isAbstract; +} + +inline void ComplexTypeInfo::setAdoptContentSpec(const bool toAdopt) { + + fAdoptContentSpec = toAdopt; +} + +inline void ComplexTypeInfo::setAttWithTypeId(const bool value) { + + fAttWithTypeId = value; +} + +inline void ComplexTypeInfo::setPreprocessed(const bool aValue) { + + fPreprocessed = aValue; +} + +inline void ComplexTypeInfo::setDerivedBy(const int derivedBy) { + + fDerivedBy = derivedBy; +} + +inline void ComplexTypeInfo::setBlockSet(const int blockSet) { + + fBlockSet = blockSet; +} + +inline void ComplexTypeInfo::setFinalSet(const int finalSet) { + + fFinalSet = finalSet; +} + +inline void ComplexTypeInfo::setScopeDefined(const unsigned int scopeDefined) { + + fScopeDefined = scopeDefined; +} + +inline void ComplexTypeInfo::setElementId(const unsigned int elemId) { + + fElementId = elemId; +} + +inline void +ComplexTypeInfo::setContentType(const int contentType) { + + fContentType = contentType; +} + +inline void ComplexTypeInfo::setTypeName(const XMLCh* const typeName) { + + fMemoryManager->deallocate(fTypeName);//delete [] fTypeName; + fMemoryManager->deallocate(fTypeLocalName);//delete [] fTypeLocalName; + fMemoryManager->deallocate(fTypeUri);//delete [] fTypeUri; + + if (typeName) + { + fTypeName = XMLString::replicate(typeName, fMemoryManager); + + int index = XMLString::indexOf(fTypeName, chComma); + XMLSize_t length = XMLString::stringLen(fTypeName); + fTypeLocalName = (XMLCh*) fMemoryManager->allocate + ( + (length - index + 1) * sizeof(XMLCh) + ); //new XMLCh[length - index + 1]; + XMLString::subString(fTypeLocalName, fTypeName, index + 1, length, fMemoryManager); + + fTypeUri = (XMLCh*) fMemoryManager->allocate + ( + (index + 1) * sizeof(XMLCh) + ); //new XMLCh[index + 1]; + XMLString::subString(fTypeUri, fTypeName, 0, index, fMemoryManager); + } + else + { + fTypeName = fTypeLocalName = fTypeUri = 0; + } +} + +inline void +ComplexTypeInfo::setBaseDatatypeValidator(DatatypeValidator* const validator) { + + fBaseDatatypeValidator = validator; +} + +inline void +ComplexTypeInfo::setDatatypeValidator(DatatypeValidator* const validator) { + + fDatatypeValidator = validator; +} + +inline void +ComplexTypeInfo::setBaseComplexTypeInfo(ComplexTypeInfo* const typeInfo) { + + fBaseComplexTypeInfo = typeInfo; +} + +inline void ComplexTypeInfo::addElement(SchemaElementDecl* const elem) { + + if (!fElements) { + fElements = new (fMemoryManager) RefVectorOf(8, false, fMemoryManager); + } + else if (fElements->containsElement(elem)) { + return; + } + + fElements->addElement(elem); +} + +inline void ComplexTypeInfo::setAttWildCard(SchemaAttDef* const toAdopt) { + + if (fAttWildCard) { + delete fAttWildCard; + } + + fAttWildCard = toAdopt; +} + +inline void ComplexTypeInfo::setAnonymous() { + fAnonymous = true; +} + +// --------------------------------------------------------------------------- +// ComplexTypeInfo: Helper methods +// --------------------------------------------------------------------------- +inline bool ComplexTypeInfo::hasAttDefs() const +{ + return !fAttDefs->isEmpty(); +} + +inline bool ComplexTypeInfo::contains(const XMLCh* const attName) { + + RefHash2KeysTableOfEnumerator enumDefs(fAttDefs, false, fMemoryManager); + + while (enumDefs.hasMoreElements()) { + + if (XMLString::equals(attName, enumDefs.nextElement().getAttName()->getLocalPart())) { + return true; + } + } + + return false; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ComplexTypeInfo.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/GeneralAttributeCheck.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/GeneralAttributeCheck.hpp new file mode 100644 index 000000000000..b98b64a101b1 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/GeneralAttributeCheck.hpp @@ -0,0 +1,258 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_GENERALATTRIBUTECHECK_HPP) +#define XERCESC_INCLUDE_GUARD_GENERALATTRIBUTECHECK_HPP + +/** + * A general purpose class to check for valid values of attributes, as well + * as check for proper association with corresponding schema elements. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward declaration +// --------------------------------------------------------------------------- +class TraverseSchema; +class DOMElement; +class DOMNode; + +class VALIDATORS_EXPORT GeneralAttributeCheck : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constants + // ----------------------------------------------------------------------- + //Elements + enum + { + E_All, + E_Annotation, + E_Any, + E_AnyAttribute, + E_Appinfo, + E_AttributeGlobal, + E_AttributeLocal, + E_AttributeRef, + E_AttributeGroupGlobal, + E_AttributeGroupRef, + E_Choice, + E_ComplexContent, + E_ComplexTypeGlobal, + E_ComplexTypeLocal, + E_Documentation, + E_ElementGlobal, + E_ElementLocal, + E_ElementRef, + E_Enumeration, + E_Extension, + E_Field, + E_FractionDigits, + E_GroupGlobal, + E_GroupRef, + E_Import, + E_Include, + E_Key, + E_KeyRef, + E_Length, + E_List, + E_MaxExclusive, + E_MaxInclusive, + E_MaxLength, + E_MinExclusive, + E_MinInclusive, + E_MinLength, + E_Notation, + E_Pattern, + E_Redefine, + E_Restriction, + E_Schema, + E_Selector, + E_Sequence, + E_SimpleContent, + E_SimpleTypeGlobal, + E_SimpleTypeLocal, + E_TotalDigits, + E_Union, + E_Unique, + E_WhiteSpace, + + E_Count, + E_Invalid = -1 + }; + + //Attributes + enum + { + A_Abstract, + A_AttributeFormDefault, + A_Base, + A_Block, + A_BlockDefault, + A_Default, + A_ElementFormDefault, + A_Final, + A_FinalDefault, + A_Fixed, + A_Form, + A_ID, + A_ItemType, + A_MaxOccurs, + A_MemberTypes, + A_MinOccurs, + A_Mixed, + A_Name, + A_Namespace, + A_Nillable, + A_ProcessContents, + A_Public, + A_Ref, + A_Refer, + A_SchemaLocation, + A_Source, + A_SubstitutionGroup, + A_System, + A_TargetNamespace, + A_Type, + A_Use, + A_Value, + A_Version, + A_XPath, + + A_Count, + A_Invalid = -1 + }; + + //Validators + enum { + + DV_String = 0, + DV_AnyURI = 4, + DV_NonNegInt = 8, + DV_Boolean = 16, + DV_ID = 32, + DV_Form = 64, + DV_MaxOccurs = 128, + DV_MaxOccurs1 = 256, + DV_MinOccurs1 = 512, + DV_ProcessContents = 1024, + DV_Use = 2048, + DV_WhiteSpace = 4096, + + DV_Mask = (DV_AnyURI | DV_NonNegInt | DV_Boolean | DV_ID | DV_Form | + DV_MaxOccurs | DV_MaxOccurs1 | DV_MinOccurs1 | + DV_ProcessContents | DV_Use | DV_WhiteSpace) + }; + + // generate element-attributes map table +#if defined(NEED_TO_GEN_ELEM_ATT_MAP_TABLE) + static void initCharFlagTable(); +#endif + + // ----------------------------------------------------------------------- + // Constructor/Destructor + // ----------------------------------------------------------------------- + GeneralAttributeCheck(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~GeneralAttributeCheck(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + unsigned short getFacetId(const XMLCh* const facetName, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + void checkAttributes(const DOMElement* const elem, + const unsigned short elemContext, + TraverseSchema* const schema, + const bool isTopLevel = false, + ValueVectorOf* const nonXSAttList = 0); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + GeneralAttributeCheck(const GeneralAttributeCheck&); + GeneralAttributeCheck& operator=(const GeneralAttributeCheck&); + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + void validate(const DOMElement* const elem, const XMLCh* const attName, const XMLCh* const attValue, + const short dvIndex, TraverseSchema* const schema); + + // ----------------------------------------------------------------------- + // Private Constants + // ----------------------------------------------------------------------- + // optional vs. required attribute + enum { + Att_Required = 1, + Att_Optional = 2, + Att_Mask = 3 + }; + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + static ValueHashTableOf* fAttMap; + static ValueHashTableOf* fFacetsMap; + static DatatypeValidator* fNonNegIntDV; + static DatatypeValidator* fBooleanDV; + static DatatypeValidator* fAnyURIDV; + static unsigned short fgElemAttTable[E_Count][A_Count]; + static const XMLCh* fAttNames[A_Count]; + MemoryManager* fMemoryManager; + IDDatatypeValidator fIDValidator; + +private: + static void initialize(); + + friend class XMLInitializer; +}; + + +// --------------------------------------------------------------------------- +// GeneralAttributeCheck: Getter methods +// --------------------------------------------------------------------------- +inline unsigned short +GeneralAttributeCheck::getFacetId(const XMLCh* const facetName, MemoryManager* const manager) { + + return fFacetsMap->get(facetName, manager); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file GeneralAttributeCheck.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/NamespaceScope.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/NamespaceScope.hpp new file mode 100644 index 000000000000..beb6d7a01870 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/NamespaceScope.hpp @@ -0,0 +1,169 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_NAMESPACESCOPE_HPP) +#define XERCESC_INCLUDE_GUARD_NAMESPACESCOPE_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// Define a pure interface to allow XercesXPath to work on both NamespaceScope and DOMXPathNSResolver +class VALIDATORS_EXPORT XercesNamespaceResolver +{ +public: + virtual unsigned int getNamespaceForPrefix(const XMLCh* const prefix) const = 0; +}; + +// +// NamespaceScope provides a data structure for mapping namespace prefixes +// to their URI's. The mapping accurately reflects the scoping of namespaces +// at a particular instant in time. +// + +class VALIDATORS_EXPORT NamespaceScope : public XMemory, + public XercesNamespaceResolver +{ +public : + // ----------------------------------------------------------------------- + // Class specific data types + // + // These really should be private, but some of the compilers we have to + // support are too dumb to deal with that. + // + // PrefMapElem + // fURIId is the id of the URI from the validator's URI map. The + // fPrefId is the id of the prefix from our own prefix pool. The + // namespace stack consists of these elements. + // + // StackElem + // The fMapCapacity is how large fMap has grown so far. fMapCount + // is how many of them are valid right now. + // ----------------------------------------------------------------------- + struct PrefMapElem : public XMemory + { + unsigned int fPrefId; + unsigned int fURIId; + }; + + struct StackElem : public XMemory + { + PrefMapElem* fMap; + unsigned int fMapCapacity; + unsigned int fMapCount; + }; + + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + NamespaceScope(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + NamespaceScope(const NamespaceScope* const initialize, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~NamespaceScope(); + + + // ----------------------------------------------------------------------- + // Stack access + // ----------------------------------------------------------------------- + unsigned int increaseDepth(); + unsigned int decreaseDepth(); + + // ----------------------------------------------------------------------- + // Prefix map methods + // ----------------------------------------------------------------------- + void addPrefix(const XMLCh* const prefixToAdd, + const unsigned int uriId); + + virtual unsigned int getNamespaceForPrefix(const XMLCh* const prefixToMap) const; + + + // ----------------------------------------------------------------------- + // Miscellaneous methods + // ----------------------------------------------------------------------- + bool isEmpty() const; + void reset(const unsigned int emptyId); + unsigned int getEmptyNamespaceId() const; + + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + NamespaceScope(const NamespaceScope&); + NamespaceScope& operator=(const NamespaceScope&); + + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void expandMap(StackElem* const toExpand); + void expandStack(); + + + // ----------------------------------------------------------------------- + // Data members + // + // fEmptyNamespaceId + // This is the special URI id for the "" namespace, which is magic + // because of the xmlns="" operation. + // + // fPrefixPool + // This is the prefix pool where prefixes are hashed and given unique + // ids. These ids are used to track prefixes in the element stack. + // + // fStack + // fStackCapacity + // fStackTop + // This the stack array. Its an array of pointers to StackElem + // structures. The capacity is the current high water mark of the + // stack. The top is the current top of stack (i.e. the part of it + // being used.) + // ----------------------------------------------------------------------- + unsigned int fEmptyNamespaceId; + unsigned int fStackCapacity; + unsigned int fStackTop; + XMLStringPool fPrefixPool; + StackElem** fStack; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// NamespaceScope: Miscellaneous methods +// --------------------------------------------------------------------------- +inline bool NamespaceScope::isEmpty() const +{ + return (fStackTop == 0); +} + +inline unsigned int NamespaceScope::getEmptyNamespaceId() const +{ + return fEmptyNamespaceId; +} + + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file NameSpaceScope.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/PSVIDefs.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/PSVIDefs.hpp new file mode 100644 index 000000000000..4a66f8c1dc0f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/PSVIDefs.hpp @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_PSVIDEFS_HPP) +#define XERCESC_INCLUDE_GUARD_PSVIDEFS_HPP + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT PSVIDefs +{ +public: + enum PSVIScope + { + SCP_ABSENT // declared in group/attribute group + , SCP_GLOBAL // global declaration or ref + , SCP_LOCAL // local declaration + }; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaAttDef.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaAttDef.hpp new file mode 100644 index 000000000000..af2071b50c99 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaAttDef.hpp @@ -0,0 +1,252 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SCHEMAATTDEF_HPP) +#define XERCESC_INCLUDE_GUARD_SCHEMAATTDEF_HPP + +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DatatypeValidator; +class QName; +class ComplexTypeInfo; +// +// This class is a derivative of the core XMLAttDef class. This class adds +// any Schema specific data members and provides Schema specific implementations +// of any underlying attribute def virtual methods. +// +class VALIDATORS_EXPORT SchemaAttDef : public XMLAttDef +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructors + // ----------------------------------------------------------------------- + SchemaAttDef(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + SchemaAttDef + ( + const XMLCh* const prefix + , const XMLCh* const localPart + , const int uriId + , const XMLAttDef::AttTypes type = CData + , const XMLAttDef::DefAttTypes defType = Implied + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + SchemaAttDef + ( + const XMLCh* const prefix + , const XMLCh* const localPart + , const int uriId + , const XMLCh* const attValue + , const XMLAttDef::AttTypes type + , const XMLAttDef::DefAttTypes defType + , const XMLCh* const enumValues = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + SchemaAttDef + ( + const SchemaAttDef* other + ); + virtual ~SchemaAttDef(); + + // ----------------------------------------------------------------------- + // Implementation of the XMLAttDef interface + // ----------------------------------------------------------------------- + virtual const XMLCh* getFullName() const; + virtual void reset(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLSize_t getElemId() const; + QName* getAttName() const; + DatatypeValidator* getDatatypeValidator() const; + ValueVectorOf* getNamespaceList() const; + const SchemaAttDef* getBaseAttDecl() const; + SchemaAttDef* getBaseAttDecl(); + PSVIDefs::PSVIScope getPSVIScope() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setElemId(const XMLSize_t newId); + void setAttName + ( + const XMLCh* const prefix + ,const XMLCh* const localPart + ,const int uriId = -1 + ); + void setDatatypeValidator(DatatypeValidator* newDatatypeValidator); + void setBaseAttDecl(SchemaAttDef* const attDef); + void setPSVIScope(const PSVIDefs::PSVIScope toSet); + + void setNamespaceList(const ValueVectorOf* const toSet); + void resetNamespaceList(); + void setEnclosingCT(ComplexTypeInfo* complexTypeInfo); + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(SchemaAttDef) + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SchemaAttDef(const SchemaAttDef&); + SchemaAttDef& operator=(const SchemaAttDef&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fElemId + // This is the id of the element (the id is into the element decl + // pool) of the element this attribute def said it belonged to. + // This is used later to link back to the element, mostly for + // validation purposes. + // + // fAttName + // This is the name of the attribute. + // + // fDatatypeValidator + // The DatatypeValidator used to validate this attribute type. + // + // fNamespaceList + // The list of namespace values for a wildcard attribute + // + // fBaseAttDecl + // The base attribute declaration that this attribute is based on + // NOTE: we do not have a notion of attribute use, so in the case + // of ref'd attributes and inherited attributes, we make a copy + // of the actual attribute declaration. The fBaseAttDecl stores that + // declaration, and will be helpful when we build the XSModel (i.e + // easy access the XSAnnotation object). + // ----------------------------------------------------------------------- + XMLSize_t fElemId; + + PSVIDefs::PSVIScope fPSVIScope; + + QName* fAttName; + DatatypeValidator* fDatatypeValidator; + ValueVectorOf* fNamespaceList; + SchemaAttDef* fBaseAttDecl; +}; + + +// --------------------------------------------------------------------------- +// SchemaAttDef: Getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t SchemaAttDef::getElemId() const +{ + return fElemId; +} + + +inline QName* SchemaAttDef::getAttName() const +{ + return fAttName; +} + +inline DatatypeValidator* SchemaAttDef::getDatatypeValidator() const +{ + return fDatatypeValidator; +} + +inline ValueVectorOf* +SchemaAttDef::getNamespaceList() const { + return fNamespaceList; +} + +inline SchemaAttDef* SchemaAttDef::getBaseAttDecl() +{ + return fBaseAttDecl; +} + +inline const SchemaAttDef* SchemaAttDef::getBaseAttDecl() const +{ + return fBaseAttDecl; +} + +inline PSVIDefs::PSVIScope SchemaAttDef::getPSVIScope() const +{ + return fPSVIScope; +} + +// --------------------------------------------------------------------------- +// SchemaAttDef: Setter methods +// --------------------------------------------------------------------------- +inline void SchemaAttDef::setElemId(const XMLSize_t newId) +{ + fElemId = newId; +} + +inline void SchemaAttDef::setDatatypeValidator(DatatypeValidator* newDatatypeValidator) +{ + fDatatypeValidator = newDatatypeValidator; +} + +inline void SchemaAttDef::resetNamespaceList() { + + if (fNamespaceList && fNamespaceList->size()) { + fNamespaceList->removeAllElements(); + } +} + +inline void SchemaAttDef::setNamespaceList(const ValueVectorOf* const toSet) { + + if (toSet && toSet->size()) { + + if (fNamespaceList) { + *fNamespaceList = *toSet; + } + else { + fNamespaceList = new (getMemoryManager()) ValueVectorOf(*toSet); + } + } + else { + resetNamespaceList(); + } +} + +inline void SchemaAttDef::reset() { +} + +inline void SchemaAttDef::setEnclosingCT(ComplexTypeInfo*) +{ +} + +inline void SchemaAttDef::setBaseAttDecl(SchemaAttDef* const attDef) +{ + fBaseAttDecl = attDef; +} + +inline void SchemaAttDef::setPSVIScope(const PSVIDefs::PSVIScope toSet) +{ + fPSVIScope = toSet; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaAttDefList.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaAttDefList.hpp new file mode 100644 index 000000000000..9159a25b7c83 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaAttDefList.hpp @@ -0,0 +1,181 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SCHEMAATTDEFLIST_HPP) +#define XERCESC_INCLUDE_GUARD_SCHEMAATTDEFLIST_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This is a derivative of the framework abstract class which defines the +// interface to a list of attribute defs that belong to a particular +// element. The scanner needs to be able to get a list of the attributes +// that an element supports, for use during the validation process and for +// fixed/default attribute processing. +// +// For us, we just wrap the RefHash2KeysTableOf collection that the SchemaElementDecl +// class uses to store the attributes that belong to it. +// +// This class does not adopt the hash table, it just references it. The +// hash table is owned by the element decl it is a member of. +// +class VALIDATORS_EXPORT SchemaAttDefList : public XMLAttDefList +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + SchemaAttDefList + ( + RefHash2KeysTableOf* const listToUse, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~SchemaAttDefList(); + + + // ----------------------------------------------------------------------- + // Implementation of the virtual interface + // ----------------------------------------------------------------------- + + virtual bool isEmpty() const; + virtual XMLAttDef* findAttDef + ( + const unsigned int uriID + , const XMLCh* const attName + ); + virtual const XMLAttDef* findAttDef + ( + const unsigned int uriID + , const XMLCh* const attName + ) const; + virtual XMLAttDef* findAttDef + ( + const XMLCh* const attURI + , const XMLCh* const attName + ); + virtual const XMLAttDef* findAttDef + ( + const XMLCh* const attURI + , const XMLCh* const attName + ) const; + + XMLAttDef* findAttDefLocalPart + ( + const unsigned int uriID + , const XMLCh* const attLocalPart + ); + + const XMLAttDef* findAttDefLocalPart + ( + const unsigned int uriID + , const XMLCh* const attLocalPart + ) const; + + /** + * return total number of attributes in this list + */ + virtual XMLSize_t getAttDefCount() const ; + + /** + * return attribute at the index-th position in the list. + */ + virtual XMLAttDef &getAttDef(XMLSize_t index) ; + + /** + * return attribute at the index-th position in the list. + */ + virtual const XMLAttDef &getAttDef(XMLSize_t index) const ; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(SchemaAttDefList) + + SchemaAttDefList(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SchemaAttDefList(const SchemaAttDefList&); + SchemaAttDefList& operator=(const SchemaAttDefList&); + + void addAttDef(SchemaAttDef *toAdd); + + // ----------------------------------------------------------------------- + // Private data members + // + // fEnum + // This is an enumerator for the list that we use to do the enumerator + // type methods of this class. + // + // fList + // The list of SchemaAttDef objects that represent the attributes that + // a particular element supports. + // fArray + // vector of pointers to the DTDAttDef objects contained in this list + // fSize + // size of fArray + // fCount + // number of DTDAttDef objects currently stored in this list + // ----------------------------------------------------------------------- + RefHash2KeysTableOfEnumerator* fEnum; + RefHash2KeysTableOf* fList; + SchemaAttDef** fArray; + XMLSize_t fSize; + XMLSize_t fCount; + + friend class ComplexTypeInfo; +}; + +inline void SchemaAttDefList::addAttDef(SchemaAttDef *toAdd) +{ + if(fCount == fSize) + { + // need to grow fArray + fSize <<= 1; + SchemaAttDef** newArray = (SchemaAttDef **)((getMemoryManager())->allocate( sizeof(SchemaAttDef*) * fSize )); + memcpy(newArray, fArray, fCount * sizeof(SchemaAttDef *)); + (getMemoryManager())->deallocate(fArray); + fArray = newArray; + } + fArray[fCount++] = toAdd; +} + +inline XMLAttDef* SchemaAttDefList::findAttDefLocalPart(const unsigned int uriID + , const XMLCh* const attLocalPart) +{ + return fList->get((void*)attLocalPart, uriID); +} + +inline const XMLAttDef* SchemaAttDefList::findAttDefLocalPart(const unsigned int uriID + , const XMLCh* const attLocalPart) const +{ + return fList->get((void*)attLocalPart, uriID); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaElementDecl.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaElementDecl.hpp new file mode 100644 index 000000000000..f746cf65f253 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaElementDecl.hpp @@ -0,0 +1,438 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SCHEMAELEMENTDECL_HPP) +#define XERCESC_INCLUDE_GUARD_SCHEMAELEMENTDECL_HPP + +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class ContentSpecNode; +class SchemaAttDefList; + +// +// This class is a derivative of the basic element decl. This one implements +// the virtuals so that they work for a Schema. +// +class VALIDATORS_EXPORT SchemaElementDecl : public XMLElementDecl +{ +public : + + // ----------------------------------------------------------------------- + // Class specific types + // + // ModelTypes + // Indicates the type of content model that an element has. This + // indicates how the content model is represented and validated. + // ----------------------------------------------------------------------- + enum ModelTypes + { + Empty + , Any + , Mixed_Simple + , Mixed_Complex + , Children + , Simple + , ElementOnlyEmpty + , ModelTypes_Count + }; + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + SchemaElementDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + SchemaElementDecl + ( + const XMLCh* const prefix + , const XMLCh* const localPart + , const int uriId + , const ModelTypes modelType = Any + , const unsigned int enclosingScope = Grammar::TOP_LEVEL_SCOPE + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + SchemaElementDecl + ( + const QName* const elementName + , const ModelTypes modelType = Any + , const unsigned int enclosingScope = Grammar::TOP_LEVEL_SCOPE + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + ~SchemaElementDecl(); + + + // ----------------------------------------------------------------------- + // The virtual element decl interface + // ----------------------------------------------------------------------- + virtual XMLAttDefList& getAttDefList() const; + virtual CharDataOpts getCharDataOpts() const; + virtual bool hasAttDefs() const; + virtual const ContentSpecNode* getContentSpec() const; + virtual ContentSpecNode* getContentSpec(); + virtual void setContentSpec(ContentSpecNode* toAdopt); + virtual XMLContentModel* getContentModel(); + virtual void setContentModel(XMLContentModel* const newModelToAdopt); + virtual const XMLCh* getFormattedContentModel () const; + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const SchemaAttDef* getAttDef(const XMLCh* const baseName, const int uriId) const; + SchemaAttDef* getAttDef(const XMLCh* const baseName, const int uriId); + const SchemaAttDef* getAttWildCard() const; + SchemaAttDef* getAttWildCard(); + ModelTypes getModelType() const; + PSVIDefs::PSVIScope getPSVIScope() const; + DatatypeValidator* getDatatypeValidator() const; + unsigned int getEnclosingScope() const; + int getFinalSet() const; + int getBlockSet() const; + int getMiscFlags() const; + XMLCh* getDefaultValue() const; + ComplexTypeInfo* getComplexTypeInfo() const; + virtual bool isGlobalDecl() const; + SchemaElementDecl* getSubstitutionGroupElem() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setModelType(const SchemaElementDecl::ModelTypes toSet); + void setPSVIScope(const PSVIDefs::PSVIScope toSet); + void setDatatypeValidator(DatatypeValidator* newDatatypeValidator); + void setEnclosingScope(const unsigned int enclosingScope); + void setFinalSet(const int finalSet); + void setBlockSet(const int blockSet); + void setMiscFlags(const int flags); + void setDefaultValue(const XMLCh* const value); + void setComplexTypeInfo(ComplexTypeInfo* const typeInfo); + void setAttWildCard(SchemaAttDef* const attWildCard); + void setSubstitutionGroupElem(SchemaElementDecl* const elemDecl); + + // ----------------------------------------------------------------------- + // IC methods + // ----------------------------------------------------------------------- + void addIdentityConstraint(IdentityConstraint* const ic); + XMLSize_t getIdentityConstraintCount() const; + IdentityConstraint* getIdentityConstraintAt(XMLSize_t index) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(SchemaElementDecl) + + virtual XMLElementDecl::objectType getObjectType() const; + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SchemaElementDecl(const SchemaElementDecl&); + SchemaElementDecl& operator=(const SchemaElementDecl&); + + // ----------------------------------------------------------------------- + // Private data members + // + // fModelType + // The content model type of this element. This tells us what kind + // of content model to create. + // + // fDatatypeValidator + // The DatatypeValidator used to validate this element type. + // + // fEnclosingScope + // The enclosing scope where this element is declared. + // + // fFinalSet + // The value set of the 'final' attribute. + // + // fBlockSet + // The value set of the 'block' attribute. + // + // fMiscFlags + // Stores 'abstract/nullable' values + // + // fDefaultValue + // The default/fixed value + // + // fComplexTypeInfo + // Stores complex type information + // (no need to delete - handled by schema grammar) + // + // fAttDefs + // The list of attributes that are faulted in for this element + // when ComplexTypeInfo does not exist. We want to keep track + // of these faulted in attributes to avoid duplicate redundant + // error. + // + // fIdentityConstraints + // Store information about an element identity constraints. + // + // fAttWildCard + // Store wildcard attribute in the case of an element with a type of + // 'anyType'. + // + // fSubstitutionGroupElem + // The substitution group element declaration. + // ----------------------------------------------------------------------- + + // ----------------------------------------------------------------------- + ModelTypes fModelType; + PSVIDefs::PSVIScope fPSVIScope; + + unsigned int fEnclosingScope; + int fFinalSet; + int fBlockSet; + int fMiscFlags; + XMLCh* fDefaultValue; + ComplexTypeInfo* fComplexTypeInfo; + RefHash2KeysTableOf* fAttDefs; + RefVectorOf* fIdentityConstraints; + SchemaAttDef* fAttWildCard; + SchemaElementDecl* fSubstitutionGroupElem; + DatatypeValidator* fDatatypeValidator; +}; + +// --------------------------------------------------------------------------- +// SchemaElementDecl: XMLElementDecl virtual interface implementation +// --------------------------------------------------------------------------- +inline ContentSpecNode* SchemaElementDecl::getContentSpec() +{ + if (fComplexTypeInfo != 0) { + return fComplexTypeInfo->getContentSpec(); + } + + return 0; +} + +inline const ContentSpecNode* SchemaElementDecl::getContentSpec() const +{ + if (fComplexTypeInfo != 0) { + return fComplexTypeInfo->getContentSpec(); + } + + return 0; +} + +inline void +SchemaElementDecl::setContentSpec(ContentSpecNode*) +{ + //Handled by complexType +} + +inline XMLContentModel* SchemaElementDecl::getContentModel() +{ + if (fComplexTypeInfo != 0) { + return fComplexTypeInfo->getContentModel(); + } + return 0; +} + +inline void +SchemaElementDecl::setContentModel(XMLContentModel* const) +{ + //Handled by complexType +} + + +// --------------------------------------------------------------------------- +// SchemaElementDecl: Getter methods +// --------------------------------------------------------------------------- +inline SchemaElementDecl::ModelTypes SchemaElementDecl::getModelType() const +{ + if (fComplexTypeInfo) { + return (SchemaElementDecl::ModelTypes) fComplexTypeInfo->getContentType(); + } + + return fModelType; +} + +inline PSVIDefs::PSVIScope SchemaElementDecl::getPSVIScope() const +{ + return fPSVIScope; +} + +inline DatatypeValidator* SchemaElementDecl::getDatatypeValidator() const +{ + return fDatatypeValidator; +} + +inline unsigned int SchemaElementDecl::getEnclosingScope() const +{ + return fEnclosingScope; +} + +inline int SchemaElementDecl::getFinalSet() const +{ + return fFinalSet; +} + +inline int SchemaElementDecl::getBlockSet() const +{ + return fBlockSet; +} + +inline int SchemaElementDecl::getMiscFlags() const +{ + return fMiscFlags; +} + +inline XMLCh* SchemaElementDecl::getDefaultValue() const +{ + return fDefaultValue; +} + +inline ComplexTypeInfo* SchemaElementDecl::getComplexTypeInfo() const +{ + return fComplexTypeInfo; +} + +inline const SchemaAttDef* SchemaElementDecl::getAttWildCard() const { + return fAttWildCard; +} + +inline SchemaAttDef* SchemaElementDecl::getAttWildCard() { + return fAttWildCard; +} + +inline bool SchemaElementDecl::isGlobalDecl() const { + + return (fEnclosingScope == Grammar::TOP_LEVEL_SCOPE); +} + +inline SchemaElementDecl* +SchemaElementDecl::getSubstitutionGroupElem() const { + + return fSubstitutionGroupElem; +} + +// --------------------------------------------------------------------------- +// SchemaElementDecl: Setter methods +// --------------------------------------------------------------------------- +inline void +SchemaElementDecl::setModelType(const SchemaElementDecl::ModelTypes toSet) +{ + fModelType = toSet; +} + +inline void +SchemaElementDecl::setPSVIScope(const PSVIDefs::PSVIScope toSet) +{ + fPSVIScope = toSet; +} + +inline void SchemaElementDecl::setDatatypeValidator(DatatypeValidator* newDatatypeValidator) +{ + fDatatypeValidator = newDatatypeValidator; +} + +inline void SchemaElementDecl::setEnclosingScope(const unsigned int newEnclosingScope) +{ + fEnclosingScope = newEnclosingScope; +} + +inline void SchemaElementDecl::setFinalSet(const int finalSet) +{ + fFinalSet = finalSet; +} + +inline void SchemaElementDecl::setBlockSet(const int blockSet) +{ + fBlockSet = blockSet; +} + +inline void SchemaElementDecl::setMiscFlags(const int flags) +{ + fMiscFlags = flags; +} + +inline void SchemaElementDecl::setDefaultValue(const XMLCh* const value) +{ + if (fDefaultValue) { + getMemoryManager()->deallocate(fDefaultValue);//delete[] fDefaultValue; + } + + fDefaultValue = XMLString::replicate(value, getMemoryManager()); +} + +inline void +SchemaElementDecl::setComplexTypeInfo(ComplexTypeInfo* const typeInfo) +{ + fComplexTypeInfo = typeInfo; +} + +inline void +SchemaElementDecl::setAttWildCard(SchemaAttDef* const attWildCard) { + + if (fAttWildCard) + delete fAttWildCard; + + fAttWildCard = attWildCard; +} + +inline void +SchemaElementDecl::setSubstitutionGroupElem(SchemaElementDecl* const elemDecl) { + + fSubstitutionGroupElem = elemDecl; +} + +// --------------------------------------------------------------------------- +// SchemaElementDecl: IC methods +// --------------------------------------------------------------------------- +inline void +SchemaElementDecl::addIdentityConstraint(IdentityConstraint* const ic) { + + if (!fIdentityConstraints) { + fIdentityConstraints = new (getMemoryManager()) RefVectorOf(16, true, getMemoryManager()); + } + + fIdentityConstraints->addElement(ic); +} + +inline XMLSize_t SchemaElementDecl::getIdentityConstraintCount() const { + + if (fIdentityConstraints) { + return fIdentityConstraints->size(); + } + + return 0; +} + +inline IdentityConstraint* +SchemaElementDecl::getIdentityConstraintAt(XMLSize_t index) const { + + if (fIdentityConstraints) { + return fIdentityConstraints->elementAt(index); + } + + return 0; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaGrammar.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaGrammar.hpp new file mode 100644 index 000000000000..d2549e3e70e2 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaGrammar.hpp @@ -0,0 +1,626 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SCHEMAGRAMMAR_HPP) +#define XERCESC_INCLUDE_GUARD_SCHEMAGRAMMAR_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// +// This class stores the Schema information +// NOTE: Schemas are not namespace aware, so we just use regular NameIdPool +// data structures to store element and attribute decls. They are all set +// to be in the global namespace and the full QName is used as the base name +// of the decl. This means that all the URI parameters below are expected +// to be null pointers (and anything else will cause an exception.) +// + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- +class ComplexTypeInfo; +class XercesGroupInfo; +class XercesAttGroupInfo; +class XSAnnotation; + +// --------------------------------------------------------------------------- +// typedef declaration +// --------------------------------------------------------------------------- +typedef ValueVectorOf ElemVector; + + +class VALIDATORS_EXPORT SchemaGrammar : public Grammar +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + SchemaGrammar(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~SchemaGrammar(); + + // ----------------------------------------------------------------------- + // Implementation of Virtual Interface + // ----------------------------------------------------------------------- + virtual Grammar::GrammarType getGrammarType() const; + virtual const XMLCh* getTargetNamespace() const; + + // this method should only be used while the grammar is being + // constructed, not while it is being used + // in a validation episode! + virtual XMLElementDecl* findOrAddElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const prefixName + , const XMLCh* const qName + , unsigned int scope + , bool& wasAdded + ) ; + + virtual XMLSize_t getElemId + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ) const ; + + virtual const XMLElementDecl* getElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ) const ; + + virtual XMLElementDecl* getElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const qName + , unsigned int scope + ); + + virtual const XMLElementDecl* getElemDecl + ( + const unsigned int elemId + ) const; + + virtual XMLElementDecl* getElemDecl + ( + const unsigned int elemId + ); + + virtual const XMLNotationDecl* getNotationDecl + ( + const XMLCh* const notName + ) const; + + virtual XMLNotationDecl* getNotationDecl + ( + const XMLCh* const notName + ); + + virtual bool getValidated() const; + + virtual XMLElementDecl* putElemDecl + ( + const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const prefixName + , const XMLCh* const qName + , unsigned int scope + , const bool notDeclared = false + ); + + virtual XMLSize_t putElemDecl + ( + XMLElementDecl* const elemDecl + , const bool notDeclared = false + ) ; + + virtual XMLSize_t putNotationDecl + ( + XMLNotationDecl* const notationDecl + ) const; + + virtual void setValidated(const bool newState); + + virtual void reset(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + RefHash3KeysIdPoolEnumerator getElemEnumerator() const; + NameIdPoolEnumerator getNotationEnumerator() const; + RefHashTableOf* getAttributeDeclRegistry() const; + RefHashTableOf* getComplexTypeRegistry() const; + RefHashTableOf* getGroupInfoRegistry() const; + RefHashTableOf* getAttGroupInfoRegistry() const; + DatatypeValidatorFactory* getDatatypeRegistry(); + RefHash2KeysTableOf* getValidSubstitutionGroups() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setTargetNamespace(const XMLCh* const targetNamespace); + void setAttributeDeclRegistry(RefHashTableOf* const attReg); + void setComplexTypeRegistry(RefHashTableOf* const other); + void setGroupInfoRegistry(RefHashTableOf* const other); + void setAttGroupInfoRegistry(RefHashTableOf* const other); + void setValidSubstitutionGroups(RefHash2KeysTableOf* const); + + virtual void setGrammarDescription( XMLGrammarDescription*); + virtual XMLGrammarDescription* getGrammarDescription() const; + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + XMLSize_t putGroupElemDecl + ( + XMLElementDecl* const elemDecl + ) const; + + // ----------------------------------------------------------------------- + // Annotation management methods + // ----------------------------------------------------------------------- + /** + * Add annotation to the list of annotations for a given key + */ + void putAnnotation(void* key, XSAnnotation* const annotation); + + /** + * Add global annotation + * + * Note: XSAnnotation acts as a linked list + */ + void addAnnotation(XSAnnotation* const annotation); + + /** + * Retrieve the annotation that is associated with the specified key + * + * @param key represents a schema component object (i.e. SchemaGrammar) + * @return XSAnnotation associated with the key object + */ + XSAnnotation* getAnnotation(const void* const key); + + /** + * Retrieve the annotation that is associated with the specified key + * + * @param key represents a schema component object (i.e. SchemaGrammar) + * @return XSAnnotation associated with the key object + */ + const XSAnnotation* getAnnotation(const void* const key) const; + + /** + * Get global annotation + */ + XSAnnotation* getAnnotation(); + const XSAnnotation* getAnnotation() const; + + /** + * Get annotation hash table, to enumerate through them + */ + RefHashTableOf* getAnnotations(); + const RefHashTableOf* getAnnotations() const; + + /** + * Get/set scope count. + */ + unsigned int getScopeCount () const; + void setScopeCount (unsigned int); + + /** + * Get/set anonymous type count. + */ + unsigned int getAnonTypeCount () const; + void setAnonTypeCount (unsigned int); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(SchemaGrammar) + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SchemaGrammar(const SchemaGrammar&); + SchemaGrammar& operator=(const SchemaGrammar&); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Private data members + // + // fElemDeclPool + // This is the element decl pool. It contains all of the elements + // declared in the Schema (and their associated attributes.) + // + // fElemNonDeclPool + // This is the element decl pool that is is populated as new elements + // are seen in the XML document (not declared in the Schema), and they + // are given default characteristics. + // + // fGroupElemDeclPool + // This is the element decl pool for elements in a group that are + // referenced in different scope. It contains all of the elements + // declared in the Schema (and their associated attributes.) + // + // fNotationDeclPool + // This is a pool of NotationDecl objects, which contains all of the + // notations declared in the Schema. + // + // fTargetNamespace + // Target name space for this grammar. + // + // fAttributeDeclRegistry + // Global attribute declarations + // + // fComplexTypeRegistry + // Stores complexType declaration info + // + // fGroupInfoRegistry + // Stores global declaration info + // + // fAttGroupInfoRegistry + // Stores global declaration info + // + // fDatatypeRegistry + // Datatype validator factory + // + // fValidSubstitutionGroups + // Valid list of elements that can substitute a given element + // + // fIDRefList + // List of ids of schema declarations extracted during schema grammar + // traversal + // + // fValidated + // Indicates if the content of the Grammar has been pre-validated + // or not (UPA checking, etc.). When using a cached grammar, no need + // for pre content validation. + // + // fGramDesc: adopted + // + // ----------------------------------------------------------------------- + XMLCh* fTargetNamespace; + RefHash3KeysIdPool* fElemDeclPool; + RefHash3KeysIdPool* fElemNonDeclPool; + RefHash3KeysIdPool* fGroupElemDeclPool; + NameIdPool* fNotationDeclPool; + RefHashTableOf* fAttributeDeclRegistry; + RefHashTableOf* fComplexTypeRegistry; + RefHashTableOf* fGroupInfoRegistry; + RefHashTableOf* fAttGroupInfoRegistry; + RefHash2KeysTableOf* fValidSubstitutionGroups; + MemoryManager* fMemoryManager; + XMLSchemaDescription* fGramDesc; + RefHashTableOf* fAnnotations; + + bool fValidated; + DatatypeValidatorFactory fDatatypeRegistry; + + unsigned int fScopeCount; + unsigned int fAnonTypeCount; +}; + + +// --------------------------------------------------------------------------- +// SchemaGrammar: Getter methods +// --------------------------------------------------------------------------- +inline RefHash3KeysIdPoolEnumerator +SchemaGrammar::getElemEnumerator() const +{ + return RefHash3KeysIdPoolEnumerator(fElemDeclPool, false, fMemoryManager); +} + +inline NameIdPoolEnumerator +SchemaGrammar::getNotationEnumerator() const +{ + return NameIdPoolEnumerator(fNotationDeclPool, fMemoryManager); +} + +inline RefHashTableOf* SchemaGrammar::getAttributeDeclRegistry() const { + + return fAttributeDeclRegistry; +} + +inline RefHashTableOf* +SchemaGrammar::getComplexTypeRegistry() const { + + return fComplexTypeRegistry; +} + +inline RefHashTableOf* +SchemaGrammar::getGroupInfoRegistry() const { + + return fGroupInfoRegistry; +} + +inline RefHashTableOf* +SchemaGrammar::getAttGroupInfoRegistry() const { + + return fAttGroupInfoRegistry; +} + +inline DatatypeValidatorFactory* SchemaGrammar::getDatatypeRegistry() { + + return &fDatatypeRegistry; +} + +inline RefHash2KeysTableOf* +SchemaGrammar::getValidSubstitutionGroups() const { + + return fValidSubstitutionGroups; +} + +inline XMLGrammarDescription* SchemaGrammar::getGrammarDescription() const +{ + return fGramDesc; +} + +inline XSAnnotation* SchemaGrammar::getAnnotation(const void* const key) +{ + return fAnnotations->get(key); +} + +inline const XSAnnotation* SchemaGrammar::getAnnotation(const void* const key) const +{ + return fAnnotations->get(key); +} + +inline XSAnnotation* SchemaGrammar::getAnnotation() +{ + return fAnnotations->get(this); +} + +inline const XSAnnotation* SchemaGrammar::getAnnotation() const +{ + return fAnnotations->get(this); +} + +inline RefHashTableOf* SchemaGrammar::getAnnotations() +{ + return fAnnotations; +} + +inline const RefHashTableOf* SchemaGrammar::getAnnotations() const +{ + return fAnnotations; +} +// ----------------------------------------------------------------------- +// Setter methods +// ----------------------------------------------------------------------- +inline void SchemaGrammar::setTargetNamespace(const XMLCh* const targetNamespace) +{ + if (fTargetNamespace) + fMemoryManager->deallocate(fTargetNamespace);//delete [] fTargetNamespace; + fTargetNamespace = XMLString::replicate(targetNamespace, fMemoryManager); +} + +inline void +SchemaGrammar::setAttributeDeclRegistry(RefHashTableOf* const attReg) { + + fAttributeDeclRegistry = attReg; +} + +inline void +SchemaGrammar::setComplexTypeRegistry(RefHashTableOf* const other) { + + fComplexTypeRegistry = other; +} + +inline void +SchemaGrammar::setGroupInfoRegistry(RefHashTableOf* const other) { + + fGroupInfoRegistry = other; +} + +inline void +SchemaGrammar::setAttGroupInfoRegistry(RefHashTableOf* const other) { + + fAttGroupInfoRegistry = other; +} + +inline void +SchemaGrammar::setValidSubstitutionGroups(RefHash2KeysTableOf* const other) { + + fValidSubstitutionGroups = other; +} + + +// --------------------------------------------------------------------------- +// SchemaGrammar: Virtual methods +// --------------------------------------------------------------------------- +inline Grammar::GrammarType SchemaGrammar::getGrammarType() const { + return Grammar::SchemaGrammarType; +} + +inline const XMLCh* SchemaGrammar::getTargetNamespace() const { + return fTargetNamespace; +} + +// Element Decl +inline XMLSize_t SchemaGrammar::getElemId (const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const + , unsigned int scope ) const +{ + // + // In this case, we don't return zero to mean 'not found', so we have to + // map it to the official not found value if we don't find it. + // + const SchemaElementDecl* decl = fElemDeclPool->getByKey(baseName, uriId, scope); + if (!decl) { + + decl = fGroupElemDeclPool->getByKey(baseName, uriId, scope); + + if (!decl) + return XMLElementDecl::fgInvalidElemId; + } + return decl->getId(); +} + +inline const XMLElementDecl* SchemaGrammar::getElemDecl( const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const + , unsigned int scope ) const +{ + const SchemaElementDecl* decl = fElemDeclPool->getByKey(baseName, uriId, scope); + + if (!decl) { + + decl = fGroupElemDeclPool->getByKey(baseName, uriId, scope); + + if (!decl && fElemNonDeclPool) + decl = fElemNonDeclPool->getByKey(baseName, uriId, scope); + } + + return decl; +} + +inline XMLElementDecl* SchemaGrammar::getElemDecl (const unsigned int uriId + , const XMLCh* const baseName + , const XMLCh* const + , unsigned int scope ) +{ + SchemaElementDecl* decl = fElemDeclPool->getByKey(baseName, uriId, scope); + + if (!decl) { + + decl = fGroupElemDeclPool->getByKey(baseName, uriId, scope); + + if (!decl && fElemNonDeclPool) + decl = fElemNonDeclPool->getByKey(baseName, uriId, scope); + } + + return decl; +} + +inline const XMLElementDecl* SchemaGrammar::getElemDecl(const unsigned int elemId) const +{ + // Look up this element decl by id + const SchemaElementDecl* decl = fElemDeclPool->getById(elemId); + + if (!decl) + decl = fGroupElemDeclPool->getById(elemId); + + return decl; +} + +inline XMLElementDecl* SchemaGrammar::getElemDecl(const unsigned int elemId) +{ + // Look up this element decl by id + SchemaElementDecl* decl = fElemDeclPool->getById(elemId); + + if (!decl) + decl = fGroupElemDeclPool->getById(elemId); + + return decl; +} + +inline XMLSize_t +SchemaGrammar::putElemDecl(XMLElementDecl* const elemDecl, + const bool notDeclared) +{ + if (notDeclared) + { + if(!fElemNonDeclPool) + fElemNonDeclPool = new (fMemoryManager) RefHash3KeysIdPool(29, true, 128, fMemoryManager); + return fElemNonDeclPool->put(elemDecl->getBaseName(), elemDecl->getURI(), ((SchemaElementDecl* )elemDecl)->getEnclosingScope(), (SchemaElementDecl*) elemDecl); + } + + return fElemDeclPool->put(elemDecl->getBaseName(), elemDecl->getURI(), ((SchemaElementDecl* )elemDecl)->getEnclosingScope(), (SchemaElementDecl*) elemDecl); +} + +inline XMLSize_t SchemaGrammar::putGroupElemDecl (XMLElementDecl* const elemDecl) const +{ + return fGroupElemDeclPool->put(elemDecl->getBaseName(), elemDecl->getURI(), ((SchemaElementDecl* )elemDecl)->getEnclosingScope(), (SchemaElementDecl*) elemDecl); +} + +// Notation Decl +inline const XMLNotationDecl* SchemaGrammar::getNotationDecl(const XMLCh* const notName) const +{ + return fNotationDeclPool->getByKey(notName); +} + +inline XMLNotationDecl* SchemaGrammar::getNotationDecl(const XMLCh* const notName) +{ + return fNotationDeclPool->getByKey(notName); +} + +inline XMLSize_t SchemaGrammar::putNotationDecl(XMLNotationDecl* const notationDecl) const +{ + return fNotationDeclPool->put(notationDecl); +} + +inline bool SchemaGrammar::getValidated() const +{ + return fValidated; +} + +inline void SchemaGrammar::setValidated(const bool newState) +{ + fValidated = newState; +} + +inline unsigned int +SchemaGrammar::getScopeCount () const +{ + return fScopeCount; +} + +inline void +SchemaGrammar::setScopeCount (unsigned int scopeCount) +{ + fScopeCount = scopeCount; +} + +inline unsigned int +SchemaGrammar::getAnonTypeCount () const +{ + return fAnonTypeCount; +} + +inline void +SchemaGrammar::setAnonTypeCount (unsigned int count) +{ + fAnonTypeCount = count; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaInfo.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaInfo.hpp new file mode 100644 index 000000000000..baa5b2e06882 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaInfo.hpp @@ -0,0 +1,432 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SCHEMAINFO_HPP) +#define XERCESC_INCLUDE_GUARD_SCHEMAINFO_HPP + + +/** When in a , type definitions being used (and indeed + * refs to 's and 's) may refer to info + * items either in the schema being redefined, in the , + * or else in the schema doing the redefining. Because of this + * latter we have to be prepared sometimes to look for our type + * definitions outside the schema stored in fSchemaRootElement. + * This simple class does this; it's just a linked list that + * lets us look at the 's on the queue; note also that this + * should provide us with a mechanism to handle nested 's. + * It's also a handy way of saving schema info when importing/including. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- +class XMLScanner; +class ValidationContext; +class NamespaceScope; + +class VALIDATORS_EXPORT SchemaInfo : public XMemory +{ +public: + + enum ListType { + // Redefine is treated as an include + IMPORT = 1, + INCLUDE = 2 + }; + + enum { + C_ComplexType, + C_SimpleType, + C_Group, + C_Attribute, + C_AttributeGroup, + C_Element, + C_Notation, + + C_Count + }; + + // ----------------------------------------------------------------------- + // Constructor/Destructor + // ----------------------------------------------------------------------- + SchemaInfo(const unsigned short fElemAttrDefaultQualified, + const int blockDefault, + const int finalDefault, + const int targetNSURI, + const NamespaceScope* const currNamespaceScope, + const XMLCh* const schemaURL, + const XMLCh* const targetNSURIString, + const DOMElement* const root, + XMLScanner* xmlScanner, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~SchemaInfo(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XMLCh* getCurrentSchemaURL() const; + const XMLCh* getTargetNSURIString() const; + const DOMElement* getRoot() const; + bool getProcessed() const; + int getBlockDefault() const; + int getFinalDefault() const; + int getTargetNSURI() const; + NamespaceScope* getNamespaceScope() const; + unsigned short getElemAttrDefaultQualified() const; + BaseRefVectorEnumerator getImportingListEnumerator() const; + ValueVectorOf* getRecursingAnonTypes() const; + ValueVectorOf* getRecursingTypeNames() const; + ValueVectorOf* getNonXSAttList() const; + ValidationContext* getValidationContext() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setProcessed(const bool aValue = true); + void setBlockDefault(const int aValue); + void setFinalDefault(const int aValue); + void setElemAttrDefaultQualified(const unsigned short aValue); + void resetRoot (); + + // ----------------------------------------------------------------------- + // Access methods + // ----------------------------------------------------------------------- + void addSchemaInfo(SchemaInfo* const toAdd, const ListType aListType); + bool containsInfo(const SchemaInfo* const toCheck, const ListType aListType) const; + SchemaInfo* getImportInfo(const unsigned int namespaceURI) const; + DOMElement* getTopLevelComponent(const unsigned short compCategory, + const XMLCh* const compName, + const XMLCh* const name); + DOMElement* getTopLevelComponent(const unsigned short compCategory, + const XMLCh* const compName, + const XMLCh* const name, + SchemaInfo** enclosingSchema); + void updateImportingInfo(SchemaInfo* const importingInfo); + bool circularImportExist(const unsigned int nameSpaceURI); + bool isFailedRedefine(const DOMElement* const anElem); + void addFailedRedefine(const DOMElement* const anElem); + void addRecursingType(const DOMElement* const elem, const XMLCh* const name); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SchemaInfo(const SchemaInfo&); + SchemaInfo& operator=(const SchemaInfo&); + + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void clearTopLevelComponents(); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fAdoptInclude; + bool fProcessed; + unsigned short fElemAttrDefaultQualified; + int fBlockDefault; + int fFinalDefault; + int fTargetNSURI; + NamespaceScope* fNamespaceScope; + XMLCh* fCurrentSchemaURL; + XMLCh* fTargetNSURIString; + const DOMElement* fSchemaRootElement; + RefVectorOf* fIncludeInfoList; + RefVectorOf* fImportedInfoList; + RefVectorOf* fImportingInfoList; + ValueVectorOf* fFailedRedefineList; + ValueVectorOf* fRecursingAnonTypes; + ValueVectorOf* fRecursingTypeNames; + RefHashTableOf* fTopLevelComponents[C_Count]; + DOMElement* fLastTopLevelComponent[C_Count]; + ValueVectorOf* fNonXSAttList; + ValidationContext* fValidationContext; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// SchemaInfo: Getter methods +// --------------------------------------------------------------------------- +inline unsigned short SchemaInfo::getElemAttrDefaultQualified() const { + + return fElemAttrDefaultQualified; +} + +inline bool SchemaInfo::getProcessed() const { + + return fProcessed; +} + +inline int SchemaInfo::getBlockDefault() const { + + return fBlockDefault; +} + +inline int SchemaInfo::getFinalDefault() const { + + return fFinalDefault; +} + +inline NamespaceScope* SchemaInfo::getNamespaceScope() const { + return fNamespaceScope; +} + +inline XMLCh* SchemaInfo::getCurrentSchemaURL() const { + + return fCurrentSchemaURL; +} + +inline const XMLCh* SchemaInfo::getTargetNSURIString() const { + + return fTargetNSURIString; +} + +inline const DOMElement* SchemaInfo::getRoot() const { + + return fSchemaRootElement; +} + +inline int SchemaInfo::getTargetNSURI() const { + + return fTargetNSURI; +} + +inline BaseRefVectorEnumerator +SchemaInfo::getImportingListEnumerator() const { + + return BaseRefVectorEnumerator(fImportingInfoList); +} + +inline ValueVectorOf* +SchemaInfo::getRecursingAnonTypes() const { + + return fRecursingAnonTypes; +} + + +inline ValueVectorOf* +SchemaInfo::getRecursingTypeNames() const { + + return fRecursingTypeNames; +} + +inline ValueVectorOf* SchemaInfo::getNonXSAttList() const +{ + return fNonXSAttList; +} + +// --------------------------------------------------------------------------- +// Setter methods +// --------------------------------------------------------------------------- +inline void SchemaInfo::setBlockDefault(const int aValue) { + + fBlockDefault = aValue; +} + +inline void SchemaInfo::setFinalDefault(const int aValue) { + + fFinalDefault = aValue; +} + +inline void SchemaInfo::setElemAttrDefaultQualified(const unsigned short aValue) { + + fElemAttrDefaultQualified = aValue; +} + +inline void SchemaInfo::setProcessed(const bool aValue) { + + fProcessed = aValue; + +/* if (fProcessed && fIncludeInfoList) { + + unsigned int includeListLen = fIncludeInfoList->size()); + for (unsigned int i = 0; i < includeListLen; i++) { + fIncludeInfoList->elementAt(i)->clearTopLevelComponents(); + } + }*/ +} + +inline void SchemaInfo::resetRoot () +{ + fSchemaRootElement = 0; +} + +// --------------------------------------------------------------------------- +// SchemaInfo: Access methods +// --------------------------------------------------------------------------- +inline void SchemaInfo::addSchemaInfo(SchemaInfo* const toAdd, + const ListType aListType) { + + if (aListType == IMPORT) { + + if (!fImportedInfoList) + fImportedInfoList = new (fMemoryManager) RefVectorOf(4, false, fMemoryManager); + + if (!fImportedInfoList->containsElement(toAdd)) { + + fImportedInfoList->addElement(toAdd); + toAdd->updateImportingInfo(this); + } + } + else { + + if (!fIncludeInfoList) { + + fIncludeInfoList = new (fMemoryManager) RefVectorOf(8, false, fMemoryManager); + fAdoptInclude = true; + } + + if (!fIncludeInfoList->containsElement(toAdd)) { + + fIncludeInfoList->addElement(toAdd); + //code was originally: + //toAdd->fIncludeInfoList = fIncludeInfoList; + //however for handling multiple imports this was causing + //to schemaInfo's to have the same fIncludeInfoList which they + //both owned so when it was deleted it crashed. + if (toAdd->fIncludeInfoList) { + if (toAdd->fIncludeInfoList != fIncludeInfoList) { + XMLSize_t size = toAdd->fIncludeInfoList->size(); + for (XMLSize_t i=0; icontainsElement(toAdd->fIncludeInfoList->elementAt(i))) { + fIncludeInfoList->addElement(toAdd->fIncludeInfoList->elementAt(i)); + } + } + size = fIncludeInfoList->size(); + for (XMLSize_t j=0; jfIncludeInfoList->containsElement(fIncludeInfoList->elementAt(j))) { + toAdd->fIncludeInfoList->addElement(fIncludeInfoList->elementAt(j)); + } + } + } + } + else { + toAdd->fIncludeInfoList = fIncludeInfoList; + } + } + } +} + +inline SchemaInfo* SchemaInfo::getImportInfo(const unsigned int namespaceURI) const { + + XMLSize_t importSize = (fImportedInfoList) ? fImportedInfoList->size() : 0; + SchemaInfo* currInfo = 0; + + for (XMLSize_t i=0; i < importSize; i++) { + + currInfo = fImportedInfoList->elementAt(i); + + if (currInfo->getTargetNSURI() == (int) namespaceURI) + return currInfo; + } + + return 0; +} + +inline ValidationContext* SchemaInfo::getValidationContext() const { + + return fValidationContext; +} + +inline bool SchemaInfo::containsInfo(const SchemaInfo* const toCheck, + const ListType aListType) const { + + if ((aListType == INCLUDE) && fIncludeInfoList) { + return fIncludeInfoList->containsElement(toCheck); + } + else if ((aListType == IMPORT) && fImportedInfoList) { + return fImportedInfoList->containsElement(toCheck); + } + + return false; +} + +inline bool SchemaInfo::circularImportExist(const unsigned int namespaceURI) { + + XMLSize_t importSize = fImportingInfoList->size(); + + for (XMLSize_t i=0; i < importSize; i++) { + if (fImportingInfoList->elementAt(i)->getTargetNSURI() == (int) namespaceURI) { + return true; + } + } + + return false; +} + +inline bool SchemaInfo::isFailedRedefine(const DOMElement* const anElem) { + + if (fFailedRedefineList) + return (fFailedRedefineList->containsElement(anElem)); + + return false; +} + +inline void SchemaInfo::addFailedRedefine(const DOMElement* const anElem) { + + if (!fFailedRedefineList) { + fFailedRedefineList = new (fMemoryManager) ValueVectorOf(4, fMemoryManager); + } + + fFailedRedefineList->addElement(anElem); +} + +inline void SchemaInfo::addRecursingType(const DOMElement* const elem, + const XMLCh* const name) { + + if (!fRecursingAnonTypes) { + fRecursingAnonTypes = new (fMemoryManager) ValueVectorOf(8, fMemoryManager); + fRecursingTypeNames = new (fMemoryManager) ValueVectorOf(8, fMemoryManager); + } + + fRecursingAnonTypes->addElement(elem); + fRecursingTypeNames->addElement(name); +} + +inline void SchemaInfo::clearTopLevelComponents() { + + for (unsigned int i = 0; i < C_Count; i++) { + + delete fTopLevelComponents[i]; + fTopLevelComponents[i] = 0; + fLastTopLevelComponent[i] = 0; + } +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file SchemaInfo.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaSymbols.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaSymbols.hpp new file mode 100644 index 000000000000..d501b765a934 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaSymbols.hpp @@ -0,0 +1,254 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SCHEMASYMBOLS_HPP) +#define XERCESC_INCLUDE_GUARD_SCHEMASYMBOLS_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/* + * Collection of symbols used to parse a Schema Grammar + */ + +class VALIDATORS_EXPORT SchemaSymbols +{ +public : + // ----------------------------------------------------------------------- + // Constant data + // ----------------------------------------------------------------------- + static const XMLCh fgURI_XSI[]; + static const XMLCh fgURI_SCHEMAFORSCHEMA[]; + // deprecated (typo) + static const XMLCh fgXSI_SCHEMALOCACTION[]; + // deprecated (typo) + static const XMLCh fgXSI_NONAMESPACESCHEMALOCACTION[]; + static const XMLCh fgXSI_SCHEMALOCATION[]; + static const XMLCh fgXSI_NONAMESPACESCHEMALOCATION[]; + static const XMLCh fgXSI_TYPE[]; + static const XMLCh fgELT_ALL[]; + static const XMLCh fgELT_ANNOTATION[]; + static const XMLCh fgELT_ANY[]; + static const XMLCh fgELT_WILDCARD[]; + static const XMLCh fgELT_ANYATTRIBUTE[]; + static const XMLCh fgELT_APPINFO[]; + static const XMLCh fgELT_ATTRIBUTE[]; + static const XMLCh fgELT_ATTRIBUTEGROUP[]; + static const XMLCh fgELT_CHOICE[]; + static const XMLCh fgELT_COMPLEXTYPE[]; + static const XMLCh fgELT_CONTENT[]; + static const XMLCh fgELT_DOCUMENTATION[]; + static const XMLCh fgELT_DURATION[]; + static const XMLCh fgELT_ELEMENT[]; + static const XMLCh fgELT_ENCODING[]; + static const XMLCh fgELT_ENUMERATION[]; + static const XMLCh fgELT_FIELD[]; + static const XMLCh fgELT_WHITESPACE[]; + static const XMLCh fgELT_GROUP[]; + static const XMLCh fgELT_IMPORT[]; + static const XMLCh fgELT_INCLUDE[]; + static const XMLCh fgELT_REDEFINE[]; + static const XMLCh fgELT_KEY[]; + static const XMLCh fgELT_KEYREF[]; + static const XMLCh fgELT_LENGTH[]; + static const XMLCh fgELT_MAXEXCLUSIVE[]; + static const XMLCh fgELT_MAXINCLUSIVE[]; + static const XMLCh fgELT_MAXLENGTH[]; + static const XMLCh fgELT_MINEXCLUSIVE[]; + static const XMLCh fgELT_MININCLUSIVE[]; + static const XMLCh fgELT_MINLENGTH[]; + static const XMLCh fgELT_NOTATION[]; + static const XMLCh fgELT_PATTERN[]; + static const XMLCh fgELT_PERIOD[]; + static const XMLCh fgELT_TOTALDIGITS[]; + static const XMLCh fgELT_FRACTIONDIGITS[]; + static const XMLCh fgELT_SCHEMA[]; + static const XMLCh fgELT_SELECTOR[]; + static const XMLCh fgELT_SEQUENCE[]; + static const XMLCh fgELT_SIMPLETYPE[]; + static const XMLCh fgELT_UNION[]; + static const XMLCh fgELT_LIST[]; + static const XMLCh fgELT_UNIQUE[]; + static const XMLCh fgELT_COMPLEXCONTENT[]; + static const XMLCh fgELT_SIMPLECONTENT[]; + static const XMLCh fgELT_RESTRICTION[]; + static const XMLCh fgELT_EXTENSION[]; + static const XMLCh fgATT_ABSTRACT[]; + static const XMLCh fgATT_ATTRIBUTEFORMDEFAULT[]; + static const XMLCh fgATT_BASE[]; + static const XMLCh fgATT_ITEMTYPE[]; + static const XMLCh fgATT_MEMBERTYPES[]; + static const XMLCh fgATT_BLOCK[]; + static const XMLCh fgATT_BLOCKDEFAULT[]; + static const XMLCh fgATT_DEFAULT[]; + static const XMLCh fgATT_ELEMENTFORMDEFAULT[]; + static const XMLCh fgATT_SUBSTITUTIONGROUP[]; + static const XMLCh fgATT_FINAL[]; + static const XMLCh fgATT_FINALDEFAULT[]; + static const XMLCh fgATT_FIXED[]; + static const XMLCh fgATT_FORM[]; + static const XMLCh fgATT_ID[]; + static const XMLCh fgATT_MAXOCCURS[]; + static const XMLCh fgATT_MINOCCURS[]; + static const XMLCh fgATT_NAME[]; + static const XMLCh fgATT_NAMESPACE[]; + static const XMLCh fgATT_NILL[]; + static const XMLCh fgATT_NILLABLE[]; + static const XMLCh fgATT_PROCESSCONTENTS[]; + static const XMLCh fgATT_REF[]; + static const XMLCh fgATT_REFER[]; + static const XMLCh fgATT_SCHEMALOCATION[]; + static const XMLCh fgATT_SOURCE[]; + static const XMLCh fgATT_SYSTEM[]; + static const XMLCh fgATT_PUBLIC[]; + static const XMLCh fgATT_TARGETNAMESPACE[]; + static const XMLCh fgATT_TYPE[]; + static const XMLCh fgATT_USE[]; + static const XMLCh fgATT_VALUE[]; + static const XMLCh fgATT_MIXED[]; + static const XMLCh fgATT_VERSION[]; + static const XMLCh fgATT_XPATH[]; + static const XMLCh fgATTVAL_TWOPOUNDANY[]; + static const XMLCh fgATTVAL_TWOPOUNDLOCAL[]; + static const XMLCh fgATTVAL_TWOPOUNDOTHER[]; + static const XMLCh fgATTVAL_TWOPOUNDTRAGETNAMESPACE[]; + static const XMLCh fgATTVAL_POUNDALL[]; + static const XMLCh fgATTVAL_BASE64[]; + static const XMLCh fgATTVAL_BOOLEAN[]; + static const XMLCh fgATTVAL_DEFAULT[]; + static const XMLCh fgATTVAL_ELEMENTONLY[]; + static const XMLCh fgATTVAL_EMPTY[]; + static const XMLCh fgATTVAL_EXTENSION[]; + static const XMLCh fgATTVAL_FALSE[]; + static const XMLCh fgATTVAL_FIXED[]; + static const XMLCh fgATTVAL_HEX[]; + static const XMLCh fgATTVAL_ID[]; + static const XMLCh fgATTVAL_LAX[]; + static const XMLCh fgATTVAL_MAXLENGTH[]; + static const XMLCh fgATTVAL_MINLENGTH[]; + static const XMLCh fgATTVAL_MIXED[]; + static const XMLCh fgATTVAL_NCNAME[]; + static const XMLCh fgATTVAL_OPTIONAL[]; + static const XMLCh fgATTVAL_PROHIBITED[]; + static const XMLCh fgATTVAL_QNAME[]; + static const XMLCh fgATTVAL_QUALIFIED[]; + static const XMLCh fgATTVAL_REQUIRED[]; + static const XMLCh fgATTVAL_RESTRICTION[]; + static const XMLCh fgATTVAL_SKIP[]; + static const XMLCh fgATTVAL_STRICT[]; + static const XMLCh fgATTVAL_STRING[]; + static const XMLCh fgATTVAL_TEXTONLY[]; + static const XMLCh fgATTVAL_TIMEDURATION[]; + static const XMLCh fgATTVAL_TRUE[]; + static const XMLCh fgATTVAL_UNQUALIFIED[]; + static const XMLCh fgATTVAL_URI[]; + static const XMLCh fgATTVAL_URIREFERENCE[]; + static const XMLCh fgATTVAL_SUBSTITUTIONGROUP[]; + static const XMLCh fgATTVAL_SUBSTITUTION[]; + static const XMLCh fgATTVAL_ANYTYPE[]; + static const XMLCh fgWS_PRESERVE[]; + static const XMLCh fgWS_COLLAPSE[]; + static const XMLCh fgWS_REPLACE[]; + static const XMLCh fgDT_STRING[]; + static const XMLCh fgDT_TOKEN[]; + static const XMLCh fgDT_LANGUAGE[]; + static const XMLCh fgDT_NAME[]; + static const XMLCh fgDT_NCNAME[]; + static const XMLCh fgDT_INTEGER[]; + static const XMLCh fgDT_DECIMAL[]; + static const XMLCh fgDT_BOOLEAN[]; + static const XMLCh fgDT_NONPOSITIVEINTEGER[]; + static const XMLCh fgDT_NEGATIVEINTEGER[]; + static const XMLCh fgDT_LONG[]; + static const XMLCh fgDT_INT[]; + static const XMLCh fgDT_SHORT[]; + static const XMLCh fgDT_BYTE[]; + static const XMLCh fgDT_NONNEGATIVEINTEGER[]; + static const XMLCh fgDT_ULONG[]; + static const XMLCh fgDT_UINT[]; + static const XMLCh fgDT_USHORT[]; + static const XMLCh fgDT_UBYTE[]; + static const XMLCh fgDT_POSITIVEINTEGER[]; +//datetime + static const XMLCh fgDT_DATETIME[]; + static const XMLCh fgDT_DATE[]; + static const XMLCh fgDT_TIME[]; + static const XMLCh fgDT_DURATION[]; + static const XMLCh fgDT_DAY[]; + static const XMLCh fgDT_MONTH[]; + static const XMLCh fgDT_MONTHDAY[]; + static const XMLCh fgDT_YEAR[]; + static const XMLCh fgDT_YEARMONTH[]; + + static const XMLCh fgDT_BASE64BINARY[]; + static const XMLCh fgDT_HEXBINARY[]; + static const XMLCh fgDT_FLOAT[]; + static const XMLCh fgDT_DOUBLE[]; + static const XMLCh fgDT_URIREFERENCE[]; + static const XMLCh fgDT_ANYURI[]; + static const XMLCh fgDT_QNAME[]; + static const XMLCh fgDT_NORMALIZEDSTRING[]; + static const XMLCh fgDT_ANYSIMPLETYPE[]; + static const XMLCh fgRegEx_XOption[]; + static const XMLCh fgRedefIdentifier[]; + static const int fgINT_MIN_VALUE; + static const int fgINT_MAX_VALUE; + + enum { + XSD_EMPTYSET = 0, + XSD_SUBSTITUTION = 1, + XSD_EXTENSION = 2, + XSD_RESTRICTION = 4, + XSD_LIST = 8, + XSD_UNION = 16, + XSD_ENUMERATION = 32 + }; + + // group orders + enum { + XSD_CHOICE = 0, + XSD_SEQUENCE= 1, + XSD_ALL = 2 + }; + + enum { + XSD_UNBOUNDED = -1, + XSD_NILLABLE = 1, + XSD_ABSTRACT = 2, + XSD_FIXED = 4 + }; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SchemaSymbols(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file SchemaSymbols.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaValidator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaValidator.hpp new file mode 100644 index 000000000000..51b14f78928a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SchemaValidator.hpp @@ -0,0 +1,443 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SCHEMAVALIDATOR_HPP) +#define XERCESC_INCLUDE_GUARD_SCHEMAVALIDATOR_HPP + +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class GrammarResolver; +class DatatypeValidator; +class SchemaElementDecl; + +// +// This is a derivative of the abstract validator interface. This class +// implements a validator that supports standard XML Schema semantics. +// This class handles scanning the of the schema, and provides +// the standard validation services against the Schema info it found. +// +class VALIDATORS_EXPORT SchemaValidator : public XMLValidator +{ +public: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + SchemaValidator + ( + XMLErrorReporter* const errReporter = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + virtual ~SchemaValidator(); + + // ----------------------------------------------------------------------- + // Implementation of the XMLValidator interface + // ----------------------------------------------------------------------- + virtual bool checkContent + ( + XMLElementDecl* const elemDecl + , QName** const children + , XMLSize_t childCount + , XMLSize_t* indexFailingChild + ); + + virtual void faultInAttr + ( + XMLAttr& toFill + , const XMLAttDef& attDef + ) const; + + virtual void preContentValidation(bool reuseGrammar, + bool validateDefAttr = false); + + virtual void postParseValidation(); + + virtual void reset(); + + virtual bool requiresNamespaces() const; + + virtual void validateAttrValue + ( + const XMLAttDef* attDef + , const XMLCh* const attrValue + , bool preValidation = false + , const XMLElementDecl* elemDecl = 0 + ); + + virtual void validateElement + ( + const XMLElementDecl* elemDef + ); + + virtual Grammar* getGrammar() const; + virtual void setGrammar(Grammar* aGrammar); + + // ----------------------------------------------------------------------- + // Virtual DTD handler interface. + // ----------------------------------------------------------------------- + virtual bool handlesDTD() const; + + // ----------------------------------------------------------------------- + // Virtual Schema handler interface. handlesSchema() always return false. + // ----------------------------------------------------------------------- + virtual bool handlesSchema() const; + + // ----------------------------------------------------------------------- + // Schema Validator methods + // ----------------------------------------------------------------------- + void normalizeWhiteSpace(DatatypeValidator* dV, const XMLCh* const value, XMLBuffer& toFill, bool bStandalone = false); + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setGrammarResolver(GrammarResolver* grammarResolver); + + void setXsiType(const XMLCh* const prefix + , const XMLCh* const localPart + , const unsigned int uriId); + + void setNillable(bool isNil); + void resetNillable(); + void setErrorReporter(XMLErrorReporter* const errorReporter); + void setExitOnFirstFatal(const bool newValue); + void setDatatypeBuffer(const XMLCh* const value); + void clearDatatypeBuffer(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + ComplexTypeInfo* getCurrentTypeInfo() const; + DatatypeValidator *getCurrentDatatypeValidator() const; + DatatypeValidator *getMostRecentAttrValidator() const; + bool getErrorOccurred() const; + bool getIsElemSpecified() const; + bool getIsXsiTypeSet() const; + const XMLCh* getNormalizedValue() const; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SchemaValidator(const SchemaValidator&); + SchemaValidator& operator=(const SchemaValidator&); + + // ----------------------------------------------------------------------- + // Element Consistency Checking methods + // ----------------------------------------------------------------------- + void checkRefElementConsistency(SchemaGrammar* const currentGrammar, + const ComplexTypeInfo* const curTypeInfo, + const XercesGroupInfo* const curGroup = 0); + + // ----------------------------------------------------------------------- + // Particle Derivation Checking methods + // ----------------------------------------------------------------------- + void checkParticleDerivation(SchemaGrammar* const currentGrammar, + const ComplexTypeInfo* const typeInfo); + void checkParticleDerivationOk(SchemaGrammar* const currentGrammar, + ContentSpecNode* const curNode, + const int derivedScope, + ContentSpecNode* const baseNode, + const int baseScope, + const ComplexTypeInfo* const baseInfo = 0, + const bool toCheckOccurrence = true); + ContentSpecNode* checkForPointlessOccurrences(ContentSpecNode* const specNode, + const ContentSpecNode::NodeTypes nodeType, + ValueVectorOf* const nodes); + void gatherChildren(const ContentSpecNode::NodeTypes parentNodeType, + ContentSpecNode* const specNode, + ValueVectorOf* const nodes); + bool isOccurrenceRangeOK(const int min1, const int max1, const int min2, const int max2); + void checkNSCompat(const ContentSpecNode* const derivedSpecNode, + const ContentSpecNode* const baseSpecNode, + const bool toCheckOccurence); + bool wildcardEltAllowsNamespace(const ContentSpecNode* const baseSpecNode, + const unsigned int derivedURI); + void checkNameAndTypeOK(SchemaGrammar* const currentGrammar, + const ContentSpecNode* const derivedSpecNode, + const int derivedScope, + const ContentSpecNode* const baseSpecNode, + const int baseScope, + const ComplexTypeInfo* const baseInfo = 0); + SchemaElementDecl* findElement(const int scope, + const unsigned int uriIndex, + const XMLCh* const name, + SchemaGrammar* const grammar, + const ComplexTypeInfo* const typeInfo = 0); + void checkICRestriction(const SchemaElementDecl* const derivedElemDecl, + const SchemaElementDecl* const baseElemDecl, + const XMLCh* const derivedElemName, + const XMLCh* const baseElemName); + void checkTypesOK(const SchemaElementDecl* const derivedElemDecl, + const SchemaElementDecl* const baseElemDecl, + const XMLCh* const derivedElemName); + void checkRecurseAsIfGroup(SchemaGrammar* const currentGrammar, + ContentSpecNode* const derivedSpecNode, + const int derivedScope, + const ContentSpecNode* const baseSpecNode, + const int baseScope, + ValueVectorOf* const nodes, + const ComplexTypeInfo* const baseInfo); + void checkRecurse(SchemaGrammar* const currentGrammar, + const ContentSpecNode* const derivedSpecNode, + const int derivedScope, + ValueVectorOf* const derivedNodes, + const ContentSpecNode* const baseSpecNode, + const int baseScope, + ValueVectorOf* const baseNodes, + const ComplexTypeInfo* const baseInfo, + const bool toLax = false); + void checkNSSubset(const ContentSpecNode* const derivedSpecNode, + const ContentSpecNode* const baseSpecNode); + bool checkNSSubsetChoiceRoot(const ContentSpecNode* const derivedSpecNode, + const ContentSpecNode* const baseSpecNode); + bool checkNSSubsetChoice(const ContentSpecNode* const derivedSpecNode, + const ContentSpecNode* const baseSpecNode); + bool isWildCardEltSubset(const ContentSpecNode* const derivedSpecNode, + const ContentSpecNode* const baseSpecNode); + void checkNSRecurseCheckCardinality(SchemaGrammar* const currentGrammar, + const ContentSpecNode* const derivedSpecNode, + ValueVectorOf* const derivedNodes, + const int derivedScope, + ContentSpecNode* const baseSpecNode, + const bool toCheckOccurence); + void checkRecurseUnordered(SchemaGrammar* const currentGrammar, + const ContentSpecNode* const derivedSpecNode, + ValueVectorOf* const derivedNodes, + const int derivedScope, + ContentSpecNode* const baseSpecNode, + ValueVectorOf* const baseNodes, + const int baseScope, + const ComplexTypeInfo* const baseInfo); + void checkMapAndSum(SchemaGrammar* const currentGrammar, + const ContentSpecNode* const derivedSpecNode, + ValueVectorOf* const derivedNodes, + const int derivedScope, + ContentSpecNode* const baseSpecNode, + ValueVectorOf* const baseNodes, + const int baseScope, + const ComplexTypeInfo* const baseInfo); + ContentSpecNode* getNonUnaryGroup(ContentSpecNode* const pNode); + + // ----------------------------------------------------------------------- + // Private data members + // + // ----------------------------------------------------------------------- + // The following comes from or set by the Scanner + // fSchemaGrammar + // The current schema grammar used by the validator + // + // fGrammarResolver + // All the schema grammar stored + // + // fXsiType + // Store the Schema Type Attribute Value if schema type is specified + // + // fNil + // Indicates if a nil value is acceptable + // fNilFound + // Indicates if Nillable has been set + // ----------------------------------------------------------------------- + // The following used internally in the validator + // + // fCurrentDatatypeValidator + // The validator used for validating the content of elements + // with simple types + // + // fDatatypeBuffer + // Buffer for simple type element string content + // + // fTrailing + // Previous chunk had a trailing space + // + // fSeenNonWhiteSpace + // Seen a non-whitespace character in the previous chunk + // + // fSeenId + // Indicate if an attribute of ID type has been seen already, reset per element. + // + // fSchemaErrorReporter + // Report schema process errors + // + // fTypeStack + // Stack of complex type declarations. + // + // fMostRecentAttrValidator + // DatatypeValidator that validated attribute most recently processed + // + // fErrorOccurred + // whether an error occurred in the most recent operation + // ----------------------------------------------------------------------- + MemoryManager* fMemoryManager; + SchemaGrammar* fSchemaGrammar; + GrammarResolver* fGrammarResolver; + QName* fXsiType; + bool fNil; + bool fNilFound; + DatatypeValidator* fCurrentDatatypeValidator; + XMLBuffer* fNotationBuf; + XMLBuffer fDatatypeBuffer; + bool fTrailing; + bool fSeenNonWhiteSpace; + bool fSeenId; + XSDErrorReporter fSchemaErrorReporter; + ValueStackOf* fTypeStack; + DatatypeValidator * fMostRecentAttrValidator; + bool fErrorOccurred; + bool fElemIsSpecified; +}; + + +// --------------------------------------------------------------------------- +// SchemaValidator: Setter methods +// --------------------------------------------------------------------------- +inline void SchemaValidator::setGrammarResolver(GrammarResolver* grammarResolver) { + fGrammarResolver = grammarResolver; +} + +inline void SchemaValidator::setXsiType(const XMLCh* const prefix + , const XMLCh* const localPart + , const unsigned int uriId) +{ + delete fXsiType; + fXsiType = new (fMemoryManager) QName(prefix, localPart, uriId, fMemoryManager); +} + +inline void SchemaValidator::setNillable(bool isNil) { + fNil = isNil; + fNilFound = true; +} + +inline void SchemaValidator::resetNillable() { + fNil = false; + fNilFound = false; +} + +inline void SchemaValidator::setExitOnFirstFatal(const bool newValue) { + + fSchemaErrorReporter.setExitOnFirstFatal(newValue); +} + +inline void SchemaValidator::setDatatypeBuffer(const XMLCh* const value) +{ + fDatatypeBuffer.append(value); +} + +inline void SchemaValidator::clearDatatypeBuffer() +{ + fDatatypeBuffer.reset(); +} + +// --------------------------------------------------------------------------- +// SchemaValidator: Getter methods +// --------------------------------------------------------------------------- +inline ComplexTypeInfo* SchemaValidator::getCurrentTypeInfo() const { + if (fTypeStack->empty()) + return 0; + return fTypeStack->peek(); +} + +inline DatatypeValidator * SchemaValidator::getCurrentDatatypeValidator() const +{ + return fCurrentDatatypeValidator; +} +inline DatatypeValidator *SchemaValidator::getMostRecentAttrValidator() const +{ + return fMostRecentAttrValidator; +} + +// --------------------------------------------------------------------------- +// Virtual interface +// --------------------------------------------------------------------------- +inline Grammar* SchemaValidator::getGrammar() const { + return fSchemaGrammar; +} + +inline void SchemaValidator::setGrammar(Grammar* aGrammar) { + fSchemaGrammar = (SchemaGrammar*) aGrammar; +} + +inline void SchemaValidator::setErrorReporter(XMLErrorReporter* const errorReporter) { + + XMLValidator::setErrorReporter(errorReporter); + fSchemaErrorReporter.setErrorReporter(errorReporter); +} + +// --------------------------------------------------------------------------- +// SchemaValidator: DTD handler interface +// --------------------------------------------------------------------------- +inline bool SchemaValidator::handlesDTD() const +{ + // No DTD scanning + return false; +} + +// --------------------------------------------------------------------------- +// SchemaValidator: Schema handler interface +// --------------------------------------------------------------------------- +inline bool SchemaValidator::handlesSchema() const +{ + return true; +} + +// --------------------------------------------------------------------------- +// SchemaValidator: Particle derivation checking +// --------------------------------------------------------------------------- +inline bool +SchemaValidator::isOccurrenceRangeOK(const int min1, const int max1, + const int min2, const int max2) { + + if (min1 >= min2 && + (max2 == SchemaSymbols::XSD_UNBOUNDED || + (max1 != SchemaSymbols::XSD_UNBOUNDED && max1 <= max2))) { + return true; + } + return false; +} + +inline bool SchemaValidator::getErrorOccurred() const +{ + return fErrorOccurred; +} + +inline bool SchemaValidator::getIsElemSpecified() const +{ + return fElemIsSpecified; +} + +inline const XMLCh* SchemaValidator::getNormalizedValue() const +{ + return fDatatypeBuffer.getRawBuffer(); +} + +inline bool SchemaValidator::getIsXsiTypeSet() const +{ + return (fXsiType!=0); +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SubstitutionGroupComparator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SubstitutionGroupComparator.hpp new file mode 100644 index 000000000000..3c04c6c7669d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/SubstitutionGroupComparator.hpp @@ -0,0 +1,126 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_SUBSTITUTIONGROUPCOMPARATOR_HPP) +#define XERCESC_INCLUDE_GUARD_SUBSTITUTIONGROUPCOMPARATOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class SchemaGrammar; + +class VALIDATORS_EXPORT SubstitutionGroupComparator : public XMemory +{ +public: + + // ----------------------------------------------------------------------- + // Public Constructor + // ----------------------------------------------------------------------- + /** @name Constructor. */ + //@{ + + SubstitutionGroupComparator(GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool); + + + //@} + + // ----------------------------------------------------------------------- + // Public Destructor + // ----------------------------------------------------------------------- + /** @name Destructor. */ + //@{ + + ~SubstitutionGroupComparator(); + + //@} + + // ----------------------------------------------------------------------- + // Validation methods + // ----------------------------------------------------------------------- + /** @name Validation Function */ + //@{ + + /** + * Checks that the "anElement" is within the substitution group. + * + * @param anElement QName of the element + * + * @param exemplar QName of the head element in the group + */ + bool isEquivalentTo(const QName* const anElement + , const QName* const exemplar); + //@} + + /* + * check whether one element or any element in its substitution group + * is allowed by a given wildcard uri + * + * @param pGrammar the grammar where the wildcard is declared + * @param element the QName of a given element + * @param wuri the uri of the wildcard + * @param wother whether the uri is from ##other, so wuri is excluded + * + * @return whether the element is allowed by the wildcard + */ + bool isAllowedByWildcard(SchemaGrammar* const pGrammar, QName* const element, unsigned int wuri, bool wother); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SubstitutionGroupComparator(); + SubstitutionGroupComparator(const SubstitutionGroupComparator&); + SubstitutionGroupComparator& operator=(const SubstitutionGroupComparator&); + + // ----------------------------------------------------------------------- + // Private data members + // + // + // ----------------------------------------------------------------------- + GrammarResolver *fGrammarResolver; + XMLStringPool *fStringPool; +}; + + +// --------------------------------------------------------------------------- +// SubstitutionGroupComparator: Getters +// --------------------------------------------------------------------------- +inline SubstitutionGroupComparator::SubstitutionGroupComparator(GrammarResolver* const pGrammarResolver + , XMLStringPool* const pStringPool) +:fGrammarResolver(pGrammarResolver) +,fStringPool(pStringPool) +{} + +inline SubstitutionGroupComparator::~SubstitutionGroupComparator() +{} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file SubstitutionGroupComparator.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/TraverseSchema.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/TraverseSchema.hpp new file mode 100644 index 000000000000..deec07ebb257 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/TraverseSchema.hpp @@ -0,0 +1,925 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_TRAVERSESCHEMA_HPP) +#define XERCESC_INCLUDE_GUARD_TRAVERSESCHEMA_HPP + +/** + * Instances of this class get delegated to Traverse the Schema and + * to populate the SchemaGrammar internal representation. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- +class GrammarResolver; +class XMLEntityHandler; +class XMLScanner; +class DatatypeValidator; +class DatatypeValidatorFactory; +class QName; +class ComplexTypeInfo; +class XMLAttDef; +class NamespaceScope; +class SchemaAttDef; +class InputSource; +class XercesGroupInfo; +class XercesAttGroupInfo; +class IdentityConstraint; +class XSDLocator; +class XSDDOMParser; +class XMLErrorReporter; + + +class VALIDATORS_EXPORT TraverseSchema : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constructors/Destructor + // ----------------------------------------------------------------------- + TraverseSchema + ( + DOMElement* const schemaRoot + , XMLStringPool* const uriStringPool + , SchemaGrammar* const schemaGrammar + , GrammarResolver* const grammarResolver + , RefHash2KeysTableOf* cachedSchemaInfoList + , RefHash2KeysTableOf* schemaInfoList + , XMLScanner* const xmlScanner + , const XMLCh* const schemaURL + , XMLEntityHandler* const entityHandler + , XMLErrorReporter* const errorReporter + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , bool multipleImport = false + ); + + ~TraverseSchema(); + +private: + // This enumeration is defined here for compatibility with the CodeWarrior + // compiler, which apparently doesn't like to accept default parameter + // arguments that it hasn't yet seen. The Not_All_Context argument is + // used in the declaration of checkMinMax, below. + // + // Flags indicate any special restrictions on minOccurs and maxOccurs + // relating to "all". + // Not_All_Context - not processing an + // All_Element - processing an in an + // Group_Ref_With_All - processing reference that contained + // All_Group - processing an group itself + enum + { + Not_All_Context = 0 + , All_Element = 1 + , Group_Ref_With_All = 2 + , All_Group = 4 + }; + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + TraverseSchema(const TraverseSchema&); + TraverseSchema& operator=(const TraverseSchema&); + + // ----------------------------------------------------------------------- + // Init/CleanUp methods + // ----------------------------------------------------------------------- + void init(); + void cleanUp(); + + // ----------------------------------------------------------------------- + // Traversal methods + // ----------------------------------------------------------------------- + /** + * Traverse the Schema DOM tree + */ + void doTraverseSchema(const DOMElement* const schemaRoot); + void preprocessSchema(DOMElement* const schemaRoot, + const XMLCh* const schemaURL, + bool multipleImport = false); + void traverseSchemaHeader(const DOMElement* const schemaRoot); + XSAnnotation* traverseAnnotationDecl(const DOMElement* const childElem, + ValueVectorOf* const nonXSAttList, + const bool topLevel = false); + void traverseInclude(const DOMElement* const childElem); + void traverseImport(const DOMElement* const childElem); + void traverseRedefine(const DOMElement* const childElem); + void traverseAttributeDecl(const DOMElement* const childElem, + ComplexTypeInfo* const typeInfo, + const bool topLevel = false); + void traverseSimpleContentDecl(const XMLCh* const typeName, + const XMLCh* const qualifiedName, + const DOMElement* const contentDecl, + ComplexTypeInfo* const typeInfo, + Janitor* const janAnnot); + void traverseComplexContentDecl(const XMLCh* const typeName, + const DOMElement* const contentDecl, + ComplexTypeInfo* const typeInfo, + const bool isMixed, + Janitor* const janAnnot); + DatatypeValidator* traverseSimpleTypeDecl(const DOMElement* const childElem, + const bool topLevel = true, + int baseRefContext = SchemaSymbols::XSD_EMPTYSET); + int traverseComplexTypeDecl(const DOMElement* const childElem, + const bool topLevel = true, + const XMLCh* const recursingTypeName = 0); + DatatypeValidator* traverseByList(const DOMElement* const rootElem, + const DOMElement* const contentElem, + const XMLCh* const typeName, + const XMLCh* const qualifiedName, + const int finalSet, + Janitor* const janAnnot); + DatatypeValidator* traverseByRestriction(const DOMElement* const rootElem, + const DOMElement* const contentElem, + const XMLCh* const typeName, + const XMLCh* const qualifiedName, + const int finalSet, + Janitor* const janAnnot); + DatatypeValidator* traverseByUnion(const DOMElement* const rootElem, + const DOMElement* const contentElem, + const XMLCh* const typeName, + const XMLCh* const qualifiedName, + const int finalSet, + int baseRefContext, + Janitor* const janAnnot); + SchemaElementDecl* traverseElementDecl(const DOMElement* const childElem, + const bool topLevel = false); + const XMLCh* traverseNotationDecl(const DOMElement* const childElem); + const XMLCh* traverseNotationDecl(const DOMElement* const childElem, + const XMLCh* const name, + const XMLCh* const uriStr); + ContentSpecNode* traverseChoiceSequence(const DOMElement* const elemDecl, + const int modelGroupType, + bool& hasChildren); + ContentSpecNode* traverseAny(const DOMElement* const anyDecl); + ContentSpecNode* traverseAll(const DOMElement* const allElem, + bool& hasChildren); + XercesGroupInfo* traverseGroupDecl(const DOMElement* const childElem, + const bool topLevel = true); + XercesAttGroupInfo* traverseAttributeGroupDecl(const DOMElement* const elem, + ComplexTypeInfo* const typeInfo, + const bool topLevel = false); + XercesAttGroupInfo* traverseAttributeGroupDeclNS(const DOMElement* const elem, + const XMLCh* const uriStr, + const XMLCh* const name); + SchemaAttDef* traverseAnyAttribute(const DOMElement* const elem); + void traverseKey(const DOMElement* const icElem, + SchemaElementDecl* const elemDecl); + void traverseUnique(const DOMElement* const icElem, + SchemaElementDecl* const elemDecl); + void traverseKeyRef(const DOMElement* const icElem, + SchemaElementDecl* const elemDecl); + bool traverseIdentityConstraint(IdentityConstraint* const ic, + const DOMElement* const icElem); + + // ----------------------------------------------------------------------- + // Error Reporting methods + // ----------------------------------------------------------------------- + void reportSchemaError(const XSDLocator* const aLocator, + const XMLCh* const msgDomain, + const int errorCode); + void reportSchemaError(const XSDLocator* const aLocator, + const XMLCh* const msgDomain, + const int errorCode, + const XMLCh* const text1, + const XMLCh* const text2 = 0, + const XMLCh* const text3 = 0, + const XMLCh* const text4 = 0); + void reportSchemaError(const DOMElement* const elem, + const XMLCh* const msgDomain, + const int errorCode); + void reportSchemaError(const DOMElement* const elem, + const XMLCh* const msgDomain, + const int errorCode, + const XMLCh* const text1, + const XMLCh* const text2 = 0, + const XMLCh* const text3 = 0, + const XMLCh* const text4 = 0); + void reportSchemaError(const DOMElement* const elem, + const XMLException& except); + + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + /** + * Keep track of the xs:import found + */ + bool isImportingNS(const int namespaceURI); + void addImportedNS(const int namespaceURI); + + /** + * Retrieved the Namespace mapping from the schema element + */ + bool retrieveNamespaceMapping(const DOMElement* const elem); + + /** + * Loop through the children, and traverse the corresponding schema type + * type declaration (simpleType, complexType, import, ....) + */ + void processChildren(const DOMElement* const root); + void preprocessChildren(const DOMElement* const root); + + void preprocessImport(const DOMElement* const elemNode); + void preprocessInclude(const DOMElement* const elemNode); + void preprocessRedefine(const DOMElement* const elemNode); + + /** + * Parameters: + * rootElem - top element for a given type declaration + * contentElem - content must be annotation? or some other simple content + * isEmpty: - true if (annotation?, smth_else), false if (annotation?) + * processAnnot - default is true, false if reprocessing a complex type + * since we have already processed the annotation. + * + * Check for Annotation if it is present, traverse it. If a sibling is + * found and it is not an annotation return it, otherwise return 0. + * Used by traverseSimpleTypeDecl. + */ + DOMElement* checkContent(const DOMElement* const rootElem, + DOMElement* const contentElem, + const bool isEmpty, bool processAnnot = true); + + /** + * Parameters: + * contentElem - content element to check + * + * Check for identity constraints content. + */ + const DOMElement* checkIdentityConstraintContent(const DOMElement* const contentElem); + + DatatypeValidator* getDatatypeValidator(const XMLCh* const uriStr, + const XMLCh* const localPartStr); + + /** + * Process simpleType content of a list|restriction|union + * Return a dataype validator if valid type, otherwise 0. + */ + DatatypeValidator* checkForSimpleTypeValidator(const DOMElement* const content, + int baseRefContext = SchemaSymbols::XSD_EMPTYSET); + + /** + * Process complexType content of an element + * Return a ComplexTypeInfo if valid type, otherwise 0. + */ + ComplexTypeInfo* checkForComplexTypeInfo(const DOMElement* const content); + + /** + * Return DatatypeValidator available for the baseTypeStr. + */ + DatatypeValidator* findDTValidator(const DOMElement* const elem, + const XMLCh* const derivedTypeName, + const XMLCh* const baseTypeName, + const int baseRefContext); + + const XMLCh* resolvePrefixToURI(const DOMElement* const elem, + const XMLCh* const prefix); + + /** + * Return the prefix for a given rawname string + * + * Function allocated, caller managed (facm) - pointer to be deleted by + * caller. + */ + const XMLCh* getPrefix(const XMLCh* const rawName); + + /** + * Return the local for a given rawname string + * + * caller allocated, caller managed (cacm) + */ + const XMLCh* getLocalPart(const XMLCh* const rawName); + + /** + * Process a 'ref' of an Element declaration + */ + SchemaElementDecl* processElementDeclRef(const DOMElement* const elem, + const XMLCh* const refName); + void processElemDeclAttrs(const DOMElement* const elem, + SchemaElementDecl* const elemDecl, + const XMLCh*& valConstraint, + bool isTopLevel = false); + void processElemDeclIC(DOMElement* const elem, + SchemaElementDecl* const elemDecl); + bool checkElemDeclValueConstraint(const DOMElement* const elem, + SchemaElementDecl* const elemDecl, + const XMLCh* const valConstraint, + ComplexTypeInfo* const typeInfo, + DatatypeValidator* const validator); + + /** + * Process a 'ref' of an Attribute declaration + */ + void processAttributeDeclRef(const DOMElement* const elem, + ComplexTypeInfo* const typeInfo, + const XMLCh* const refName, + const XMLCh* const useVal, + const XMLCh* const defaultVal, + const XMLCh* const fixedVal); + + /** + * Process a 'ref' on a group + */ + XercesGroupInfo* processGroupRef(const DOMElement* const elem, + const XMLCh* const refName); + + /** + * Process a 'ref' on a attributeGroup + */ + XercesAttGroupInfo* processAttributeGroupRef(const DOMElement* const elem, + const XMLCh* const refName, + ComplexTypeInfo* const typeInfo); + + /** + * Parse block & final items + */ + int parseBlockSet(const DOMElement* const elem, const int blockType, const bool isRoot = false); + int parseFinalSet(const DOMElement* const elem, const int finalType, const bool isRoot = false); + + /** + * Return true if a name is an identity constraint, otherwise false + */ + bool isIdentityConstraintName(const XMLCh* const constraintName); + + /** + * If 'typeStr' belongs to a different schema, return that schema URI, + * otherwise return 0; + */ + const XMLCh* checkTypeFromAnotherSchema(const DOMElement* const elem, + const XMLCh* const typeStr); + + /** + * Return the datatype validator for a given element type attribute if + * the type is a simple type + */ + DatatypeValidator* getElementTypeValidator(const DOMElement* const elem, + const XMLCh* const typeStr, + bool& noErrorDetected, + const XMLCh* const otherSchemaURI); + + /** + * Return the complexType info for a given element type attribute if + * the type is a complex type + */ + ComplexTypeInfo* getElementComplexTypeInfo(const DOMElement* const elem, + const XMLCh* const typeStr, + const XMLCh* const otherSchemaURI); + + /** + * Return global schema element declaration for a given element name + */ + SchemaElementDecl* getGlobalElemDecl(const DOMElement* const elem, + const XMLCh* const name); + + /** + * Check validity constraint of a substitutionGroup attribute in + * an element declaration + */ + bool isSubstitutionGroupValid(const DOMElement* const elem, + const SchemaElementDecl* const elemDecl, + const ComplexTypeInfo* const typeInfo, + const DatatypeValidator* const validator, + const XMLCh* const elemName, + const bool toEmit = true); + + bool isSubstitutionGroupCircular(SchemaElementDecl* const elemDecl, + SchemaElementDecl* const subsElemDecl); + + void processSubstitutionGroup(const DOMElement* const elem, + SchemaElementDecl* const elemDecl, + ComplexTypeInfo*& typeInfo, + DatatypeValidator*& validator, + const XMLCh* const subsElemQName); + + /** + * Create a 'SchemaElementDecl' object and add it to SchemaGrammar + */ + SchemaElementDecl* createSchemaElementDecl(const DOMElement* const elem, + const XMLCh* const name, + bool& isDuplicate, + const XMLCh*& valConstraint, + const bool topLevel); + + /** + * Return the value of a given attribute name from an element node + */ + const XMLCh* getElementAttValue(const DOMElement* const elem, + const XMLCh* const attName, + const DatatypeValidator::ValidatorType attType = DatatypeValidator::UnKnown); + + /* return minOccurs */ + int checkMinMax(ContentSpecNode* const specNode, + const DOMElement* const elem, + const int allContext = Not_All_Context); + + /** + * Process complex content for a complexType + */ + void processComplexContent(const DOMElement* const elem, + const XMLCh* const typeName, + const DOMElement* const childElem, + ComplexTypeInfo* const typeInfo, + const XMLCh* const baseLocalPart, + const bool isMixed, + const bool isBaseAnyType = false); + + /** + * Process "base" information for a complexType + */ + void processBaseTypeInfo(const DOMElement* const elem, + const XMLCh* const baseName, + const XMLCh* const localPart, + const XMLCh* const uriStr, + ComplexTypeInfo* const typeInfo); + + /** + * Check if base is from another schema + */ + bool isBaseFromAnotherSchema(const XMLCh* const baseURI); + + /** + * Get complexType infp from another schema + */ + ComplexTypeInfo* getTypeInfoFromNS(const DOMElement* const elem, + const XMLCh* const uriStr, + const XMLCh* const localPart); + + DatatypeValidator* + getAttrDatatypeValidatorNS(const DOMElement* const elem, + const XMLCh* localPart, + const XMLCh* typeURI); + + /** + * Returns true if a DOM Element is an attribute or attribute group + */ + bool isAttrOrAttrGroup(const DOMElement* const elem); + + /** + * Process attributes of a complex type + */ + void processAttributes(const DOMElement* const elem, + const DOMElement* const attElem, + ComplexTypeInfo* const typeInfo, + const bool isBaseAnyType = false); + + /** + * Generate a name for an anonymous type + */ + const XMLCh* genAnonTypeName(const XMLCh* const prefix); + + void defaultComplexTypeInfo(ComplexTypeInfo* const typeInfo); + + /** + * Resolve a schema location attribute value to an input source. + * Caller to delete the returned object. + */ + InputSource* resolveSchemaLocation + ( + const XMLCh* const loc + , const XMLResourceIdentifier::ResourceIdentifierType resourceIdentitiferType + , const XMLCh* const nameSpace=0 + ); + + void restoreSchemaInfo(SchemaInfo* const toRestore, + SchemaInfo::ListType const aListType = SchemaInfo::INCLUDE, + const unsigned int saveScope = Grammar::TOP_LEVEL_SCOPE); + void popCurrentTypeNameStack(); + + /** + * Check whether a mixed content is emptiable or not. + * Needed to validate element constraint values (defualt, fixed) + */ + bool emptiableParticle(const ContentSpecNode* const specNode); + + void checkFixedFacet(const DOMElement* const, const XMLCh* const, + const DatatypeValidator* const, unsigned int&); + void buildValidSubstitutionListF(const DOMElement* const elem, + SchemaElementDecl* const, + SchemaElementDecl* const); + void buildValidSubstitutionListB(const DOMElement* const elem, + SchemaElementDecl* const, + SchemaElementDecl* const); + + void checkEnumerationRequiredNotation(const DOMElement* const elem, + const XMLCh* const name, + const XMLCh* const typeStr); + + void processElements(const DOMElement* const elem, + ComplexTypeInfo* const baseTypeInfo, + ComplexTypeInfo* const newTypeInfo); + + void processElements(const DOMElement* const elem, + XercesGroupInfo* const fromGroup, + ComplexTypeInfo* const typeInfo); + + void copyGroupElements(const DOMElement* const elem, + XercesGroupInfo* const fromGroup, + XercesGroupInfo* const toGroup, + ComplexTypeInfo* const typeInfo); + + void copyAttGroupAttributes(const DOMElement* const elem, + XercesAttGroupInfo* const fromAttGroup, + XercesAttGroupInfo* const toAttGroup, + ComplexTypeInfo* const typeInfo); + + void checkForEmptyTargetNamespace(const DOMElement* const elem); + + /** + * Attribute wild card intersection. + * + * Note: + * The first parameter will be the result of the intersection, so + * we need to make sure that first parameter is a copy of the + * actual attribute definition we need to intersect with. + * + * What we need to wory about is: type, defaultType, namespace, + * and URI. All remaining data members should be the same. + */ + void attWildCardIntersection(SchemaAttDef* const resultWildCart, + const SchemaAttDef* const toCompareWildCard); + + /** + * Attribute wild card union. + * + * Note: + * The first parameter will be the result of the union, so + * we need to make sure that first parameter is a copy of the + * actual attribute definition we need to intersect with. + * + * What we need to wory about is: type, defaultType, namespace, + * and URI. All remaining data members should be the same. + */ + void attWildCardUnion(SchemaAttDef* const resultWildCart, + const SchemaAttDef* const toCompareWildCard); + + void copyWildCardData(const SchemaAttDef* const srcWildCard, + SchemaAttDef* const destWildCard); + + /** + * Check that the attributes of a type derived by restriction satisfy + * the constraints of derivation valid restriction + */ + void checkAttDerivationOK(const DOMElement* const elem, + const ComplexTypeInfo* const baseTypeInfo, + const ComplexTypeInfo* const childTypeInfo); + void checkAttDerivationOK(const DOMElement* const elem, + const XercesAttGroupInfo* const baseAttGrpInfo, + const XercesAttGroupInfo* const childAttGrpInfo); + + /** + * Check whether a namespace value is valid with respect to wildcard + * constraint + */ + bool wildcardAllowsNamespace(const SchemaAttDef* const baseAttWildCard, + const unsigned int nameURI); + + /** + * Check whether a namespace constraint is an intensional subset of + * another namespace constraint + */ + bool isWildCardSubset(const SchemaAttDef* const baseAttWildCard, + const SchemaAttDef* const childAttWildCard); + + bool openRedefinedSchema(const DOMElement* const redefineElem); + + /** + * The purpose of this method is twofold: + * 1. To find and appropriately modify all information items + * in redefinedSchema with names that are redefined by children of + * redefineElem. + * 2. To make sure the redefine element represented by + * redefineElem is valid as far as content goes and with regard to + * properly referencing components to be redefined. + * + * No traversing is done here! + * This method also takes actions to find and, if necessary, modify + * the names of elements in 's in the schema that's being + * redefined. + */ + void renameRedefinedComponents(const DOMElement* const redefineElem, + SchemaInfo* const redefiningSchemaInfo, + SchemaInfo* const redefinedSchemaInfo); + + /** + * This method returns true if the redefine component is valid, and if + * it was possible to revise it correctly. + */ + bool validateRedefineNameChange(const DOMElement* const redefineChildElem, + const XMLCh* const redefineChildElemName, + const XMLCh* const redefineChildDeclName, + const int redefineNameCounter, + SchemaInfo* const redefiningSchemaInfo); + + /** + * This function looks among the children of 'redefineChildElem' for a + * component of type 'redefineChildComponentName'. If it finds one, it + * evaluates whether its ref attribute contains a reference to + * 'refChildTypeName'. If it does, it returns 1 + the value returned by + * calls to itself on all other children. In all other cases it returns + * 0 plus the sum of the values returned by calls to itself on + * redefineChildElem's children. It also resets the value of ref so that + * it will refer to the renamed type from the schema being redefined. + */ + int changeRedefineGroup(const DOMElement* const redefineChildElem, + const XMLCh* const redefineChildComponentName, + const XMLCh* const redefineChildTypeName, + const int redefineNameCounter); + + /** This simple function looks for the first occurrence of a + * 'redefineChildTypeName' item in the redefined schema and appropriately + * changes the value of its name. If it turns out that what we're looking + * for is in a though, then we just rename it--and it's + * reference--to be the same. + */ + void fixRedefinedSchema(const DOMElement* const elem, + SchemaInfo* const redefinedSchemaInfo, + const XMLCh* const redefineChildComponentName, + const XMLCh* const redefineChildTypeName, + const int redefineNameCounter); + + void getRedefineNewTypeName(const XMLCh* const oldTypeName, + const int redefineCounter, + XMLBuffer& newTypeName); + + /** + * This purpose of this method is threefold: + * 1. To extract the schema information of included/redefined schema. + * 2. Rename redefined components. + * 3. Process components of included/redefined schemas + */ + void preprocessRedefineInclude(SchemaInfo* const currSchemaInfo); + + /** + * Update the list of valid substitution groups in the case of circular + * import. + */ + void updateCircularSubstitutionList(SchemaInfo* const aSchemaInfo); + + void processKeyRefFor(SchemaInfo* const aSchemaInfo, + ValueVectorOf* const infoList); + + void processAttValue(const XMLCh* const attVal, XMLBuffer& aBuf); + + // routine to generate synthetic annotations + XSAnnotation* generateSyntheticAnnotation(const DOMElement* const elem + , ValueVectorOf* nonXSAttList); + + // routine to validate annotations + void validateAnnotations(); + + // ----------------------------------------------------------------------- + // Private constants + // ----------------------------------------------------------------------- + enum + { + ES_Block + , C_Block + , S_Final + , EC_Final + , ECS_Final + }; + + enum ExceptionCodes + { + NoException = 0, + InvalidComplexTypeInfo = 1, + RecursingElement = 2 + }; + + enum + { + Elem_Def_Qualified = 1, + Attr_Def_Qualified = 2 + }; + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fFullConstraintChecking; + int fTargetNSURI; + int fEmptyNamespaceURI; + unsigned int fCurrentScope; + unsigned int fScopeCount; + unsigned int fAnonXSTypeCount; + XMLSize_t fCircularCheckIndex; + const XMLCh* fTargetNSURIString; + DatatypeValidatorFactory* fDatatypeRegistry; + GrammarResolver* fGrammarResolver; + SchemaGrammar* fSchemaGrammar; + XMLEntityHandler* fEntityHandler; + XMLErrorReporter* fErrorReporter; + XMLStringPool* fURIStringPool; + XMLStringPool* fStringPool; + XMLBuffer fBuffer; + XMLScanner* fScanner; + RefHashTableOf* fAttributeDeclRegistry; + RefHashTableOf* fComplexTypeRegistry; + RefHashTableOf* fGroupRegistry; + RefHashTableOf* fAttGroupRegistry; + RefHashTableOf* fIC_ElementsNS; + RefHashTableOf* fPreprocessedNodes; + SchemaInfo* fSchemaInfo; + XercesGroupInfo* fCurrentGroupInfo; + XercesAttGroupInfo* fCurrentAttGroupInfo; + ComplexTypeInfo* fCurrentComplexType; + ValueVectorOf* fCurrentTypeNameStack; + ValueVectorOf* fCurrentGroupStack; + ValueVectorOf* fIC_Elements; + ValueVectorOf* fDeclStack; + ValueVectorOf** fGlobalDeclarations; + ValueVectorOf* fNonXSAttList; + ValueVectorOf* fImportedNSList; + RefHashTableOf, PtrHasher>* fIC_NodeListNS; + RefHash2KeysTableOf* fNotationRegistry; + RefHash2KeysTableOf* fRedefineComponents; + RefHash2KeysTableOf* fIdentityConstraintNames; + RefHash2KeysTableOf* fValidSubstitutionGroups; + RefHash2KeysTableOf* fSchemaInfoList; + RefHash2KeysTableOf* fCachedSchemaInfoList; + XSDDOMParser* fParser; + XSDErrorReporter fXSDErrorReporter; + XSDLocator* fLocator; + MemoryManager* fMemoryManager; + MemoryManager* fGrammarPoolMemoryManager; + XSAnnotation* fAnnotation; + GeneralAttributeCheck fAttributeCheck; + + friend class GeneralAttributeCheck; + friend class NamespaceScopeManager; +}; + + +// --------------------------------------------------------------------------- +// TraverseSchema: Helper methods +// --------------------------------------------------------------------------- +inline const XMLCh* TraverseSchema::getPrefix(const XMLCh* const rawName) { + + int colonIndex = XMLString::indexOf(rawName, chColon); + + if (colonIndex == -1 || colonIndex == 0) { + return XMLUni::fgZeroLenString; + } + + fBuffer.set(rawName, colonIndex); + + return fStringPool->getValueForId(fStringPool->addOrFind(fBuffer.getRawBuffer())); +} + +inline const XMLCh* TraverseSchema::getLocalPart(const XMLCh* const rawName) { + + int colonIndex = XMLString::indexOf(rawName, chColon); + XMLSize_t rawNameLen = XMLString::stringLen(rawName); + + if (XMLSize_t(colonIndex + 1) == rawNameLen) { + return XMLUni::fgZeroLenString; + } + + if (colonIndex == -1) { + fBuffer.set(rawName, rawNameLen); + } + else { + + fBuffer.set(rawName + colonIndex + 1, rawNameLen - colonIndex - 1); + } + + return fStringPool->getValueForId(fStringPool->addOrFind(fBuffer.getRawBuffer())); +} + +inline void +TraverseSchema::checkForEmptyTargetNamespace(const DOMElement* const elem) { + + const XMLCh* targetNS = getElementAttValue(elem, SchemaSymbols::fgATT_TARGETNAMESPACE); + + if (targetNS && !*targetNS) { + reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidTargetNSValue); + } +} + +inline bool TraverseSchema::isBaseFromAnotherSchema(const XMLCh* const baseURI) +{ + if (!XMLString::equals(baseURI,fTargetNSURIString) + && !XMLString::equals(baseURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) + && (baseURI && *baseURI)) { + //REVISIT, !!!! a hack: for schema that has no + //target namespace, e.g. personal-schema.xml + return true; + } + + return false; +} + +inline bool TraverseSchema::isAttrOrAttrGroup(const DOMElement* const elem) { + + const XMLCh* elementName = elem->getLocalName(); + + if (XMLString::equals(elementName, SchemaSymbols::fgELT_ATTRIBUTE) || + XMLString::equals(elementName, SchemaSymbols::fgELT_ATTRIBUTEGROUP) || + XMLString::equals(elementName, SchemaSymbols::fgELT_ANYATTRIBUTE)) { + return true; + } + + return false; +} + +inline const XMLCh* TraverseSchema::genAnonTypeName(const XMLCh* const prefix) { + + XMLCh anonCountStr[16]; // a count of 15 digits should be enough + + XMLString::sizeToText(fAnonXSTypeCount++, anonCountStr, 15, 10, fMemoryManager); + fBuffer.set(prefix); + fBuffer.append(anonCountStr); + + return fStringPool->getValueForId(fStringPool->addOrFind(fBuffer.getRawBuffer())); +} + +inline void TraverseSchema::popCurrentTypeNameStack() { + + XMLSize_t stackSize = fCurrentTypeNameStack->size(); + + if (stackSize != 0) { + fCurrentTypeNameStack->removeElementAt(stackSize - 1); + } +} + +inline void +TraverseSchema::copyWildCardData(const SchemaAttDef* const srcWildCard, + SchemaAttDef* const destWildCard) { + + destWildCard->getAttName()->setURI(srcWildCard->getAttName()->getURI()); + destWildCard->setType(srcWildCard->getType()); + destWildCard->setDefaultType(srcWildCard->getDefaultType()); +} + +inline void TraverseSchema::getRedefineNewTypeName(const XMLCh* const oldTypeName, + const int redefineCounter, + XMLBuffer& newTypeName) { + + newTypeName.set(oldTypeName); + + for (int i=0; i < redefineCounter; i++) { + newTypeName.append(SchemaSymbols::fgRedefIdentifier); + } +} + +inline bool TraverseSchema::isImportingNS(const int namespaceURI) { + + if (!fImportedNSList) + return false; + + return (fImportedNSList->containsElement(namespaceURI)); +} + +inline void TraverseSchema::addImportedNS(const int namespaceURI) { + + if (!fImportedNSList) { + fImportedNSList = new (fMemoryManager) ValueVectorOf(4, fMemoryManager); + } + + if (!fImportedNSList->containsElement(namespaceURI)) + fImportedNSList->addElement(namespaceURI); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file TraverseSchema.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp new file mode 100644 index 000000000000..f284a0571822 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp @@ -0,0 +1,185 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XMLSCHEMADESCRIPTIONIMPL_HPP) +#define XERCESC_INCLUDE_GUARD_XMLSCHEMADESCRIPTIONIMPL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLAttDefs; + +class XMLPARSER_EXPORT XMLSchemaDescriptionImpl : public XMLSchemaDescription +{ +public : + // ----------------------------------------------------------------------- + /** @name constructor and destructor */ + // ----------------------------------------------------------------------- + //@{ + XMLSchemaDescriptionImpl( + const XMLCh* const targetNamespace + , MemoryManager* const memMgr + ); + + ~XMLSchemaDescriptionImpl(); + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of GrammarDescription Interface */ + // ----------------------------------------------------------------------- + //@{ + /** + * getGrammarKey + * + */ + virtual const XMLCh* getGrammarKey() const; + //@} + + // ----------------------------------------------------------------------- + /** @name Implementation of SchemaDescription Interface */ + // ----------------------------------------------------------------------- + //@{ + + /** + * getContextType + * + */ + virtual ContextType getContextType() const; + + /** + * getTargetNamespace + * + */ + virtual const XMLCh* getTargetNamespace() const; + + /** + * getLocationHints + * + */ + virtual const RefArrayVectorOf* getLocationHints() const; + + /** + * getTriggeringComponent + * + */ + virtual const QName* getTriggeringComponent() const; + + /** + * getenclosingElementName + * + */ + virtual const QName* getEnclosingElementName() const; + + /** + * getAttributes + * + */ + virtual const XMLAttDef* getAttributes() const; + + /** + * setContextType + * + */ + virtual void setContextType(ContextType); + + /** + * setTargetNamespace + * + */ + virtual void setTargetNamespace(const XMLCh* const); + + /** + * setLocationHints + * + */ + virtual void setLocationHints(const XMLCh* const); + + /** + * setTriggeringComponent + * + */ + virtual void setTriggeringComponent(QName* const); + + /** + * getenclosingElementName + * + */ + virtual void setEnclosingElementName(QName* const); + + /** + * setAttributes + * + */ + virtual void setAttributes(XMLAttDef* const); + //@} + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLSchemaDescriptionImpl) + + XMLSchemaDescriptionImpl(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); + +private : + // ----------------------------------------------------------------------- + /** name Unimplemented copy constructor and operator= */ + // ----------------------------------------------------------------------- + //@{ + XMLSchemaDescriptionImpl(const XMLSchemaDescriptionImpl& ); + XMLSchemaDescriptionImpl& operator=(const XMLSchemaDescriptionImpl& ); + //@} + + // ----------------------------------------------------------------------- + // Private data members + // + // All data member in this implementation are owned to out survive + // parser. Except for fNamespace which is replicated upon set, the + // rest shall be created by the embedded memoryManager. + // + // fContextType + // + // fNamespace owned + // + // fLocationHints owned + // + // fTriggeringComponent owned + // + // fEnclosingElementName owned + // + // fAttributes referenced + // + // ----------------------------------------------------------------------- + + XMLSchemaDescription::ContextType fContextType; + const XMLCh* fNamespace; + RefArrayVectorOf* fLocationHints; + const QName* fTriggeringComponent; + const QName* fEnclosingElementName; + const XMLAttDef* fAttributes; + +}; + + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XSDDOMParser.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XSDDOMParser.hpp new file mode 100644 index 000000000000..43cf11cc8ac7 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XSDDOMParser.hpp @@ -0,0 +1,322 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSDDOMPARSER_HPP) +#define XERCESC_INCLUDE_GUARD_XSDDOMPARSER_HPP + + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMElement; +class XMLValidator; + + +/** + * This class is used to parse schema documents into DOM trees + */ +class PARSERS_EXPORT XSDDOMParser : public XercesDOMParser +{ +public : + + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + /** @name Constructors and Destructor */ + //@{ + /** Construct a XSDDOMParser, with an optional validator + * + * Constructor with an instance of validator class to use for + * validation. If you don't provide a validator, a default one will + * be created for you in the scanner. + * + * @param gramPool Pointer to the grammar pool instance from + * external application. + * The parser does NOT own it. + * + * @param valToAdopt Pointer to the validator instance to use. The + * parser is responsible for freeing the memory. + */ + XSDDOMParser + ( + XMLValidator* const valToAdopt = 0 + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + , XMLGrammarPool* const gramPool = 0 + ); + + /** + * Destructor + */ + ~XSDDOMParser(); + + //@} + + // ----------------------------------------------------------------------- + // Implementation of the XMLDocumentHandler interface. + // ----------------------------------------------------------------------- + + /** @name Implementation of the XMLDocumentHandler interface. */ + //@{ + + /** Handle a start element event + * + * This method is used to report the start of an element. It is + * called at the end of the element, by which time all attributes + * specified are also parsed. A new DOM Element node is created + * along with as many attribute nodes as required. This new element + * is added appended as a child of the current node in the tree, and + * then replaces it as the current node (if the isEmpty flag is false.) + * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + * @param attrList A const reference to the object containing the + * list of attributes just scanned for this element. + * @param attrCount A count of number of attributes in the list + * specified by the parameter 'attrList'. + * @param isEmpty A flag indicating whether this is an empty element + * or not. If empty, then no endElement() call will + * be made. + * @param isRoot A flag indicating whether this element was the + * root element. + * @see DocumentHandler#startElement + */ + virtual void startElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const XMLCh* const elemPrefix + , const RefVectorOf& attrList + , const XMLSize_t attrCount + , const bool isEmpty + , const bool isRoot + ); + + /** Handle and end of element event + * + * This method is used to indicate the end tag of an element. The + * DOM parser pops the current element off the top of the element + * stack, and make it the new current element. + * + * @param elemDecl A const reference to the object containing element + * declaration information. + * @param urlId An id referring to the namespace prefix, if + * namespaces setting is switched on. + * @param isRoot A flag indicating whether this element was the + * root element. + * @param elemPrefix A const pointer to a Unicode string containing + * the namespace prefix for this element. Applicable + * only when namespace processing is enabled. + */ + virtual void endElement + ( + const XMLElementDecl& elemDecl + , const unsigned int urlId + , const bool isRoot + , const XMLCh* const elemPrefix + ); + + /** Handle document character events + * + * This method is used to report all the characters scanned by the + * parser. This DOM implementation stores this data in the appropriate + * DOM node, creating one if necessary. + * + * @param chars A const pointer to a Unicode string representing the + * character data. + * @param length The length of the Unicode string returned in 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + */ + virtual void docCharacters + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + /** Handle a document comment event + * + * This method is used to report any comments scanned by the parser. + * A new comment node is created which stores this data. + * + * @param comment A const pointer to a null terminated Unicode + * string representing the comment text. + */ + virtual void docComment + ( + const XMLCh* const comment + ); + + /** Handle a start entity reference event + * + * This method is used to indicate the start of an entity reference. + * If the expand entity reference flag is true, then a new + * DOM Entity reference node is created. + * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void startEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** Handle and end of entity reference event + * + * This method is used to indicate that an end of an entity reference + * was just scanned. + * + * @param entDecl A const reference to the object containing the + * entity declaration information. + */ + virtual void endEntityReference + ( + const XMLEntityDecl& entDecl + ); + + /** Handle an ignorable whitespace vent + * + * This method is used to report all the whitespace characters, which + * are determined to be 'ignorable'. This distinction between characters + * is only made, if validation is enabled. + * + * Any whitespace before content is ignored. If the current node is + * already of type DOMNode::TEXT_NODE, then these whitespaces are + * appended, otherwise a new Text node is created which stores this + * data. Essentially all contiguous ignorable characters are collected + * in one node. + * + * @param chars A const pointer to a Unicode string representing the + * ignorable whitespace character data. + * @param length The length of the Unicode string 'chars'. + * @param cdataSection A flag indicating if the characters represent + * content from the CDATA section. + */ + virtual void ignorableWhitespace + ( + const XMLCh* const chars + , const XMLSize_t length + , const bool cdataSection + ); + + //@} + + // ----------------------------------------------------------------------- + // Get methods + // ----------------------------------------------------------------------- + bool getSawFatal() const; + + + // ----------------------------------------------------------------------- + // Set methods + // ----------------------------------------------------------------------- + void setUserErrorReporter(XMLErrorReporter* const errorReporter); + void setUserEntityHandler(XMLEntityHandler* const entityHandler); + + + // ----------------------------------------------------------------------- + // XMLErrorReporter interface + // ----------------------------------------------------------------------- + virtual void error + ( + const unsigned int errCode + , const XMLCh* const errDomain + , const ErrTypes type + , const XMLCh* const errorText + , const XMLCh* const systemId + , const XMLCh* const publicId + , const XMLFileLoc lineNum + , const XMLFileLoc colNum + ); + + // ----------------------------------------------------------------------- + // XMLEntityHandler interface + // ----------------------------------------------------------------------- + virtual InputSource* resolveEntity(XMLResourceIdentifier* resourceIdentifier); + +protected : + // ----------------------------------------------------------------------- + // Protected Helper methods + // ----------------------------------------------------------------------- + virtual DOMElement* createElementNSNode(const XMLCh *fNamespaceURI, + const XMLCh *qualifiedName); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XSDDOMParser(const XSDDOMParser&); + XSDDOMParser& operator=(const XSDDOMParser&); + + // ----------------------------------------------------------------------- + // Private Helper methods + // ----------------------------------------------------------------------- + void startAnnotation + ( + const XMLElementDecl& elemDecl + , const RefVectorOf& attrList + , const XMLSize_t attrCount + ); + void startAnnotationElement + ( + const XMLElementDecl& elemDecl + , const RefVectorOf& attrList + , const XMLSize_t attrCount + ); + void endAnnotationElement + ( + const XMLElementDecl& elemDecl + , bool complete + ); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fSawFatal; + int fAnnotationDepth; + int fInnerAnnotationDepth; + int fDepth; + XMLErrorReporter* fUserErrorReporter; + XMLEntityHandler* fUserEntityHandler; + ValueVectorOf* fURIs; + XMLBuffer fAnnotationBuf; + XSDErrorReporter fXSDErrorReporter; + XSDLocator fXSLocator; +}; + + +inline bool XSDDOMParser::getSawFatal() const +{ + return fSawFatal; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XSDErrorReporter.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XSDErrorReporter.hpp new file mode 100644 index 000000000000..39055a58d396 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XSDErrorReporter.hpp @@ -0,0 +1,115 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSDERRORREPORTER_HPP) +#define XERCESC_INCLUDE_GUARD_XSDERRORREPORTER_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class Locator; +class XMLErrorReporter; + + +/** + * This class reports schema errors + */ +class VALIDATORS_EXPORT XSDErrorReporter : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors are hidden, only the virtual destructor is exposed + // ----------------------------------------------------------------------- + XSDErrorReporter(XMLErrorReporter* const errorReporter = 0); + + virtual ~XSDErrorReporter() + { + } + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getExitOnFirstFatal() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setErrorReporter(XMLErrorReporter* const errorReporter); + void setExitOnFirstFatal(const bool newValue); + + // ----------------------------------------------------------------------- + // Report error methods + // ----------------------------------------------------------------------- + void emitError(const unsigned int toEmit, + const XMLCh* const msgDomain, + const Locator* const aLocator); + void emitError(const unsigned int toEmit, + const XMLCh* const msgDomain, + const Locator* const aLocator, + const XMLCh* const text1, + const XMLCh* const text2 = 0, + const XMLCh* const text3 = 0, + const XMLCh* const text4 = 0, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + void emitError(const XMLException& except, + const Locator* const aLocator); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and destructor + // ----------------------------------------------------------------------- + XSDErrorReporter(const XSDErrorReporter&); + XSDErrorReporter& operator=(const XSDErrorReporter&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fExitOnFirstFatal; + XMLErrorReporter* fErrorReporter; +}; + + +// --------------------------------------------------------------------------- +// XSDErrorReporter: Getter methods +// --------------------------------------------------------------------------- +inline bool XSDErrorReporter::getExitOnFirstFatal() const +{ + return fExitOnFirstFatal; +} + +// --------------------------------------------------------------------------- +// XSDErrorReporter: Setter methods +// --------------------------------------------------------------------------- +inline void XSDErrorReporter::setExitOnFirstFatal(const bool newValue) +{ + fExitOnFirstFatal = newValue; +} + +inline void XSDErrorReporter::setErrorReporter(XMLErrorReporter* const errorReporter) +{ + fErrorReporter = errorReporter; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XSDLocator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XSDLocator.hpp new file mode 100644 index 000000000000..9bc8dd89fcb0 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XSDLocator.hpp @@ -0,0 +1,141 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XSDLOCATOR_HPP) +#define XERCESC_INCLUDE_GUARD_XSDLOCATOR_HPP + +/** + * A Locator implementation + */ + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT XSDLocator: public XMemory, public Locator +{ +public: + + /** @name Constructors and Destructor */ + //@{ + /** Default constructor */ + XSDLocator(); + + /** Destructor */ + virtual ~XSDLocator() + { + } + + //@} + + /** @name The locator interface */ + //@{ + /** + * Return the public identifier for the current document event. + *

This will be the public identifier + * @return A string containing the public identifier, or + * null if none is available. + * @see #getSystemId + */ + virtual const XMLCh* getPublicId() const; + + /** + * Return the system identifier for the current document event. + * + *

If the system identifier is a URL, the parser must resolve it + * fully before passing it to the application.

+ * + * @return A string containing the system identifier, or null + * if none is available. + * @see #getPublicId + */ + virtual const XMLCh* getSystemId() const; + + /** + * Return the line number where the current document event ends. + * Note that this is the line position of the first character + * after the text associated with the document event. + * @return The line number, or 0 if none is available. + * @see #getColumnNumber + */ + virtual XMLFileLoc getLineNumber() const; + + /** + * Return the column number where the current document event ends. + * Note that this is the column number of the first + * character after the text associated with the document + * event. The first column in a line is position 1. + * @return The column number, or 0 if none is available. + * @see #getLineNumber + */ + virtual XMLFileLoc getColumnNumber() const; + //@} + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setValues(const XMLCh* const systemId, + const XMLCh* const publicId, + const XMLFileLoc lineNo, const XMLFileLoc columnNo); + +private : + // ----------------------------------------------------------------------- + // Unimplemented constructors and destructor + // ----------------------------------------------------------------------- + XSDLocator(const XSDLocator&); + XSDLocator& operator=(const XSDLocator&); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + XMLFileLoc fLineNo; + XMLFileLoc fColumnNo; + const XMLCh* fSystemId; + const XMLCh* fPublicId; +}; + +// --------------------------------------------------------------------------- +// XSDLocator: Getter methods +// --------------------------------------------------------------------------- +inline XMLFileLoc XSDLocator::getLineNumber() const +{ + return fLineNo; +} + +inline XMLFileLoc XSDLocator::getColumnNumber() const +{ + return fColumnNo; +} + +inline const XMLCh* XSDLocator::getPublicId() const +{ + return fPublicId; +} + +inline const XMLCh* XSDLocator::getSystemId() const +{ + return fSystemId; +} + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XUtil.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XUtil.hpp new file mode 100644 index 000000000000..c07e9edcd1fb --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XUtil.hpp @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XUTIL_HPP) +#define XERCESC_INCLUDE_GUARD_XUTIL_HPP + +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMNode; +class DOMElement; + +/** + * Some useful utility methods. + */ +class VALIDATORS_EXPORT XUtil +{ +public: + + // Finds and returns the first child element node. + static DOMElement* getFirstChildElement(const DOMNode* const parent); + + // Finds and returns the first child node with the given qualifiedname. + static DOMElement* getFirstChildElementNS(const DOMNode* const parent + , const XMLCh** const elemNames + , const XMLCh* const uriStr + , unsigned int length); + + // Finds and returns the next sibling element node. + static DOMElement* getNextSiblingElement(const DOMNode* const node); + + static DOMElement* getNextSiblingElementNS(const DOMNode* const node + , const XMLCh** const elemNames + , const XMLCh* const uriStr + , unsigned int length); + +private: + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + + // This class cannot be instantiated. + XUtil() {}; + ~XUtil() {}; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XercesAttGroupInfo.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XercesAttGroupInfo.hpp new file mode 100644 index 000000000000..93b7ea746897 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XercesAttGroupInfo.hpp @@ -0,0 +1,257 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XERCESATTGROUPINFO_HPP) +#define XERCESC_INCLUDE_GUARD_XERCESATTGROUPINFO_HPP + + +/** + * The class act as a place holder to store attributeGroup information. + * + * The class is intended for internal use. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT XercesAttGroupInfo : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constructors/Destructor + // ----------------------------------------------------------------------- + XercesAttGroupInfo + ( + unsigned int attGroupNameId + , unsigned int attGroupNamespaceId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~XercesAttGroupInfo(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool containsTypeWithId() const; + XMLSize_t attributeCount() const; + XMLSize_t anyAttributeCount() const; + unsigned int getNameId() const; + unsigned int getNamespaceId() const; + SchemaAttDef* attributeAt(const XMLSize_t index); + const SchemaAttDef* attributeAt(const XMLSize_t index) const; + SchemaAttDef* anyAttributeAt(const XMLSize_t index); + const SchemaAttDef* anyAttributeAt(const XMLSize_t index) const; + SchemaAttDef* getCompleteWildCard() const; + const SchemaAttDef* getAttDef(const XMLCh* const baseName, + const int uriId) const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setTypeWithId(const bool other); + void addAttDef(SchemaAttDef* const toAdd, const bool toClone = false); + void addAnyAttDef(SchemaAttDef* const toAdd, const bool toClone = false); + void setCompleteWildCard(SchemaAttDef* const toSet); + + // ----------------------------------------------------------------------- + // Query methods + // ----------------------------------------------------------------------- + bool containsAttribute(const XMLCh* const name, const unsigned int uri); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesAttGroupInfo) + XercesAttGroupInfo(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XercesAttGroupInfo(const XercesAttGroupInfo& elemInfo); + XercesAttGroupInfo& operator= (const XercesAttGroupInfo& other); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fTypeWithId; + unsigned int fNameId; + unsigned int fNamespaceId; + RefVectorOf* fAttributes; + RefVectorOf* fAnyAttributes; + SchemaAttDef* fCompleteWildCard; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// XercesAttGroupInfo: Getter methods +// --------------------------------------------------------------------------- +inline bool XercesAttGroupInfo::containsTypeWithId() const { + + return fTypeWithId; +} + +inline XMLSize_t XercesAttGroupInfo::attributeCount() const { + + if (fAttributes) { + return fAttributes->size(); + } + + return 0; +} + +inline XMLSize_t XercesAttGroupInfo::anyAttributeCount() const { + + if (fAnyAttributes) { + return fAnyAttributes->size(); + } + + return 0; +} + +inline unsigned int XercesAttGroupInfo::getNameId() const +{ + return fNameId; +} + +inline unsigned int XercesAttGroupInfo::getNamespaceId() const +{ + return fNamespaceId; +} + +inline SchemaAttDef* +XercesAttGroupInfo::attributeAt(const XMLSize_t index) { + + if (fAttributes) { + return fAttributes->elementAt(index); + } + + return 0; +} + +inline const SchemaAttDef* +XercesAttGroupInfo::attributeAt(const XMLSize_t index) const { + + if (fAttributes) { + return fAttributes->elementAt(index); + } + + return 0; +} + +inline SchemaAttDef* +XercesAttGroupInfo::anyAttributeAt(const XMLSize_t index) { + + if (fAnyAttributes) { + return fAnyAttributes->elementAt(index); + } + + return 0; +} + +inline const SchemaAttDef* +XercesAttGroupInfo::anyAttributeAt(const XMLSize_t index) const { + + if (fAnyAttributes) { + return fAnyAttributes->elementAt(index); + } + + return 0; +} + +inline SchemaAttDef* +XercesAttGroupInfo::getCompleteWildCard() const { + + return fCompleteWildCard; +} + +// --------------------------------------------------------------------------- +// XercesAttGroupInfo: Setter methods +// --------------------------------------------------------------------------- +inline void XercesAttGroupInfo::setTypeWithId(const bool other) { + + fTypeWithId = other; +} + +inline void XercesAttGroupInfo::addAttDef(SchemaAttDef* const toAdd, + const bool toClone) { + + if (!fAttributes) { + fAttributes = new (fMemoryManager) RefVectorOf(4, true, fMemoryManager); + } + + if (toClone) { + SchemaAttDef* clonedAttDef = new (fMemoryManager) SchemaAttDef(toAdd); + + if (!clonedAttDef->getBaseAttDecl()) + clonedAttDef->setBaseAttDecl(toAdd); + + fAttributes->addElement(clonedAttDef); + } + else { + fAttributes->addElement(toAdd); + } +} + +inline void XercesAttGroupInfo::addAnyAttDef(SchemaAttDef* const toAdd, + const bool toClone) { + + if (!fAnyAttributes) { + fAnyAttributes = new (fMemoryManager) RefVectorOf(2, true, fMemoryManager); + } + + if (toClone) { + SchemaAttDef* clonedAttDef = new (fMemoryManager) SchemaAttDef(toAdd); + + if (!clonedAttDef->getBaseAttDecl()) + clonedAttDef->setBaseAttDecl(toAdd); + + fAnyAttributes->addElement(clonedAttDef); + } + else { + fAnyAttributes->addElement(toAdd); + } +} + +inline void +XercesAttGroupInfo::setCompleteWildCard(SchemaAttDef* const toSet) { + + if (fCompleteWildCard) { + delete fCompleteWildCard; + } + + fCompleteWildCard = toSet; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XercesAttGroupInfo.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XercesElementWildcard.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XercesElementWildcard.hpp new file mode 100644 index 000000000000..b47d6289c313 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XercesElementWildcard.hpp @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XERCESELEMENTWILDCARD_HPP) +#define XERCESC_INCLUDE_GUARD_XERCESELEMENTWILDCARD_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward declarations +// --------------------------------------------------------------------------- +class SchemaGrammar; + + +class VALIDATORS_EXPORT XercesElementWildcard +{ + +public : + + // ----------------------------------------------------------------------- + // Class static methods + // ----------------------------------------------------------------------- + /* + * check whether two elements are in conflict + */ + static bool conflict(SchemaGrammar* const pGrammar, + ContentSpecNode::NodeTypes type1, + QName* q1, + ContentSpecNode::NodeTypes type2, + QName* q2, + SubstitutionGroupComparator* comparator); + +private: + + // ----------------------------------------------------------------------- + // private helper methods + // ----------------------------------------------------------------------- + static bool uriInWildcard(SchemaGrammar* const pGrammar, + QName* qname, + unsigned int wildcard, + ContentSpecNode::NodeTypes wtype, + SubstitutionGroupComparator* comparator); + + static bool wildcardIntersect(ContentSpecNode::NodeTypes t1, + unsigned int w1, + ContentSpecNode::NodeTypes t2, + unsigned int w2); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XercesElementWildcard(); + ~XercesElementWildcard(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif // XERCESELEMENTWILDCARD_HPP + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XercesGroupInfo.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XercesGroupInfo.hpp new file mode 100644 index 000000000000..3cd10586062f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/XercesGroupInfo.hpp @@ -0,0 +1,204 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XERCESGROUPINFO_HPP) +#define XERCESC_INCLUDE_GUARD_XERCESGROUPINFO_HPP + + +/** + * The class act as a place holder to store group information. + * + * The class is intended for internal use. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- +class ContentSpecNode; +class XSDLocator; + + +class VALIDATORS_EXPORT XercesGroupInfo : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Public Constructors/Destructor + // ----------------------------------------------------------------------- + XercesGroupInfo + ( + unsigned int groupNameId + , unsigned int groupNamespaceId + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + ~XercesGroupInfo(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getCheckElementConsistency() const; + unsigned int getScope() const; + XMLSize_t elementCount() const; + ContentSpecNode* getContentSpec() const; + SchemaElementDecl* elementAt(const XMLSize_t index); + const SchemaElementDecl* elementAt(const XMLSize_t index) const; + XSDLocator* getLocator() const; + XercesGroupInfo* getBaseGroup() const; + unsigned int getNameId() const; + unsigned int getNamespaceId() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setScope(const unsigned int other); + void setContentSpec(ContentSpecNode* const other); + void addElement(SchemaElementDecl* const toAdd); + void setLocator(XSDLocator* const aLocator); + void setBaseGroup(XercesGroupInfo* const baseGroup); + void setCheckElementConsistency(const bool aValue); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesGroupInfo) + XercesGroupInfo(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XercesGroupInfo(const XercesGroupInfo& elemInfo); + XercesGroupInfo& operator= (const XercesGroupInfo& other); + + // ----------------------------------------------------------------------- + // Private data members + // ----------------------------------------------------------------------- + bool fCheckElementConsistency; + unsigned int fScope; + unsigned int fNameId; + unsigned int fNamespaceId; + ContentSpecNode* fContentSpec; + RefVectorOf* fElements; + XercesGroupInfo* fBaseGroup; // redefine by restriction + XSDLocator* fLocator; +}; + +// --------------------------------------------------------------------------- +// XercesGroupInfo: Getter methods +// --------------------------------------------------------------------------- +inline unsigned int XercesGroupInfo::getScope() const { + + return fScope; +} + +inline XMLSize_t XercesGroupInfo::elementCount() const { + + return fElements->size(); +} + +inline ContentSpecNode* XercesGroupInfo::getContentSpec() const { + + return fContentSpec; +} + +inline SchemaElementDecl* +XercesGroupInfo::elementAt(const XMLSize_t index) { + + return fElements->elementAt(index); +} + +inline const SchemaElementDecl* +XercesGroupInfo::elementAt(const XMLSize_t index) const { + + return fElements->elementAt(index); +} + +inline XSDLocator* XercesGroupInfo::getLocator() const { + + return fLocator; +} + +inline XercesGroupInfo* XercesGroupInfo::getBaseGroup() const { + + return fBaseGroup; +} + +inline bool XercesGroupInfo::getCheckElementConsistency() const { + + return fCheckElementConsistency; +} + +inline unsigned int XercesGroupInfo::getNameId() const +{ + return fNameId; +} + +inline unsigned int XercesGroupInfo::getNamespaceId() const +{ + return fNamespaceId; +} + +// --------------------------------------------------------------------------- +// XercesGroupInfo: Setter methods +// ---------------------------------------------------------------------------} +inline void XercesGroupInfo::setScope(const unsigned int other) { + + fScope = other; +} + +inline void XercesGroupInfo::setContentSpec(ContentSpecNode* const other) { + + fContentSpec = other; +} + +inline void XercesGroupInfo::addElement(SchemaElementDecl* const elem) { + + if (!fElements->containsElement(elem)) + fElements->addElement(elem); +} + +inline void XercesGroupInfo::setBaseGroup(XercesGroupInfo* const baseGroup) { + + fBaseGroup = baseGroup; +} + +inline void XercesGroupInfo::setCheckElementConsistency(const bool aValue) { + + fCheckElementConsistency = aValue; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XercesGroupInfo.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/FieldActivator.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/FieldActivator.hpp new file mode 100644 index 000000000000..6e9dda3f9973 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/FieldActivator.hpp @@ -0,0 +1,141 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_FIELDACTIVATOR_HPP) +#define XERCESC_INCLUDE_GUARD_FIELDACTIVATOR_HPP + +/** + * This class is responsible for activating fields within a specific scope; + * the caller merely requests the fields to be activated. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class IdentityConstraint; +class XPathMatcher; +class ValueStoreCache; +class IC_Field; +class XPathMatcherStack; + + +class VALIDATORS_EXPORT FieldActivator : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + FieldActivator(ValueStoreCache* const valueStoreCache, + XPathMatcherStack* const matcherStack, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + FieldActivator(const FieldActivator& other); + ~FieldActivator(); + + // ----------------------------------------------------------------------- + // Operator methods + // ----------------------------------------------------------------------- + FieldActivator& operator =(const FieldActivator& other); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + bool getMayMatch(IC_Field* const field); + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setValueStoreCache(ValueStoreCache* const other); + void setMatcherStack(XPathMatcherStack* const matcherStack); + void setMayMatch(IC_Field* const field, bool value); + + // ----------------------------------------------------------------------- + // Activation methods + // ----------------------------------------------------------------------- + /** + * Start the value scope for the specified identity constraint. This + * method is called when the selector matches in order to initialize + * the value store. + */ + void startValueScopeFor(const IdentityConstraint* const ic, const int initialDepth); + + /** + * Request to activate the specified field. This method returns the + * matcher for the field. + */ + XPathMatcher* activateField(IC_Field* const field, const int initialDepth); + + /** + * Ends the value scope for the specified identity constraint. + */ + void endValueScopeFor(const IdentityConstraint* const ic, const int initialDepth); + +private: + // ----------------------------------------------------------------------- + // Data + // ----------------------------------------------------------------------- + ValueStoreCache* fValueStoreCache; + XPathMatcherStack* fMatcherStack; + ValueHashTableOf* fMayMatch; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// FieldActivator: Getter methods +// --------------------------------------------------------------------------- +inline bool FieldActivator::getMayMatch(IC_Field* const field) { + + return fMayMatch->get(field); +} + +// --------------------------------------------------------------------------- +// FieldActivator: Setter methods +// --------------------------------------------------------------------------- +inline void FieldActivator::setValueStoreCache(ValueStoreCache* const other) { + + fValueStoreCache = other; +} + +inline void +FieldActivator::setMatcherStack(XPathMatcherStack* const matcherStack) { + + fMatcherStack = matcherStack; +} + +inline void FieldActivator::setMayMatch(IC_Field* const field, bool value) { + + fMayMatch->put(field, value); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file FieldActivator.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/FieldValueMap.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/FieldValueMap.hpp new file mode 100644 index 000000000000..dd39eb705c54 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/FieldValueMap.hpp @@ -0,0 +1,198 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_FIELDVALUEMAP_HPP) +#define XERCESC_INCLUDE_GUARD_FIELDVALUEMAP_HPP + +/** + * This class maps values associated with fields of an identity constraint + * that have successfully matched some string in an instance document. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class IC_Field; +class DatatypeValidator; + + +class VALIDATORS_EXPORT FieldValueMap : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + FieldValueMap(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + FieldValueMap(const FieldValueMap& other); + ~FieldValueMap(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + DatatypeValidator* getDatatypeValidatorAt(const XMLSize_t index) const; + DatatypeValidator* getDatatypeValidatorFor(const IC_Field* const key) const; + XMLCh* getValueAt(const XMLSize_t index) const; + XMLCh* getValueFor(const IC_Field* const key) const; + IC_Field* keyAt(const XMLSize_t index) const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void put(IC_Field* const key, DatatypeValidator* const dv, + const XMLCh* const value); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + XMLSize_t size() const; + bool indexOf(const IC_Field* const key, XMLSize_t& location) const; + void clear(); + +private: + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Unimplemented operators + // ----------------------------------------------------------------------- + FieldValueMap& operator= (const FieldValueMap& other); + + // ----------------------------------------------------------------------- + // Data + // ----------------------------------------------------------------------- + ValueVectorOf* fFields; + ValueVectorOf* fValidators; + RefArrayVectorOf* fValues; + MemoryManager* fMemoryManager; +}; + + +// --------------------------------------------------------------------------- +// FieldValueMap: Getter methods +// --------------------------------------------------------------------------- +inline DatatypeValidator* +FieldValueMap::getDatatypeValidatorAt(const XMLSize_t index) const { + + if (fValidators) { + return fValidators->elementAt(index); + } + + return 0; +} + +inline DatatypeValidator* +FieldValueMap::getDatatypeValidatorFor(const IC_Field* const key) const { + + XMLSize_t location; + if (fValidators && indexOf(key, location)) { + return fValidators->elementAt(location); + } + + return 0; +} + +inline XMLCh* FieldValueMap::getValueAt(const XMLSize_t index) const { + + if (fValues) { + return fValues->elementAt(index); + } + + return 0; +} + +inline XMLCh* FieldValueMap::getValueFor(const IC_Field* const key) const { + + XMLSize_t location; + if (fValues && indexOf(key, location)) { + return fValues->elementAt(location); + } + + return 0; +} + +inline IC_Field* FieldValueMap::keyAt(const XMLSize_t index) const { + + if (fFields) { + return fFields->elementAt(index); + } + + return 0; +} + +// --------------------------------------------------------------------------- +// FieldValueMap: Helper methods +// --------------------------------------------------------------------------- +inline XMLSize_t FieldValueMap::size() const { + + if (fFields) { + return fFields->size(); + } + + return 0; +} + +// --------------------------------------------------------------------------- +// FieldValueMap: Setter methods +// --------------------------------------------------------------------------- +inline void FieldValueMap::put(IC_Field* const key, + DatatypeValidator* const dv, + const XMLCh* const value) { + + if (!fFields) { + fFields = new (fMemoryManager) ValueVectorOf(4, fMemoryManager); + fValidators = new (fMemoryManager) ValueVectorOf(4, fMemoryManager); + fValues = new (fMemoryManager) RefArrayVectorOf(4, true, fMemoryManager); + } + + XMLSize_t keyIndex; + bool bFound=indexOf(key, keyIndex); + + if (!bFound) { + + fFields->addElement(key); + fValidators->addElement(dv); + fValues->addElement(XMLString::replicate(value, fMemoryManager)); + } + else { + fValidators->setElementAt(dv, keyIndex); + fValues->setElementAt(XMLString::replicate(value, fMemoryManager), keyIndex); + } +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file FieldValueMap.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IC_Field.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IC_Field.hpp new file mode 100644 index 000000000000..ccb4e8219d5e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IC_Field.hpp @@ -0,0 +1,152 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IC_FIELD_HPP) +#define XERCESC_INCLUDE_GUARD_IC_FIELD_HPP + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class ValueStore; +class FieldActivator; + + +class VALIDATORS_EXPORT IC_Field : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + IC_Field(XercesXPath* const xpath, + IdentityConstraint* const identityConstraint); + ~IC_Field(); + + // ----------------------------------------------------------------------- + // operators + // ----------------------------------------------------------------------- + bool operator== (const IC_Field& other) const; + bool operator!= (const IC_Field& other) const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XercesXPath* getXPath() const { return fXPath; } + IdentityConstraint* getIdentityConstraint() const { return fIdentityConstraint; } + + // ----------------------------------------------------------------------- + // Factory methods + // ----------------------------------------------------------------------- + XPathMatcher* createMatcher + ( + FieldActivator* const fieldActivator + , ValueStore* const valueStore + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IC_Field) + + IC_Field(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IC_Field(const IC_Field& other); + IC_Field& operator= (const IC_Field& other); + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + XercesXPath* fXPath; + IdentityConstraint* fIdentityConstraint; +}; + + +class VALIDATORS_EXPORT FieldMatcher : public XPathMatcher +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + ~FieldMatcher() {} + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + ValueStore* getValueStore() const { return fValueStore; } + IC_Field* getField() const { return fField; } + + // ----------------------------------------------------------------------- + // Virtual methods + // ----------------------------------------------------------------------- + void matched(const XMLCh* const content, DatatypeValidator* const dv, + const bool isNil); + +private: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + FieldMatcher(XercesXPath* const anXPath, + IC_Field* const aField, + ValueStore* const valueStore, + FieldActivator* const fieldActivator, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + FieldMatcher(const FieldMatcher& other); + FieldMatcher& operator= (const FieldMatcher& other); + + // ----------------------------------------------------------------------- + // Friends + // ----------------------------------------------------------------------- + friend class IC_Field; + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + ValueStore* fValueStore; + IC_Field* fField; + FieldActivator* fFieldActivator; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IC_Field.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IC_Key.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IC_Key.hpp new file mode 100644 index 000000000000..8d476bc9bd7c --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IC_Key.hpp @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IC_KEY_HPP) +#define XERCESC_INCLUDE_GUARD_IC_KEY_HPP + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT IC_Key: public IdentityConstraint +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + IC_Key(const XMLCh* const identityConstraintName, + const XMLCh* const elemName, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~IC_Key(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + short getType() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IC_Key) + + IC_Key(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IC_Key(const IC_Key& other); + IC_Key& operator= (const IC_Key& other); +}; + + +// --------------------------------------------------------------------------- +// IC_Key: Getter methods +// --------------------------------------------------------------------------- +inline short IC_Key::getType() const { + + return IdentityConstraint::ICType_KEY; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IC_Key.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IC_KeyRef.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IC_KeyRef.hpp new file mode 100644 index 000000000000..cdc8b1ad00b6 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IC_KeyRef.hpp @@ -0,0 +1,92 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IC_KEYREF_HPP) +#define XERCESC_INCLUDE_GUARD_IC_KEYREF_HPP + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT IC_KeyRef: public IdentityConstraint +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + IC_KeyRef(const XMLCh* const identityConstraintName, + const XMLCh* const elemName, + IdentityConstraint* const icKey, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~IC_KeyRef(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + short getType() const; + IdentityConstraint* getKey() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IC_KeyRef) + + IC_KeyRef(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IC_KeyRef(const IC_KeyRef& other); + IC_KeyRef& operator= (const IC_KeyRef& other); + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + IdentityConstraint* fKey; +}; + + +// --------------------------------------------------------------------------- +// IC_KeyRef: Getter methods +// --------------------------------------------------------------------------- +inline short IC_KeyRef::getType() const { + + return IdentityConstraint::ICType_KEYREF; +} + +inline IdentityConstraint* IC_KeyRef::getKey() const { + + return fKey; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IC_KeyRef.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IC_Selector.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IC_Selector.hpp new file mode 100644 index 000000000000..a74d310eef0f --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IC_Selector.hpp @@ -0,0 +1,155 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IC_SELECTOR_HPP) +#define XERCESC_INCLUDE_GUARD_IC_SELECTOR_HPP + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class FieldActivator; + + +class VALIDATORS_EXPORT IC_Selector : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + IC_Selector(XercesXPath* const xpath, + IdentityConstraint* const identityConstraint); + ~IC_Selector(); + + // ----------------------------------------------------------------------- + // operators + // ----------------------------------------------------------------------- + bool operator== (const IC_Selector& other) const; + bool operator!= (const IC_Selector& other) const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XercesXPath* getXPath() const { return fXPath; } + IdentityConstraint* getIdentityConstraint() const { return fIdentityConstraint; } + + // ----------------------------------------------------------------------- + // Factory methods + // ----------------------------------------------------------------------- + XPathMatcher* createMatcher(FieldActivator* const fieldActivator, + const int initialDepth, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IC_Selector) + + IC_Selector(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IC_Selector(const IC_Selector& other); + IC_Selector& operator= (const IC_Selector& other); + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + XercesXPath* fXPath; + IdentityConstraint* fIdentityConstraint; +}; + + +class VALIDATORS_EXPORT SelectorMatcher : public XPathMatcher +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + ~SelectorMatcher(); + + int getInitialDepth() const { return fInitialDepth; } + + // ----------------------------------------------------------------------- + // XMLDocumentHandler methods + // ----------------------------------------------------------------------- + virtual void startDocumentFragment(); + virtual void startElement(const XMLElementDecl& elemDecl, + const unsigned int urlId, + const XMLCh* const elemPrefix, + const RefVectorOf& attrList, + const XMLSize_t attrCount, + ValidationContext* validationContext = 0); + virtual void endElement(const XMLElementDecl& elemDecl, + const XMLCh* const elemContent, + ValidationContext* validationContext = 0, + DatatypeValidator* actualValidator = 0); + +private: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + SelectorMatcher(XercesXPath* const anXPath, + IC_Selector* const selector, + FieldActivator* const fieldActivator, + const int initialDepth, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + SelectorMatcher(const SelectorMatcher& other); + SelectorMatcher& operator= (const SelectorMatcher& other); + + // ----------------------------------------------------------------------- + // Friends + // ----------------------------------------------------------------------- + friend class IC_Selector; + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + int fInitialDepth; + int fElementDepth; + int* fMatchedDepth; + IC_Selector* fSelector; + FieldActivator* fFieldActivator; +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IC_Selector.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IC_Unique.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IC_Unique.hpp new file mode 100644 index 000000000000..267fb2896baf --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IC_Unique.hpp @@ -0,0 +1,84 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IC_UNIQUE_HPP) +#define XERCESC_INCLUDE_GUARD_IC_UNIQUE_HPP + + +/** + * Schema unique identity constraint + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT IC_Unique: public IdentityConstraint +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + IC_Unique(const XMLCh* const identityConstraintName, + const XMLCh* const elemName, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~IC_Unique(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + short getType() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IC_Unique) + + IC_Unique(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IC_Unique(const IC_Unique& other); + IC_Unique& operator= (const IC_Unique& other); +}; + + +// --------------------------------------------------------------------------- +// IC_Unique: Getter methods +// --------------------------------------------------------------------------- +inline short IC_Unique::getType() const { + + return IdentityConstraint::ICType_UNIQUE; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IC_Unique.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IdentityConstraint.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IdentityConstraint.hpp new file mode 100644 index 000000000000..f0c18597fad0 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IdentityConstraint.hpp @@ -0,0 +1,223 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IDENTITYCONSTRAINT_HPP) +#define XERCESC_INCLUDE_GUARD_IDENTITYCONSTRAINT_HPP + + +/** + * The class act as a base class for schema identity constraints. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- +class IC_Selector; + +class VALIDATORS_EXPORT IdentityConstraint : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constants + // ----------------------------------------------------------------------- + enum ICType { + ICType_UNIQUE = 0, + ICType_KEY = 1, + ICType_KEYREF = 2, + ICType_UNKNOWN + }; + + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + virtual ~IdentityConstraint(); + + // ----------------------------------------------------------------------- + // operators + // ----------------------------------------------------------------------- + bool operator== (const IdentityConstraint& other) const; + bool operator!= (const IdentityConstraint& other) const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + virtual short getType() const = 0; + XMLSize_t getFieldCount() const; + XMLCh* getIdentityConstraintName() const; + XMLCh* getElementName() const; + IC_Selector* getSelector() const; + int getNamespaceURI() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + void setSelector(IC_Selector* const selector); + void setNamespaceURI(int uri); + + // ----------------------------------------------------------------------- + // Access methods + // ----------------------------------------------------------------------- + void addField(IC_Field* const field); + const IC_Field* getFieldAt(const XMLSize_t index) const; + IC_Field* getFieldAt(const XMLSize_t index); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(IdentityConstraint) + + static void storeIC(XSerializeEngine& serEng + , IdentityConstraint* const ic); + + static IdentityConstraint* loadIC(XSerializeEngine& serEng); + +protected: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + IdentityConstraint(const XMLCh* const identityConstraintName, + const XMLCh* const elementName, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IdentityConstraint(const IdentityConstraint& other); + IdentityConstraint& operator= (const IdentityConstraint& other); + + // ----------------------------------------------------------------------- + // CleanUp methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Data members + // + // fIdentityConstraintName + // The identity constraint name + // + // fElemName + // The element name + // + // fSelector + // The selector information + // + // fFields + // The field(s) information + // ----------------------------------------------------------------------- + XMLCh* fIdentityConstraintName; + XMLCh* fElemName; + IC_Selector* fSelector; + RefVectorOf* fFields; + MemoryManager* fMemoryManager; + int fNamespaceURI; +}; + + +// --------------------------------------------------------------------------- +// IdentityConstraint: Getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t IdentityConstraint::getFieldCount() const { + + if (fFields) { + return fFields->size(); + } + + return 0; +} + +inline XMLCh* IdentityConstraint::getIdentityConstraintName() const { + + return fIdentityConstraintName; +} + +inline XMLCh* IdentityConstraint::getElementName() const { + + return fElemName; +} + +inline IC_Selector* IdentityConstraint::getSelector() const { + + return fSelector; +} + +inline int IdentityConstraint::getNamespaceURI() const +{ + return fNamespaceURI; +} + +// --------------------------------------------------------------------------- +// IdentityConstraint: Setter methods +// --------------------------------------------------------------------------- +inline void IdentityConstraint::setNamespaceURI(int uri) +{ + fNamespaceURI = uri; +} + +// --------------------------------------------------------------------------- +// IdentityConstraint: Access methods +// --------------------------------------------------------------------------- +inline void IdentityConstraint::addField(IC_Field* const field) { + + if (!fFields) { + fFields = new (fMemoryManager) RefVectorOf(4, true, fMemoryManager); + } + + fFields->addElement(field); +} + +inline const IC_Field* IdentityConstraint::getFieldAt(const XMLSize_t index) const { + + if (fFields) { + return (fFields->elementAt(index)); + } + + return 0; +} + +inline IC_Field* IdentityConstraint::getFieldAt(const XMLSize_t index) { + + if (fFields) { + return (fFields->elementAt(index)); + } + + return 0; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IdentityConstraint.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IdentityConstraintHandler.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IdentityConstraintHandler.hpp new file mode 100644 index 000000000000..75eb2c26de7a --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/IdentityConstraintHandler.hpp @@ -0,0 +1,159 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_IDENTITYCONSTRAINT_HANDLER_HPP) +#define XERCESC_INCLUDE_GUARD_IDENTITYCONSTRAINT_HANDLER_HPP + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- + +class XMLScanner; +class FieldActivator; +class MemoryManager; +class XMLElementDecl; + +class VALIDATORS_EXPORT IdentityConstraintHandler: public XMemory +{ +public: + + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + virtual ~IdentityConstraintHandler(); + + IdentityConstraintHandler + ( + XMLScanner* const scanner + , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager + ); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + inline XMLSize_t getMatcherCount() const; + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + // ----------------------------------------------------------------------- + // Access methods + // ----------------------------------------------------------------------- + inline void endDocument(); + + void deactivateContext + ( + SchemaElementDecl* const elem + , const XMLCh* const content + , ValidationContext* validationContext = 0 + , DatatypeValidator* actualValidator = 0); + + void activateIdentityConstraint + ( + SchemaElementDecl* const elem + , int elemDepth + , const unsigned int uriId + , const XMLCh* const elemPrefix + , const RefVectorOf& attrList + , const XMLSize_t attrCount + , ValidationContext* validationContext = 0 ); + + void reset(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + IdentityConstraintHandler(const IdentityConstraintHandler& other); + IdentityConstraintHandler& operator= (const IdentityConstraintHandler& other); + + // ----------------------------------------------------------------------- + // CleanUp methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Helper + // ----------------------------------------------------------------------- + void activateSelectorFor( + IdentityConstraint* const ic + , const int initialDepth + ) ; + + // ----------------------------------------------------------------------- + // Data members + // + // fMatcherStack + // Stack of active XPath matchers for identity constraints. All + // active XPath matchers are notified of startElement, characters + // and endElement callbacks in order to perform their matches. + // + // fValueStoreCache + // Cache of value stores for identity constraint fields. + // + // fFieldActivator + // Activates fields within a certain scope when a selector matches + // its xpath. + // + // ----------------------------------------------------------------------- + XMLScanner* fScanner; + MemoryManager* fMemoryManager; + + XPathMatcherStack* fMatcherStack; + ValueStoreCache* fValueStoreCache; + FieldActivator* fFieldActivator; + +}; + + +// --------------------------------------------------------------------------- +// IdentityConstraintHandler: +// --------------------------------------------------------------------------- + +inline +void IdentityConstraintHandler::endDocument() +{ + fValueStoreCache->endDocument(); +} + +inline +XMLSize_t IdentityConstraintHandler::getMatcherCount() const +{ + return fMatcherStack->getMatcherCount(); +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file IdentityConstraintHandler.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/ValueStore.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/ValueStore.hpp new file mode 100644 index 000000000000..9dda3e99ab5d --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/ValueStore.hpp @@ -0,0 +1,146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALUESTORE_HPP) +#define XERCESC_INCLUDE_GUARD_VALUESTORE_HPP + +/** + * This class stores values associated to an identity constraint. + * Each value stored corresponds to a field declared for the identity + * constraint. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class FieldActivator; +class IdentityConstraint; +class XMLScanner; +class ValueStoreCache; + +struct ICValueHasher +{ + ICValueHasher(MemoryManager* const manager) : fMemoryManager(manager) {} + + XMLSize_t getHashVal(const void* key, XMLSize_t mod) const; + bool equals(const void *const key1, const void *const key2) const; + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + /** + * Returns whether a field associated value + * is a duplicate of another associated value. + * It is a duplicate only if either of these conditions are true: + * - The Datatypes are the same or related by derivation and the values + * are in the same valuespace. + * - The datatypes are unrelated and the values are Stringwise identical. + */ + bool isDuplicateOf(DatatypeValidator* const dv1, const XMLCh* const val1, + DatatypeValidator* const dv2, const XMLCh* const val2) const; + + + MemoryManager* fMemoryManager; +}; + +class VALIDATORS_EXPORT ValueStore : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + ValueStore(IdentityConstraint* const ic, + XMLScanner* const scanner, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ValueStore(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + IdentityConstraint* getIdentityConstraint() const; + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void append(const ValueStore* const other); + void startValueScope(); + void endValueScope(); + void addValue(FieldActivator* const fieldActivator, + IC_Field* const field, + DatatypeValidator* const dv, + const XMLCh* const value); + bool contains(const FieldValueMap* const other); + void clear(); + + // ----------------------------------------------------------------------- + // Document handling methods + // ----------------------------------------------------------------------- + void endDocumentFragment(ValueStoreCache* const valueStoreCache); + + // ----------------------------------------------------------------------- + // Error reporting methods + // ----------------------------------------------------------------------- + void duplicateValue(); + void reportNilError(IdentityConstraint* const ic); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueStore(const ValueStore& other); + ValueStore& operator= (const ValueStore& other); + + // ----------------------------------------------------------------------- + // Data + // ----------------------------------------------------------------------- + bool fDoReportError; + XMLSize_t fValuesCount; + IdentityConstraint* fIdentityConstraint; + FieldValueMap fValues; + RefHashTableOf* fValueTuples; + XMLScanner* fScanner; // for error reporting - REVISIT + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// ValueStore: Getter methods +// --------------------------------------------------------------------------- +inline IdentityConstraint* +ValueStore::getIdentityConstraint() const { + return fIdentityConstraint; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ValueStore.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/ValueStoreCache.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/ValueStoreCache.hpp new file mode 100644 index 000000000000..cf02064d8622 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/ValueStoreCache.hpp @@ -0,0 +1,172 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_VALUESTORECACHE_HPP) +#define XERCESC_INCLUDE_GUARD_VALUESTORECACHE_HPP + +/** + * This class is used to store the values for identity constraints. + * + * Sketch of algorithm: + * - When a constraint is first encountered, its values are stored in the + * (local) fIC2ValueStoreMap; + * - Once it is validated (i.e., when it goes out of scope), its values are + * merged into the fGlobalICMap; + * - As we encounter keyref's, we look at the global table to validate them. + * - Validation always occurs against the fGlobalIDConstraintMap (which + * comprises all the "eligible" id constraints). When an endelement is + * found, this Hashtable is merged with the one below in the stack. When a + * start tag is encountered, we create a new fGlobalICMap. + * i.e., the top of the fGlobalIDMapStack always contains the preceding + * siblings' eligible id constraints; the fGlobalICMap contains + * descendants+self. Keyrefs can only match descendants+self. + */ + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class ValueStore; +class SchemaElementDecl; +class XMLScanner; + + +class VALIDATORS_EXPORT ValueStoreCache : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + ValueStoreCache(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~ValueStoreCache(); + + // ----------------------------------------------------------------------- + // Setter Methods + // ----------------------------------------------------------------------- + void setScanner(XMLScanner* const scanner); + + // ----------------------------------------------------------------------- + // Document Handling methods + // ----------------------------------------------------------------------- + void startDocument(); + void startElement(); + void endElement(); + void endDocument(); + + // ----------------------------------------------------------------------- + // Initialization methods + // ----------------------------------------------------------------------- + void initValueStoresFor(SchemaElementDecl* const elemDecl, const int initialDepth); + + + // ----------------------------------------------------------------------- + // Access methods + // ----------------------------------------------------------------------- + ValueStore* getValueStoreFor(const IC_Field* const field, const int initialDepth); + ValueStore* getValueStoreFor(const IdentityConstraint* const ic, const int initialDepth); + ValueStore* getGlobalValueStoreFor(const IdentityConstraint* const ic); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + /** This method takes the contents of the (local) ValueStore associated + * with ic and moves them into the global hashtable, if ic is a + * or a . If it's a , then we leave it for later. + */ + void transplant(IdentityConstraint* const ic, const int initialDepth); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + ValueStoreCache(const ValueStoreCache& other); + ValueStoreCache& operator= (const ValueStoreCache& other); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void init(); + void cleanUp(); + + // ----------------------------------------------------------------------- + // Data + // ----------------------------------------------------------------------- + RefVectorOf* fValueStores; + RefHashTableOf* fGlobalICMap; + RefHash2KeysTableOf* fIC2ValueStoreMap; + RefStackOf >* fGlobalMapStack; + XMLScanner* fScanner; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// ValueStoreCache: Access methods +// --------------------------------------------------------------------------- +inline void ValueStoreCache::setScanner(XMLScanner* const scanner) { + + fScanner = scanner; +} + +// --------------------------------------------------------------------------- +// ValueStoreCache: Access methods +// --------------------------------------------------------------------------- +inline ValueStore* +ValueStoreCache::getValueStoreFor(const IC_Field* const field, const int initialDepth) { + + return fIC2ValueStoreMap->get(field->getIdentityConstraint(), initialDepth); +} + +inline ValueStore* +ValueStoreCache::getValueStoreFor(const IdentityConstraint* const ic, const int initialDepth) { + + return fIC2ValueStoreMap->get(ic, initialDepth); +} + +inline ValueStore* +ValueStoreCache::getGlobalValueStoreFor(const IdentityConstraint* const ic) { + + return fGlobalICMap->get(ic); +} + +// --------------------------------------------------------------------------- +// ValueStoreCache: Document handling methods +// --------------------------------------------------------------------------- +inline void ValueStoreCache::endDocument() { +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file ValueStoreCache.hpp + */ diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/XPathException.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/XPathException.hpp new file mode 100644 index 000000000000..45c184aec512 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/XPathException.hpp @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XPATHEXCEPTION_HPP) +#define XERCESC_INCLUDE_GUARD_XPATHEXCEPTION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +MakeXMLException(XPathException, VALIDATORS_EXPORT) + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/XPathMatcher.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/XPathMatcher.hpp new file mode 100644 index 000000000000..6d377314ea7b --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/XPathMatcher.hpp @@ -0,0 +1,183 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XPATHMATCHER_HPP) +#define XERCESC_INCLUDE_GUARD_XPATHMATCHER_HPP + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declaration +// --------------------------------------------------------------------------- +class XMLElementDecl; +class XercesXPath; +class IdentityConstraint; +class DatatypeValidator; +class XMLStringPool; +class XercesLocationPath; +class XMLAttr; +class XercesNodeTest; +class QName; +class ValidationContext; + +class VALIDATORS_EXPORT XPathMatcher : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XPathMatcher(XercesXPath* const xpath, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + XPathMatcher(XercesXPath* const xpath, + IdentityConstraint* const ic, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + virtual ~XPathMatcher(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + IdentityConstraint* getIdentityConstraint() const { return fIdentityConstraint; } + MemoryManager* getMemoryManager() const { return fMemoryManager; } + + // ----------------------------------------------------------------------- + // Match methods + // ----------------------------------------------------------------------- + /** + * Returns true if XPath has been matched. + */ + unsigned char isMatched(); + virtual int getInitialDepth() const; + + // ----------------------------------------------------------------------- + // XMLDocumentHandler methods + // ----------------------------------------------------------------------- + virtual void startDocumentFragment(); + virtual void startElement(const XMLElementDecl& elemDecl, + const unsigned int urlId, + const XMLCh* const elemPrefix, + const RefVectorOf& attrList, + const XMLSize_t attrCount, + ValidationContext* validationContext = 0); + virtual void endElement(const XMLElementDecl& elemDecl, + const XMLCh* const elemContent, + ValidationContext* validationContext = 0, + DatatypeValidator* actualValidator = 0); + + enum + { + XP_MATCHED = 1 // matched any way + , XP_MATCHED_A = 3 // matched on the attribute axis + , XP_MATCHED_D = 5 // matched on the descendant-or-self axixs + , XP_MATCHED_DP = 13 // matched some previous (ancestor) node on the + // descendant-or-self-axis, but not this node + }; + +protected: + + // ----------------------------------------------------------------------- + // Match methods + // ----------------------------------------------------------------------- + /** + * This method is called when the XPath handler matches the XPath + * expression. Subclasses can override this method to provide default + * handling upon a match. + */ + virtual void matched(const XMLCh* const content, + DatatypeValidator* const dv, const bool isNil); + + bool matches(const XercesNodeTest* nodeTest, const QName* qName); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XPathMatcher(const XPathMatcher&); + XPathMatcher& operator=(const XPathMatcher&); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void init(XercesXPath* const xpath); + void cleanUp(); + +protected: + // ----------------------------------------------------------------------- + // Data members + // + // fMatched + // Indicates whether XPath has been matched or not + // + // fNoMatchDepth + // Indicates whether matching is successful for the given xpath + // expression. + // + // fCurrentStep + // Stores current step. + // + // fStepIndexes + // Integer stack of step indexes. + // + // fLocationPaths + // fLocationPathSize + // XPath location path, and its size. + // + // fIdentityConstraint + // The identity constraint we're the matcher for. Only used for + // selectors. + // + // ----------------------------------------------------------------------- + XMLSize_t fLocationPathSize; + unsigned char* fMatched; + XMLSize_t* fNoMatchDepth; + XMLSize_t* fCurrentStep; + RefVectorOf >* fStepIndexes; + RefVectorOf* fLocationPaths; + IdentityConstraint* fIdentityConstraint; + MemoryManager* fMemoryManager; +}; + +// --------------------------------------------------------------------------- +// XPathMatcher: Helper methods +// --------------------------------------------------------------------------- +inline void XPathMatcher::cleanUp() { + + fMemoryManager->deallocate(fMatched);//delete [] fMatched; + fMemoryManager->deallocate(fNoMatchDepth);//delete [] fNoMatchDepth; + fMemoryManager->deallocate(fCurrentStep);//delete [] fCurrentStep; + delete fStepIndexes; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XPathMatcher.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/XPathMatcherStack.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/XPathMatcherStack.hpp new file mode 100644 index 000000000000..46561f327f51 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/XPathMatcherStack.hpp @@ -0,0 +1,139 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XPATHMATCHERSTACK_HPP) +#define XERCESC_INCLUDE_GUARD_XPATHMATCHERSTACK_HPP + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class VALIDATORS_EXPORT XPathMatcherStack : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XPathMatcherStack(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~XPathMatcherStack(); + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + XPathMatcher* getMatcherAt(const XMLSize_t index) const; + XMLSize_t getMatcherCount() const; + XMLSize_t size() const; + + // ----------------------------------------------------------------------- + // Access methods + // ----------------------------------------------------------------------- + void addMatcher(XPathMatcher* const matcher); + + // ----------------------------------------------------------------------- + // Stack methods + // ----------------------------------------------------------------------- + void pushContext(); + void popContext(); + + // ----------------------------------------------------------------------- + // Reset methods + // ----------------------------------------------------------------------- + void clear(); + +private: + // ----------------------------------------------------------------------- + // Private helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XPathMatcherStack(const XPathMatcherStack& other); + XPathMatcherStack& operator= (const XPathMatcherStack& other); + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + unsigned int fMatchersCount; + ValueStackOf* fContextStack; + RefVectorOf* fMatchers; +}; + +// --------------------------------------------------------------------------- +// XPathMatcherStack: Getter methods +// --------------------------------------------------------------------------- +inline XMLSize_t XPathMatcherStack::size() const { + + return fContextStack->size(); +} + +inline XMLSize_t XPathMatcherStack::getMatcherCount() const { + + return fMatchersCount; +} + +inline XPathMatcher* +XPathMatcherStack::getMatcherAt(const XMLSize_t index) const { + + return fMatchers->elementAt(index); +} + +// --------------------------------------------------------------------------- +// XPathMatcherStack: Stack methods +// --------------------------------------------------------------------------- +inline void XPathMatcherStack::pushContext() { + + fContextStack->push(fMatchersCount); +} + +inline void XPathMatcherStack::popContext() { + + fMatchersCount = fContextStack->pop(); +} + +// --------------------------------------------------------------------------- +// XPathMatcherStack: Access methods +// --------------------------------------------------------------------------- +inline void XPathMatcherStack::addMatcher(XPathMatcher* const matcher) { + + if (fMatchersCount == fMatchers->size()) { + + fMatchers->addElement(matcher); + fMatchersCount++; + } + else { + fMatchers->setElementAt(matcher, fMatchersCount++); + } +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XPathMatcherStack.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/XPathSymbols.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/XPathSymbols.hpp new file mode 100644 index 000000000000..c1ce1accef0e --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/XPathSymbols.hpp @@ -0,0 +1,75 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XPATHSYMBOLS_HPP) +#define XERCESC_INCLUDE_GUARD_XPATHSYMBOLS_HPP + +#include + +XERCES_CPP_NAMESPACE_BEGIN + +/* + * Collection of symbols used to parse a Schema Grammar + */ + +class VALIDATORS_EXPORT XPathSymbols +{ +public : + // ----------------------------------------------------------------------- + // Constant data + // ----------------------------------------------------------------------- + static const XMLCh fgSYMBOL_AND[]; + static const XMLCh fgSYMBOL_OR[]; + static const XMLCh fgSYMBOL_MOD[]; + static const XMLCh fgSYMBOL_DIV[]; + static const XMLCh fgSYMBOL_COMMENT[]; + static const XMLCh fgSYMBOL_TEXT[]; + static const XMLCh fgSYMBOL_PI[]; + static const XMLCh fgSYMBOL_NODE[]; + static const XMLCh fgSYMBOL_ANCESTOR[]; + static const XMLCh fgSYMBOL_ANCESTOR_OR_SELF[]; + static const XMLCh fgSYMBOL_ATTRIBUTE[]; + static const XMLCh fgSYMBOL_CHILD[]; + static const XMLCh fgSYMBOL_DESCENDANT[]; + static const XMLCh fgSYMBOL_DESCENDANT_OR_SELF[]; + static const XMLCh fgSYMBOL_FOLLOWING[]; + static const XMLCh fgSYMBOL_FOLLOWING_SIBLING[]; + static const XMLCh fgSYMBOL_NAMESPACE[]; + static const XMLCh fgSYMBOL_PARENT[]; + static const XMLCh fgSYMBOL_PRECEDING[]; + static const XMLCh fgSYMBOL_PRECEDING_SIBLING[]; + static const XMLCh fgSYMBOL_SELF[]; + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XPathSymbols(); +}; + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XPathSymbols.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/XercesXPath.hpp b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/XercesXPath.hpp new file mode 100644 index 000000000000..d93cfd20c253 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/validators/schema/identity/XercesXPath.hpp @@ -0,0 +1,499 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XERCESXPATH_HPP) +#define XERCESC_INCLUDE_GUARD_XERCESXPATH_HPP + + +// --------------------------------------------------------------------------- +// Includes +// --------------------------------------------------------------------------- +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- +class XMLStringPool; + +class VALIDATORS_EXPORT XercesNodeTest : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constants + // ----------------------------------------------------------------------- + enum NodeType { + NodeType_QNAME = 1, + NodeType_WILDCARD = 2, + NodeType_NODE = 3, + NodeType_NAMESPACE= 4, + NodeType_UNKNOWN + }; + + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XercesNodeTest(const short type, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + XercesNodeTest(const QName* const qName); + XercesNodeTest(const XMLCh* const prefix, const unsigned int uriId, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + XercesNodeTest(const XercesNodeTest& other); + ~XercesNodeTest() { delete fName; } + + // ----------------------------------------------------------------------- + // Operators + // ----------------------------------------------------------------------- + XercesNodeTest& operator= (const XercesNodeTest& other); + bool operator== (const XercesNodeTest& other) const; + bool operator!= (const XercesNodeTest& other) const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + short getType() const { return fType; } + QName* getName() const { return fName; } + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesNodeTest) + + XercesNodeTest(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + short fType; + QName* fName; +}; + + +/** + * A location path step comprised of an axis and node test. + */ +class VALIDATORS_EXPORT XercesStep : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constants + // ----------------------------------------------------------------------- + enum AxisType { // Axis type + AxisType_CHILD = 1, + AxisType_ATTRIBUTE = 2, + AxisType_SELF = 3, + AxisType_DESCENDANT = 4, + AxisType_UNKNOWN + }; + + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XercesStep(const unsigned short axisType, XercesNodeTest* const nodeTest); + XercesStep(const XercesStep& other); + ~XercesStep() { delete fNodeTest; } + + // ----------------------------------------------------------------------- + // Operators + // ----------------------------------------------------------------------- + XercesStep& operator= (const XercesStep& other); + bool operator== (const XercesStep& other) const; + bool operator!= (const XercesStep& other) const; + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + unsigned short getAxisType() const { return fAxisType; } + XercesNodeTest* getNodeTest() const { return fNodeTest; } + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesStep) + + XercesStep(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + unsigned short fAxisType; + XercesNodeTest* fNodeTest; +}; + + +/** + * A location path representation for an XPath expression. + */ +class VALIDATORS_EXPORT XercesLocationPath : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XercesLocationPath(RefVectorOf* const steps); + ~XercesLocationPath() { delete fSteps; } + + // ----------------------------------------------------------------------- + // Operators + // ----------------------------------------------------------------------- + bool operator== (const XercesLocationPath& other) const; + bool operator!= (const XercesLocationPath& other) const; + + // ----------------------------------------------------------------------- + // Access methods + // ----------------------------------------------------------------------- + XMLSize_t getStepSize() const; + void addStep(XercesStep* const aStep); + XercesStep* getStep(const XMLSize_t index) const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesLocationPath) + + XercesLocationPath(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XercesLocationPath(const XercesLocationPath& other); + XercesLocationPath& operator= (const XercesLocationPath& other); + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + RefVectorOf* fSteps; +}; + + +class VALIDATORS_EXPORT XercesXPath : public XSerializable, public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constants + // ----------------------------------------------------------------------- + /** + * [28] ExprToken ::= '(' | ')' | '[' | ']' | '.' | '..' | '@' | ',' | '::' + * | NameTest | NodeType | Operator | FunctionName + * | AxisName | Literal | Number | VariableReference + */ + enum { + EXPRTOKEN_OPEN_PAREN = 0, + EXPRTOKEN_CLOSE_PAREN = 1, + EXPRTOKEN_OPEN_BRACKET = 2, + EXPRTOKEN_CLOSE_BRACKET = 3, + EXPRTOKEN_PERIOD = 4, + EXPRTOKEN_DOUBLE_PERIOD = 5, + EXPRTOKEN_ATSIGN = 6, + EXPRTOKEN_COMMA = 7, + EXPRTOKEN_DOUBLE_COLON = 8, + EXPRTOKEN_NAMETEST_ANY = 9, + EXPRTOKEN_NAMETEST_NAMESPACE = 10, + EXPRTOKEN_NAMETEST_QNAME = 11, + EXPRTOKEN_NODETYPE_COMMENT = 12, + EXPRTOKEN_NODETYPE_TEXT = 13, + EXPRTOKEN_NODETYPE_PI = 14, + EXPRTOKEN_NODETYPE_NODE = 15, + EXPRTOKEN_OPERATOR_AND = 16, + EXPRTOKEN_OPERATOR_OR = 17, + EXPRTOKEN_OPERATOR_MOD = 18, + EXPRTOKEN_OPERATOR_DIV = 19, + EXPRTOKEN_OPERATOR_MULT = 20, + EXPRTOKEN_OPERATOR_SLASH = 21, + EXPRTOKEN_OPERATOR_DOUBLE_SLASH = 22, + EXPRTOKEN_OPERATOR_UNION = 23, + EXPRTOKEN_OPERATOR_PLUS = 24, + EXPRTOKEN_OPERATOR_MINUS = 25, + EXPRTOKEN_OPERATOR_EQUAL = 26, + EXPRTOKEN_OPERATOR_NOT_EQUAL = 27, + EXPRTOKEN_OPERATOR_LESS = 28, + EXPRTOKEN_OPERATOR_LESS_EQUAL = 29, + EXPRTOKEN_OPERATOR_GREATER = 30, + EXPRTOKEN_OPERATOR_GREATER_EQUAL = 31, + EXPRTOKEN_FUNCTION_NAME = 32, + EXPRTOKEN_AXISNAME_ANCESTOR = 33, + EXPRTOKEN_AXISNAME_ANCESTOR_OR_SELF = 34, + EXPRTOKEN_AXISNAME_ATTRIBUTE = 35, + EXPRTOKEN_AXISNAME_CHILD = 36, + EXPRTOKEN_AXISNAME_DESCENDANT = 37, + EXPRTOKEN_AXISNAME_DESCENDANT_OR_SELF = 38, + EXPRTOKEN_AXISNAME_FOLLOWING = 39, + EXPRTOKEN_AXISNAME_FOLLOWING_SIBLING = 40, + EXPRTOKEN_AXISNAME_NAMESPACE = 41, + EXPRTOKEN_AXISNAME_PARENT = 42, + EXPRTOKEN_AXISNAME_PRECEDING = 43, + EXPRTOKEN_AXISNAME_PRECEDING_SIBLING = 44, + EXPRTOKEN_AXISNAME_SELF = 45, + EXPRTOKEN_LITERAL = 46, + EXPRTOKEN_NUMBER = 47, + EXPRTOKEN_VARIABLE_REFERENCE = 48 + }; + + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XercesXPath(const XMLCh* const xpathExpr, + XMLStringPool* const stringPool, + XercesNamespaceResolver* const scopeContext, + const unsigned int emptyNamespaceId, + const bool isSelector = false, + MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + ~XercesXPath(); + + // ----------------------------------------------------------------------- + // Operators + // ----------------------------------------------------------------------- + bool operator== (const XercesXPath& other) const; + bool operator!= (const XercesXPath& other) const; + + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + RefVectorOf* getLocationPaths() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XercesXPath) + + XercesXPath(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + + XMLCh* getExpression(); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XercesXPath(const XercesXPath& other); + XercesXPath& operator= (const XercesXPath& other); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void cleanUp(); + void checkForSelectedAttributes(); + void parseExpression(XMLStringPool* const stringPool, + XercesNamespaceResolver* const scopeContext); + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + unsigned int fEmptyNamespaceId; + XMLCh* fExpression; + RefVectorOf* fLocationPaths; + MemoryManager* fMemoryManager; +}; + + +class VALIDATORS_EXPORT XPathScanner : public XMemory +{ +public: + // ----------------------------------------------------------------------- + // Constants + // ----------------------------------------------------------------------- + enum { + CHARTYPE_INVALID = 0, // invalid XML character + CHARTYPE_OTHER = 1, // not special - one of "#%&;?\^`{}~" or DEL + CHARTYPE_WHITESPACE = 2, // one of "\t\n\r " (0x09, 0x0A, 0x0D, 0x20) + CHARTYPE_EXCLAMATION = 3, // '!' (0x21) + CHARTYPE_QUOTE = 4, // '\"' or '\'' (0x22 and 0x27) + CHARTYPE_DOLLAR = 5, // '$' (0x24) + CHARTYPE_OPEN_PAREN = 6, // '(' (0x28) + CHARTYPE_CLOSE_PAREN = 7, // ')' (0x29) + CHARTYPE_STAR = 8, // '*' (0x2A) + CHARTYPE_PLUS = 9, // '+' (0x2B) + CHARTYPE_COMMA = 10, // ',' (0x2C) + CHARTYPE_MINUS = 11, // '-' (0x2D) + CHARTYPE_PERIOD = 12, // '.' (0x2E) + CHARTYPE_SLASH = 13, // '/' (0x2F) + CHARTYPE_DIGIT = 14, // '0'-'9' (0x30 to 0x39) + CHARTYPE_COLON = 15, // ':' (0x3A) + CHARTYPE_LESS = 16, // '<' (0x3C) + CHARTYPE_EQUAL = 17, // '=' (0x3D) + CHARTYPE_GREATER = 18, // '>' (0x3E) + CHARTYPE_ATSIGN = 19, // '@' (0x40) + CHARTYPE_LETTER = 20, // 'A'-'Z' or 'a'-'z' (0x41 to 0x5A and 0x61 to 0x7A) + CHARTYPE_OPEN_BRACKET = 21, // '[' (0x5B) + CHARTYPE_CLOSE_BRACKET = 22, // ']' (0x5D) + CHARTYPE_UNDERSCORE = 23, // '_' (0x5F) + CHARTYPE_UNION = 24, // '|' (0x7C) + CHARTYPE_NONASCII = 25 // Non-ASCII Unicode codepoint (>= 0x80) + }; + + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XPathScanner(XMLStringPool* const stringPool); + virtual ~XPathScanner() {} + + // ----------------------------------------------------------------------- + // Scan methods + // ----------------------------------------------------------------------- + bool scanExpression(const XMLCh* const data, XMLSize_t currentOffset, + const XMLSize_t endOffset, ValueVectorOf* const tokens); + +protected: + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + /** + * This method adds the specified token to the token list. By default, + * this method allows all tokens. However, subclasses can can override + * this method in order to disallow certain tokens from being used in the + * scanned XPath expression. This is a convenient way of allowing only + * a subset of XPath. + */ + virtual void addToken(ValueVectorOf* const tokens, const int aToken); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XPathScanner(const XPathScanner& other); + XPathScanner& operator= (const XPathScanner& other); + + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void init(); + + // ----------------------------------------------------------------------- + // Scan methods + // ----------------------------------------------------------------------- + XMLSize_t scanNCName(const XMLCh* const data, const XMLSize_t endOffset, + XMLSize_t currentOffset); + XMLSize_t scanNumber(const XMLCh* const data, const XMLSize_t endOffset, + XMLSize_t currentOffset, ValueVectorOf* const tokens); + + // ----------------------------------------------------------------------- + // Data members + // ----------------------------------------------------------------------- + int fAndSymbol; + int fOrSymbol; + int fModSymbol; + int fDivSymbol; + int fCommentSymbol; + int fTextSymbol; + int fPISymbol; + int fNodeSymbol; + int fAncestorSymbol; + int fAncestorOrSelfSymbol; + int fAttributeSymbol; + int fChildSymbol; + int fDescendantSymbol; + int fDescendantOrSelfSymbol; + int fFollowingSymbol; + int fFollowingSiblingSymbol; + int fNamespaceSymbol; + int fParentSymbol; + int fPrecedingSymbol; + int fPrecedingSiblingSymbol; + int fSelfSymbol; + XMLStringPool* fStringPool; + + static const XMLByte fASCIICharMap[128]; +}; + + +class VALIDATORS_EXPORT XPathScannerForSchema: public XPathScanner +{ +public: + // ----------------------------------------------------------------------- + // Constructors/Destructor + // ----------------------------------------------------------------------- + XPathScannerForSchema(XMLStringPool* const stringPool); + ~XPathScannerForSchema() {} + +protected: + // ----------------------------------------------------------------------- + // Helper methods + // ----------------------------------------------------------------------- + void addToken(ValueVectorOf* const tokens, const int aToken); + +private: + // ----------------------------------------------------------------------- + // Unimplemented constructors and operators + // ----------------------------------------------------------------------- + XPathScannerForSchema(const XPathScannerForSchema& other); + XPathScannerForSchema& operator= (const XPathScannerForSchema& other); +}; + +// --------------------------------------------------------------------------- +// XercesLocationPath: Access methods +// --------------------------------------------------------------------------- +inline XMLSize_t XercesLocationPath::getStepSize() const { + + if (fSteps) + return fSteps->size(); + + return 0; +} + +inline void XercesLocationPath::addStep(XercesStep* const aStep) { + + fSteps->addElement(aStep); +} + +inline XercesStep* XercesLocationPath::getStep(const XMLSize_t index) const { + + if (fSteps) + return fSteps->elementAt(index); + + return 0; +} + +// --------------------------------------------------------------------------- +// XercesScanner: Helper methods +// --------------------------------------------------------------------------- +inline void XPathScanner::addToken(ValueVectorOf* const tokens, + const int aToken) { + tokens->addElement(aToken); +} + + +// --------------------------------------------------------------------------- +// XercesXPath: Getter methods +// --------------------------------------------------------------------------- +inline RefVectorOf* XercesXPath::getLocationPaths() const { + + return fLocationPaths; +} + +inline XMLCh* XercesXPath::getExpression() { + return fExpression; +} + +XERCES_CPP_NAMESPACE_END + +#endif + +/** + * End of file XercesPath.hpp + */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp b/src/libs/xerces-c/msvc/include/xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp new file mode 100644 index 000000000000..725976cf23fa --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XINCLUDEDOMDOCUMENTPROCESSOR_HPP) +#define XERCESC_INCLUDE_GUARD_XINCLUDEDOMDOCUMENTPROCESSOR_HPP + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLEntityHandler; + +/** + * Class for representing and manipulating the XMLCh * href's used + * by an xi:include element. + * + * This class is designed primarily for internal use. This class implements + * the functionality required to calculate relative hrefs and the base URI + * fixups required for performing XInclude functionality. + */ +class XINCLUDE_EXPORT XIncludeDOMDocumentProcessor +{ +public: + /** Walk the supplied DOMDocument performing all XInclude's as encountered. + * + * @param source A DOMDocument to parse, this document is not modified. + * @param errorHandled An errorHandler to call back in case of problems + * + * @return a newly created DOMDocument containing the parsed and actioned + * xinclude elements. + */ + DOMDocument *doXIncludeDOMProcess(const DOMDocument * const source, XMLErrorReporter *errorHandler, XMLEntityHandler* entityResolver=NULL); +}; + +XERCES_CPP_NAMESPACE_END + +#endif /* XINCLUDEDOMDOCUMENTPROCESSOR_HPP */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/xinclude/XIncludeLocation.hpp b/src/libs/xerces-c/msvc/include/xercesc/xinclude/XIncludeLocation.hpp new file mode 100644 index 000000000000..8648c0e81816 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/xinclude/XIncludeLocation.hpp @@ -0,0 +1,89 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XINCLUDELOCATION_HPP) +#define XERCESC_INCLUDE_GUARD_XINCLUDELOCATION_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + + +/** + * Class for representing and manipulating the XMLCh * href's used + * by an xi:include element. + * + * This class is designed primarily for internal use. This class implements + * the functionality required to calculate relative hrefs and the base URI + * fixups required for performing XInclude functionality. + */ +class XINCLUDE_EXPORT XIncludeLocation +{ +public: + /** Create an XIncludeLocation, primed with the supplied href + * + * @param href the initial URI value + * + * @return nothing + */ + XIncludeLocation(const XMLCh *href); + + /** Destructor + * + * @return nothing + */ + ~XIncludeLocation(); + + /** Prepend the supplied href to the current location and modify the current XIncludeLocation's + * internal href field + * + * @param toPrepend the path to prepend + * + * @return the resultant compound URI + */ + const XMLCh *prependPath(const XMLCh *toPrepend); + + /** Get the current XIncludeLocation's compound URI location + * + * @return the current URI + */ + const XMLCh *getLocation(){ + return fHref; + }; + + /** Get a pointer to the end of the protocol section of a URI + * + * @param URI a URI to strip the protocol from + * + * @return a pointer into the supplied URI immediately after the last character of the protocol section + * the pointer points to the first character after the protocol. + */ + static const XMLCh *findEndOfProtocol(const XMLCh *URI); + +private: + const XMLCh *fHref; +}; + +XERCES_CPP_NAMESPACE_END + +#endif /* XINCLUDELOCATION_HPP */ + diff --git a/src/libs/xerces-c/msvc/include/xercesc/xinclude/XIncludeUtils.hpp b/src/libs/xerces-c/msvc/include/xercesc/xinclude/XIncludeUtils.hpp new file mode 100644 index 000000000000..b74097655f37 --- /dev/null +++ b/src/libs/xerces-c/msvc/include/xercesc/xinclude/XIncludeUtils.hpp @@ -0,0 +1,267 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * $Id$ + */ + +#if !defined(XERCESC_INCLUDE_GUARD_XINCLUDEUTILS_HPP) +#define XERCESC_INCLUDE_GUARD_XINCLUDEUTILS_HPP + +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class XMLEntityHandler; + +typedef struct XIncludeHistoryNode{ + XMLCh *URI; + struct XIncludeHistoryNode *next; +}XIncludeHistoryNode; + +/** + * Class implementing all the utility functions required by an XInclude parser. + * + * This class is designed primarily for internal use. This class implements + * utility methods to be called by an XInclude parser. It is intended to encapsulate + * the actual processing and recognition of XInclude components. + */ +class XINCLUDE_EXPORT XIncludeUtils +{ +private: + + /** Constructor + * + */ + XIncludeUtils(XMLErrorReporter *errorReporter); + + /** Destructor + * + */ + ~XIncludeUtils(); + + /** Parse the supplied XInclude element performing relevant XInclude functionality + * + * @param xincludeNode The XInclude node to parse and action + * @param parsedDocument The DOMDocument to which the results of the XInclude are to be added + * + * @return true if the XInclude processing was successful, false if not. Note that an + * XInclude that fails resulting in a successful fallback action would return true. + */ + bool doDOMNodeXInclude(DOMNode *xincludeNode, DOMDocument *parsedDocument, XMLEntityHandler* entityResolver); + + /** Parse an XInclude xml file into a DOMDocument node. + * + * @param href the location of the document to include + * @param relativeHref + * @param parsedDocument + * + * @return a newly created DOMDocument containing the parsed and actioned + * href, or NULL if the document could not be loaded. + */ + DOMDocument *doXIncludeXMLFileDOM(const XMLCh *href, + const XMLCh *relativeHref, + DOMNode *xincludeNode, + DOMDocument *parsedDocument, + XMLEntityHandler* entityResolver); + + /** Parse an XInclude text file into a DOMText node. + * + * @param href the location of the document to include + * @param relativeHref + * @param encoding + * @param parsedDocument + * + * @return a newly created DOMText containing the parsed and actioned + * href, or NULL if the document could not be loaded. + */ + DOMText *doXIncludeTEXTFileDOM(const XMLCh *href, + const XMLCh *relativeHref, + const XMLCh *encoding, + DOMNode *xincludeNode, + DOMDocument *parsedDocument, + XMLEntityHandler* entityResolver); + + /** Detect whether the supplied details are correct for an xi:include element + * + * @param name the element name + * @param namespaceURI the element namespace + * + * @return true if details are valid for an xi:include element, false + * if not. + */ + static bool isXIIncludeElement(const XMLCh *name, const XMLCh *namespaceURI); + + /** Detect whether the supplied details are correct for an xi:fallback element + * + * @param name the element name + * @param namespaceURI the element namespace + * + * @return true if details are valid for an xi:fallback element, false + * if not. + */ + static bool isXIFallbackElement(const XMLCh *name, const XMLCh *namespaceURI); + + /** Detect whether the supplied DOMNode is an xi:include element + * + * @param node The node to check + * + * @return true if node is an xi:include element, false + * if not. + */ + static bool isXIIncludeDOMNode(DOMNode *node); + + /** Detect whether the supplied DOMNode is an xi:fallback element + * + * @param node The DOMNode to check + * + * @return true if node is an xi:fallback element, false + * if not. + */ + static bool isXIFallbackDOMNode(DOMNode *node); + + /** Walk the content of the supplied source node, performing any xinclude actions + * that are encountered. + * + * @param source A DOMNode to parse, this node may be modified by the method + * @param parsedDocument the DOMDocument to which the parsed results are to be copied. + * + * @return true if XInclude behaviour was successfully performed on source, false if not. + */ + bool parseDOMNodeDoingXInclude(DOMNode *source, DOMDocument *parsedDocument, XMLEntityHandler* entityResolver); + + /** Parse the supplied URI and escape all characters as specified by + * the XINclusions specification. + * + * @param hrefAttrValue the href to parse and escape. + * @param needsDeallocating set to true if the return value needs deallocating + * by the caller after use, false if the value returned is the same as the + * hrefAttrValue passed in. + * + * @return an escaped version of hrefAttrValue or hrefAttrValue itself if + * hrefAttrValue contains only valid characters. + */ + /* 4.1.1 */ + const XMLCh *getEscapedHRefAttrValue(const XMLCh *hrefAttrValue, bool &needsDeallocating); + + /** Set the accept and accept-lang parameters on HTTP requests generated while + * XIncluding. + * + * @param acceptAttrValue + * @param acceptLangAttrValue + * + * @return true if the values were successfully added to the HTTP request, false + * if not. + */ + /* 4.1.2 */ + bool setContentNegotiation(const XMLCh *acceptAttrValue, const XMLCh *acceptLangAttrValue); + + /** Check the characters passed in are all valid characters for XInclusion + * as specified at http://www.w3.org/TR/xinclude/#text-included-items + * + * @param includeChars the characters to parse for validity + * + * @return true if the includeChars parameter contains only valid characters + * for inclusion, false if there are invalid characters in includeChars. + */ + bool checkTextIsValidForInclude(XMLCh *includeChars); + + /** Add the supplied parameter to the InclusionHistoryStack + * + * @param URItoAdd the URI to add to the InclusionHistoryStack/ + * + * @return true if the URI was added, false if a problem prevented + * the URI being added. + */ + bool addDocumentURIToCurrentInclusionHistoryStack(const XMLCh *URItoAdd); + + /** Check the XInclude InclusionHistoryStack to see if the supplied URI + * has already been included. This is used to ensure that circular inclusion + * chains are detected and that the inclusion mechanism does not get stuck in + * a loop. + * + * @param toFind the URI to look up. + * + * @return true if the toFind parameter is found in the InclusionHistortStack, + * false if the parameter is not in the stack or the stack is empty. + */ + bool isInCurrentInclusionHistoryStack(const XMLCh *toFind); + + /** Pop (i.e. remove and return) the top value from the InclusionHistoryStack + * + * @param toPop the value that is expected to be at the top of the stack, or + * NULL if no checking is required. + * + * @return the element at the top of the stack + */ + XIncludeHistoryNode * popFromCurrentInclusionHistoryStack(const XMLCh *toPop); + + /** Free the internal inclusion history list. + * + * @return nothing + */ + void freeInclusionHistory(); + + /** Construct and pass on an error description + * + * @param errorNode The DOMNode that was being parsed when the error occurred + * @param errorType The severity of the error + * @param errorMsg An optional message to include in the error report + * @param href The URI of the document being parsed. + * + * @return true if the errorHandler requests continuation of parsing despite error + * false if the errorHandler requests parsing end on encountering error, or it + * there is no error handler. + */ + bool reportError(const DOMNode* const errorNode + , XMLErrs::Codes errorType + , const XMLCh* const errorMsg + , const XMLCh* const href); + +public: + /* temporarily public to facilitate helper func getBaseAttrValue */ + static const XMLCh fgXIBaseAttrName[]; +private: + XIncludeHistoryNode *fIncludeHistoryHead; + XMLSize_t fErrorCount; + XMLErrorReporter *fErrorReporter; + static const XMLCh fgXIIncludeQName[]; + static const XMLCh fgXIFallbackQName[]; + static const XMLCh fgXIIncludeHREFAttrName[]; + static const XMLCh fgXIIncludeParseAttrName[]; + static const XMLCh fgXIIncludeParseAttrXMLValue[]; + static const XMLCh fgXIIncludeParseAttrTextValue[]; + static const XMLCh fgXIIncludeXPointerAttrName[]; + static const XMLCh fgXIIncludeEncodingAttrName[]; + static const XMLCh fgXIIncludeAcceptAttrName[]; + static const XMLCh fgXIIncludeAcceptLanguageAttrName[]; + static const XMLCh fgXIIIncludeNamespaceURI[]; + + friend class XIncludeDOMDocumentProcessor; + friend class AbstractDOMParser; +}; + +XERCES_CPP_NAMESPACE_END + +#endif diff --git a/src/libs/xerces-c/msvc/lib/xerces-c_3.lib b/src/libs/xerces-c/msvc/lib/xerces-c_3.lib new file mode 100644 index 000000000000..28979a119c7e Binary files /dev/null and b/src/libs/xerces-c/msvc/lib/xerces-c_3.lib differ diff --git a/src/test/Seamly2DTest/Seamly2DTest.pro b/src/test/Seamly2DTest/Seamly2DTest.pro index 9eb7e9e05094..386963ceacb9 100644 --- a/src/test/Seamly2DTest/Seamly2DTest.pro +++ b/src/test/Seamly2DTest/Seamly2DTest.pro @@ -179,6 +179,7 @@ win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vpropertyexplorer/$${DE else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vpropertyexplorer/$${DESTDIR}/libvpropertyexplorer.a # xerces library -win32: LIBS += -L$$PWD/../../../extern/xerces-c/lib/ -lxerces-c_3D -macx: LIBS += -L/usr/local/lib -lxerces-c-3.2 -else:unix|win32-g++: LIBS += -lxerces-c-3.2 +macx: LIBS += -L$${PWD}/../../libs/xerces-c/macx/lib -lxerces-c +else:unix: LIBS += -lxerces-c +win32:!win32-g++: LIBS += -L$${PWD}/../../libs/xerces-c/msvc/lib -lxerces-c_3 +win32-g++: LIBS += -L$${PWD}/../../libs/xerces-c/mingw/lib -lxerces-c