summaryrefslogtreecommitdiff
path: root/libnul.h
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <sandmann@redhat.com>2008-09-06 08:28:56 -0400
committerSøren Sandmann Pedersen <sandmann@redhat.com>2008-09-06 08:28:56 -0400
commit482b47dd7f47433da1d22c542131734635f7aa2e (patch)
treef91441e24c17b828f1715d76c8acf643e950613a /libnul.h
Initial checkin
Diffstat (limited to 'libnul.h')
-rw-r--r--libnul.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/libnul.h b/libnul.h
new file mode 100644
index 0000000..a78f0c9
--- /dev/null
+++ b/libnul.h
@@ -0,0 +1,67 @@
+#ifndef INVOKE_H
+#define INVOKE_H
+
+#include <stdint.h>
+
+typedef union
+{
+ uint32_t v_uint32;
+ int32_t v_int32;
+ uint16_t v_uint16;
+ int16_t v_int16;
+ uint8_t v_uint8;
+ int8_t v_int8;
+
+ unsigned int v_uint;
+ int v_int;
+ unsigned short v_ushort;
+ short v_short;
+ unsigned char v_uchar;
+ signed char v_schar;
+ char v_char;
+
+ void * v_pointer;
+
+ float v_float;
+ double v_double;
+} Arg;
+
+typedef enum
+{
+ TYPE_UINT32,
+ TYPE_INT32,
+ TYPE_UINT16,
+ TYPE_INT16,
+ TYPE_UINT8,
+ TYPE_INT8,
+
+ TYPE_UINT,
+ TYPE_INT,
+ TYPE_USHORT,
+ TYPE_SHORT,
+
+ TYPE_UCHAR,
+ TYPE_SCHAR,
+ TYPE_CHAR,
+
+ TYPE_POINTER,
+
+ TYPE_DOUBLE,
+ TYPE_FLOAT,
+
+ TYPE_VOID
+} Type;
+
+typedef void (* Function)();
+
+typedef struct FunDef FunDef;
+
+FunDef *fun_def_new (Type ret_type,
+ int n_args,
+ const Type *arg_types);
+Arg fun_def_invoke (FunDef *fun,
+ Function f,
+ Arg *args);
+void fun_def_free (FunDef *fun);
+
+#endif