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"
6#include "TokenIterator.h"
7
13
14pool::Container::Container( FileDescriptor& fileDescriptor, const std::string& name ) :
15 m_name( name ),
16 m_fileDescriptor( fileDescriptor )
17{}
18
24
25bool
26pool::Container::attributeOfType( const std::string& attributeName,
27 void* data,
28 const std::type_info& typeInfo,
29 const std::string& option )
30{
31 if( !m_fileDescriptor.dbc() ) return false;
32
33 pool::DbOption containerOption( attributeName, option );
34
35 DbDatabase dbH( m_fileDescriptor.dbc()->handle() );
36 DbContainer cntH( dbH.find(name()) );
37 if( !cntH.isValid() && !cntH.open(dbH, name(), 0, dbH.type(), Io::READ).isSuccess() ) {
38 return false;
39 }
40 if( !cntH.getOption(containerOption).isSuccess() ) return false;
41 return containerOption.i_getValue(typeInfo, data).isSuccess();
42}
43
44
45bool
46pool::Container::setAttributeOfType( const std::string& attributeName,
47 const void* data,
48 const std::type_info& typeInfo,
49 const std::string& option )
50{
51 if( !m_fileDescriptor.dbc() ) return false;
52
53 pool::DbOption containerOption( attributeName, option );
54 if( !containerOption.i_setValue(typeInfo, const_cast<void*>( data )).isSuccess() ) return false;
55
56 DbDatabase dbH( m_fileDescriptor.dbc()->handle() );
57 DbContainer cntH( dbH.find(name()) );
58 if( !cntH.isValid() && !cntH.open(dbH, name(), 0, dbH.type(), Io::READ).isSuccess() ) {
59 return false;
60 }
61 return cntH.setOption(containerOption).isSuccess();
62}
virtual ITokenIterator * tokens() override
Starts an iteration over the tokens in the container.
Definition Container.cxx:20
virtual const std::string & name() const override final
Returns the name of this container.
Definition Container.h:30
FileDescriptor & m_fileDescriptor
Reference to file descriptor of the parent database.
Definition Container.h:56
Container(FileDescriptor &fileDescriptor, const std::string &name)
Definition Container.cxx:14
std::string m_name
The name of the container.
Definition Container.h:53
virtual bool attributeOfType(const std::string &attributeName, void *data, const std::type_info &typeInfo, const std::string &option) override
The method returning the attribute data given a name.
Definition Container.cxx:26
virtual bool setAttributeOfType(const std::string &attributeName, const void *data, const std::type_info &typeInfo, const std::string &option) override
The method setting the attribute data given a name.
Definition Container.cxx:46
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.