CMS 3D CMS Logo

Public Member Functions | Private Attributes

ora::QueryableVectorUpdater Class Reference

#include <QueryableVectorStreamer.h>

Inheritance diagram for ora::QueryableVectorUpdater:
ora::IRelationalUpdater

List of all members.

Public Member Functions

bool build (DataElement &offset, IRelationalData &relationalData, RelationalBuffer &operationBuffer)
 QueryableVectorUpdater (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 ~QueryableVectorUpdater ()

Private Attributes

RelationalBufferm_buffer
QueryableVectorWriter m_writer

Detailed Description

Definition at line 51 of file QueryableVectorStreamer.h.


Constructor & Destructor Documentation

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

Constructor.

Definition at line 487 of file QueryableVectorStreamer.cc.

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

Definition at line 494 of file QueryableVectorStreamer.cc.

                                                  {
}

Member Function Documentation

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

Implements ora::IRelationalUpdater.

Definition at line 497 of file QueryableVectorStreamer.cc.

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

Implements ora::IRelationalUpdater.

Definition at line 504 of file QueryableVectorStreamer.cc.

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

Updates a data element.

Implements ora::IRelationalUpdater.

Definition at line 508 of file QueryableVectorStreamer.cc.

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

                                                            {
  if( !m_writer.dataElement() ){
    throwException("The streamer has not been built.",
                   "QueryableVectorUpdater::update");
  }
  
  void* vectorAddress = m_writer.dataElement()->address( data );
  Reflex::Object vectorObj( m_writer.objectType(),const_cast<void*>(vectorAddress));
  vectorObj.Invoke("load",0);
  void* storageAddress = 0;
  vectorObj.Invoke("storageAddress",storageAddress);
  
  IArrayHandler& arrayHandler = *m_writer.arrayHandler();
  
  size_t arraySize = arrayHandler.size(storageAddress);
  size_t persistentSize = arrayHandler.persistentSize(storageAddress);
  if(persistentSize>arraySize){
    deleteArrayElements( m_writer.mapping(), oid, arraySize, *m_buffer );
  }
  m_writer.write( oid, data );
}

Member Data Documentation

Definition at line 64 of file QueryableVectorStreamer.h.

Definition at line 65 of file QueryableVectorStreamer.h.