]> git.decadent.org.uk Git - ion3.git/blobdiff - libextl/luaextl.h
[svn-upgrade] Integrating new upstream version, ion3 (20070506)
[ion3.git] / libextl / luaextl.h
index f31cc97583c79d3a91382a9a74280a9b22c74821..f0160887df1d164bfbc9c01f4dc6f900a8aeea68 100644 (file)
@@ -28,6 +28,7 @@
  * t: table
  * f: function (c or lua)
  * v: void
+ * a: ExtlAny
  */
 
 typedef int ExtlTab;
@@ -43,6 +44,11 @@ typedef union{
     ExtlTab t;
 } ExtlL2Param;
 
+typedef struct{
+    char type;
+    ExtlL2Param value;
+} ExtlAny;
+
 typedef bool ExtlL2CallHandler(void (*fn)(), ExtlL2Param *in,
                                ExtlL2Param *out);
 
@@ -88,6 +94,7 @@ extern bool extl_table_get_vararg(ExtlTab ref, char itype, char type,
                                   va_list *args);
 extern bool extl_table_get(ExtlTab ref, char itype, char type, ...);
 
+extern bool extl_table_gets_a(ExtlTab ref, const char *entry, ExtlAny *ret);
 extern bool extl_table_gets_o(ExtlTab ref, const char *entry, Obj **ret);
 extern bool extl_table_gets_i(ExtlTab ref, const char *entry, int *ret);
 extern bool extl_table_gets_d(ExtlTab ref, const char *entry, double *ret);
@@ -97,6 +104,7 @@ extern bool extl_table_gets_f(ExtlTab ref, const char *entry, ExtlFn *ret);
 extern bool extl_table_gets_t(ExtlTab ref, const char *entry, ExtlTab *ret);
 
 extern int extl_table_get_n(ExtlTab ref);
+extern bool extl_table_geti_a(ExtlTab ref, int entry, ExtlAny *ret);
 extern bool extl_table_geti_o(ExtlTab ref, int entry, Obj **ret);
 extern bool extl_table_geti_i(ExtlTab ref, int entry, int *ret);
 extern bool extl_table_geti_d(ExtlTab ref, int entry, double *ret);
@@ -110,6 +118,7 @@ extern bool extl_table_set_vararg(ExtlTab ref, char itype, char type,
                                   va_list *args);
 extern bool extl_table_set(ExtlTab ref, char itype, char type, ...);
 
+extern bool extl_table_sets_a(ExtlTab ref, const char *entry, const ExtlAny *ret);
 extern bool extl_table_sets_o(ExtlTab ref, const char *entry, Obj *val);
 extern bool extl_table_sets_i(ExtlTab ref, const char *entry, int val);
 extern bool extl_table_sets_d(ExtlTab ref, const char *entry, double val);
@@ -118,6 +127,7 @@ extern bool extl_table_sets_s(ExtlTab ref, const char *entry, const char *val);
 extern bool extl_table_sets_f(ExtlTab ref, const char *entry, ExtlFn val);
 extern bool extl_table_sets_t(ExtlTab ref, const char *entry, ExtlTab val);
 
+extern bool extl_table_seti_a(ExtlTab ref, int entry, const ExtlAny *ret);
 extern bool extl_table_seti_o(ExtlTab ref, int entry, Obj *val);
 extern bool extl_table_seti_i(ExtlTab ref, int entry, int val);
 extern bool extl_table_seti_d(ExtlTab ref, int entry, double val);
@@ -134,6 +144,12 @@ extern bool extl_table_clear(ExtlTab ref, char itype, ...);
 extern bool extl_table_clears(ExtlTab ref, const char *entry);
 extern bool extl_table_cleari(ExtlTab ref, int entry);
 
+/* Table/iterate */
+
+typedef bool ExtlIterFn(ExtlAny k, ExtlAny v, void *d);
+
+extern void extl_table_iter(ExtlTab ref, ExtlIterFn *fn, void *d);
+
 /* Call */
 
 extern void extl_protect(ExtlSafelist *sl);