[svn:parrot] r38069 - in trunk: config/gen/call_list src t/pmc

cotto at svn.parrot.org cotto at svn.parrot.org
Sun Apr 12 00:43:35 UTC 2009


Author: cotto
Date: Sun Apr 12 00:43:34 2009
New Revision: 38069
URL: https://trac.parrot.org/parrot/changeset/38069

Log:
[NCI] add a test (plus supporting stuff) for multiple out params
The test passes on jitcapable=0.  jitcapable is currently known to be broken in this case.

Modified:
   trunk/config/gen/call_list/misc.in
   trunk/src/nci_test.c
   trunk/t/pmc/nci.t

Modified: trunk/config/gen/call_list/misc.in
==============================================================================
--- trunk/config/gen/call_list/misc.in	Sun Apr 12 00:18:59 2009	(r38068)
+++ trunk/config/gen/call_list/misc.in	Sun Apr 12 00:43:34 2009	(r38069)
@@ -389,6 +389,7 @@
 
 # Testing Pointer PMC use
 v    V
+v    VVV
 
 # Testing SQLite
 i    tV

Modified: trunk/src/nci_test.c
==============================================================================
--- trunk/src/nci_test.c	Sun Apr 12 00:18:59 2009	(r38068)
+++ trunk/src/nci_test.c	Sun Apr 12 00:43:34 2009	(r38069)
@@ -108,6 +108,7 @@
 PARROT_EXPORT char * nci_ttt(char *, char *);
 PARROT_EXPORT void   nci_vfff(float, float, float);
 PARROT_EXPORT void   nci_vV(const char **);
+PARROT_EXPORT void   nci_vVVV(const char **, const char **, const char **);
 
 /* Declarations for callback tests */
 
@@ -1170,6 +1171,25 @@
   *ptr = "Hello bright new world\n";
 }
 
+/*
+
+=item C<PARROT_EXPORT float
+nci_fff(float l1, float l2)>
+
+Returns the result of C<l1> / C<l2>.
+
+=cut
+
+*/
+
+PARROT_EXPORT void
+nci_vVVV(const char **ptr1, const char **ptr2, const char **ptr3)
+{
+  *ptr1 = "Hello bright new world!\n";
+  *ptr2 = "It is a beautiful day!\n";
+  *ptr3 = "Go suck a lemon.\n";
+}
+
 #ifdef TEST
 
 char l2 = 4;

Modified: trunk/t/pmc/nci.t
==============================================================================
--- trunk/t/pmc/nci.t	Sun Apr 12 00:18:59 2009	(r38068)
+++ trunk/t/pmc/nci.t	Sun Apr 12 00:43:34 2009	(r38069)
@@ -6,7 +6,7 @@
 use warnings;
 use lib qw( . lib ../lib ../../lib );
 use Test::More;
-use Parrot::Test tests => 69;
+use Parrot::Test tests => 70;
 use Parrot::Config qw(%PConfig);
 
 =head1 NAME
@@ -2726,6 +2726,34 @@
 Hello bright new world
 OUTPUT
 
+pir_output_is( << 'CODE', << 'OUTPUT', "nci_vVV - multiple char** out parameters" );
+.sub test :main
+    .local string library_name
+    library_name = 'libnci_test'
+    .local pmc libnci_test
+    libnci_test = loadlib  library_name
+
+    .local pmc nci_vVVV
+    nci_vVVV = dlfunc libnci_test, "nci_vVVV", "vVVV"
+
+    .local pmc char_s_s1, char_s_s2, char_s_s3
+    char_s_s1 = new ['Pointer']
+    char_s_s2 = new ['Pointer']
+    char_s_s3 = new ['Pointer']
+    nci_vVVV(char_s_s1, char_s_s2, char_s_s3)
+    $S1 = char_s_s1
+    print $S1
+    $S1 = char_s_s2
+    print $S1
+    $S1 = char_s_s3
+    print $S1
+.end
+CODE
+Hello bright new world!
+It is a beautiful day!
+Go suck a lemon.
+OUTPUT
+
 # Local Variables:
 #   mode: cperl
 #   cperl-indent-level: 4


More information about the parrot-commits mailing list