BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
xmlBase::IFile Class Reference

#include <IFile.h>

Inheritance diagram for xmlBase::IFile:

Public Types

typedef std::vector< int > intVector
typedef std::vector< double > doubleVector
typedef std::vector< int > intVector
typedef std::vector< double > doubleVector
typedef std::vector< int > intVector
typedef std::vector< double > doubleVector

Public Member Functions

 IFile (const char *filename)
 IFile (const DOMDocument *instrument)
 IFile (const DOMElement *instrument)
virtual ~IFile ()
virtual bool contains (const char *section, const char *item)
virtual int getInt (const char *section, const char *item)
virtual double getDouble (const char *section, const char *item)
virtual int getBool (const char *section, const char *item)
virtual const char * getString (const char *section, const char *item)
virtual intVector getIntVector (const char *section, const char *item)
virtual doubleVector getDoubleVector (const char *section, const char *item)
virtual int getInt (const char *section, const char *item, int defValue)
virtual double getDouble (const char *section, const char *item, double defValue)
virtual int getBool (const char *section, const char *item, int defValue)
virtual const char * getString (const char *section, const char *item, const char *defValue)
virtual intVector getIntVector (const char *section, const char *item, intVector defValues)
virtual doubleVector getDoubleVector (const char *section, const char *item, doubleVector defValues)
void setString (const char *section, const char *item, const char *newString)
void print ()
virtual void printOn (std::ostream &out=std::cout)
 IFile (const char *filename)
 IFile (const DOMDocument *instrument)
 IFile (const DOMElement *instrument)
virtual ~IFile ()
virtual bool contains (const char *section, const char *item)
virtual int getInt (const char *section, const char *item)
virtual double getDouble (const char *section, const char *item)
virtual int getBool (const char *section, const char *item)
virtual const char * getString (const char *section, const char *item)
virtual intVector getIntVector (const char *section, const char *item)
virtual doubleVector getDoubleVector (const char *section, const char *item)
virtual int getInt (const char *section, const char *item, int defValue)
virtual double getDouble (const char *section, const char *item, double defValue)
virtual int getBool (const char *section, const char *item, int defValue)
virtual const char * getString (const char *section, const char *item, const char *defValue)
virtual intVector getIntVector (const char *section, const char *item, intVector defValues)
virtual doubleVector getDoubleVector (const char *section, const char *item, doubleVector defValues)
void setString (const char *section, const char *item, const char *newString)
void print ()
virtual void printOn (std::ostream &out=std::cout)
 IFile (const char *filename)
 IFile (const DOMDocument *instrument)
 IFile (const DOMElement *instrument)
virtual ~IFile ()
virtual bool contains (const char *section, const char *item)
virtual int getInt (const char *section, const char *item)
virtual double getDouble (const char *section, const char *item)
virtual int getBool (const char *section, const char *item)
virtual const char * getString (const char *section, const char *item)
virtual intVector getIntVector (const char *section, const char *item)
virtual doubleVector getDoubleVector (const char *section, const char *item)
virtual int getInt (const char *section, const char *item, int defValue)
virtual double getDouble (const char *section, const char *item, double defValue)
virtual int getBool (const char *section, const char *item, int defValue)
virtual const char * getString (const char *section, const char *item, const char *defValue)
virtual intVector getIntVector (const char *section, const char *item, intVector defValues)
virtual doubleVector getDoubleVector (const char *section, const char *item, doubleVector defValues)
void setString (const char *section, const char *item, const char *newString)
void print ()
virtual void printOn (std::ostream &out=std::cout)

Protected Member Functions

 IFile ()
 IFile ()
 IFile ()

Static Protected Member Functions

static void stripBlanks (char *str1, const char *str2, int flags)
static int stricmp (const char *str1, const char *str2)
static void stripBlanks (char *str1, const char *str2, int flags)
static int stricmp (const char *str1, const char *str2)
static void stripBlanks (char *str1, const char *str2, int flags)
static int stricmp (const char *str1, const char *str2)

Friends

class IFile_Section
class IFile_Item

Detailed Description

Definition at line 80 of file Calibration/xmlBase/include/xmlBase/IFile.h.

Member Typedef Documentation

◆ doubleVector [1/3]

typedef std::vector<double> xmlBase::IFile::doubleVector

Definition at line 92 of file Calibration/xmlBase/include/xmlBase/IFile.h.

◆ doubleVector [2/3]

typedef std::vector<double> xmlBase::IFile::doubleVector

◆ doubleVector [3/3]

typedef std::vector<double> xmlBase::IFile::doubleVector

◆ intVector [1/3]

typedef std::vector<int> xmlBase::IFile::intVector

Definition at line 91 of file Calibration/xmlBase/include/xmlBase/IFile.h.

◆ intVector [2/3]

typedef std::vector<int> xmlBase::IFile::intVector

◆ intVector [3/3]

typedef std::vector<int> xmlBase::IFile::intVector

Constructor & Destructor Documentation

◆ IFile() [1/12]

xmlBase::IFile::IFile ( const char * filename)

Definition at line 130 of file IFile.cxx.

130 {
131 using facilities::Util;
132
133 XmlParser parser;
134
135 parser.doSchema( true );
136
137 std::string filenameStr = filename;
138 Util::expandEnvVar( &filenameStr );
139
140 // What if this fails (e.g., file doesn't exist or is not
141 // well-formed)?? How to report it?
142 DOMDocument* doc = parser.parse( filenameStr.c_str() );
143
144 // Check it's a good doc.
145 if ( doc == 0 )
146 {
147 std::cerr << "Attempt to construct IFile from null DOMDocument" << std::endl;
148 std::cerr.flush();
149 exit( 1 );
150 // FATAL_MACRO("Attempt to construct IFile from null DomDocument");
151 }
152
153 // If so, initialize IFile from it
154 domToIni( doc );
155 }

◆ IFile() [2/12]

xmlBase::IFile::IFile ( const DOMDocument * instrument)

Definition at line 103 of file IFile.cxx.

103 {
104 // check that argument is non-null
105 if ( doc == 0 )
106 {
107 // FATAL_MACRO("Attempt to construct IFile from null DOMDocument");
108 std::cerr << "Attempt to construct IFile from null DOMDocument" << std::endl;
109 std::cerr.flush();
110 exit( 1 );
111 }
112 // If so, call service to do the actual work
113 domToIni( doc );
114 }

◆ IFile() [3/12]

xmlBase::IFile::IFile ( const DOMElement * instrument)

Definition at line 116 of file IFile.cxx.

116 {
117 // check that argument is non-null
118 if ( doc == 0 )
119 {
120 // FATAL_MACRO("Attempt to construct IFile from null DOMElement");
121 std::cerr << "Attempt to construct IFile from null DOMDocument" << std::endl;
122 std::cerr.flush();
123 exit( 1 );
124 }
125 // If so, call service to do the actual work
126 domToIni( doc );
127 }

◆ ~IFile() [1/3]

xmlBase::IFile::~IFile ( )
virtual

Definition at line 92 of file IFile.cxx.

92 {
93 iterator it = begin();
94 while ( it != end() ) delete ( *it++ ).second;
95 }

◆ IFile() [4/12]

xmlBase::IFile::IFile ( )
inlineprotected

Definition at line 136 of file Calibration/xmlBase/include/xmlBase/IFile.h.

136{};

◆ IFile() [5/12]

xmlBase::IFile::IFile ( const char * filename)

◆ IFile() [6/12]

xmlBase::IFile::IFile ( const DOMDocument * instrument)

◆ IFile() [7/12]

xmlBase::IFile::IFile ( const DOMElement * instrument)

◆ ~IFile() [2/3]

virtual xmlBase::IFile::~IFile ( )
virtual

◆ IFile() [8/12]

xmlBase::IFile::IFile ( )
inlineprotected

◆ IFile() [9/12]

xmlBase::IFile::IFile ( const char * filename)

◆ IFile() [10/12]

xmlBase::IFile::IFile ( const DOMDocument * instrument)

◆ IFile() [11/12]

xmlBase::IFile::IFile ( const DOMElement * instrument)

◆ ~IFile() [3/3]

virtual xmlBase::IFile::~IFile ( )
virtual

◆ IFile() [12/12]

xmlBase::IFile::IFile ( )
inlineprotected

Member Function Documentation

◆ contains() [1/3]

bool xmlBase::IFile::contains ( const char * section,
const char * item )
virtual

Definition at line 221 of file IFile.cxx.

221 {
222 return ( IFile::_getstring( section, item, 0 ) != 0 );
223 }

Referenced by getBool(), getDouble(), getDoubleVector(), getInt(), getIntVector(), getString(), and lookFor().

◆ contains() [2/3]

virtual bool xmlBase::IFile::contains ( const char * section,
const char * item )
virtual

◆ contains() [3/3]

virtual bool xmlBase::IFile::contains ( const char * section,
const char * item )
virtual

◆ getBool() [1/6]

int xmlBase::IFile::getBool ( const char * section,
const char * item )
virtual

Definition at line 331 of file IFile.cxx.

331 {
332 std::string hilf( IFile::_getstring( section, item ) );
333
334 if ( hilf == "yes" ) return ( 1 );
335 else if ( hilf == "true" ) return ( 1 );
336 else if ( hilf == "1" ) return ( 1 );
337 else if ( hilf == "no" ) return ( 0 );
338 else if ( hilf == "false" ) return ( 0 );
339 else if ( hilf == "0" ) return ( 0 );
340 else
341 {
342 std::string errorString( "[" );
343 errorString +=
344 section + std::string( "]" ) + item + " = \'" + hilf + "\' is not boolean";
345 FATAL_MACRO( errorString );
346 return ( 0 );
347 }
348 }

Referenced by getBool().

◆ getBool() [2/6]

virtual int xmlBase::IFile::getBool ( const char * section,
const char * item )
virtual

◆ getBool() [3/6]

virtual int xmlBase::IFile::getBool ( const char * section,
const char * item )
virtual

◆ getBool() [4/6]

int xmlBase::IFile::getBool ( const char * section,
const char * item,
int defValue )
virtual

Definition at line 419 of file IFile.cxx.

419 {
420 return ( contains( section, item ) ) ? getBool( section, item ) : defValue;
421 }
virtual bool contains(const char *section, const char *item)
Definition IFile.cxx:221
virtual int getBool(const char *section, const char *item)
Definition IFile.cxx:331

◆ getBool() [5/6]

virtual int xmlBase::IFile::getBool ( const char * section,
const char * item,
int defValue )
virtual

◆ getBool() [6/6]

virtual int xmlBase::IFile::getBool ( const char * section,
const char * item,
int defValue )
virtual

◆ getDouble() [1/6]

double xmlBase::IFile::getDouble ( const char * section,
const char * item )
virtual

Definition at line 302 of file IFile.cxx.

302 {
303 // double hf;
304 std::string hilf( IFile::_getstring( section, item ) );
305
306 try
307 { return facilities::Util::stringToDouble( hilf ); } catch ( facilities::WrongType ex )
308 {
309 std::cerr << ( "from xmlBase::IFile::getDouble " ) << std::endl;
310 // FATAL_MACRO
311 std::cerr << ex.getMsg() << std::endl;
312 throw( IFileException( " " ) );
313 }
314 }
static double stringToDouble(const std::string &InStr)

Referenced by getDouble(), and lookFor().

◆ getDouble() [2/6]

virtual double xmlBase::IFile::getDouble ( const char * section,
const char * item )
virtual

◆ getDouble() [3/6]

virtual double xmlBase::IFile::getDouble ( const char * section,
const char * item )
virtual

◆ getDouble() [4/6]

double xmlBase::IFile::getDouble ( const char * section,
const char * item,
double defValue )
virtual

Definition at line 423 of file IFile.cxx.

423 {
424 return ( contains( section, item ) ) ? getDouble( section, item ) : defValue;
425 }
virtual double getDouble(const char *section, const char *item)
Definition IFile.cxx:302

◆ getDouble() [5/6]

virtual double xmlBase::IFile::getDouble ( const char * section,
const char * item,
double defValue )
virtual

◆ getDouble() [6/6]

virtual double xmlBase::IFile::getDouble ( const char * section,
const char * item,
double defValue )
virtual

◆ getDoubleVector() [1/6]

IFile::doubleVector xmlBase::IFile::getDoubleVector ( const char * section,
const char * item )
virtual

Definition at line 383 of file IFile.cxx.

383 {
384 doubleVector dv;
385 char buffer[1024];
386
387 strncpy( buffer, IFile::_getstring( section, item ), sizeof( buffer ) );
388 if ( strlen( buffer ) >= sizeof( buffer ) )
389 {
390 FATAL_MACRO( "string from _getstring() too long" );
391 return dv;
392 }
393 char* vString = strtok( buffer, "}" );
394 vString = strtok( buffer, "{" );
395
396 char* test = strtok( vString, "," );
397 while ( test != NULL )
398 {
399 dv.push_back( atof( test ) );
400 test = strtok( (char*)NULL, "," );
401 }
402 if ( dv.size() <= 0 )
403 {
404 std::string hilf( buffer );
405 std::string errorString( "[" );
406 errorString +=
407 section + std::string( "]" ) + item + " = \'" + hilf + "\' is not an double vector";
408 FATAL_MACRO( errorString );
409 }
410 return ( dv );
411 }
std::string test

Referenced by getDoubleVector().

◆ getDoubleVector() [2/6]

virtual doubleVector xmlBase::IFile::getDoubleVector ( const char * section,
const char * item )
virtual

◆ getDoubleVector() [3/6]

virtual doubleVector xmlBase::IFile::getDoubleVector ( const char * section,
const char * item )
virtual

◆ getDoubleVector() [4/6]

IFile::doubleVector xmlBase::IFile::getDoubleVector ( const char * section,
const char * item,
doubleVector defValues )
virtual

Definition at line 436 of file IFile.cxx.

437 {
438 return ( contains( section, item ) ) ? getDoubleVector( section, item ) : defValues;
439 }
virtual doubleVector getDoubleVector(const char *section, const char *item)
Definition IFile.cxx:383

◆ getDoubleVector() [5/6]

virtual doubleVector xmlBase::IFile::getDoubleVector ( const char * section,
const char * item,
doubleVector defValues )
virtual

◆ getDoubleVector() [6/6]

virtual doubleVector xmlBase::IFile::getDoubleVector ( const char * section,
const char * item,
doubleVector defValues )
virtual

◆ getInt() [1/6]

int xmlBase::IFile::getInt ( const char * section,
const char * item )
virtual

Definition at line 317 of file IFile.cxx.

317 {
318 // int hf;
319 std::string hilf( IFile::_getstring( section, item ) );
320
321 try
322 { return facilities::Util::stringToInt( hilf ); } catch ( facilities::WrongType ex )
323 {
324 std::cerr << ( "from xmlBase::IFile::getInt " ) << std::endl;
325 std::cerr << ex.getMsg() << std::endl;
326 throw( IFileException( " " ) );
327 }
328 }
static int stringToInt(const std::string &InStr)

Referenced by getInt(), and lookFor().

◆ getInt() [2/6]

virtual int xmlBase::IFile::getInt ( const char * section,
const char * item )
virtual

◆ getInt() [3/6]

virtual int xmlBase::IFile::getInt ( const char * section,
const char * item )
virtual

◆ getInt() [4/6]

int xmlBase::IFile::getInt ( const char * section,
const char * item,
int defValue )
virtual

Definition at line 415 of file IFile.cxx.

415 {
416 return ( contains( section, item ) ) ? getInt( section, item ) : defValue;
417 }
virtual int getInt(const char *section, const char *item)
Definition IFile.cxx:317

◆ getInt() [5/6]

virtual int xmlBase::IFile::getInt ( const char * section,
const char * item,
int defValue )
virtual

◆ getInt() [6/6]

virtual int xmlBase::IFile::getInt ( const char * section,
const char * item,
int defValue )
virtual

◆ getIntVector() [1/6]

IFile::intVector xmlBase::IFile::getIntVector ( const char * section,
const char * item )
virtual

Definition at line 351 of file IFile.cxx.

351 {
352 intVector iv;
353 char buffer[1024];
354
355 strncpy( buffer, IFile::_getstring( section, item ), sizeof( buffer ) - 1 );
356 if ( strlen( buffer ) >= sizeof( buffer ) )
357 {
358 FATAL_MACRO( "string returned from _getstring is too long" );
359 return iv;
360 }
361
362 char* vString = strtok( buffer, "}" );
363 vString = strtok( buffer, "{" );
364
365 char* test = strtok( vString, "," );
366 while ( test != NULL )
367 {
368 iv.push_back( atoi( test ) );
369 test = strtok( (char*)NULL, "," );
370 }
371 if ( iv.size() <= 0 )
372 {
373 std::string hilf( buffer );
374 std::string errorString( "[" );
375 errorString +=
376 section + std::string( "]" ) + item + " = \'" + hilf + "\' is not an integer vector";
377 FATAL_MACRO( errorString );
378 }
379 return ( iv );
380 }

Referenced by getIntVector().

◆ getIntVector() [2/6]

virtual intVector xmlBase::IFile::getIntVector ( const char * section,
const char * item )
virtual

◆ getIntVector() [3/6]

virtual intVector xmlBase::IFile::getIntVector ( const char * section,
const char * item )
virtual

◆ getIntVector() [4/6]

IFile::intVector xmlBase::IFile::getIntVector ( const char * section,
const char * item,
intVector defValues )
virtual

Definition at line 431 of file IFile.cxx.

432 {
433 return ( contains( section, item ) ) ? getIntVector( section, item ) : defValues;
434 }
virtual intVector getIntVector(const char *section, const char *item)
Definition IFile.cxx:351

◆ getIntVector() [5/6]

virtual intVector xmlBase::IFile::getIntVector ( const char * section,
const char * item,
intVector defValues )
virtual

◆ getIntVector() [6/6]

virtual intVector xmlBase::IFile::getIntVector ( const char * section,
const char * item,
intVector defValues )
virtual

◆ getString() [1/6]

const char * xmlBase::IFile::getString ( const char * section,
const char * item )
virtual

Definition at line 274 of file IFile.cxx.

274 {
275 return _getstring( section, item );
276 }

Referenced by getString(), and lookFor().

◆ getString() [2/6]

virtual const char * xmlBase::IFile::getString ( const char * section,
const char * item )
virtual

◆ getString() [3/6]

virtual const char * xmlBase::IFile::getString ( const char * section,
const char * item )
virtual

◆ getString() [4/6]

const char * xmlBase::IFile::getString ( const char * section,
const char * item,
const char * defValue )
virtual

Definition at line 427 of file IFile.cxx.

427 {
428 return ( contains( section, item ) ) ? getString( section, item ) : defValue;
429 }
virtual const char * getString(const char *section, const char *item)
Definition IFile.cxx:274

◆ getString() [5/6]

virtual const char * xmlBase::IFile::getString ( const char * section,
const char * item,
const char * defValue )
virtual

◆ getString() [6/6]

virtual const char * xmlBase::IFile::getString ( const char * section,
const char * item,
const char * defValue )
virtual

◆ print() [1/3]

void xmlBase::IFile::print ( )

Definition at line 46 of file IFile.cxx.

46 {
47 printOn( std::cout );
48 std::cout.flush();
49 }
virtual void printOn(std::ostream &out=std::cout)
Definition IFile.cxx:31

◆ print() [2/3]

void xmlBase::IFile::print ( )

◆ print() [3/3]

void xmlBase::IFile::print ( )

◆ printOn() [1/3]

void xmlBase::IFile::printOn ( std::ostream & out = std::cout)
virtual

Definition at line 31 of file IFile.cxx.

31 {
32 for ( iterator section_map = begin(); section_map != end(); ++section_map )
33 {
34 IFile_Section& section = *( *section_map ).second;
35 out << "\n[" << ( *section_map ).first << "]\n";
36
37 for ( IFile_Section::iterator item_map = section.begin(); item_map != section.end();
38 ++item_map )
39 {
40 IFile_Item& item = *( *item_map ).second;
41 out << ( *item_map ).first << " = " << ( item.mystring() ) << "\n";
42 }
43 }
44 }

Referenced by print().

◆ printOn() [2/3]

virtual void xmlBase::IFile::printOn ( std::ostream & out = std::cout)
virtual

◆ printOn() [3/3]

virtual void xmlBase::IFile::printOn ( std::ostream & out = std::cout)
virtual

◆ setString() [1/3]

void xmlBase::IFile::setString ( const char * section,
const char * item,
const char * newString )

Definition at line 280 of file IFile.cxx.

281 {
282 char hitem[1000], hsection[1000];
283 IFile_Item* item = 0;
284 IFile_Section* section = 0;
285
286 stripBlanks( hitem, itemname, ALL );
287 stripBlanks( hsection, sectionname, ALL );
288
289 iterator it = find( std::string( hsection ) );
290
291 if ( it != end() )
292 {
293 section = ( *it ).second;
294
295 if ( section->contains( hitem ) ) item = section->lookUp( hitem );
296 }
297
298 if ( item ) item->mystring() = newString;
299 }
#define ALL
Definition IFile.cxx:27
static void stripBlanks(char *str1, const char *str2, int flags)
Definition IFile.cxx:63

◆ setString() [2/3]

void xmlBase::IFile::setString ( const char * section,
const char * item,
const char * newString )

◆ setString() [3/3]

void xmlBase::IFile::setString ( const char * section,
const char * item,
const char * newString )

◆ stricmp() [1/3]

int xmlBase::IFile::stricmp ( const char * str1,
const char * str2 )
staticprotected

Definition at line 52 of file IFile.cxx.

52 {
53 while ( *str1 && *str2 && toupper( *str1 ) == toupper( *str2 ) )
54 {
55 str1++;
56 str2++;
57 }
58
59 return ( toupper( *str1 ) - toupper( *str2 ) );
60 }

◆ stricmp() [2/3]

int xmlBase::IFile::stricmp ( const char * str1,
const char * str2 )
staticprotected

◆ stricmp() [3/3]

int xmlBase::IFile::stricmp ( const char * str1,
const char * str2 )
staticprotected

◆ stripBlanks() [1/3]

void xmlBase::IFile::stripBlanks ( char * str1,
const char * str2,
int flags )
staticprotected

Definition at line 63 of file IFile.cxx.

63 {
64 if ( flags & ALL )
65 {
66 while ( *str2 )
67 {
68 if ( *str2 == ' ' || *str2 == '\t' ) str2++;
69 else *str1++ = *str2++;
70 }
71 *str1 = 0;
72 }
73 else
74 {
75 if ( flags & LEADING )
76 while ( *str2 && ( *str2 == ' ' || *str2 == '\t' ) ) str2++;
77
78 strcpy( str1, str2 );
79
80 if ( flags & TRAILING )
81 {
82 str1 += strlen( str1 );
83
84 do str1--;
85 while ( *str1 == ' ' || *str1 == '\t' );
86 *++str1 = 0;
87 }
88 }
89 }
#define LEADING
Definition IFile.cxx:26
#define TRAILING
Definition IFile.cxx:28

Referenced by setString().

◆ stripBlanks() [2/3]

void xmlBase::IFile::stripBlanks ( char * str1,
const char * str2,
int flags )
staticprotected

◆ stripBlanks() [3/3]

void xmlBase::IFile::stripBlanks ( char * str1,
const char * str2,
int flags )
staticprotected

◆ IFile_Item

IFile_Item
friend

Definition at line 129 of file Calibration/xmlBase/include/xmlBase/IFile.h.

Referenced by IFile_Item, printOn(), and setString().

◆ IFile_Section

IFile_Section
friend

check for and replace an environment variable within a string Soon to become obsolete – maybe is by now

Definition at line 128 of file Calibration/xmlBase/include/xmlBase/IFile.h.

Referenced by IFile_Section, printOn(), and setString().


The documentation for this class was generated from the following files: