Gaudi Framework, version v25r2

Home   Generated: Wed Jun 4 2014
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
GaudiHandle.cpp
Go to the documentation of this file.
2 #include <iostream>
3 #include <string>
4 
5 //
6 // GaudiHandleBase implementation
7 //
8 
9 void GaudiHandleBase::setTypeAndName( const std::string& myTypeAndName ) {
10  m_typeAndName = myTypeAndName;
11 }
12 
13 std::string GaudiHandleBase::type() const {
14  std::string::size_type slash = m_typeAndName.find('/');
15  if ( slash != std::string::npos ) {
16  // return only part before /
17  return m_typeAndName.substr(0,slash);
18  } else {
19  // return full string
20  return m_typeAndName;
21  }
22 }
23 
24 std::string GaudiHandleBase::name() const {
25  std::string::size_type slash = m_typeAndName.find('/');
26  if ( slash == std::string::npos ) {
27  // only type is given, or string is empty.
28  // return default name (=type or empty, in this case full string)
29  return m_typeAndName;
30  } else if ( slash != m_typeAndName.length() -1 ) {
31  // an explicit name is given, so return it
32  return m_typeAndName.substr(slash+1);
33  } else {
34  // ends with /, i.e. explicit empty name.
35  // Should probably never happen.
36  return "";
37  }
38 }
39 
40 void GaudiHandleBase::setName( const std::string& myName ) {
41  m_typeAndName = type() + '/' + myName;
42 }
43 
44 const std::string GaudiHandleBase::pythonPropertyClassName() const {
45  return componentType() + "Handle";
46 }
47 
48 const std::string GaudiHandleBase::messageName() const {
49  std::string propName = propertyName();
50  if ( propName.empty() ) {
51  propName = pythonPropertyClassName() + "('" + m_typeAndName + "')";
52  }
53  return parentName() + "." + propName;
54 }
55 
56 const std::string GaudiHandleBase::pythonRepr() const {
57  return pythonPropertyClassName() + "('" + m_typeAndName + "')";
58 }
59 
60 //
61 // GaudiHandleArrayBase implementation
62 //
63 bool GaudiHandleArrayBase::setTypesAndNames( const std::vector< std::string >& myTypesAndNamesList ) {
64  clear();
65  std::vector< std::string >::const_iterator it = myTypesAndNamesList.begin(),
66  itEnd = myTypesAndNamesList.end();
67  for ( ; it != itEnd; ++it ) {
68  if ( !push_back( *it ) ) return false;
69  }
70  return true;
71 }
72 
73 const std::vector< std::string >
74 GaudiHandleArrayBase::getBaseInfos( std::string (GaudiHandleBase::*pMemFunc)() const ) const {
75  std::vector< std::string > theList;
77  GaudiHandleArrayBase::ConstBaseHandleArray::const_iterator it = baseArray.begin(),
78  itEnd = baseArray.end();
79  for ( ; it != itEnd; ++it ) theList.push_back( ((*it)->*pMemFunc)() );
80  return theList;
81 }
82 
83 const std::vector< std::string > GaudiHandleArrayBase::typesAndNames() const {
85 }
86 
87 const std::vector< std::string > GaudiHandleArrayBase::types() const {
89 }
90 
91 const std::vector< std::string > GaudiHandleArrayBase::names() const {
93 }
94 
96  return componentType() + "HandleArray";
97 }
98 
99 const std::string GaudiHandleArrayBase::pythonRepr() const {
100  std::string repr = pythonPropertyClassName() + "([";
101  const std::vector< std::string >& theList = typesAndNames();
102  std::vector< std::string >::const_iterator it = theList.begin(),
103  itEnd = theList.end(), itLast = itEnd - 1;
104  for ( ; it != itEnd; ++it ) {
105  repr += "'" + *it + "'";
106  if ( it != itLast ) repr += ",";
107  }
108  repr += "])";
109  return repr;
110 }
111 
112 
113 //
114 // Public functions
115 //
116 std::ostream& operator<<( std::ostream& os, const GaudiHandleInfo& handle ) {
117  std::string msg;
118  const std::string& propName = handle.propertyName();
119  if ( !propName.empty() ) msg += propName + " = ";
120  msg += handle.pythonRepr();
121  os << msg;
122  return os;
123 }
124 

Generated at Wed Jun 4 2014 14:48:57 for Gaudi Framework, version v25r2 by Doxygen version 1.8.2 written by Dimitri van Heesch, © 1997-2004