From 04622f7d2210cbb8036502afadf5bcdcb0394d28 Mon Sep 17 00:00:00 2001 From: Rainer Gerhards Date: Thu, 21 Feb 2008 13:27:51 +0000 Subject: first steps in implementing object interfaces (stage work for later dynamic class loading) --- obj.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'obj.c') diff --git a/obj.c b/obj.c index fc6dff67..4177f3ae 100644 --- a/obj.c +++ b/obj.c @@ -40,6 +40,7 @@ #include "stream.h" /* static data */ +DEFobjCurrIf(var) static objInfo_t *arrObjInfo[OBJ_NUM_IDS]; /* array with object information pointers */ /* some defines */ @@ -612,15 +613,15 @@ static rsRetVal objDeserializeProperties(obj_t *pObj, objID_t oID, strm_t *pStrm ISOBJ_TYPE_assert(pStrm, strm); ASSERT(oID > 0 && oID < OBJ_NUM_IDS); - CHKiRet(varConstruct(&pVar)); - CHKiRet(varConstructFinalize(pVar)); + CHKiRet(var.Construct(&pVar)); + CHKiRet(var.ConstructFinalize(pVar)); iRet = objDeserializeProperty(pVar, pStrm); while(iRet == RS_RET_OK) { CHKiRet(arrObjInfo[oID]->objMethods[objMethod_SETPROPERTY](pObj, pVar)); iRet = objDeserializeProperty(pVar, pStrm); } - varDestruct(&pVar); + var.Destruct(&pVar); if(iRet != RS_RET_NO_PROPLINE) FINALIZE; @@ -860,15 +861,24 @@ finalize_it: /* initialize our own class */ -rsRetVal objClassInit(void) +rsRetVal +objClassInit(void) { + DEFiRet; int i; - + + /* first, initialize the object system itself. This must be done + * before any other object is created. + */ for(i = 0 ; i < OBJ_NUM_IDS ; ++i) { arrObjInfo[i] = NULL; } - return RS_RET_OK; + /* request objects we use */ + CHKiRet(objUse(var)); + +finalize_it: + RETiRet; } /* -- cgit