/** * This is the header file for the new (as of 2007) style SICS objects * * copyright: see file COPYRIGHT * * Mark Koennecke, July 2007 */ #ifndef SICSOBJ2_H_ #define SICSOBJ2_H_ #include #include /*====================================================================== * Be careful when changing this data structure. It has to be compatible * in its first fields with the SICS object descriptor as defined in * obdes.h in order to achieve backwards compatibility with old style * SICS objects. * =====================================================================*/ typedef struct { pObjectDescriptor pDes; pHdb objectNode; void *pPrivate; void (*KillPrivate)(void *pPrivate); }SICSOBJ, *pSICSOBJ; /*-----------------------------------------------------------------------*/ typedef int (*SICSOBJFunc)(pSICSOBJ self, SConnection *pCon, pHdb commandNode, pHdb par[], int nPar); /*======================= Live & Death =================================*/ pSICSOBJ MakeSICSOBJ(char *name, char *class); pSICSOBJ MakeSICSOBJv(char *name, char *class, int type, int priv); void KillSICSOBJ(void *data); /** * This creates a new SICS object and installs it in the interpreter. It returns * the newly created SICS object such that the caller can continue * configuring it. */ pSICSOBJ SetupSICSOBJ(SConnection *pCon,SicsInterp *pSics, void *pData, int argc, char *argv[]); /*====================== Interpreter Interface =========================== * InvokeSICSObj is special in that it returns -1 if it cannot handle * the command. This leaves calling code the opportunity to process * further commands.It returns 1 on success and 0 on failures though. * ------------------------------------------------------------------------*/ int InvokeSICSOBJ(SConnection *pCon, SicsInterp *pSics, void *pData, int argc, char *argv[]); int InterInvokeSICSOBJ(SConnection *pCon, SicsInterp *pSics, void *pData, int argc, char *argv[]); int InstallSICSOBJ(SConnection *pCon, SicsInterp *pSics, void *pData, int argc, char *argv[]); #endif /*SICSOBJ2_H_*/