From 44bb5af7ccef417a1d088527fc02af5f0e8d3dc5 Mon Sep 17 00:00:00 2001 From: Rainer Gerhards Date: Wed, 20 Feb 2008 18:54:20 +0000 Subject: begun expr compile process, first steps done --- var.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'var.c') diff --git a/var.c b/var.c index 8c43ddbb..1da99cda 100644 --- a/var.c +++ b/var.c @@ -71,12 +71,61 @@ CODESTARTobjDestruct(var) ENDobjDestruct(var) +/* DebugPrint support for the var object */ +BEGINobjDebugPrint(var) /* be sure to specify the object type also in END and CODESTART macros! */ +CODESTARTobjDebugPrint(var) + switch(pThis->varType) { + case VARTYPE_CSTR: + dbgoprint((obj_t*) pThis, "type: cstr, val '%s'\n", rsCStrGetSzStr(pThis->val.vpCStr)); + break; + default: + dbgoprint((obj_t*) pThis, "type %d currently not suppored in debug output\n", pThis->varType); + break; + } +ENDobjDebugPrint(var) + + +/* free the current values (destructs objects if necessary) + */ +static rsRetVal +varUnsetValues(var_t *pThis) +{ + DEFiRet; + + ISOBJ_TYPE_assert(pThis, var); + if(pThis->varType == VARTYPE_CSTR) + rsCStrDestruct(&pThis->val.vpCStr); + + pThis->varType = VARTYPE_NONE; + + RETiRet; +} + + +/* set a string value + */ +rsRetVal +varSetString(var_t *pThis, rsCStrObj *pCStr) +{ + DEFiRet; + + ISOBJ_TYPE_assert(pThis, var); + + CHKiRet(varUnsetValues(pThis)); + pThis->varType = VARTYPE_CSTR; + pThis->val.vpCStr = pCStr; + +finalize_it: + RETiRet; +} + /* Initialize the var class. Must be called as the very first method * before anything else is called inside this class. * rgerhards, 2008-02-19 */ BEGINObjClassInit(var, 1) /* class, version */ + OBJSetMethodHandler(objMethod_DEBUGPRINT, varDebugPrint); OBJSetMethodHandler(objMethod_CONSTRUCTION_FINALIZER, varConstructFinalize); ENDObjClassInit(var) -- cgit v1.2.3