summaryrefslogtreecommitdiffstats
path: root/vmprg.h
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2008-02-21 13:27:51 +0000
committerRainer Gerhards <rgerhards@adiscon.com>2008-02-21 13:27:51 +0000
commit04622f7d2210cbb8036502afadf5bcdcb0394d28 (patch)
tree1ba5f0321aaf86f6050193dd8283d85a7f4acd39 /vmprg.h
parent1cc790fae01e4392d4cf96820f6402528f611c44 (diff)
downloadrsyslog-04622f7d2210cbb8036502afadf5bcdcb0394d28.tar.gz
rsyslog-04622f7d2210cbb8036502afadf5bcdcb0394d28.tar.xz
rsyslog-04622f7d2210cbb8036502afadf5bcdcb0394d28.zip
first steps in implementing object interfaces (stage work for later dynamic
class loading)
Diffstat (limited to 'vmprg.h')
-rw-r--r--vmprg.h21
1 files changed, 15 insertions, 6 deletions
diff --git a/vmprg.h b/vmprg.h
index a2ddf1ba..f69abca1 100644
--- a/vmprg.h
+++ b/vmprg.h
@@ -47,13 +47,22 @@ typedef struct vmprg_s {
} vmprg_t;
+/* interfaces */
+typedef struct vmprg_if_s {
+ ifBEGIN; /* This MUST always be the first interface member */
+ INTERFACEObjDebugPrint(vmprg);
+ rsRetVal (*Construct)(vmprg_t **ppThis);
+ rsRetVal (*ConstructFinalize)(vmprg_t __attribute__((unused)) *pThis);
+ rsRetVal (*Destruct)(vmprg_t **ppThis);
+ rsRetVal (*AddOperation)(vmprg_t *pThis, vmop_t *pOp);
+ rsRetVal (*AddVarOperation)(vmprg_t *pThis, opcode_t opcode, var_t *pVar);
+} vmprg_if_t;
+
+#define vmprgCURR_IF_VERSION 1 /* increment whenever you change the interface structure! */
+
+
/* prototypes */
-rsRetVal vmprgConstruct(vmprg_t **ppThis);
-rsRetVal vmprgConstructFinalize(vmprg_t __attribute__((unused)) *pThis);
-rsRetVal vmprgDestruct(vmprg_t **ppThis);
-rsRetVal vmprgAddOperation(vmprg_t *pThis, vmop_t *pOp);
-rsRetVal vmprgAddVarOperation(vmprg_t *pThis, opcode_t opcode, var_t *pVar);
PROTOTYPEObjClassInit(vmprg);
-PROTOTYPEObjDebugPrint(vmprg);
+PROTOTYPEObjQueryInterface(vmprg);
#endif /* #ifndef INCLUDED_VMPRG_H */