Fixed resultset_records()
[ZOOM-Perl-moved-to-github.git] / ZOOM.xs
diff --git a/ZOOM.xs b/ZOOM.xs
index c33cfa0..7df5376 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.21 2005-11-03 15:58:09 mike Exp $ */
 
 #include "EXTERN.h"
 #include "perl.h"
@@ -250,13 +250,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_values)
        ZOOM_resultset r
-       ZOOM_record* recs
        size_t start
        size_t count
+       int return_values
+       INIT:
+               ZOOM_record *recs = 0;
+       CODE:
+               if (return_values)
+                       recs = (ZOOM_record*) xmalloc(count * sizeof *recs);
+               ZOOM_resultset_records(r, recs, start, count);
+               if (return_values) {
+                       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