ATLAS Offline Software
Loading...
Searching...
No Matches
Container.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include "Container.h"
11#include "TokenIterator.h"
12
14 long technology,
15 const std::string& name ):
16 m_name( name ),
17 m_fileDescriptor( fileDescriptor ),
19{}
20
23{
25 this->name() );
26}
27
28bool
29pool::Container::attributeOfType( const std::string& attributeName,
30 void* data,
31 const std::type_info& typeInfo,
32 const std::string& option )
33{
34 if( !m_fileDescriptor.dbc() ) return false;
35
36 pool::DbOption containerOption( attributeName, option );
37
38 DbDatabase dbH( m_fileDescriptor.dbc()->handle() );
39 DbContainer cntH( dbH.find(name()) );
40 if( !cntH.isValid() and !cntH.open(dbH, name(), 0, dbH.type(), Io::READ).isSuccess() ) {
41 return false;
42 }
43 if( !cntH.getOption(containerOption).isSuccess() ) return false;
44 return containerOption.i_getValue(typeInfo, data).isSuccess();
45}
46
47
48bool
49pool::Container::setAttributeOfType( const std::string& attributeName,
50 const void* data,
51 const std::type_info& typeInfo,
52 const std::string& option )
53{
54 if( !m_fileDescriptor.dbc() ) return false;
55
56 pool::DbOption containerOption( attributeName, option );
57 if( !containerOption.i_setValue(typeInfo, const_cast<void*>( data )).isSuccess() ) return false;
58
59 DbDatabase dbH( m_fileDescriptor.dbc()->handle() );
60 DbContainer cntH( dbH.find(name()) );
61 if( !cntH.isValid() and !cntH.open(dbH, name(), 0, dbH.type(), Io::READ).isSuccess() ) {
62 return false;
63 }
64 return cntH.setOption(containerOption).isSuccess();
65}
virtual ITokenIterator * tokens() override
Starts an iteration over the tokens in the container.
Definition Container.cxx:22
virtual long technology() const override final
Returns the technology identifier for this container.
Definition Container.h:37
long m_technology
The technology identifier.
Definition Container.h:70
virtual const std::string & name() const override final
Returns the name of this container.
Definition Container.h:34
FileDescriptor & m_fileDescriptor
Reference to file descriptor of the parent database.
Definition Container.h:67
std::string m_name
The name of the container.
Definition Container.h:64
virtual bool attributeOfType(const std::string &attributeName, void *data, const std::type_info &typeInfo, const std::string &option) override
The actual method returning the attribute data given a name.
Definition Container.cxx:29
virtual bool setAttributeOfType(const std::string &attributeName, const void *data, const std::type_info &typeInfo, const std::string &option) override
The actual method setting the attribute data given a name.
Definition Container.cxx:49
Container(FileDescriptor &fileDescriptor, long technology, const std::string &name)
Definition Container.cxx:13
Description: Definition of the object describing a database container Handle managing a DbContainerOb...
Definition DbContainer.h:48
StatusCode getOption(DbOption &refOpt)
Access options.
StatusCode open(DbDatabase &dbH, const std::string &nam, const DbTypeInfo *typ, const DbType &dbtyp, Io::IoFlag mod)
Open the container residing in <file> with given name and access mode.
StatusCode setOption(const DbOption &refOpt)
Pass options to the implementation.
Description: Handle managing a DbDatabaseObj, a generic Database object.
Definition DbDatabase.h:54
const DbContainerObj * find(const std::string &nam) const
Select container object in Database.
bool isValid() const
Validity check (Objy like).
const DbType & type() const
Inquire storage type of the handle.
Description: Definition an option to be supplied to database objects.
Definition DbOption.h:36
StatusCode i_setValue(const std::type_info &typ, const void *value)
Set the option value.
StatusCode i_getValue(const std::type_info &typ, void *value) const
Read the option value.
ITokenIterator is the interface class for iterators of tokens.
TokenIterator is an implementation of the ITokenIterator interface.