diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2008-02-20 18:54:20 +0000 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2008-02-20 18:54:20 +0000 |
commit | 44bb5af7ccef417a1d088527fc02af5f0e8d3dc5 (patch) | |
tree | 6a28892a1253b4f199a4f55c64b1a65fbdd38386 /var.c | |
parent | fa150f43db5f9673a5b9dfb0727767eca60e4453 (diff) | |
download | rsyslog-44bb5af7ccef417a1d088527fc02af5f0e8d3dc5.tar.gz rsyslog-44bb5af7ccef417a1d088527fc02af5f0e8d3dc5.tar.bz2 rsyslog-44bb5af7ccef417a1d088527fc02af5f0e8d3dc5.zip |
begun expr compile process, first steps done
Diffstat (limited to 'var.c')
-rw-r--r-- | var.c | 49 |
1 files changed, 49 insertions, 0 deletions
@@ -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) |