![]() |
![]() |
#include <QueryableVectorStreamer.h>
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 | |
RelationalBuffer * | m_buffer |
QueryableVectorWriter | m_writer |
Definition at line 51 of file QueryableVectorStreamer.h.
ora::QueryableVectorUpdater::QueryableVectorUpdater | ( | const Reflex::Type & | objectType, |
MappingElement & | mapping, | ||
ContainerSchema & | contSchema | ||
) |
Constructor.
Definition at line 487 of file QueryableVectorStreamer.cc.
ora::QueryableVectorUpdater::~QueryableVectorUpdater | ( | ) | [virtual] |
Definition at line 494 of file QueryableVectorStreamer.cc.
{ }
bool ora::QueryableVectorUpdater::build | ( | DataElement & | offset, |
IRelationalData & | relationalData, | ||
RelationalBuffer & | operationBuffer | ||
) | [virtual] |
Implements ora::IRelationalUpdater.
Definition at line 497 of file QueryableVectorStreamer.cc.
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 ); }
Definition at line 64 of file QueryableVectorStreamer.h.
Definition at line 65 of file QueryableVectorStreamer.h.