File indexing completed on 2026-04-09 07:49:04
0001 #pragma once
0002
0003 #include <vector>
0004 #include <string>
0005
0006 #include <xercesc/parsers/XercesDOMParser.hpp>
0007 #include <xercesc/util/PlatformUtils.hpp>
0008 #include <xercesc/sax/HandlerBase.hpp>
0009 #include <xercesc/util/XMLUni.hpp>
0010 #include <xercesc/dom/DOM.hpp>
0011
0012 #include "GDXML_API_EXPORT.hh"
0013
0014 #include "plog/Severity.h"
0015
0016 struct Constant
0017 {
0018 std::string name ;
0019 double value ;
0020 xercesc::DOMElement* constantElement ;
0021 };
0022
0023 struct Matrix
0024 {
0025 std::string name ;
0026 std::string values ;
0027 xercesc::DOMElement* matrixElement ;
0028 int repeat_index ;
0029
0030 bool operator==(const Matrix& rhs) const { return name.compare(rhs.name) == 0 ; }
0031 std::string desc() const ;
0032
0033 };
0034
0035
0036
0037 struct GDXML_API GDXMLRead
0038 {
0039 static const plog::Severity LEVEL ;
0040
0041 bool validate ;
0042 bool kludge_truncated_matrix ;
0043
0044 xercesc::ErrorHandler* handler ;
0045 xercesc::XercesDOMParser* parser ;
0046 xercesc::DOMDocument* doc ;
0047 xercesc::DOMElement* element ;
0048 XMLCh tempStr[10000];
0049
0050 xercesc::DOMElement* the_defineElement = nullptr ;
0051
0052 std::vector<Constant> constants ;
0053 std::vector<xercesc::DOMElement*> truncated_matrixElement ;
0054 std::vector<Matrix> matrix ;
0055
0056
0057 GDXMLRead( const char* path, bool kludge_truncated_matrix_);
0058 virtual ~GDXMLRead();
0059
0060 void DefineRead( const xercesc::DOMElement* const defineElement );
0061 void MatrixRead( const xercesc::DOMElement* const matrixElement, bool& truncated_values );
0062 Constant ConstantRead( const xercesc::DOMElement* const constantElement );
0063
0064 int checkDuplicatedMatrix();
0065 int pruneDuplicatedMatrix();
0066
0067
0068 void KludgeTruncatedMatrix(xercesc::DOMElement* matrixElement );
0069 std::string KludgeFix( const char* values );
0070
0071
0072 };
0073
0074
0075