Back to home page

EIC code displayed by LXR

 
 

    


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