Mailing List Archive

r3726 - in trunk: c_src/KinoSearch/Util perl/xs/KinoSearch/Util
Author: creamyg
Date: 2008-08-06 12:30:20 -0700 (Wed, 06 Aug 2008)
New Revision: 3726

Modified:
trunk/c_src/KinoSearch/Util/Native.h
trunk/perl/xs/KinoSearch/Util/Native.c
Log:
Add Native_callback_nat, which returns a host-language data structure (in
Perl's case, an SV).


Modified: trunk/c_src/KinoSearch/Util/Native.h
===================================================================
--- trunk/c_src/KinoSearch/Util/Native.h 2008-08-05 23:36:17 UTC (rev 3725)
+++ trunk/c_src/KinoSearch/Util/Native.h 2008-08-06 19:30:20 UTC (rev 3726)
@@ -71,6 +71,13 @@
kino_Native_callback_str(void *self, char *method,
chy_u32_t num_args, ...);

+/* Invoke an object method, expecting a host data structure back. It's up to
+ * the caller to know how to process it.
+ */
+void*
+kino_Native_callback_nat(void *self, char *method,
+ chy_u32_t num_args, ...);
+
#ifdef KINO_USE_SHORT_NAMES
#define ARG_I32 KINO_ARG_I32
#define ARG_F KINO_ARG_F
@@ -81,6 +88,7 @@
#define Native_callback_f kino_Native_callback_f
#define Native_callback_obj kino_Native_callback_obj
#define Native_callback_str kino_Native_callback_str
+ #define Native_callback_nat kino_Native_callback_nat
#endif

#endif /* H_KINO_NATIVE */

Modified: trunk/perl/xs/KinoSearch/Util/Native.c
===================================================================
--- trunk/perl/xs/KinoSearch/Util/Native.c 2008-08-05 23:36:17 UTC (rev 3725)
+++ trunk/perl/xs/KinoSearch/Util/Native.c 2008-08-06 19:30:20 UTC (rev 3726)
@@ -176,6 +176,24 @@
return retval;
}

+void*
+kino_Native_callback_nat(void *vobj, char *method, chy_u32_t num_args, ...)
+{
+ kino_Obj *obj = (kino_Obj*)vobj;
+ va_list args;
+ SV *retval;
+
+ va_start(args, num_args);
+ retval = do_callback_sv(obj, method, num_args, args);
+ va_end(args);
+ SvREFCNT_inc(retval);
+
+ FREETMPS;
+ LEAVE;
+
+ return retval;
+}
+
static SV*
do_callback_sv(kino_Obj *obj, char *method, chy_u32_t num_args, va_list args)
{


_______________________________________________
kinosearch-commits mailing list
kinosearch-commits@rectangular.com
http://www.rectangular.com/mailman/listinfo/kinosearch-commits