The Gaudi Framework  master (594c33fa)
Gaudi::Parsers::Node Struct Referencefinal

#include </builds/gaudi/Gaudi/GaudiCoreSvc/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, number_of_node_types
}
 

Public Member Functions

 Node ()=default
 
std::string name () const
 
std::string ToString (int indent=0) const
 

Public Attributes

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

Detailed Description

Definition at line 35 of file Node.h.

Member Enumeration Documentation

◆ 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 
number_of_node_types 

Definition at line 36 of file Node.h.

36  {
37  kRoot,
38  kInclude,
40  kProperty,
41  kOperation,
42  kValue,
43  kAssign,
44  kEqual,
45  kPlusEqual,
47  kVector,
48  kMap,
49  kPair,
50  kSimple,
51  kString,
52  kReal,
53  kBool,
54  kUnits,
55  kUnit,
56  kCondition,
57  kIfdef,
58  kIfndef,
59  kElse,
61  kPrintOn,
62  kPrintOff,
63  kShell,
64  kPrintTree,
65  kDumpFile,
68  };

Constructor & Destructor Documentation

◆ Node()

Gaudi::Parsers::Node::Node ( )
default

Member Function Documentation

◆ name()

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

Definition at line 57 of file Node.cpp.

57  {
58  static const auto names = init_names();
59  return names[type];
60 }

◆ ToString()

std::string Gaudi::Parsers::Node::ToString ( int  indent = 0) const

Definition at line 63 of file Node.cpp.

63  {
64 
65  std::string result( indent, ' ' );
66  result += "<" + name();
67  if ( !value.empty() ) result += " value=\"" + value + "\"";
68  if ( position.line() != 0 ) result += " line=\"" + std::to_string( position.line() ) + "\"";
69  if ( position.column() != 0 ) result += " column=\"" + std::to_string( position.column() ) + "\"";
70  if ( children.empty() ) {
71  result += "/>\n";
72  } else {
73  result = std::accumulate( std::begin( children ), std::end( children ), result + ">\n",
74  [&]( std::string s, const gp::Node& node ) { return s + node.ToString( indent + 2 ); } )
75  .append( ' ', indent ) +
76  "</" + name() + ">\n";
77  }
78  return result;
79 }

Member Data Documentation

◆ children

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

Definition at line 71 of file Node.h.

◆ position

Position Gaudi::Parsers::Node::position

Definition at line 72 of file Node.h.

◆ type

NodeType Gaudi::Parsers::Node::type = kRoot

Definition at line 69 of file Node.h.

◆ value

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

Definition at line 70 of file Node.h.


The documentation for this struct was generated from the following files:
Gaudi::Parsers::Node::value
std::string value
Definition: Node.h:70
Gaudi::Parsers::Node::kOperation
@ kOperation
Definition: Node.h:41
Gaudi::Parsers::Node::kPrintOptions
@ kPrintOptions
Definition: Node.h:60
Gaudi::Parsers::Node::children
std::vector< Node > children
Definition: Node.h:71
Gaudi::Parsers::Node::kBool
@ kBool
Definition: Node.h:53
std::string
STL class.
Gaudi::Parsers::Node::kEqual
@ kEqual
Definition: Node.h:44
Gaudi::Parsers::Node::kInclude
@ kInclude
Definition: Node.h:38
Gaudi::Parsers::Node::kIdentifier
@ kIdentifier
Definition: Node.h:39
Gaudi::Parsers::Node::kMinusEqual
@ kMinusEqual
Definition: Node.h:46
gaudirun.s
string s
Definition: gaudirun.py:346
Gaudi::Parsers::Node::kCondition
@ kCondition
Definition: Node.h:56
Gaudi::Parsers::Node::kAssign
@ kAssign
Definition: Node.h:43
Gaudi::Parsers::Position::column
unsigned column() const
Definition: Position.h:30
Gaudi::Parsers::Node
Definition: Node.h:35
Gaudi::Parsers::Node::kPropertyRef
@ kPropertyRef
Definition: Node.h:66
Gaudi::Parsers::Node::kSimple
@ kSimple
Definition: Node.h:50
Gaudi::Parsers::Position::line
unsigned line() const
Definition: Position.h:29
Gaudi::Parsers::Node::kProperty
@ kProperty
Definition: Node.h:40
Gaudi::Parsers::Node::kPrintOn
@ kPrintOn
Definition: Node.h:61
Gaudi::Parsers::Node::kIfdef
@ kIfdef
Definition: Node.h:57
Gaudi::Parsers::Node::kString
@ kString
Definition: Node.h:51
init_names
std::vector< std::string > init_names()
Definition: Node.cpp:21
Gaudi::Parsers::Node::name
std::string name() const
Definition: Node.cpp:57
Gaudi::Parsers::Node::kShell
@ kShell
Definition: Node.h:63
Gaudi::Parsers::Node::kPlusEqual
@ kPlusEqual
Definition: Node.h:45
Gaudi::Parsers::Node::ToString
std::string ToString(int indent=0) const
Definition: Node.cpp:63
Gaudi::Parsers::Node::kValue
@ kValue
Definition: Node.h:42
Gaudi::Parsers::Node::type
NodeType type
Definition: Node.h:69
Gaudi::Parsers::Node::kUnit
@ kUnit
Definition: Node.h:55
std::to_string
T to_string(T... args)
Gaudi::Parsers::Node::position
Position position
Definition: Node.h:72
std::accumulate
T accumulate(T... args)
Gaudi::Parsers::Node::kDumpFile
@ kDumpFile
Definition: Node.h:65
Gaudi::Parsers::Node::kVector
@ kVector
Definition: Node.h:47
Gaudi::Parsers::Node::kRoot
@ kRoot
Definition: Node.h:37
Gaudi::Parsers::Node::kElse
@ kElse
Definition: Node.h:59
Gaudi::Parsers::Node::kUnits
@ kUnits
Definition: Node.h:54
Gaudi::Parsers::Node::kPrintTree
@ kPrintTree
Definition: Node.h:64
std::begin
T begin(T... args)
Gaudi::Parsers::Node::number_of_node_types
@ number_of_node_types
Definition: Node.h:67
std::string::empty
T empty(T... args)
Gaudi::Parsers::Node::kPair
@ kPair
Definition: Node.h:49
Gaudi::Parsers::Node::kIfndef
@ kIfndef
Definition: Node.h:58
Gaudi::Parsers::Node::kMap
@ kMap
Definition: Node.h:48
std::end
T end(T... args)
Gaudi::Parsers::Node::kReal
@ kReal
Definition: Node.h:52
Gaudi::Parsers::Node::kPrintOff
@ kPrintOff
Definition: Node.h:62