LCFIVertex  0.7.2
NeuralNetXMLReader.h
1 #ifndef NEURALNETXMLREADER_H
2 #define NEURALNETXMLREADER_H
3 #ifndef NEURALNETNOXMLREADER
4 #include "NeuralNetConfig.h"
5 
6 #if defined(_WIN32)&&!defined(USEXERCES)&&!defined(USETINYXML)
7 # import <msxml4.dll>
8 #elif defined(USEXERCES)&&!defined(USETINYXML)
9 #include <xercesc/parsers/XercesDOMParser.hpp>
10 #include <xercesc/sax/ErrorHandler.hpp>
11 #include <xercesc/dom/DOMDocument.hpp>
12 #include <xercesc/dom/DOMNodeList.hpp>
13 #else
14 #ifndef TIXML_USE_STL // TINYXML using STL classes
15 #define TIXML_USE_STL
16 #endif
17 //Change: 15/08/06 by Mark Grimes (mark.grimes@bristol.ac.uk)
18 //Added 'marlin/' here for the LCFI vertex package to reflect the Marlin directory structure
19 #include "marlin/tinyxml.h"
20 #endif
21 
22 #include <string>
23 #include <vector>
24 
25 //namespace nnet added 15/08/06 by Mark Grimes (mark.grimes@bristol.ac.uk) for the LCFI vertex package
26 namespace nnet
27 {
28 
29 class NEURALNETDLL NeuralNetXMLReader
30 {
31 public:
32  NeuralNetXMLReader(const std::string &xmlFileName);
33  NeuralNetXMLReader(const char *xmlFileName);
34  ~NeuralNetXMLReader(void);
35  void networkTopology(int &numberOfInputs,int &numberOfLayers);
36  void getNormalisationData(std::vector<std::string> &normaliserTypes,std::vector<std::vector<double> > &constructionData,
37  std::vector<double> &targetoffsets,std::vector<double> &targetranges);
38  int nextLayer();
39  int nextNeuron(std::string &neuronType,std::vector<double> &constructionData);
40 
41 private:
42  void init();
43  void clean();
44  void getLayerCollection();
45  void getNeuronCollection();
46 
47 private:
48  std::string _xmlFileName;
49  bool _ok;
50  int _currentLayer;
51  int _currentNeuron;
52 #if defined(_WIN32)&&!defined(USEXERCES)&&!defined(USETINYXML)
53  MSXML2::IXMLDOMDocumentPtr _pXMLDoc;
54  MSXML2::IXMLDOMNodeListPtr _pLayers;
55  MSXML2::IXMLDOMNodeListPtr _pNeurons;
56 #elif defined(USEXERCES)&&!defined(USETINYXML)
57  XERCES_CPP_NAMESPACE_QUALIFIER XercesDOMParser *_pDOMParser;
58  XERCES_CPP_NAMESPACE_QUALIFIER ErrorHandler *_errorHandler;
59  XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *_pDoc;
60  XERCES_CPP_NAMESPACE_QUALIFIER DOMNodeList *_pLayers;
61  XERCES_CPP_NAMESPACE_QUALIFIER DOMNodeList *_pNeurons;
62 #else
63  TiXmlDocument *_pXMLDoc;
64  TiXmlElement *_pDocRoot;
65  std::vector<TiXmlNode *> *_pLayers;
66  std::vector<TiXmlNode *> *_pNeurons;
67 #endif
68 };
69 
70 }//namespace nnet
71 
72 #endif
73 #endif