Testing for record cloning and deletion.
[ZOOM-Perl-moved-to-github.git] / ZOOM.xs
diff --git a/ZOOM.xs b/ZOOM.xs
index c33cfa0..744db9b 100644 (file)
--- a/ZOOM.xs
+++ b/ZOOM.xs
@@ -1,4 +1,4 @@
-/* $Id: ZOOM.xs,v 1.19 2005-11-02 17:23:50 mike Exp $ */
+/* $Id: ZOOM.xs,v 1.25 2005-11-07 14:27:43 mike Exp $ */
 
 #include "EXTERN.h"
 #include "perl.h"
@@ -210,11 +210,6 @@ const char *
 ZOOM_diag_str(error)
        int error
 
-# UNTESTED
-int
-ZOOM_connection_last_event(cs)
-       ZOOM_connection cs
-
 # TESTED
 ZOOM_resultset
 ZOOM_connection_search(arg0, q)
@@ -250,13 +245,33 @@ size_t
 ZOOM_resultset_size(r)
        ZOOM_resultset r
 
-# TESTING
-void
-ZOOM_resultset_records(r, recs, start, count)
+# TESTED
+SV *
+ZOOM_resultset_records(r, start, count, return_records)
        ZOOM_resultset r
-       ZOOM_record* recs
        size_t start
        size_t count
+       int return_records
+       INIT:
+               ZOOM_record *recs = 0;
+       CODE:
+               if (return_records)
+                       recs = (ZOOM_record*) xmalloc(count * sizeof *recs);
+               ZOOM_resultset_records(r, recs, start, count);
+               if (return_records) {
+                       AV *av = newAV();
+                       int i;
+                       for (i = 0; i < count; i++) {
+                               SV *tmp = newSV(0);
+                               sv_setref_pv(tmp, "ZOOM_record", (void*) recs[i]);
+                               av_push(av, tmp);
+                       }
+                       RETVAL = newRV((SV*) av);
+               } else {
+                       RETVAL = &PL_sv_undef;
+               }
+       OUTPUT:
+               RETVAL
 
 # TESTED
 ZOOM_record
@@ -275,6 +290,13 @@ void
 ZOOM_resultset_cache_reset(r)
        ZOOM_resultset r
 
+# TESTED
+void
+ZOOM_resultset_sort(r, sort_type, sort_spec)
+       ZOOM_resultset r
+       const char* sort_type
+       const char* sort_spec
+
 # See "typemap" for discussion of the "const char *" return-type.
 #
 # TESTED
@@ -288,15 +310,15 @@ ZOOM_record_get(rec, type, len)
                RETVAL
                len
 
-# UNTESTED
+# TESTED
 void
 ZOOM_record_destroy(rec)
-       ZOOM_record     rec
+       ZOOM_record rec
 
-# UNTESTED
+# TESTED
 ZOOM_record
 ZOOM_record_clone(srec)
-       ZOOM_record     srec
+       ZOOM_record srec
 
 # TESTED
 ZOOM_query
@@ -400,13 +422,6 @@ ZOOM_package_option_set(p, key, val)
        const char *    key
        const char *    val
 
-# UNTESTED
-void
-ZOOM_resultset_sort(r, sort_type, sort_spec)
-       ZOOM_resultset  r
-       const char *    sort_type
-       const char *    sort_spec
-
 # We ignore the return value of ZOOM_options_set_callback(), since it
 # is always just the address of the __ZOOM_option_callback() function.
 # The information that we actually want -- the address of the Perl
@@ -517,3 +532,8 @@ ZOOM_event(no, cs)
        int     no
        ZOOM_connection *       cs
 
+# UNTESTED
+int
+ZOOM_connection_last_event(cs)
+       ZOOM_connection cs
+