| The Gaudi Framework v32r1 (f65d50dc)

DataStoreItem.h
Go to the documentation of this file.
1 #ifndef GAUDIKERNEL_DATASTOREITEM_H
2 #define GAUDIKERNEL_DATASTOREITEM_H
3
4 // STL include files
5 #include <string>
6
17 class DataStoreItem {
18 protected:
20 std::string m_path;
22 int m_depth;
23
24 public:
26 DataStoreItem( std::string path, int depth = 1 ) : m_path( std::move( path ) ), m_depth( depth ) { analyse(); }
28 DataStoreItem( const DataStoreItem& item ) : m_path( item.m_path ), m_depth( item.m_depth ) { analyse(); }
30 virtual ~DataStoreItem() = default;
31
33 bool operator==( const DataStoreItem& cmp ) const { return m_path == cmp.path() && m_depth == cmp.depth(); }
35 bool operator!=( const DataStoreItem& cmp ) const { return !( m_path == cmp.path() && m_depth == cmp.depth() ); }
37 DataStoreItem& operator=( const DataStoreItem& cmp ) {
38 m_path = cmp.path();
39 m_depth = cmp.depth();
40 analyse();
41 return *this;
42 }
44 void analyse() {
45 int len = m_path.length() - 1;
46 if ( m_path[len] == '*' ) {
47 m_depth = 99999999;
48 ( m_path[len - 1] == '/' ) ? m_path.erase( len - 1, 2 ) : m_path.erase( len, 1 );
49 } else if ( m_path[len] == '+' ) {
50 ( m_path[len - 1] == '/' ) ? m_path.erase( len - 1, 2 ) : m_path.erase( len, 1 );
51 m_depth = 2;
52 }
53 }
55 const std::string& path() const { return m_path; }
57 int depth() const { return m_depth; }
58 };
59 #endif // GAUDIKERNEL_DATASTOREITEM_H
DataStoreItem::m_path
std::string m_path
Path of item to be loaded.
Definition: DataStoreItem.h:20
std
STL namespace.
DataStoreItem
Description of the DataStoreItem class.
Definition: DataStoreItem.h:17
std::string
STL class.
DataStoreItem::analyse
void analyse()
Interprete the load path for special options.
Definition: DataStoreItem.h:44
DataStoreItem::DataStoreItem
DataStoreItem(std::string path, int depth=1)
Standard Constructor.
Definition: DataStoreItem.h:26
std::string::erase
T erase(T... args)
DataStoreItem::m_depth
int m_depth
Depth to be auto-loaded from the requested path onwards.
Definition: DataStoreItem.h:22
std::string::length
T length(T... args)
DataStoreItem::~DataStoreItem
virtual ~DataStoreItem()=default
Standard Destructor.
DataStoreItem::operator=
DataStoreItem & operator=(const DataStoreItem &cmp)
Equivalence operator.
Definition: DataStoreItem.h:37
DataStoreItem::DataStoreItem
DataStoreItem(const DataStoreItem &item)
Copy constructor.
Definition: DataStoreItem.h:28
DataStoreItem::operator==
bool operator==(const DataStoreItem &cmp) const
Equality operator.
Definition: DataStoreItem.h:33
DataStoreItem::depth
int depth() const
Accessor: Retrieve load depth.
Definition: DataStoreItem.h:57
DataStoreItem::path
const std::string & path() const
Accessor: Retrieve load path.
Definition: DataStoreItem.h:55
DataStoreItem::operator!=
bool operator!=(const DataStoreItem &cmp) const
Inequality operator.
Definition: DataStoreItem.h:35