00001
00002 #ifndef ParsingFunctionsH
00003 #define ParsingFunctionsH
00004
00005 #include "DataTypes.h"
00006
00007 #include <xercesc/dom/dom.hpp>
00008
00009 class clTreePopulation;
00010
00011 #include <fstream.h>
00012
00075 void FillSpeciesSpecificValue(xercesc::DOMElement *p_oParent, char *cTagName,
00076 char *cSubTagName, floatVal *p_array, int iNumSpecies,
00077 clTreePopulation *p_oPop, bool bRequired);
00078
00120 void FillSpeciesSpecificValue(xercesc::DOMElement *p_oParent, char *cTagName,
00121 char *cSubTagName, intVal *p_array, int iNumSpecies,
00122 clTreePopulation *p_oPop, bool bRequired);
00123
00124
00168 void FillSpeciesSpecificValue(xercesc::DOMElement *p_oParent, char *cTagName,
00169 char *cSubTagName, boolVal *p_array, int iNumSpecies,
00170 clTreePopulation *p_oPop, bool bRequired);
00171
00172
00214 void FillSpeciesSpecificValue(xercesc::DOMElement *p_oParent, char *cTagName,
00215 char *cSubTagName, float *p_fArray, clTreePopulation *p_oPop,
00216 bool bRequired);
00217
00259 void FillSpeciesSpecificValue(xercesc::DOMElement *p_oParent, char *cTagName,
00260 char *cSubTagName, int *p_iArray, clTreePopulation *p_oPop,
00261 bool bRequired);
00262
00273 short int GetNodeSpeciesCode(xercesc::DOMNode *p_oDocNode, clTreePopulation *p_oPop);
00274
00294 void FillSingleValue(xercesc::DOMElement *p_oParent, char *cTagName,
00295 int *p_iValToFill, bool bRequired);
00296
00320 void FillSingleValue(xercesc::DOMElement *p_oParent, char *cTagName,
00321 float *p_fValToFill, bool bRequired);
00322
00344 void FillSingleValue(xercesc::DOMElement *p_oParent, char *cTagName,
00345 char *p_cValToFill, int iMaxSize, bool bRequired);
00346
00368 void FillSingleValue(xercesc::DOMElement *p_oParent, char *cTagName,
00369 bool *p_bValToFill, bool bRequired);
00370
00376
00377
00382 class clStreamBufSwapper
00383 {
00384 public:
00385
00392 clStreamBufSwapper(ostream & orig, fstream & replacement)
00393 : buf_(orig.rdbuf()), str_(orig)
00394 { orig.rdbuf(replacement.rdbuf()); }
00395
00400 ~clStreamBufSwapper() { str_.rdbuf(buf_); }
00401 private:
00402 std::streambuf * buf_;
00403 std::ostream & str_;
00404 } ;
00405
00406
00407
00408 #endif