ATLAS Offline Software
Loading...
Searching...
No Matches
D3PD::RootReaderD3PD_v2 Class Reference

D3PD class used for generating ROOT D3PDReader classes. More...

#include <RootReaderD3PD_v2.h>

Inheritance diagram for D3PD::RootReaderD3PD_v2:
Collaboration diagram for D3PD::RootReaderD3PD_v2:

Public Types

typedef unsigned int Dim_t
 Currently unimplemented — see design note.

Public Member Functions

 RootReaderD3PD_v2 ()
 Constructor specifying whether it's a container's D3PD.
StatusCode createReader (const std::string &classname, const std::string &dir="./") const
 Function creating the D3PDReader C++ code.
virtual StatusCode addVariable (const std::string &name, const std::type_info &ti, void *&ptr, const std::string &docstring="", const void *defval=0)
 Main function for adding a variable to the D3PD.
template<class T>
StatusCode addVariable (const std::string &name, T *&ptr, const std::string &docstring="")
 Add a variable to the tuple.
template<class T, class U>
StatusCode addVariable (const std::string &name, T *&ptr, const std::string &docstring, const U &defval)
 Add a variable to the tuple.
virtual StatusCode addDimensionedVariable (const std::string &name, const std::type_info &ti, void *&ptr, const std::string &dim, const std::string &docstring="", const void *defval=0)
 Function currently not used by the D3PDMaker code.
template<class T>
StatusCode addDimensionedVariable (const std::string &name, T *&ptr, const std::string &dim, const std::string &docstring="")
 Add a variable to the tuple.
template<class T, class U>
StatusCode addDimensionedVariable (const std::string &name, T *&ptr, const std::string &dim, const std::string &docstring, const U &defval)
 Add a variable to the tuple.
virtual StatusCode addMetadata (const std::string &key, const void *obj, const std::type_info &ti)
 Function adding metadata to the D3PD. Not implemented here!
template<class T>
StatusCode addMetadata (const std::string &key, const T *obj)
 Add a new piece of metadata to the tuple.
virtual StatusCode capture ()
 Function capturing the current value of the D3PD variables. Not implemented here!
virtual StatusCode clear ()
 Function clearing the D3PD variables. Not implemented here!
virtual StatusCode redim (const Dim_t *ptr)
 Function currently not used by the D3PDMaker code.
virtual void setIsContainer (bool isContainer)
 Set the "isCollection" parameter of the object.
virtual bool isContainer () const
 Get the "isCollection" parameter of the object.
virtual void setPrefix (const std::string &prefix)
 Set the common prefix of the variables.
virtual const std::string & prefix () const
 Get the common prefix of the variables.

Protected Member Functions

void addSTLHeader (std::ostream &out, const char *name) const
 Function adding STL include statements to the header when needed.

Protected Attributes

ObjectMetadata m_metadata
 Object holding the information about the variables.

Detailed Description

D3PD class used for generating ROOT D3PDReader classes.

   Version 2 of the D3PDReader implementation.
Author
Attila Krasznahorkay Attil.nosp@m.a.Kr.nosp@m.aszna.nosp@m.hork.nosp@m.ay@ce.nosp@m.rn.c.nosp@m.h
Revision
462802
Date
2011-10-12 18:06:24 +0200 (Wed, 12 Oct 2011)

$

Definition at line 26 of file RootReaderD3PD_v2.h.

Member Typedef Documentation

◆ Dim_t

typedef unsigned int D3PD::ID3PD::Dim_t
inherited

Currently unimplemented — see design note.

Definition at line 52 of file ID3PD.h.

Constructor & Destructor Documentation

◆ RootReaderD3PD_v2()

D3PD::RootReaderD3PD_v2::RootReaderD3PD_v2 ( )

Constructor specifying whether it's a container's D3PD.

Definition at line 16 of file RootReaderD3PD_v2.cxx.

16 {
17
18 }

Member Function Documentation

◆ addDimensionedVariable() [1/3]

template<class T, class U>
StatusCode D3PD::IAddVariable::addDimensionedVariable ( const std::string & name,
T *& ptr,
const std::string & dim,
const std::string & docstring,
const U & defval )
inherited

Add a variable to the tuple.

Parameters
nameThe name of the variable.
ptrPointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill().
dimDimension for the variable. (Presently unimplemented!)
docstringDocumentation string for this variable.
defvalPointer to the default value to use for this variable. Only works for basic types.

If called from the constructor, the only effect is to clear ptr.

◆ addDimensionedVariable() [2/3]

template<class T>
StatusCode D3PD::IAddVariable::addDimensionedVariable ( const std::string & name,
T *& ptr,
const std::string & dim,
const std::string & docstring = "" )
inherited

Add a variable to the tuple.

Parameters
nameThe name of the variable.
ptrPointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill().
dimDimension for the variable. (Presently unimplemented!)
docstringDocumentation string for this variable.

If called from the constructor, the only effect is to clear ptr.

◆ addDimensionedVariable() [3/3]

StatusCode D3PD::RootReaderD3PDBase::addDimensionedVariable ( const std::string & name,
const std::type_info & ti,
void *& ptr,
const std::string & dim,
const std::string & docstring = "",
const void * defval = 0 )
virtualinherited

Function currently not used by the D3PDMaker code.

Implements D3PD::IAddVariable.

Definition at line 95 of file RootReaderD3PDBase.cxx.

100 {
101
102 CHECK( m_metadata.addDimensionedVariable( name, ti, ptr, dim, docstring,
103 defval ) );
104 return StatusCode::SUCCESS;
105 }
#define CHECK(...)
Evaluate an expression and check for errors.
ObjectMetadata m_metadata
Object holding the information about the variables.

◆ addMetadata() [1/2]

template<class T>
StatusCode D3PD::ID3PD::addMetadata ( const std::string & key,
const T * obj )
inherited

Add a new piece of metadata to the tuple.

Parameters
key- The key for this object. Any existing object will be overwritten.
obj- Pointer to the object to write.

The interpretation of the key parameter is up to the concrete D3PD implementation. However, a key name with a trailing slash NAME/ indicates that all metadata items with this name should be grouped together in a collection called NAME (for example, in a Root directory with that name).

◆ addMetadata() [2/2]

StatusCode D3PD::RootReaderD3PDBase::addMetadata ( const std::string & key,
const void * obj,
const std::type_info & ti )
virtualinherited

Function adding metadata to the D3PD. Not implemented here!

Implements D3PD::ID3PD.

Definition at line 107 of file RootReaderD3PDBase.cxx.

109 {
110
111 REPORT_MESSAGE_WITH_CONTEXT( MSG::ERROR, "RootReaderD3PDBase" )
112 << "addMetadata(...) not implemented";
113 return StatusCode::FAILURE;
114 }
#define REPORT_MESSAGE_WITH_CONTEXT(LVL, CONTEXT_NAME)
Report a message, with an explicitly specified context name.

◆ addSTLHeader()

void D3PD::RootReaderD3PDBase::addSTLHeader ( std::ostream & out,
const char * name ) const
protectedinherited

Function adding STL include statements to the header when needed.

This function is used internally to decide if specific STL headers are needed for the generated code or not.

The code just checks if the header name appears in the variable types somewhere, and if it does, it adds the requested header.

Parameters
outOutput stream where the include statement has to be written
nameName of the STL header that the code should process

Definition at line 167 of file RootReaderD3PDBase.cxx.

167 {
168
169 // Check if the STL name appears in the variable type names:
170 bool header_needed = false;
171 std::set< D3PD::ObjectMetadata::Variable >::const_iterator itr =
172 m_metadata.variables().begin();
173 std::set< D3PD::ObjectMetadata::Variable >::const_iterator end =
174 m_metadata.variables().end();
175 for( ; itr != end; ++itr ) {
176 if( itr->type().find( name ) != std::string::npos ) {
177 header_needed = true;
178 break;
179 }
180 }
181
182 // If it does, let's include it:
183 if( header_needed ) {
184 out << "#include <" << name << ">" << std::endl;
185 }
186
187 return;
188 }

◆ addVariable() [1/3]

template<class T, class U>
StatusCode D3PD::IAddVariable::addVariable ( const std::string & name,
T *& ptr,
const std::string & docstring,
const U & defval )
inherited

Add a variable to the tuple.

Parameters
nameThe name of the variable.
ptrPointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill().
docstringDocumentation string for this variable.
defvalPointer to the default value to use for this variable. Only works for basic types.

If called from the constructor, the only effect is to clear ptr.

◆ addVariable() [2/3]

template<class T>
StatusCode D3PD::IAddVariable::addVariable ( const std::string & name,
T *& ptr,
const std::string & docstring = "" )
inherited

Add a variable to the tuple.

Parameters
nameThe name of the variable.
ptrPointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill().
docstringDocumentation string for this variable.

If called from the constructor, the only effect is to clear ptr.

◆ addVariable() [3/3]

StatusCode D3PD::RootReaderD3PDBase::addVariable ( const std::string & name,
const std::type_info & ti,
void *& ptr,
const std::string & docstring = "",
const void * defval = 0 )
virtualinherited

Main function for adding a variable to the D3PD.

Implements D3PD::IAddVariable.

Definition at line 85 of file RootReaderD3PDBase.cxx.

89 {
90
91 CHECK( m_metadata.addVariable( name, ti, ptr, docstring, defval ) );
92 return StatusCode::SUCCESS;
93 }

◆ capture()

StatusCode D3PD::RootReaderD3PDBase::capture ( )
virtualinherited

Function capturing the current value of the D3PD variables. Not implemented here!

Implements D3PD::ID3PD.

Definition at line 116 of file RootReaderD3PDBase.cxx.

116 {
117
118 REPORT_MESSAGE_WITH_CONTEXT( MSG::ERROR, "RootReaderD3PDBase" )
119 << "capture() not implemented";
120 return StatusCode::FAILURE;
121 }

◆ clear()

StatusCode D3PD::RootReaderD3PDBase::clear ( )
virtualinherited

Function clearing the D3PD variables. Not implemented here!

Implements D3PD::ID3PD.

Definition at line 123 of file RootReaderD3PDBase.cxx.

123 {
124
125 REPORT_MESSAGE_WITH_CONTEXT( MSG::ERROR, "RootReaderD3PDBase" )
126 << "clear() not implemented";
127 return StatusCode::FAILURE;
128 }

◆ createReader()

StatusCode D3PD::RootReaderD3PD_v2::createReader ( const std::string & classname,
const std::string & dir = "./" ) const
virtual

Function creating the D3PDReader C++ code.

Implements D3PD::IReaderD3PD.

Definition at line 20 of file RootReaderD3PD_v2.cxx.

21 {
22
23 //
24 // Create the source files:
25 //
28 if( m_metadata.container() ) {
30 }
35 CHECK( Version2::writeHeader( classname, dir, m_metadata ) );
36 CHECK( Version2::writeSource( classname, dir, m_metadata ) );
37
38 return StatusCode::SUCCESS;
39 }
StatusCode writeUtils(const std::string &dir)
This function can be used to create source files containing some utility functions.
StatusCode writeHeader(const std::string &classname, const std::string &dir, const ObjectMetadata &metadata)
This function is used to create the header of the class describing a set of D3PD variables.
StatusCode writeD3PDReadStats(const std::string &dir)
This function can be used to create the D3PDReader::D3PDReadStats class's source files.
StatusCode writeSource(const std::string &classname, const std::string &dir, const ObjectMetadata &metadata)
This function is used to generate the source file of a D3PDReader class.
StatusCode writeVarHandle(const std::string &dir)
This function can be used to create the D3PDReader::VarHandle class's source files.
StatusCode writeVarProxy(const std::string &dir)
This function can be used to create the D3PDReader::VarProxy class's source files.
StatusCode writeD3PDObjectBase(const std::string &dir)
This function can be used to create the D3PDReader::D3PDObjectBase class's source files.
StatusCode writeUserD3PDObject(const std::string &dir)
This function can be used to create the D3PDReader::UserD3PDObject class's source files.
StatusCode writeD3PDPerfStats(const std::string &dir)
This function can be used to create the D3PDReader::D3PDPerfStats class's source files.

◆ isContainer()

bool D3PD::RootReaderD3PDBase::isContainer ( ) const
virtualinherited

Get the "isCollection" parameter of the object.

Implements D3PD::IReaderD3PD.

Definition at line 143 of file RootReaderD3PDBase.cxx.

143 {
144
145 return m_metadata.container();
146 }

◆ prefix()

const std::string & D3PD::RootReaderD3PDBase::prefix ( ) const
virtualinherited

Get the common prefix of the variables.

Implements D3PD::IReaderD3PD.

Definition at line 154 of file RootReaderD3PDBase.cxx.

154 {
155
156 return m_metadata.prefix();
157 }

◆ redim()

StatusCode D3PD::RootReaderD3PDBase::redim ( const Dim_t * ptr)
virtualinherited

Function currently not used by the D3PDMaker code.

Implements D3PD::ID3PD.

Definition at line 130 of file RootReaderD3PDBase.cxx.

130 {
131
132 REPORT_MESSAGE_WITH_CONTEXT( MSG::ERROR, "RootReaderD3PDBase" )
133 << "redim(...) not implemented";
134 return StatusCode::FAILURE;
135 }

◆ setIsContainer()

void D3PD::RootReaderD3PDBase::setIsContainer ( bool isContainer)
virtualinherited

Set the "isCollection" parameter of the object.

Implements D3PD::IReaderD3PD.

Definition at line 137 of file RootReaderD3PDBase.cxx.

137 {
138
139 m_metadata.setContainer( isContainer );
140 return;
141 }
virtual bool isContainer() const
Get the "isCollection" parameter of the object.

◆ setPrefix()

void D3PD::RootReaderD3PDBase::setPrefix ( const std::string & prefix)
virtualinherited

Set the common prefix of the variables.

Implements D3PD::IReaderD3PD.

Definition at line 148 of file RootReaderD3PDBase.cxx.

148 {
149
150 m_metadata.setPrefix( prefix );
151 return;
152 }
virtual const std::string & prefix() const
Get the common prefix of the variables.

Member Data Documentation

◆ m_metadata

ObjectMetadata D3PD::RootReaderD3PDBase::m_metadata
protectedinherited

Object holding the information about the variables.

Definition at line 84 of file RootReaderD3PDBase.h.


The documentation for this class was generated from the following files: