CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Public Attributes
ora::Record Class Reference

#include <Record.h>

Public Member Functions

void const * address (int i) const
 
template<typename T >
Tdata (int i)
 
template<typename T >
T const & data (int i) const
 
void destroy ()
 
void const * get (int i) const
 
int index (std::string const &iname) const
 
void init (RecordSpec ispecs)
 
std::string const & name (int i) const
 
 Record ()
 
 Record (RecordSpec ispecs)
 
void set (int i, void *p)
 
size_t size () const
 
void swap (Record &lh)
 
std::type_info const * type (int i) const
 
 ~Record ()
 

Public Attributes

std::vector< AnyDatam_field
 
boost::shared_ptr< RecordSpecImplspecs
 

Detailed Description

Definition at line 28 of file Record.h.

Constructor & Destructor Documentation

Record::Record ( )

Definition at line 48 of file Record.cc.

48 {}
Record::Record ( RecordSpec  ispecs)
explicit

Definition at line 50 of file Record.cc.

References init().

50  {
51  init(ispecs);
52  }
void init(RecordSpec ispecs)
Definition: Record.cc:54
Record::~Record ( )

Definition at line 65 of file Record.cc.

References destroy().

65  {
66  destroy();
67  }
void destroy()
Definition: Record.cc:69

Member Function Documentation

void const * Record::address ( int  i) const

Definition at line 100 of file Record.cc.

References i, m_field, and specs.

Referenced by data().

100  {
101  return specs->items[i].handler->address(m_field[i]);
102  }
int i
Definition: DBlmapReader.cc:9
std::vector< AnyData > m_field
Definition: Record.h:65
boost::shared_ptr< RecordSpecImpl > specs
Definition: Record.h:64
template<typename T >
T& ora::Record::data ( int  i)
inline

Definition at line 44 of file Record.h.

References address().

44  {
45  // assert???
46  return
47  *reinterpret_cast<T*>(const_cast<void*>(address(i)));
48  }
int i
Definition: DBlmapReader.cc:9
void const * address(int i) const
Definition: Record.cc:100
long double T
template<typename T >
T const& ora::Record::data ( int  i) const
inline

Definition at line 51 of file Record.h.

References address(), and compareJSON::const.

51  {
52  // assert???
53  return
54  *reinterpret_cast<T const*>(address(i));
55  }
int i
Definition: DBlmapReader.cc:9
void const * address(int i) const
Definition: Record.cc:100
string const
Definition: compareJSON.py:14
long double T
void Record::destroy ( )

Definition at line 69 of file Record.cc.

References ora::TypeHandler::destroy(), ora::RecordSpecImpl::Item::handler, i, m_field, and specs.

Referenced by init(), and ~Record().

69  {
70  if (m_field.empty()) return;
71  for (size_t i=0; i<m_field.size(); ++i) {
72  RecordSpecImpl::Item const & item = specs->items[i];
73  item.handler->destroy(m_field[i]);
74  }
75  m_field.clear();
76  }
int i
Definition: DBlmapReader.cc:9
std::vector< AnyData > m_field
Definition: Record.h:65
boost::shared_ptr< RecordSpecImpl > specs
Definition: Record.h:64
void const * Record::get ( int  i) const

Definition at line 104 of file Record.cc.

References i, m_field, and specs.

Referenced by Options.Options::__getitem__(), betterConfigParser.BetterConfigParser::__updateDict(), betterConfigParser.BetterConfigParser::getCompares(), betterConfigParser.BetterConfigParser::getGeneral(), and betterConfigParser.BetterConfigParser::getResultingSection().

104  {
105  return specs->items[i].handler->get(m_field[i]);
106  }
int i
Definition: DBlmapReader.cc:9
std::vector< AnyData > m_field
Definition: Record.h:65
boost::shared_ptr< RecordSpecImpl > specs
Definition: Record.h:64
int Record::index ( std::string const &  iname) const

Definition at line 89 of file Record.cc.

References m_field, AlCaHLTBitMon_ParallelJobs::p, and specs.

Referenced by BeautifulSoup.PageElement::_invert().

89  {
90  if (m_field.empty()) return -1;
91  RecordSpecImpl::Lookup::const_iterator p = specs->indexes.find(iname);
92  return (p==specs->indexes.end()) ? -1 : (*p).second;
93  }
std::vector< AnyData > m_field
Definition: Record.h:65
boost::shared_ptr< RecordSpecImpl > specs
Definition: Record.h:64
void Record::init ( RecordSpec  ispecs)

Definition at line 54 of file Record.cc.

References ora::TypeHandler::create(), destroy(), ora::RecordSpecImpl::Item::handler, i, m_field, alignCSCRings::s, ora::RecordSpec::specs, and specs.

Referenced by Record().

54  {
55  destroy();
56  specs = ispecs.specs;
57  size_t s = specs->items.size();
58  m_field.resize(s);
59  for (size_t i=0; i<s; ++i) {
60  RecordSpecImpl::Item const & item = specs->items[i];
61  item.handler->create(m_field[i]);
62  }
63  }
int i
Definition: DBlmapReader.cc:9
void destroy()
Definition: Record.cc:69
std::vector< AnyData > m_field
Definition: Record.h:65
boost::shared_ptr< RecordSpecImpl > specs
Definition: Record.h:64
std::string const & Record::name ( int  i) const

Definition at line 113 of file Record.cc.

References i, and specs.

Referenced by Vispa.Views.PropertyView.Property::valueChanged().

113  {
114  return specs->items[i].name;
115  }
int i
Definition: DBlmapReader.cc:9
boost::shared_ptr< RecordSpecImpl > specs
Definition: Record.h:64
void Record::set ( int  i,
void *  p 
)

Definition at line 108 of file Record.cc.

References i, m_field, and specs.

Referenced by betterConfigParser.BetterConfigParser::getGeneral().

108  {
109  specs->items[i].handler->set(m_field[i],p);
110  }
int i
Definition: DBlmapReader.cc:9
std::vector< AnyData > m_field
Definition: Record.h:65
boost::shared_ptr< RecordSpecImpl > specs
Definition: Record.h:64
size_t Record::size ( void  ) const

Definition at line 85 of file Record.cc.

References m_field.

Referenced by ora::MultiIndexDataTrie::lookupAndClear().

85  {
86  return m_field.size();
87  }
std::vector< AnyData > m_field
Definition: Record.h:65
void Record::swap ( Record lh)

Definition at line 79 of file Record.cc.

References m_field, and specs.

Referenced by ora::MultiIndexDataTrie::clear(), ora::MultiIndexDataTrie::lookupAndClear(), ora::MultiIndexDataTrie::push(), and swap().

79  {
80  specs.swap(lh.specs);
81  m_field.swap(lh.m_field);
82  }
std::vector< AnyData > m_field
Definition: Record.h:65
boost::shared_ptr< RecordSpecImpl > specs
Definition: Record.h:64
std::type_info const * Record::type ( int  i) const

Member Data Documentation

std::vector<AnyData> ora::Record::m_field

Definition at line 65 of file Record.h.

Referenced by address(), destroy(), get(), index(), init(), set(), size(), and swap().

boost::shared_ptr<RecordSpecImpl> ora::Record::specs

Definition at line 64 of file Record.h.

Referenced by address(), destroy(), get(), index(), init(), name(), set(), swap(), and type().