Thank God this is automatic...
The code to store/retrieve the data is generated automatically:
/* C++ header file: Objectivity/DB DDL version 5.1.0 */
#ifdef OO_DDL_TRANSLATION
#pragma ooddlout "cube.ddl"
class opiDummyDeclaration;
class cube : public body {
virtual char *identify();
virtual float GetVolume();
virtual float GetSurface();
#ifndef OO_DDL_TRANSLATION
virtual ooTypeNumber ooGetTypeN() const;
virtual char* ooGetTypeName() const;
ooBoolean ooIsKindOf(ooTypeNumber typeN) const;
ooHandle(cube)& ooThis(ooHandle(cube)& objH,
ooMode aMode = oocNoOpen) const
return *ooReinterpretCast(ooHandle(cube) *, &(this->ooObj::ooThis(objH, aMode)));
ooHandle(cube) ooThis(ooMode aMode = oocNoOpen) const;
void *operator new(size_t, const ooHandle(ooObj) &nearH = oovTopDB);
void *operator new(size_t, const ooId& nearId);
void *operator new(size_t, const ooObj *nearObj);
void *operator new(size_t,
const ooHandle(ooObj) &nearH,
#ifdef OO_PLACEMENT_DELETE
operator delete(void * object,
const ooHandle(ooObj) & ) {
ooObj::operator delete(object);
operator delete(void * object,
ooObj::operator delete(object);
operator delete(void * object,
ooObj::operator delete(object);
operator delete(void * object,
const ooHandle(ooObj) & ,
ooObj::operator delete(object);
void *operator new(size_t size,
void *operator new(size_t size,
#ifdef OO_PLACEMENT_DELETE
operator delete(void * object,
ooObj::operator delete(object);
operator delete(void * object,
ooObj::operator delete(object);
static const ooTypeNumber opiTypeN;
static void ooAssocRegister();
ooRef(cube)& ooThis(ooRef(cube)& objId, ooMode aMode = oocNoOpen) const;
cube(ooInternalObj iobj);
#endif /* !defined(OO_DDL_TRANSLATION) */
static ooBoolean opiReferenceFile_CUBE_H = opiReferenceTypeNumber(ooTypeN(cube));
#endif /* !defined(CUBE_H) */
That’s just the header file!