CMS 3D CMS Logo

Public Member Functions | Private Attributes

ora::PVectorUpdater Class Reference

#include <PVectorStreamer.h>

Inheritance diagram for ora::PVectorUpdater:
ora::IRelationalUpdater

List of all members.

Public Member Functions

bool build (DataElement &offset, IRelationalData &relationalData, RelationalBuffer &operationBuffer)
 PVectorUpdater (const Reflex::Type &objectType, MappingElement &mapping, ContainerSchema &contSchema)
 Constructor.
void setRecordId (const std::vector< int > &identity)
void update (int oid, const void *data)
 Updates a data element.
virtual ~PVectorUpdater ()

Private Attributes

RelationalBufferm_buffer
STLContainerWriter m_writer

Detailed Description

Definition at line 23 of file PVectorStreamer.h.


Constructor & Destructor Documentation

ora::PVectorUpdater::PVectorUpdater ( const Reflex::Type &  objectType,
MappingElement mapping,
ContainerSchema contSchema 
)

Constructor.

Definition at line 31 of file PVectorStreamer.cc.

                                                                 :
  m_buffer(0),
  m_writer( objectType, mapping, contSchema ){
}
ora::PVectorUpdater::~PVectorUpdater ( ) [virtual]

Definition at line 38 of file PVectorStreamer.cc.

                                  {
}

Member Function Documentation

bool ora::PVectorUpdater::build ( DataElement offset,
IRelationalData relationalData,
RelationalBuffer operationBuffer 
) [virtual]

Implements ora::IRelationalUpdater.

Definition at line 41 of file PVectorStreamer.cc.

                                                                   {
  m_buffer = &operationBuffer;
  return m_writer.build( offset, relationalData, operationBuffer );
}
void ora::PVectorUpdater::setRecordId ( const std::vector< int > &  identity) [virtual]

Implements ora::IRelationalUpdater.

Definition at line 48 of file PVectorStreamer.cc.

                                                                   {
  m_writer.setRecordId( identity );
}
void ora::PVectorUpdater::update ( int  oid,
const void *  data 
) [virtual]

Updates a data element.

Implements ora::IRelationalUpdater.

Definition at line 52 of file PVectorStreamer.cc.

References ora::deleteArrayElements(), ora::IArrayHandler::persistentSize(), ora::IArrayHandler::size(), and ora::throwException().

                                                    {
  if(!m_writer.dataElement()){
    throwException("The streamer has not been built.",
                   "PVectorUpdater::update");
  }
  
  void* arrayData = m_writer.dataElement()->address( data );
  IArrayHandler& arrayHandler = *m_writer.arrayHandler();
  
  size_t arraySize = arrayHandler.size(arrayData);
  size_t* persistentSize = arrayHandler.persistentSize(arrayData);
  if(*persistentSize>arraySize){
    deleteArrayElements( m_writer.mapping(), oid, arraySize, *m_buffer );
  }
  else if(*persistentSize<arraySize) {
    m_writer.write( oid, data );
  }
  *persistentSize = arraySize;
}

Member Data Documentation

Definition at line 36 of file PVectorStreamer.h.

Definition at line 37 of file PVectorStreamer.h.