| The Gaudi Framework v29r1 (5cd95fa2)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Types | Public Member Functions | Private Attributes | List of all members
Gaudi::Parsers::PropertyValue Class Referencefinal

`#include <src/JobOptionsSvc/PropertyValue.h>`

Collaboration diagram for Gaudi::Parsers::PropertyValue:
[legend]

## Public Types
typedef boost::variant< std::string, std::vector< std::string >, std::map< std::string, std::string > > | Value
typedef std::vector< std::string > | VectorOfStrings
typedef std::map< std::string, std::string > | MapOfStrings

## Public Member Functions
| PropertyValue (Value value, bool is_reference=false)
| PropertyValue (Value value, const Position &position, bool is_reference=false)
const Position & | position () const
std::string & | String ()
const std::string & | String () const
VectorOfStrings & | Vector ()
const VectorOfStrings & | Vector () const
MapOfStrings & | Map ()
const MapOfStrings & | Map () const
std::string | ToString () const
bool | HasPosition () const
bool | IsSimple () const
bool | IsVector () const
bool | IsMap () const
bool | IsReference () const
PropertyValue & | operator+= (const PropertyValue &right)
const PropertyValue | operator+ (const PropertyValue &right)
PropertyValue & | operator-= (const PropertyValue &right)
const PropertyValue | operator- (const PropertyValue &right)

## Private Attributes
Value | value_
Position | position_
bool | is_reference_

## Detailed Description

Definition at line 22 of file PropertyValue.h.

## Member Typedef Documentation

typedef std::map<std::string, std::string> Gaudi::Parsers::PropertyValue::MapOfStrings

Definition at line 28 of file PropertyValue.h.

typedef boost::variant<std::string, std::vector<std::string>, std::map<std::string, std::string> > Gaudi::Parsers::PropertyValue::Value

Definition at line 26 of file PropertyValue.h.

typedef std::vector<std::string> Gaudi::Parsers::PropertyValue::VectorOfStrings

Definition at line 27 of file PropertyValue.h.

## Constructor & Destructor Documentation

Gaudi::Parsers::PropertyValue::PropertyValue | ( | Value | value,
|  | bool | is_reference = `false`
| ) |  |
| inline explicit

Definition at line 31 of file PropertyValue.h.

32 : value_( std::move( value ) ), is_reference_( is_reference )
33 {
34 }
std::move
T move(T...args)
Gaudi::Parsers::PropertyValue::is_reference_
bool is_reference_
Definition: PropertyValue.h:69
Gaudi::Parsers::PropertyValue::value_
Value value_
Definition: PropertyValue.h:67

Gaudi::Parsers::PropertyValue::PropertyValue | ( | Value | value,
|  | const Position & | position,
|  | bool | is_reference = `false`
| ) |  |
| inline

Definition at line 35 of file PropertyValue.h.

36 : value_( std::move( value ) ), position_( position ), is_reference_( is_reference )
37 {
38 }
Gaudi::Parsers::PropertyValue::position_
Position position_
Definition: PropertyValue.h:68
Gaudi::Parsers::PropertyValue::position
const Position & position() const
Definition: PropertyValue.h:40
std::move
T move(T...args)
Gaudi::Parsers::PropertyValue::is_reference_
bool is_reference_
Definition: PropertyValue.h:69
Gaudi::Parsers::PropertyValue::value_
Value value_
Definition: PropertyValue.h:67

## Member Function Documentation

bool Gaudi::Parsers::PropertyValue::HasPosition | ( |  | ) | const
| inline

Definition at line 52 of file PropertyValue.h.

52 { return position_.Exists(); }
Gaudi::Parsers::PropertyValue::position_
Position position_
Definition: PropertyValue.h:68
Gaudi::Parsers::Position::Exists
bool Exists() const
Definition: Position.h:28

bool Gaudi::Parsers::PropertyValue::IsMap | ( |  | ) | const

Definition at line 19 of file PropertyValue.cpp.

19 { return boost::get<std::map<std::string, std::string>>( &value_ ) != NULL; }
Gaudi::Parsers::PropertyValue::value_
Value value_
Definition: PropertyValue.h:67

bool Gaudi::Parsers::PropertyValue::IsReference | ( |  | ) | const
| inline

Definition at line 56 of file PropertyValue.h.

56 { return is_reference_; };
Gaudi::Parsers::PropertyValue::is_reference_
bool is_reference_
Definition: PropertyValue.h:69

bool Gaudi::Parsers::PropertyValue::IsSimple | ( |  | ) | const

Definition at line 15 of file PropertyValue.cpp.

15 { return boost::get<std::string>( &value_ ) != NULL; }
Gaudi::Parsers::PropertyValue::value_
Value value_
Definition: PropertyValue.h:67

bool Gaudi::Parsers::PropertyValue::IsVector | ( |  | ) | const

Definition at line 17 of file PropertyValue.cpp.

17 { return boost::get<std::vector<std::string>>( &value_ ) != NULL; }
Gaudi::Parsers::PropertyValue::value_
Value value_
Definition: PropertyValue.h:67

MapOfStrings& Gaudi::Parsers::PropertyValue::Map | ( |  | ) |
| inline

Definition at line 48 of file PropertyValue.h.

48 { return boost::get<MapOfStrings>( value_ ); }
Gaudi::Parsers::PropertyValue::value_
Value value_
Definition: PropertyValue.h:67

const MapOfStrings& Gaudi::Parsers::PropertyValue::Map | ( |  | ) | const
| inline

Definition at line 49 of file PropertyValue.h.

49 { return boost::get<MapOfStrings>( value_ ); }
Gaudi::Parsers::PropertyValue::value_
Value value_
Definition: PropertyValue.h:67

const gp::PropertyValue Gaudi::Parsers::PropertyValue::operator+ | ( | const PropertyValue & | right | ) |

Definition at line 57 of file PropertyValue.cpp.

58 {
59 return PropertyValue( *this ) += right;
60 }
Gaudi::Parsers::PropertyValue::PropertyValue
PropertyValue(Value value, bool is_reference=false)
Definition: PropertyValue.h:31
std::right
T right(T...args)

gp::PropertyValue & Gaudi::Parsers::PropertyValue::operator+= | ( | const PropertyValue & | right | ) |

Definition at line 21 of file PropertyValue.cpp.

22 {
23
24 if ( IsSimple() || IsReference() ) {
25 throw PropertyValueException::WrongLValue();
26 }
27
28 if ( IsVector() ) {
29 if ( right.IsSimple() ) {
30 boost::get<VectorOfStrings>( value_ ).push_back( boost::get<std::string>( right.value_ ) );
31 return *this;
32 }
33 if ( right.IsVector() ) {
34 VectorOfStrings& vec = boost::get<VectorOfStrings>( value_ );
35 for ( const auto& item : boost::get<VectorOfStrings>( right.value_ ) ) {
36 vec.push_back( item );
37 }
38 return *this;
39 }
40 throw PropertyValueException::WrongRValue();
41 }
42
43 if ( IsMap() ) {
44 if ( !right.IsMap() ) {
45 throw PropertyValueException::WrongRValue();
46 }
47 MapOfStrings& map = boost::get<MapOfStrings>( value_ );
48 const MapOfStrings& rmap = boost::get<MapOfStrings>( right.value_ );
49 for ( const auto& item : rmap ) {
50 map.insert( item );
51 }
52 return *this;
53 }
54 return *this;
55 }
Gaudi::Parsers::PropertyValue::VectorOfStrings
std::vector< std::string > VectorOfStrings
Definition: PropertyValue.h:27
Gaudi::Parsers::PropertyValue::MapOfStrings
std::map< std::string, std::string > MapOfStrings
Definition: PropertyValue.h:28
Gaudi::Parsers::PropertyValue::IsReference
bool IsReference() const
Definition: PropertyValue.h:56
std::right
T right(T...args)
Gaudi::Functional::details::details2::push_back
void push_back(Container &c, const Value &v, std::true_type)
Definition: FunctionalDetails.h:217
std::vector::push_back
T push_back(T...args)
Containers::map
struct GAUDI_API map
Parametrisation class for map-like implementation.
Definition: KeyedObjectManager.h:26
Gaudi::Parsers::PropertyValueException::WrongRValue
static PropertyValueException WrongRValue()
Definition: PropertyValue.h:82
Gaudi::Parsers::PropertyValue::IsVector
bool IsVector() const
Definition: PropertyValue.cpp:17
Gaudi::Parsers::PropertyValue::IsSimple
bool IsSimple() const
Definition: PropertyValue.cpp:15
std::map::insert
T insert(T...args)
Gaudi::Parsers::PropertyValue::value_
Value value_
Definition: PropertyValue.h:67
Gaudi::Parsers::PropertyValue::IsMap
bool IsMap() const
Definition: PropertyValue.cpp:19
Gaudi::Parsers::PropertyValueException::WrongLValue
static PropertyValueException WrongLValue()
Definition: PropertyValue.h:77

const gp::PropertyValue Gaudi::Parsers::PropertyValue::operator- | ( | const PropertyValue & | right | ) |

Definition at line 104 of file PropertyValue.cpp.

105 {
106 return PropertyValue( *this ) -= right;
107 }
Gaudi::Parsers::PropertyValue::PropertyValue
PropertyValue(Value value, bool is_reference=false)
Definition: PropertyValue.h:31
std::right
T right(T...args)

gp::PropertyValue & Gaudi::Parsers::PropertyValue::operator-= | ( | const PropertyValue & | right | ) |

Definition at line 62 of file PropertyValue.cpp.

63 {
64 if ( IsSimple() || IsReference() ) {
65 throw PropertyValueException::WrongLValue();
66 }
67
68 if ( IsVector() ) {
69 VectorOfStrings& vec = Vector();
70 if ( right.IsSimple() ) {
71 vec.erase( std::find( vec.begin(), vec.end(), right.String() ) );
72 return *this;
73 }
74
75 if ( right.IsVector() ) {
76 const VectorOfStrings& rvec = right.Vector();
77 for ( const auto& item : rvec ) {
78 vec.erase( std::find( vec.begin(), vec.end(), item ) );
79 }
80 return *this;
81 }
82 throw PropertyValueException::WrongRValue();
83 }
84
85 if ( IsMap() ) {
86 MapOfStrings& map = Map();
87 if ( right.IsSimple() ) {
88 map.erase( right.String() );
89 return *this;
90 }
91
92 if ( right.IsVector() ) {
93 const VectorOfStrings& rvec = right.Vector();
94 for ( const auto& item : rvec ) {
95 map.erase( item );
96 }
97 return *this;
98 }
99 throw PropertyValueException::WrongRValue();
100 }
101 throw PropertyValueException::WrongLValue();
102 }
Gaudi::Parsers::PropertyValue::VectorOfStrings
std::vector< std::string > VectorOfStrings
Definition: PropertyValue.h:27
Gaudi::Parsers::PropertyValue::MapOfStrings
std::map< std::string, std::string > MapOfStrings
Definition: PropertyValue.h:28
Gaudi::Parsers::PropertyValue::IsReference
bool IsReference() const
Definition: PropertyValue.h:56
std::right
T right(T...args)
Containers::map
struct GAUDI_API map
Parametrisation class for map-like implementation.
Definition: KeyedObjectManager.h:26
Gaudi::Parsers::PropertyValueException::WrongRValue
static PropertyValueException WrongRValue()
Definition: PropertyValue.h:82
Gaudi::Parsers::PropertyValue::IsVector
bool IsVector() const
Definition: PropertyValue.cpp:17
Gaudi::Parsers::PropertyValue::Vector
VectorOfStrings & Vector()
Definition: PropertyValue.h:45
Gaudi::Parsers::PropertyValue::IsSimple
bool IsSimple() const
Definition: PropertyValue.cpp:15
std::find
T find(T...args)
Gaudi::Parsers::PropertyValue::IsMap
bool IsMap() const
Definition: PropertyValue.cpp:19
Gaudi::Parsers::PropertyValueException::WrongLValue
static PropertyValueException WrongLValue()
Definition: PropertyValue.h:77
Gaudi::Parsers::PropertyValue::Map
MapOfStrings & Map()
Definition: PropertyValue.h:48

const Position& Gaudi::Parsers::PropertyValue::position | ( |  | ) | const
| inline

Definition at line 40 of file PropertyValue.h.

40 { return position_; }
Gaudi::Parsers::PropertyValue::position_
Position position_
Definition: PropertyValue.h:68

std::string& Gaudi::Parsers::PropertyValue::String | ( |  | ) |
| inline

Definition at line 42 of file PropertyValue.h.

42 { return boost::get<std::string>( value_ ); }
Gaudi::Parsers::PropertyValue::value_
Value value_
Definition: PropertyValue.h:67

const std::string& Gaudi::Parsers::PropertyValue::String | ( |  | ) | const
| inline

Definition at line 43 of file PropertyValue.h.

43 { return boost::get<std::string>( value_ ); }
Gaudi::Parsers::PropertyValue::value_
Value value_
Definition: PropertyValue.h:67

std::string Gaudi::Parsers::PropertyValue::ToString | ( |  | ) | const

Definition at line 109 of file PropertyValue.cpp.

110 {
111 if ( IsReference() ) {
112 const std::vector<std::string>* value = boost::get<std::vector<std::string>>( &value_ );
113 assert( value != NULL );
114 if ( value->at( 0 ) != "" ) {
115 return "@" + value->at( 0 ) + "." + value->at( 1 );
116 } else {
117 return "@" + value->at( 0 );
118 }
119 }
120 if ( const std::string* value = boost::get<std::string>( &value_ ) ) {
121 return *value;
122 } else if ( const std::vector<std::string>* value = boost::get<std::vector<std::string>>( &value_ ) ) {
123 std::string result = "[";
124 std::string delim = "";
125 for ( const auto& in : *value ) {
126 result += delim + in;
127 delim = ", ";
128 }
129 return result + "]";
130 } else if ( const std::map<std::string, std::string>* value =
131 boost::get<std::map<std::string, std::string>>( &value_ ) ) {
132 std::string result = "{";
133 std::string delim = "";
134 for ( const auto& in : *value ) {
135 result += delim + in.first + ":" + in.second;
136 delim = ", ";
137 }
138 return result + "}";
139 }
140 assert( false );
141 // @todo Check the validity of this logic
142 return std::string(); // avoid compilation warning
143 }
Gaudi::Parsers::PropertyValue::IsReference
bool IsReference() const
Definition: PropertyValue.h:56
std::map< std::string, std::string >
std::string
STL class.
std::vector::at
T at(T...args)
std::vector< std::string >
GaudiPython.Persistency.get
def get(type_)
Definition: Persistency.py:29
Gaudi::Parsers::PropertyValue::value_
Value value_
Definition: PropertyValue.h:67

VectorOfStrings& Gaudi::Parsers::PropertyValue::Vector | ( |  | ) |
| inline

Definition at line 45 of file PropertyValue.h.

45 { return boost::get<VectorOfStrings>( value_ ); }
Gaudi::Parsers::PropertyValue::value_
Value value_
Definition: PropertyValue.h:67

const VectorOfStrings& Gaudi::Parsers::PropertyValue::Vector | ( |  | ) | const
| inline

Definition at line 46 of file PropertyValue.h.

46 { return boost::get<VectorOfStrings>( value_ ); }
Gaudi::Parsers::PropertyValue::value_
Value value_
Definition: PropertyValue.h:67

## Member Data Documentation

bool Gaudi::Parsers::PropertyValue::is_reference_
| private

Definition at line 69 of file PropertyValue.h.

Position Gaudi::Parsers::PropertyValue::position_
| private

Definition at line 68 of file PropertyValue.h.

Value Gaudi::Parsers::PropertyValue::value_
| private

Definition at line 67 of file PropertyValue.h.

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

- GaudiCoreSvc/src/JobOptionsSvc/PropertyValue.h
- GaudiCoreSvc/src/JobOptionsSvc/PropertyValue.cpp