All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Gaudi::Parsers::Node Class Reference

#include <src/JobOptionsSvc/Node.h>

Collaboration diagram for Gaudi::Parsers::Node:

Public Types

enum  NodeType {
  kRoot, kInclude, kIdentifier, kProperty,
  kOperation, kValue, kAssign, kEqual,
  kPlusEqual, kMinusEqual, kVector, kMap,
  kPair, kSimple, kString, kReal,
  kBool, kUnits, kUnit, kCondition,
  kIfdef, kIfndef, kElse, kPrintOptions,
  kPrintOn, kPrintOff, kShell, kPrintTree,
  kDumpFile, kPropertyRef
}
 

Public Member Functions

 Node ()
 
std::string name () const
 
std::string ToString () const
 
std::string ToString (int indent) const
 

Public Attributes

NodeType type
 
std::string value
 
std::vector< Nodechildren
 
Position position
 

Detailed Description

Definition at line 25 of file Node.h.

Member Enumeration Documentation

enum Gaudi::Parsers::Node::NodeType
Enumerator
kRoot 
kInclude 
kIdentifier 
kProperty 
kOperation 
kValue 
kAssign 
kEqual 
kPlusEqual 
kMinusEqual 
kVector 
kMap 
kPair 
kSimple 
kString 
kReal 
kBool 
kUnits 
kUnit 
kCondition 
kIfdef 
kIfndef 
kElse 
kPrintOptions 
kPrintOn 
kPrintOff 
kShell 
kPrintTree 
kDumpFile 
kPropertyRef 

Definition at line 27 of file Node.h.

31  kPropertyRef};

Constructor & Destructor Documentation

Gaudi::Parsers::Node::Node ( )
inline

Definition at line 37 of file Node.h.

Member Function Documentation

std::string Gaudi::Parsers::Node::name ( ) const

Definition at line 21 of file Node.cpp.

21  {
22  static bool init = false;
23  if (!init) { // lazy init
24  names[kRoot] = "root";
25  names[kInclude] = "include";
26  names[kIdentifier] = "identifier";
27  names[kProperty] = "property";
28  names[kOperation] = "operation";
29  names[kValue] = "value";
30  names[kAssign] = "assign";
31  names[kEqual] = "equal";
32  names[kPlusEqual] = "plus_equal";
33  names[kMinusEqual] = "minus_equal";
34  names[kVector] = "vector";
35  names[kMap] = "map";
36  names[kPair] = "pair";
37  names[kSimple] = "simple";
38  names[kString] = "string";
39  names[kReal] = "real";
40  names[kBool] = "bool";
41  names[kUnits] = "units";
42  names[kUnit] = "unit";
43  names[kCondition] = "condition";
44  names[kIfdef] = "ifdef";
45  names[kIfndef] = "ifndef";
46  names[kElse] = "else";
47  names[kPrintOptions] = "print_options";
48  names[kPrintOn] = "print_on";
49  names[kPrintOff] = "print_off";
50  names[kShell] = "shell";
51  names[kPrintTree] = "print_tree";
52  names[kDumpFile] = "dump_file";
53  names[kPropertyRef] = "property_ref";
54  }
55  return names[type];
56 }
std::string names[100]
Definition: Node.cpp:19
NodeType type
Definition: Node.h:32
std::string Gaudi::Parsers::Node::ToString ( ) const

Definition at line 59 of file Node.cpp.

59  {
60  return ToString(0);
61 }
std::string ToString() const
Definition: Node.cpp:59
std::string Gaudi::Parsers::Node::ToString ( int  indent) const

Definition at line 63 of file Node.cpp.

63  {
64 
65  std::string result = "";
66  tab(&result, indent);
67  result += "<" + name();
68  if (value != "")
69  result += " value=\"" + value + "\"";
70  if (position.line() != 0)
71  result += " line=\"" + str(boost::format("%1%") % position.line())
72  + "\"";
73  if (position.column() != 0)
74  result += " column=\"" + str(boost::format("%1%") % position.column())
75  + "\"";
76 
77  if (children.size() == 0) {
78  result += "/>\n";
79  } else {
80  result += ">\n";
81  BOOST_FOREACH(Node const& node, children)
82  {
83  result += node.ToString(indent + 2);
84  }
85  tab(&result, indent);
86  result += str(boost::format("</%1%>\n") % name());
87  }
88  return result;
89 }
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".
Definition: MsgStream.cpp:133
std::string name() const
Definition: Node.cpp:21
unsigned column() const
Definition: Position.h:20
unsigned line() const
Definition: Position.h:19
void tab(std::string *str, int indent)
Definition: Node.cpp:14
std::string value
Definition: Node.h:33
Position position
Definition: Node.h:35
std::vector< Node > children
Definition: Node.h:34

Member Data Documentation

std::vector<Node> Gaudi::Parsers::Node::children

Definition at line 34 of file Node.h.

Position Gaudi::Parsers::Node::position

Definition at line 35 of file Node.h.

NodeType Gaudi::Parsers::Node::type

Definition at line 32 of file Node.h.

std::string Gaudi::Parsers::Node::value

Definition at line 33 of file Node.h.


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