| The Gaudi Framework v32r1 (f65d50dc)

StringKey.cpp
Go to the documentation of this file.
1 // ============================================================================
2 // Include files
3 // ============================================================================
4 // GaudiKernel
5 // ============================================================================
6 #include "GaudiKernel/StringKey.h"
7 #include "GaudiKernel/ToStream.h"
8 #include <Gaudi/Parsers/CommonParsers.h>
9 // ============================================================================
16 // ============================================================================
17 // constructor from the string: perform hashing
18 // ============================================================================
19 Gaudi::StringKey::StringKey( std::string key )
20 : m_str( std::move( key ) )
21 , m_hash( std::hash<std::string>()( m_str ) ) // NB! hashing here!!!
22 {}
23 // ============================================================================
24 // constructor from the string: perform hashing
25 // ============================================================================
26 Gaudi::StringKey::StringKey( const char* key )
27 : m_str( key )
28 , m_hash( std::hash<std::string>()( m_str ) ) // NB! hashing here!!!
29 {}
30 // ============================================================================
31 // the representation of the object
32 // ============================================================================
33 std::string Gaudi::StringKey::toString() const { return Gaudi::Utils::toString( m_str ); }
34 // ============================================================================
35 // the representation of the object
36 // ============================================================================
37 std::string Gaudi::StringKey::__str__() const { return toString(); }
38 // ============================================================================
39 // the representation of the object
40 // ============================================================================
41 std::string Gaudi::StringKey::__repr__() const { return toString(); }
42 // ============================================================================
43 // equality operator for python
44 bool Gaudi::StringKey::__eq__( const Gaudi::StringKey& right ) const { return this == &right || *this == right; }
45 // ============================================================================
46 // equality operators for python
47 // ============================================================================
48 bool Gaudi::StringKey::__eq__( const std::string& right ) const { return *this == right; }
49 // ============================================================================
50 // non-equality operator for python
51 // ============================================================================
52 bool Gaudi::StringKey::__neq__( const Gaudi::StringKey& right ) const { return this != &right && *this != right; }
53 // ============================================================================
54 // non-equality operator for python
55 // ============================================================================
56 bool Gaudi::StringKey::__neq__( const std::string& right ) const { return *this != right; }
57 // ============================================================================
58 /* send the object to stream (needed to use it as property)
59 * @see Gaudi::Utils::toString
60 * @see Gaudi::Utils::toStream
61 */
62 // ============================================================================
63 std::ostream& Gaudi::Utils::toStream( const Gaudi::StringKey& key, std::ostream& s ) {
64 return Gaudi::Utils::toStream( key.str(), s );
65 }
66 // ============================================================================
67 /* parse the key from the string
68 * @attention: this function is needed to use it as property
69 * @param result (OUTPUT) the parsing result
70 * @param input the input string
71 * @return status code
72 */
73 // ============================================================================
74 StatusCode Gaudi::Parsers::parse( Gaudi::StringKey& result, const std::string& input ) {
75 std::string _result;
76 StatusCode sc = parse( _result, input );
77 result = Gaudi::StringKey( _result );
78 return sc;
79 }
80 // ============================================================================
81 /* parse the vector of keys from the string
82 * @see Gaudi::Parsers
83 * @see Gaudi::Parsers::parse
84 * @see Gaudi::StringKey
85 * @attention: this function is needed to use it as property
86 * @param result (OUTPUT) the parsing result
87 * @param input the input string
88 * @return status code
89 */
90 // ============================================================================
91 StatusCode Gaudi::Parsers::parse( std::vector<Gaudi::StringKey>& result, const std::string& input ) {
92 result.clear();
93 typedef std::vector<std::string> Strings;
94 Strings _result;
95 StatusCode sc = parse( _result, input );
96 if ( sc.isFailure() ) { return sc; } // RETURN
97 result.reserve( _result.size() );
98 //
99 std::copy( _result.begin(), _result.end(), std::back_inserter( result ) );
100 //
101 return StatusCode::SUCCESS;
102 }
103
104 // ============================================================================
105 // The END
106 // ============================================================================
std::copy
T copy(T... args)
Gaudi::Utils::toStream
std::ostream & toStream(ITERATOR first, ITERATOR last, std::ostream &s, const std::string &open, const std::string &close, const std::string &delim)
the helper function to print the sequence
Definition: ToStream.h:284
Gaudi::StringKey::str
const std::string & str() const
the actual string
Definition: StringKey.h:45
Gaudi::Utils::toString
std::string toString(const TYPE &obj)
the generic implementation of the type conversion to the string
Definition: ToStream.h:334
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
std
STL namespace.
Gaudi::Parsers::parse
StatusCode parse(GaudiUtils::HashMap< K, V > &result, const std::string &input)
Basic parser for the types of HashMap used in DODBasicMapper.
Definition: DODBasicMapper.cpp:11
CommonParsers.h
The declaration of major parsing functions used e.g for (re)implementation of new extended properties...
Gaudi::StringKey
The helper class to represent the efficient "key" for access.
Definition: StringKey.h:34
std::string
STL class.
Gaudi::StringKey::StringKey
StringKey(const char *key="")
constructor from plain C-string, perform hashing
Definition: StringKey.cpp:26
Gaudi::StringKey::__eq__
bool __eq__(const StringKey &right) const
equality operator for python
Definition: StringKey.cpp:44
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
StringKey.h
std::vector::clear
T clear(T... args)
Gaudi::StringKey::__str__
std::string __str__() const
the representation of the object
Definition: StringKey.cpp:37
parse
StatusCode parse(DataObjID &dest, const std::string &src)
Definition: DataObjID.cpp:46
Gaudi::StringKey::__repr__
std::string __repr__() const
the representation of the object
Definition: StringKey.cpp:41
std::vector< Gaudi::StringKey >
std::back_inserter
T back_inserter(T... args)
gaudirun.s
string s
Definition: gaudirun.py:316
StatusCode::isFailure
bool isFailure() const
Definition: StatusCode.h:130
ToStream.h
implementation of various functions for streaming.
Gaudi::StringKey::__neq__
bool __neq__(const StringKey &right) const
non-equality operator for python
Definition: StringKey.cpp:52
Gaudi::StringKey::toString
std::string toString() const
string representation (for properties)
Definition: StringKey.cpp:33
std::ostream
STL class.
std::vector::reserve
T reserve(T... args)