/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #ifndef _OD_ASSETXMLPARSER_H_ #define _OD_ASSETXMLPARSER_H_ #include "ACommon.h" #include "AssetXMLParserBindings.h" #include "AssetXMLParserConstants.h" #include "AssetXMLParserMapOperator.h" #include "SharedPtr.h" #include "AssetAccessor.h" #include "AssetXMLParserExport.h" #include "OdStreamBuf.h" #include "OdBinaryData.h" // Forward declaration for xmlDocPtr to not include #include "tinyxml/tinyxml.h" struct _xmlDoc; #define OdAssetXMLParserModule L"TD_AssetXMLParser" // Forward declaration for xmlDocPtr to not include #include "tinyxml/tinyxml.h" struct _xmlDoc; class OdDbBaseHostAppServices; /** \details */ class ASSETXMLPARSER_EXPORT OdAssetXMLParser { public: bool m_isGeneric = false; OdAssetXMLParser(const OdString& xmlFileName, OdAssetAccessor* pAccessor); OdAssetXMLParser(const char* stream, OdAssetAccessor* pAccessor); OdAssetXMLParser(OdStreamBufPtr& stream, OdAssetAccessor* pAccessor); OdAssetXMLParser(OdAssetAccessor* pAccessor); virtual ~OdAssetXMLParser(); template bool ASSETXMLPARSER_EXPORT getValueFor(const OdString& destination, T& value) const; protected: OdSharedPtr m_pAccessor; struct _xmlDoc* m_xmlFile; void loadSchemaXML(); OdString m_rootBindingName; bool getBindingFor(const OdString& destination, OdAssetXMLParserBindings::Binding& binding) const; typedef std::map Bindings; Bindings m_bindings; OdAssetXMLParserConstantsPtr m_constants; typedef std::map MapOperators; MapOperators m_operators; mutable OdMutex m_mutex; }; template<> ASSETXMLPARSER_EXPORT bool OdAssetXMLParser::getValueFor( const OdString& propName, OdCmEntityColor& color) const; template<> ASSETXMLPARSER_EXPORT bool OdAssetXMLParser::getValueFor( const OdString& propName, OdRxObjectPtr& value) const; template<> ASSETXMLPARSER_EXPORT bool OdAssetXMLParser::getValueFor( const OdString& propName, OdAssetXMLParserMapOperator::Operator& value) const; typedef OdSharedPtr OdAssetXMLParserPtr; #endif // _OD_ASSETXMLPARSER_H_