9 m_writer( objectType, mapping, contSchema ){
18 return m_writer.build( offset, data, operationBuffer );
22 m_writer.setRecordId( identity );
28 m_writer.write( oid, inputData );
35 m_writer( objectType, mapping, contSchema ){
44 m_buffer = &operationBuffer;
45 return m_writer.build( offset, relationalData, operationBuffer );
49 m_writer.setRecordId( identity );
54 if(!m_writer.dataElement()){
56 "PVectorUpdater::update");
59 void* arrayData = m_writer.dataElement()->address( data );
62 size_t arraySize = arrayHandler.
size(arrayData);
64 if(*persistentSize>arraySize){
67 else if(*persistentSize<arraySize) {
68 m_writer.write( oid, data );
70 *persistentSize = arraySize;
76 m_reader( objectType, mapping, contSchema ){
84 return m_reader.build( offset, relationalData );
88 m_reader.select( oid );
92 m_reader.setRecordId( identity );
97 m_reader.read( destinationData );
107 m_objectType( objectType ),
108 m_mapping( mapping ),
109 m_schema( contSchema ){
116 return new PVectorWriter( m_objectType, m_mapping, m_schema );
124 return new PVectorReader( m_objectType, m_mapping, m_schema );
bool build(DataElement &offset, IRelationalData &relationalData)
virtual size_t * persistentSize(const void *address)
Returns the size of the container. Only differs in the PVector.
void write(int oid, const void *data)
Writes a data element.
void setRecordId(const std::vector< int > &identity)
void update(int oid, const void *data)
Updates a data element.
IRelationalUpdater * newUpdater()
PVectorUpdater(const edm::TypeWithDict &objectType, MappingElement &mapping, ContainerSchema &contSchema)
Constructor.
PVectorReader(const edm::TypeWithDict &objectType, MappingElement &mapping, ContainerSchema &contSchema)
Constructor.
virtual ~PVectorUpdater()
virtual size_t size(const void *address)=0
Returns the size of the container.
void deleteArrayElements(MappingElement &mapping, int oid, int fromIndex, RelationalBuffer &buffer)
PVectorStreamer(const edm::TypeWithDict &objectType, MappingElement &mapping, ContainerSchema &contSchema)
void read(void *address)
Reads a data element.
PVectorWriter(const edm::TypeWithDict &objectType, MappingElement &mapping, ContainerSchema &contSchema)
Constructor.
IRelationalReader * newReader()
void throwException(const std::string &message, const std::string &methodName) __attribute__((noreturn))
bool build(DataElement &offset, IRelationalData &relationalData, RelationalBuffer &operationBuffer)
bool build(DataElement &offset, IRelationalData &relationalData, RelationalBuffer &operationBuffer)
void setRecordId(const std::vector< int > &identity)
IRelationalWriter * newWriter()
void setRecordId(const std::vector< int > &identity)