Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
DbIter.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //====================================================================
6 // DbIter definition
7 //--------------------------------------------------------------------
8 //
9 // Package : StorageSvc (The POOL project)
10 //
11 // Description: Generic persistable object iterator
12 //
13 // @author M.Frank
14 //====================================================================
15 #ifndef POOL_DBITER_H
16 #define POOL_DBITER_H
17 
18 // Framework include files
19 #include "StorageSvc/DbObject.h"
20 #include "StorageSvc/DbContainer.h"
21 #include "StorageSvc/DbTypeInfo.h"
22 
23 
24 /*
25  * POOL namespace declaration
26  */
27 namespace pool {
28 
40  template <class T> class DbIter {
51 
52  public:
54  DbIter(const DbIter& c) = delete;
56  bool operator==(const DbIter<T>& iter) const = delete;
58  DbIter& operator=(const DbIter& copy) = delete;
59 
63  virtual ~DbIter() { }
65  const DbContainer& container() const{ return m_cnt; }
67  bool isValid() const { return m_obj.isValid(); }
69  DbHandle<T>& operator->() { return m_obj; }
71  DbHandle<T>& operator*() { return m_obj; }
73  DbHandle<T>& handle() { return m_obj; }
75  const DbHandle<T>& handle() const { return m_obj; }
77  const T* object() const { return m_obj.ptr(); }
78  T* object() { return m_obj.ptr(); }
80  const Token* token() const { return &m_token; }
82  DbStatus scan(const DbContainer& cntH, const DbTypeInfo* typ);
84  DbStatus next();
85  };
86 
88  template <> class DbIter<DbObject> {};
89 
90 } // End namespace pool
91 
93 template <class T> inline
95  const DbTypeInfo* typ)
96 {
97  if ( cntH.isValid() ) {
98  m_type = typ;
99  m_cnt = cntH;
100  }
101  m_obj = DbHandle<T>(cntH.type());
102 
103  return cntH.isValid()? Success : Error;
104 }
105 
107 template <class T> inline pool::DbStatus pool::DbIter<T>::next()
108 {
109  DbObjectHandle<DbObject> objH(m_obj.ptr());
110  objH._setType(m_obj.type());
111  m_token.oid().second++; // MN: assuming first OID=1?
112  if ( m_cnt.loadNext(objH, m_token.oid(), m_type).isSuccess() ) {
113  m_obj._setObject(static_cast<T*>(objH.ptr()));
114  return Success;
115  }
116  return Error;
117 }
118 
119 #endif // POOL_DBITER_H
pool::DbAccessMode
int DbAccessMode
Definition: Database/APR/StorageSvc/StorageSvc/pool.h:47
pool::DbIter::m_token
Token m_token
Current cursor for the loop.
Definition: DbIter.h:46
pool::DbIter::operator*
DbHandle< T > & operator*()
Dereference operator.
Definition: DbIter.h:71
pool::DbObject
void DbObject
Definition: Database/APR/StorageSvc/StorageSvc/pool.h:35
pool::DbStatus
Definition: DbStatus.h:67
pool::DbIter::token
const Token * token() const
Access to cursor token.
Definition: DbIter.h:80
pool::DbIter::isValid
bool isValid() const
Check validity.
Definition: DbIter.h:67
pool::DbIter::DbIter
DbIter(DbAccessMode mode=pool::READ)
Constructor with initializing arguments.
Definition: DbIter.h:61
pool
pool namespace
Definition: libname.h:15
DbIter< T >
pool::DbIter::handle
const DbHandle< T > & handle() const
Access to current object handle (CONST)
Definition: DbIter.h:75
pool::DbIter
Definition: DbIter.h:40
pool::DbIter::operator==
bool operator==(const DbIter< T > &iter) const =delete
Equality operator.
pool::DbIter::DbIter
DbIter(const DbIter &c)=delete
Copy constructor.
pool::DbObjectHandle
Definition: DbContainer.h:37
pool::DbIter::m_type
const DbTypeInfo * m_type
Object type used for this scan.
Definition: DbIter.h:48
pool::DbHandle< T >
pool::DbIter::operator=
DbIter & operator=(const DbIter &copy)=delete
Assignment operator.
pool::DbHandleBase::type
const DbType & type() const
Inquire storage type of the handle.
Definition: DbHandleBase.h:66
pool::DbIter::m_obj
DbHandle< T > m_obj
Handle to current object.
Definition: DbIter.h:44
pool::DbIter::operator->
DbHandle< T > & operator->()
Dereference operator.
Definition: DbIter.h:69
Token
This class provides a token that identifies in a unique way objects on the persistent storage.
Definition: Token.h:21
m_type
TokenType m_type
the type
Definition: TProperty.cxx:44
DbContainer.h
pool::DbObjectHandle::_setType
void _setType(const DbType &type)
Set handle type.
Definition: DbObject.h:103
pool::DbIter::~DbIter
virtual ~DbIter()
Destructor.
Definition: DbIter.h:63
Preparation.mode
mode
Definition: Preparation.py:107
pool::DbIter::object
const T * object() const
Dereference operator.
Definition: DbIter.h:77
DbObject.h
pool::DbIter::object
T * object()
Definition: DbIter.h:78
pool::READ
@ READ
Definition: Database/APR/StorageSvc/StorageSvc/pool.h:68
pool::DbIter::m_mode
DbAccessMode m_mode
Data access type (Default to READ)
Definition: DbIter.h:50
pool::DbObjectHandle::oid
const Token::OID_t & oid() const
Access object oid.
Definition: DbObject.h:215
pool::DbIter::m_cnt
DbContainer m_cnt
Handle to container object.
Definition: DbIter.h:42
pool::DbContainer
Definition: DbContainer.h:51
pool::DbIter::handle
DbHandle< T > & handle()
Access to current object handle.
Definition: DbIter.h:73
pool::DbHandleBase::isValid
bool isValid() const
Validity check (Objy like)
Definition: DbHandleBase.h:64
pool::DbIter::container
const DbContainer & container() const
Access to container handler.
Definition: DbIter.h:65
L1Topo::Error
Error
The different types of error that can be flagged in the L1TopoRDO.
Definition: Error.h:16
pool::DbIter::next
DbStatus next()
Retrieve next element.
Definition: DbIter.h:107
calibdata.copy
bool copy
Definition: calibdata.py:27
python.compressB64.c
def c
Definition: compressB64.py:93
pool::DbIter::scan
DbStatus scan(const DbContainer &cntH, const DbTypeInfo *typ)
Scan the container.
Definition: DbIter.h:94
DbTypeInfo.h
pool::DbTypeInfo
Definition: DbTypeInfo.h:47
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35