CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Container.cc
Go to the documentation of this file.
2 #include "DatabaseContainer.h"
3 #include "ClassUtils.h"
4 
6  m_buffer( iteratorBuffer ){
7 }
8 
10  m_buffer( rhs.m_buffer ){
11 }
12 
14 }
15 
17  if(this != &rhs ) m_buffer = rhs.m_buffer;
18  return *this;
19 }
20 
22  m_buffer->reset();
23 }
24 
26  return m_buffer->next();
27 }
28 
30  return m_buffer->itemId();
31 }
32 
34  return Object( m_buffer->getItem(), m_buffer->type() );
35 }
36 
37 boost::shared_ptr<void> ora::ContainerIterator::getItemAsType( const std::type_info& asTypeInfo ){
38  Reflex::Type castType = ClassUtils::lookupDictionary( asTypeInfo );
39  void* ptr = m_buffer->getItemAsType( castType );
40  return boost::shared_ptr<void>( ptr, RflxDeleter( m_buffer->type() ) );
41 }
42 
44  m_dbContainer( dbContainer ){
45 }
46 
48  m_dbContainer( rhs.m_dbContainer ){
49 }
50 
52 }
53 
55  if(this != &rhs ) m_dbContainer = rhs.m_dbContainer;
56  return *this;
57 }
58 
60  return m_dbContainer->id();
61 }
62 
63 const std::string& ora::Container::name(){
64  return m_dbContainer->name();
65 }
66 
67 const std::string& ora::Container::className(){
68  return m_dbContainer->className();
69 }
70 
71 const std::string& ora::Container::mappingVersion(){
72  return m_dbContainer->mappingVersion();
73 }
74 
76  return m_dbContainer->size();
77 }
78 
80  Handle<IteratorBuffer> buff = m_dbContainer->iteratorBuffer();
81  return ContainerIterator( buff );
82 }
83 
84 void ora::Container::extendSchema( const std::type_info& typeInfo ){
86  m_dbContainer->extendSchema( type );
87 }
88 
90  return Object( m_dbContainer->fetchItem(itemId), m_dbContainer->type() );
91 }
92 
93 boost::shared_ptr<void> ora::Container::fetchItemAsType(int itemId,
94  const std::type_info& asTypeInfo){
95  Reflex::Type asType = ClassUtils::lookupDictionary( asTypeInfo );
96  void* ptr = m_dbContainer->fetchItemAsType(itemId, asType );
97  if(!ptr) return boost::shared_ptr<void>();
98  return boost::shared_ptr<void>( ptr, RflxDeleter( m_dbContainer->type() ) );
99 }
100 
102  const Reflex::Type& objType = data.type();
103  if(!objType){
104  throwException("Object class has not been found in the dictionary.",
105  "Container::insertItem");
106  }
107  return m_dbContainer->insertItem( data.address(), objType );
108 }
109 
111  const std::type_info& typeInfo ){
113  return m_dbContainer->insertItem( data, type );
114 }
115 
116 void ora::Container::updateItem( int itemId,
117  const Object& data ){
118  const Reflex::Type& objType = data.type();
119  if(!objType){
120  throwException("Object class has not been found in the dictionary.",
121  "Container::updateItem");
122  }
123  return m_dbContainer->updateItem( itemId, data.address(), objType );
124 }
125 
126 void ora::Container::updateItem( int itemId,
127  const void* data,
128  const std::type_info& typeInfo ){
130  m_dbContainer->updateItem( itemId, data, type );
131 }
132 
133 void ora::Container::erase( int itemId ){
134  m_dbContainer->erase(itemId );
135 }
136 
138  m_dbContainer->flush();
139 }
140 
141 void ora::Container::setItemName( const std::string& name,
142  int itemId ){
143  m_dbContainer->setItemName( name, itemId );
144 }
145 
146 bool ora::Container::getNames( std::vector<std::string>& destination ){
147  return m_dbContainer->getNames( destination );
148 }
149 
150 
type
Definition: HCALResponse.h:22
void updateItem(int itemId, const Object &data)
Definition: Container.cc:116
void * address() const
Definition: Object.cc:41
Handle< IteratorBuffer > m_buffer
Definition: Container.h:40
const std::string & name()
Definition: Container.cc:63
int insertItem(const Object &data)
Definition: Container.cc:101
Object fetchItem(int itemId)
Definition: Container.cc:89
virtual ~Container()
Definition: Container.cc:51
void setItemName(const std::string &name, int itemId)
Definition: Container.cc:141
const std::string & className()
Definition: Container.cc:67
const std::string & mappingVersion()
Definition: Container.cc:71
boost::shared_ptr< void > fetchItemAsType(int itemId, const std::type_info &asTypeInfo)
Definition: Container.cc:93
void extendSchema()
Definition: Container.h:111
Container(Handle< DatabaseContainer > &dbContainer)
Definition: Container.cc:43
void erase(int itemId)
Definition: Container.cc:133
boost::shared_ptr< void > getItemAsType(const std::type_info &asTypeInfo)
Definition: Container.cc:37
const Reflex::Type & type() const
Definition: Object.cc:45
size_t size()
Definition: Container.cc:75
Container & operator=(const Container &rhs)
Definition: Container.cc:54
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:10
virtual ~ContainerIterator()
Definition: Container.cc:13
bool getNames(std::vector< std::string > &destination)
Definition: Container.cc:146
Handle< DatabaseContainer > m_dbContainer
Definition: Container.h:98
Reflex::Type lookupDictionary(const std::type_info &typeInfo, bool throwFlag=true)
Definition: ClassUtils.cc:84
ContainerIterator iterator()
Definition: Container.cc:79
ContainerIterator & operator=(const ContainerIterator &rhs)
Definition: Container.cc:16
ContainerIterator(Handle< IteratorBuffer > &iteratorBuffer)
Definition: Container.cc:5