The Gaudi Framework
master (bdbe7744)
Toggle main menu visibility
Loading...
Searching...
No Matches
Node.h
Go to the documentation of this file.
1
/***********************************************************************************\
2
* (c) Copyright 1998-2025 CERN for the benefit of the LHCb and ATLAS collaborations *
3
* *
4
* This software is distributed under the terms of the Apache version 2 licence, *
5
* copied verbatim in the file "LICENSE". *
6
* *
7
* In applying this licence, CERN does not waive the privileges and immunities *
8
* granted to it by virtue of its status as an Intergovernmental Organization *
9
* or submit itself to any jurisdiction. *
10
\***********************************************************************************/
11
#pragma once
12
13
#include "
Iterator.h
"
14
#include "
Position.h
"
15
#include <boost/fusion/include/adapt_struct.hpp>
16
#include <boost/fusion/include/unused.hpp>
17
#include <boost/range/iterator_range.hpp>
18
#include <string>
19
#include <vector>
20
21
namespace
Gaudi
{
22
namespace
Parsers
{
23
struct
Node
final {
24
enum
NodeType
{
25
kRoot
,
26
kInclude
,
27
kIdentifier
,
28
kProperty
,
29
kOperation
,
30
kValue
,
31
kAssign
,
32
kEqual
,
33
kPlusEqual
,
34
kMinusEqual
,
35
kVector
,
36
kMap
,
37
kPair
,
38
kSimple
,
39
kString
,
40
kReal
,
41
kBool
,
42
kUnits
,
43
kUnit
,
44
kCondition
,
45
kIfdef
,
46
kIfndef
,
47
kElse
,
48
kPrintOptions
,
49
kPrintOn
,
50
kPrintOff
,
51
kShell
,
52
kPrintTree
,
53
kDumpFile
,
54
kPropertyRef
,
55
number_of_node_types
56
};
57
NodeType
type
=
kRoot
;
58
std::string
value
;
59
std::vector<Node>
children
;
60
Position
position
;
61
62
Node
() =
default
;
63
std::string
name
()
const
;
64
std::string
ToString
(
int
indent = 0 )
const
;
65
};
66
67
struct
NodeOperations
final {
68
struct
value
{};
69
70
void
operator()
(
Node
& node,
Node::NodeType
type )
const
{ node.
type
= type; }
71
72
void
operator()
(
Node
& node,
Node
child )
const
{ node.
children
.push_back( std::move( child ) ); }
73
74
void
operator()
(
Node
& node, std::string val )
const
{ node.
value
= std::move( val ); }
75
76
void
operator()
(
Node
& node, boost::iterator_range<Iterator>
range
)
const
{
77
node.
value
= boost::copy_range<std::string>(
range
);
78
}
79
80
void
operator()
(
Node
& node,
bool
val )
const
{ node.
value
= val ?
"1"
:
"0"
; }
81
82
void
operator()
(
Node
& node,
const
Iterator
& iter )
const
{
83
const
IteratorPosition
& pos = iter.get_position();
84
node.
position
=
Position
( pos.file, pos.line, pos.column );
85
}
86
};
87
}
// namespace Parsers
88
}
// namespace Gaudi
89
// cppcheck-suppress unknownMacro
90
BOOST_FUSION_ADAPT_STRUCT(
Gaudi::Parsers::Node
,
91
(
Gaudi::Parsers::Node::NodeType
,
92
type )( std::string, value )( std::vector<Gaudi::Parsers::Node>, children ) )
Iterator.h
IteratorPosition
boost::spirit::classic::file_position_base< std::string > IteratorPosition
Definition
Iterator.h:19
Iterator
boost::spirit::classic::position_iterator2< ForwardIterator > Iterator
Definition
Iterator.h:18
Position.h
Gaudi::Parsers::Position
Definition
Position.h:17
Gaudi::Parsers
Definition
DODBasicMapper.cpp:17
Gaudi
This file provides a Grammar for the type Gaudi::Accumulators::Axis It allows to use that type from p...
Definition
__init__.py:1
Gaudi::range
NamedRange_< CONTAINER > range(const CONTAINER &cnt, std::string name)
simple function to create the named range from arbitrary container
Definition
NamedRange.h:111
Gaudi::Parsers::Node
Definition
Node.h:23
Gaudi::Parsers::Node::Node
Node()=default
Gaudi::Parsers::Node::NodeType
NodeType
Definition
Node.h:24
Gaudi::Parsers::Node::kString
@ kString
Definition
Node.h:39
Gaudi::Parsers::Node::kRoot
@ kRoot
Definition
Node.h:25
Gaudi::Parsers::Node::kVector
@ kVector
Definition
Node.h:35
Gaudi::Parsers::Node::kPrintOff
@ kPrintOff
Definition
Node.h:50
Gaudi::Parsers::Node::kPlusEqual
@ kPlusEqual
Definition
Node.h:33
Gaudi::Parsers::Node::kPrintTree
@ kPrintTree
Definition
Node.h:52
Gaudi::Parsers::Node::kUnit
@ kUnit
Definition
Node.h:43
Gaudi::Parsers::Node::kPrintOptions
@ kPrintOptions
Definition
Node.h:48
Gaudi::Parsers::Node::kDumpFile
@ kDumpFile
Definition
Node.h:53
Gaudi::Parsers::Node::kOperation
@ kOperation
Definition
Node.h:29
Gaudi::Parsers::Node::kSimple
@ kSimple
Definition
Node.h:38
Gaudi::Parsers::Node::kPropertyRef
@ kPropertyRef
Definition
Node.h:54
Gaudi::Parsers::Node::kEqual
@ kEqual
Definition
Node.h:32
Gaudi::Parsers::Node::kElse
@ kElse
Definition
Node.h:47
Gaudi::Parsers::Node::kShell
@ kShell
Definition
Node.h:51
Gaudi::Parsers::Node::kMap
@ kMap
Definition
Node.h:36
Gaudi::Parsers::Node::kPair
@ kPair
Definition
Node.h:37
Gaudi::Parsers::Node::kMinusEqual
@ kMinusEqual
Definition
Node.h:34
Gaudi::Parsers::Node::kIfndef
@ kIfndef
Definition
Node.h:46
Gaudi::Parsers::Node::kUnits
@ kUnits
Definition
Node.h:42
Gaudi::Parsers::Node::kCondition
@ kCondition
Definition
Node.h:44
Gaudi::Parsers::Node::kPrintOn
@ kPrintOn
Definition
Node.h:49
Gaudi::Parsers::Node::kIdentifier
@ kIdentifier
Definition
Node.h:27
Gaudi::Parsers::Node::kIfdef
@ kIfdef
Definition
Node.h:45
Gaudi::Parsers::Node::kValue
@ kValue
Definition
Node.h:30
Gaudi::Parsers::Node::kReal
@ kReal
Definition
Node.h:40
Gaudi::Parsers::Node::kInclude
@ kInclude
Definition
Node.h:26
Gaudi::Parsers::Node::kProperty
@ kProperty
Definition
Node.h:28
Gaudi::Parsers::Node::number_of_node_types
@ number_of_node_types
Definition
Node.h:55
Gaudi::Parsers::Node::kBool
@ kBool
Definition
Node.h:41
Gaudi::Parsers::Node::kAssign
@ kAssign
Definition
Node.h:31
Gaudi::Parsers::Node::value
std::string value
Definition
Node.h:58
Gaudi::Parsers::Node::position
Position position
Definition
Node.h:60
Gaudi::Parsers::Node::children
std::vector< Node > children
Definition
Node.h:59
Gaudi::Parsers::Node::type
NodeType type
Definition
Node.h:57
Gaudi::Parsers::Node::ToString
std::string ToString(int indent=0) const
Definition
Node.cpp:56
Gaudi::Parsers::Node::name
std::string name() const
Definition
Node.cpp:51
Gaudi::Parsers::NodeOperations::value
Definition
Node.h:68
Gaudi::Parsers::NodeOperations
Definition
Node.h:67
Gaudi::Parsers::NodeOperations::operator()
void operator()(Node &node, Node::NodeType type) const
Definition
Node.h:70
Gaudi::Parsers::NodeOperations::operator()
void operator()(Node &node, Node child) const
Definition
Node.h:72
Gaudi::Parsers::NodeOperations::operator()
void operator()(Node &node, bool val) const
Definition
Node.h:80
Gaudi::Parsers::NodeOperations::operator()
void operator()(Node &node, boost::iterator_range< Iterator > range) const
Definition
Node.h:76
Gaudi::Parsers::NodeOperations::operator()
void operator()(Node &node, std::string val) const
Definition
Node.h:74
Gaudi::Parsers::NodeOperations::operator()
void operator()(Node &node, const Iterator &iter) const
Definition
Node.h:82
GaudiCoreSvc
src
JobOptionsSvc
Node.h
Generated on
for The Gaudi Framework by
1.17.0