[svn:parrot] r44150 - in trunk: . config/gen/makefiles include/parrot src/nci t/codingstd tools/build tools/dev

plobsing at svn.parrot.org plobsing at svn.parrot.org
Fri Feb 19 01:01:31 UTC 2010


Author: plobsing
Date: Fri Feb 19 01:01:29 2010
New Revision: 44150
URL: https://trac.parrot.org/parrot/changeset/44150

Log:
convert from nativecall.pl to nativecall.pir

Added:
   trunk/src/nci/   (props changed)
   trunk/src/nci/api.c   (contents, props changed)
   trunk/src/nci/core_thunks.c   (contents, props changed)
   trunk/src/nci/core_thunks.nci   (contents, props changed)
   trunk/src/nci/extra_thunks.c   (contents, props changed)
   trunk/src/nci/extra_thunks.nci   (contents, props changed)
   trunk/tools/dev/mk_nci_thunks.pl   (contents, props changed)
Modified:
   trunk/MANIFEST
   trunk/MANIFEST.SKIP
   trunk/config/gen/makefiles/root.in
   trunk/include/parrot/nci.h
   trunk/t/codingstd/linelength.t
   trunk/t/codingstd/trailing_space.t
   trunk/tools/build/nativecall.pir

Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST	Fri Feb 19 00:55:33 2010	(r44149)
+++ trunk/MANIFEST	Fri Feb 19 01:01:29 2010	(r44150)
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Wed Feb 17 22:09:58 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Thu Feb 18 23:48:02 2010 UT
 #
 # See below for documentation on the format of this file.
 #
@@ -1370,6 +1370,11 @@
 src/main.c                                                  []
 src/misc.c                                                  []
 src/multidispatch.c                                         []
+src/nci/api.c                                               []
+src/nci/core_thunks.c                                       []
+src/nci/core_thunks.nci                                     []
+src/nci/extra_thunks.c                                      []
+src/nci/extra_thunks.nci                                    []
 src/nci_test.c                                              []
 src/oo.c                                                    []
 src/ops/bit.ops                                             []
@@ -2166,6 +2171,7 @@
 tools/dev/mk_language_shell.pl                              [devel]
 tools/dev/mk_manifest_and_skip.pl                           []
 tools/dev/mk_native_pbc                                     []
+tools/dev/mk_nci_thunks.pl                                  []
 tools/dev/mk_rpm_manifests.pl                               []
 tools/dev/nci_test_gen.pl                                   []
 tools/dev/nm.pl                                             []

Modified: trunk/MANIFEST.SKIP
==============================================================================
--- trunk/MANIFEST.SKIP	Fri Feb 19 00:55:33 2010	(r44149)
+++ trunk/MANIFEST.SKIP	Fri Feb 19 01:01:29 2010	(r44150)
@@ -1,6 +1,6 @@
 # ex: set ro:
 # $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Wed Feb 10 13:22:49 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Thu Feb 18 23:54:32 2010 UT
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository. (Needed for
@@ -811,6 +811,13 @@
 ^src/io/.*\.obj/
 ^src/io/.*\.str$
 ^src/io/.*\.str/
+# generated from svn:ignore of 'src/nci/'
+^src/nci/.*\.o$
+^src/nci/.*\.o/
+^src/nci/.*\.obj$
+^src/nci/.*\.obj/
+^src/nci/.*\.str$
+^src/nci/.*\.str/
 # generated from svn:ignore of 'src/ops/'
 ^src/ops/.*\.c$
 ^src/ops/.*\.c/

Modified: trunk/config/gen/makefiles/root.in
==============================================================================
--- trunk/config/gen/makefiles/root.in	Fri Feb 19 00:55:33 2010	(r44149)
+++ trunk/config/gen/makefiles/root.in	Fri Feb 19 01:01:29 2010	(r44150)
@@ -477,7 +477,9 @@
     src/misc$(O) \
     src/multidispatch$(O) \
     src/frame_builder$(O) \
-    src/nci$(O) \
+    src/nci/api$(O) \
+    src/nci/core_thunks$(O) \
+    src/nci/extra_thunks$(O) \
     src/oo$(O) \
     src/packfile$(O) \
     src/packout$(O) \
@@ -650,7 +652,9 @@
     src/library.str \
     src/multidispatch.str \
     src/frame_builder.str \
-    src/nci.str \
+    src/nci/api.str \
+    src/nci/core_thunks.str \
+    src/nci/extra_thunks.str \
     src/packfile.str \
     src/pmc.str \
     src/pmc_freeze.str \
@@ -1381,12 +1385,20 @@
 
 src/exit$(O) : $(PARROT_H_HEADERS)
 
-src/nci$(O) : src/nci.str \
-        $(INC_DIR)/oplib/ops.h $(PARROT_H_HEADERS) \
-        src/frame_builder.h \
-        include/pmc/pmc_managedstruct.h \
-        include/pmc/pmc_nci.h \
-        include/pmc/pmc_pointer.h
+src/nci/api$(O) : src/nci/api.str \
+        $(PARROT_H_HEADERS) \
+        include/pmc/pmc_unmanagedstruct.h \
+        include/pmc/pmc_nci.h
+
+src/nci/core_thunks$(O) : src/nci/core_thunks.str \
+        $(PARROT_H_HEADERS) \
+        include/pmc/pmc_unmanagedstruct.h \
+        include/pmc/pmc_nci.h
+
+src/nci/extra_thunks$(O) : src/nci/extra_thunks.str \
+        $(PARROT_H_HEADERS) \
+        include/pmc/pmc_unmanagedstruct.h \
+        include/pmc/pmc_nci.h
 
 src/frame_builder$(O) : $(PARROT_H_HEADERS) src/frame_builder.h \
         include/pmc/pmc_fixedintegerarray.h \
@@ -1399,10 +1411,6 @@
 src/gc/system$(O) : $(PARROT_H_HEADERS)  src/gc/gc_private.h
 src/gc/gc_private.h : $(INC_DIR)/settings.h
 
-src/nci.c : src/call_list.txt $(BUILD_TOOLS_DIR)/nativecall.pl \
-	include/pmc/pmc_nci.h
-	$(PERL) $(BUILD_TOOLS_DIR)/nativecall.pl src/call_list.txt
-
 src/warnings$(O) : $(PARROT_H_HEADERS)
 
 src/misc$(O) : $(PARROT_H_HEADERS)
@@ -2411,8 +2419,8 @@
 	$(PARROT) tools/build/nativecall.pir \
 	    --loader-name=Parrot_glut_nci_loader \
 	    --loader-storage-class=PARROT_DYNEXT_EXPORT \
-	    <src/glut_nci_thunks.nci \
-	    >src/glut_nci_thunks.c
+	    --output=src/glut_nci_thunks.c \
+	    <src/glut_nci_thunks.nci
 
 src/glut_nci_thunks$(O): $(GENERAL_H_FILES)
 

Modified: trunk/include/parrot/nci.h
==============================================================================
--- trunk/include/parrot/nci.h	Fri Feb 19 00:55:33 2010	(r44149)
+++ trunk/include/parrot/nci.h	Fri Feb 19 01:01:29 2010	(r44150)
@@ -17,6 +17,10 @@
 
 void *build_call_func(PARROT_INTERP, SHIM(PMC *pmc_nci), NOTNULL(STRING *signature), NOTNULL(int *jitted));
 
+void Parrot_nci_load_core_thunks(PARROT_INTERP);
+
+void Parrot_nci_load_extra_thunks(PARROT_INTERP);
+
 #endif /* PARROT_NCI_H_GUARD */
 
 /*

Added: trunk/src/nci/api.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/src/nci/api.c	Fri Feb 19 01:01:29 2010	(r44150)
@@ -0,0 +1,85 @@
+/* nci.c
+ *  Copyright (C) 2001-2009, Parrot Foundation.
+ *  SVN Info
+ *     $Id$
+ *  Overview:
+ *     Native Call Interface routines. The code needed to build a
+ *     parrot to C call frame is in here
+ *  Data Structure and Algorithms:
+ *  History:
+ *  Notes:
+ *  References:
+ */
+
+#include "parrot/parrot.h"
+#include "parrot/nci.h"
+#include "api.str"
+
+/* HEADERIZER HFILE: include/parrot/nci.h */
+/* HEADERIZER STOP */
+
+static void
+init_nci_funcs(PARROT_INTERP) {
+    VTABLE_set_pmc_keyed_int(interp, interp->iglobals, IGLOBALS_NCI_FUNCS,
+        pmc_new(interp, enum_class_Hash));
+    Parrot_nci_load_core_thunks(interp);
+    Parrot_nci_load_extra_thunks(interp);
+}
+
+/* This function serves a single purpose. It takes the function
+   signature for a C function we want to call and returns a pointer
+   to a function that can call it. */
+
+void *
+build_call_func(PARROT_INTERP, SHIM(PMC *pmc_nci), NOTNULL(STRING *signature), SHIM(int *jitted)) {
+    PMC *iglobals;
+    PMC *nci_funcs;
+    PMC *thunk;
+
+    /* fixup empty signatures */
+    if (STRING_IS_EMPTY(signature))
+        signature = CONST_STRING(interp, "v");
+
+    iglobals = interp->iglobals;
+    if (PMC_IS_NULL(iglobals))
+        PANIC(interp, "iglobals isn't created yet");
+
+    nci_funcs = VTABLE_get_pmc_keyed_int(interp, iglobals, IGLOBALS_NCI_FUNCS);
+    if (PMC_IS_NULL(nci_funcs)) {
+        init_nci_funcs(interp);
+        nci_funcs = VTABLE_get_pmc_keyed_int(interp, iglobals, IGLOBALS_NCI_FUNCS);
+    }
+
+    thunk = VTABLE_get_pmc_keyed_str(interp, nci_funcs, signature);
+
+    PARROT_ASSERT(PMC_IS_NULL(thunk) || thunk->vtable);
+
+    if ((!PMC_IS_NULL(thunk)) && thunk->vtable->base_type == enum_class_UnManagedStruct)
+        return F2DPTR(VTABLE_get_pointer(interp, thunk));
+
+    /*
+      These lines have been added to aid debugging. I want to be able to
+      see which signature has an unknown type. I am sure someone can come up
+      with a neater way to do this.
+     */
+    {
+        STRING *ns = CONST_STRING(interp, " is an unknown signature type");
+        STRING *message = Parrot_str_concat(interp, signature, ns, 0);
+
+        ns = CONST_STRING(interp, ".\nCAN_BUILD_CALL_FRAMES is disabled, add the signature to src/nci/extra_call_list.nci");
+        message = Parrot_str_concat(interp, message, ns, 0);
+
+        /*
+         * I think there may be memory issues with this but if we get to here we are
+         * aborting.
+         */
+        PANIC(interp, Parrot_str_to_cstring(interp, message));
+    }
+}
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Added: trunk/src/nci/core_thunks.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/src/nci/core_thunks.c	Fri Feb 19 01:01:29 2010	(r44150)
@@ -0,0 +1,1246 @@
+/* ex: set ro ft=c:
+ * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
+ *
+ * This file is generated automatically by tools/build/nativecall.pir
+ *
+ * Any changes made here will be lost!
+ *
+ */
+
+/* src/nci/core_thunks.c
+ *  Copyright (C) 2010, Parrot Foundation.
+ *  SVN Info
+ *     $Id$
+ *  Overview:
+ *     Native Call Interface routines. The code needed to build a
+ *     parrot to C call frame is in here
+ *  Data Structure and Algorithms:
+ *  History:
+ *  Notes:
+ *  References:
+ */
+
+
+#include "parrot/parrot.h"
+#include "pmc/pmc_nci.h"
+
+
+#ifdef PARROT_IN_EXTENSION
+/* external libraries can't have strings statically compiled into parrot */
+#  define CONST_STRING(i, s) Parrot_str_new_constant((i), (s))
+#else
+#  include "core_thunks.str"
+#endif
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER STOP */
+
+/* All our static functions that call in various ways. Yes, terribly
+   hackish, but that is just fine */
+
+
+static void
+pcf_d_JOd(PARROT_INTERP, PMC *self)
+{
+    typedef double(* func_t)(PARROT_INTERP, PMC *, double);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    FLOATVAL return_data;
+
+    PMC * t_1;
+    FLOATVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiN", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (double)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+    
+
+
+}
+static void
+pcf_I_JOS(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_P_JOl(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+}
+static void
+pcf_P_Jt(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_1);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_S_JOS(PARROT_INTERP, PMC *self)
+{
+    typedef STRING *(* func_t)(PARROT_INTERP, PMC *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    STRING * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (STRING *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+    
+
+
+}
+static void
+pcf_I_JI(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_v_JOSP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_v_JOS(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_P_JOS(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+}
+static void
+pcf_I_JOI(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_P_JOP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiP", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+}
+static void
+pcf_P_JOPS(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    STRING * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPS", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+}
+static void
+pcf_v_JOPSP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *, STRING *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    STRING * t_3;
+    PMC * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPSP", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    
+    
+
+
+
+
+}
+static void
+pcf_v_JPPP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_v_JPIP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, INTVAL, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_v_JPSP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_v_JPNP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, FLOATVAL, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    FLOATVAL t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PNP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_v_JPP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_v_JPI(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_v_JPS(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_v_JPN(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, FLOATVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    FLOATVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PN", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_P_JPPP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+}
+static void
+pcf_P_JPIP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, INTVAL, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+}
+static void
+pcf_P_JPSP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, STRING *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+}
+static void
+pcf_P_JPNP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, FLOATVAL, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    FLOATVAL t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PNP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+}
+static void
+pcf_I_JPP(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_I_JPS(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_I_JPN(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, FLOATVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    FLOATVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PN", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_JP(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_v_JP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1);
+    
+    
+
+}
+static void
+pcf_i_JPi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_JPii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_JPiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIII", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+}
+static void
+pcf_i_JPt(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_P_JOSSS(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, STRING *, STRING *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    STRING * t_3;
+    STRING * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSSS", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+
+}
+static void
+pcf_v_JOSS(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    STRING * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSS", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_S_JOI(PARROT_INTERP, PMC *self)
+{
+    typedef STRING *(* func_t)(PARROT_INTERP, PMC *, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    STRING * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (STRING *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+    
+
+
+}
+static void
+pcf_v_JOb(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    STRING *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, Buffer_bufstart(t_2));
+    
+    
+
+
+}
+static void
+pcf_i_JOPxAT_(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPs", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_I_JOPxAT_(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPs", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_I_JOIPxAT_(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, INTVAL, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    PMC * t_3;
+    PMC * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiIPPs", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+}
+static void
+pcf_P_JO(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+}
+static void
+pcf_v_JOP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiP", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_P_Ji(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+}
+
+
+ void
+Parrot_nci_load_core_thunks(PARROT_INTERP)
+{
+    PMC        *iglobals;
+    PMC        *temp_pmc;
+
+    PMC        *HashPointer   = NULL;
+
+    iglobals = interp->iglobals;
+    if (PMC_IS_NULL(iglobals))
+        PANIC(interp, "iglobals isn't created yet");
+
+    HashPointer = VTABLE_get_pmc_keyed_int(interp, iglobals,
+            IGLOBALS_NCI_FUNCS);
+    if (PMC_IS_NULL(HashPointer))
+        PANIC(interp, "iglobals.nci_funcs isn't created yet");
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_d_JOd);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "dJOd"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOS"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOl"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_Jt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_JOS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "SJOS"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJI"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOSP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOSP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOS"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOS"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOI"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOPS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOPS"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOPSP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOPSP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPPP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPIP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPIP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPSP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPSP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPNP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPNP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPI"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPS"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPN);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPN"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JPPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJPPP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JPIP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJPIP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JPSP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJPSP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JPNP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJPNP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJPP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JPS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJPS"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JPN);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJPN"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOSSS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOSSS"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOSS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOSS"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_JOI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "SJOI"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOb);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOb"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JOPxAT_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJOP@"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOPxAT_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOP@"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOIPxAT_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOIP@"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JO);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJO"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_Ji);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJi"), temp_pmc);
+
+}
+
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
+

Added: trunk/src/nci/core_thunks.nci
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/src/nci/core_thunks.nci	Fri Feb 19 01:01:29 2010	(r44150)
@@ -0,0 +1,119 @@
+# Copyright (C) 2002-2008, Parrot Foundation.
+
+# DO NOT EDIT THIS FILE.
+#
+# Any changes made here will be lost.
+#
+# This file is generated automatically by config/gen/call_list.pm
+# using config/gen/call_list/*.in .
+
+
+# Function signature declarations for Parrot Native Call Interface.
+# The first alphanumeric is the type of the return value,
+# the other alphanumerics denote the input parameter types.
+
+# Types
+
+# INT register stuff
+# I - INTVAL
+# c - char
+# s - short
+# i - int
+# l - long
+
+# NUM register stuff
+# N - FLOATVAL
+# f - float
+# d - double
+
+# STR register stuff
+# S - pointer to a STRING-register
+# t - character string (0-terminated)
+# Buffers are not valid return parameters,
+# use 'p' when the native function returns a pointer value
+# b - void *
+# B - void **
+
+# PMC register stuff
+# P - pointer to a PMC-register
+# O - pointer to PMC-register (object)
+# p - data pointer from PMC (on store into a new UnManagedStruct PMC)
+# 2 - pointer to short
+# 3 - pointer to int
+# 4 - pointer to long
+
+# void stuff
+# v - void
+
+# special stuff
+# 0 - insert a NULL (pointer) - doesn't consume a register
+# J - Parrot_Interp param
+# @ - slurpy array
+
+# callback stuff
+# U - Single PMC parameter to pass into callback - user data
+
+# Signatures
+
+d    JOd      # Parrot builtins
+I    JOS
+P    JOl
+P    Jt
+S    JOS      # ParrotIO.readline
+I    JI       # Parrot_is_char_*
+v    JOSP     # String.trans
+v    JOS      # String.reverse
+P    JOS      # Added for os.stat
+I    JOI      # os.umask
+P    JOP      # atan2
+P    JOPS     # Namespace.get_global
+v    JOPSP    # Namespace.set_global
+
+v    JPPP     # infix MMD
+v    JPIP
+v    JPSP
+v    JPNP
+
+v    JPP      # inplace infix MMD
+v    JPI
+v    JPS
+v    JPN
+
+P    JPPP     # infix MMD new
+P    JPIP
+P    JPSP
+P    JPNP
+
+I    JPP      # MMD compare
+
+# These are needed for packfileconstanttable.pmc
+I    JPS
+I    JPN
+
+# These are needed for parrotio.pmc
+i    JP
+v    JP
+i    JPi
+i    JPii
+i    JPiii
+i    JPt
+P    JOSSS
+
+# Needed by string.pmc
+v    JOSS
+
+# Needed by integer.pmc
+S    JOI
+
+# src/pmc/nci.pmc
+v    JOb
+
+# ParrotThread creation
+i    JOP@
+I    JOP@
+I    JOIP@
+
+# other ParrotThread
+P    JO
+v    JOP
+P    Ji

Added: trunk/src/nci/extra_thunks.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/src/nci/extra_thunks.c	Fri Feb 19 01:01:29 2010	(r44150)
@@ -0,0 +1,7238 @@
+/* ex: set ro ft=c:
+ * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
+ *
+ * This file is generated automatically by tools/build/nativecall.pir
+ *
+ * Any changes made here will be lost!
+ *
+ */
+
+/* src/nci/extra_thunks.c
+ *  Copyright (C) 2010, Parrot Foundation.
+ *  SVN Info
+ *     $Id$
+ *  Overview:
+ *     Native Call Interface routines. The code needed to build a
+ *     parrot to C call frame is in here
+ *  Data Structure and Algorithms:
+ *  History:
+ *  Notes:
+ *  References:
+ */
+
+
+#include "parrot/parrot.h"
+#include "pmc/pmc_nci.h"
+
+
+#ifdef PARROT_IN_EXTENSION
+/* external libraries can't have strings statically compiled into parrot */
+#  define CONST_STRING(i, s) Parrot_str_new_constant((i), (s))
+#else
+#  include "extra_thunks.str"
+#endif
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER STOP */
+
+/* All our static functions that call in various ways. Yes, terribly
+   hackish, but that is just fine */
+
+
+static void
+pcf_v_J(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    ;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "");
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp);
+    
+    
+}
+static void
+pcf_i_ip(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_JPip(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_JpP(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, void *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_Jpii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_p(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_i_tp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(char *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    char *t_0; STRING *ts_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SP", &ts_0, &t_1);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+}
+static void
+pcf_p_J(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(PARROT_INTERP);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    ;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "");
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(interp);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+}
+static void
+pcf_p_Jp(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(PARROT_INTERP, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+}
+static void
+pcf_t_J(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(PARROT_INTERP);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    ;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "");
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(interp);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+}
+static void
+pcf_t_Jpti(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(PARROT_INTERP, void *, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSI", &t_1, &ts_2, &t_3);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+
+}
+static void
+pcf_t_p(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+}
+static void
+pcf_t_pt(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &ts_1);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_v_p(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
+    
+    
+}
+static void
+pcf_v_pit(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, int, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIS", &t_0, &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_v_ptt(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, char *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSS", &t_0, &ts_1, &ts_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_v_Jtiiipt(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, char *, int, int, int, void *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    PMC *t_5;
+    char *t_6; STRING *ts_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SIIIPS", &ts_1, &t_2, &t_3, &t_4, &t_5, &ts_6);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_6 = ts_6 ? Parrot_str_to_cstring(interp, ts_6) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3, t_4, PMC_IS_NULL((PMC*)t_5) ? (void *)NULL : VTABLE_get_pointer(interp, t_5), t_6);
+    
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+
+
+if (t_6) Parrot_str_free_cstring(t_6);
+}
+static void
+pcf_p_JttPP(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(PARROT_INTERP, char *, char *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    PMC * t_3;
+    PMC * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SSPP", &ts_1, &ts_2, &t_3, &t_4);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+
+
+}
+static void
+pcf_P_Jtpi(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, char *, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    char *t_1; STRING *ts_1;
+    PMC *t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SPI", &ts_1, &t_2, &t_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+}
+static void
+pcf_i_Vppp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void **, void *, void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0; void *v_0;
+    PMC *t_1;
+    PMC *t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPP", &t_0, &t_1, &t_2, &t_3);
+    v_0 = VTABLE_get_pointer(interp, t_0);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(&v_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    VTABLE_set_pointer(interp, t_0, v_0);
+
+
+
+}
+static void
+pcf_v_JpPP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, void *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_1;
+    PMC * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_v_pt(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &ts_1);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_v_Jpt(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, void *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
+    
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_v_(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)();
+    
+    
+}
+static void
+pcf_v_Jiiip(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, int, int, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    PMC *t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIP", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3, PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4));
+    
+    
+
+
+
+
+}
+static void
+pcf_v_i(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(t_0);
+    
+    
+}
+static void
+pcf_v_ii(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(t_0, t_1);
+    
+    
+
+}
+static void
+pcf_v_illllllll(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(int, long, long, long, long, long, long, long, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    INTVAL t_7;
+    INTVAL t_8;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7, &t_8);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7, t_8);
+    
+    
+
+
+
+
+
+
+
+
+}
+static void
+pcf_v_l(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(t_0);
+    
+    
+}
+static void
+pcf_v_pbip(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, void *, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    STRING *t_1;
+    INTVAL t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSIP", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), Buffer_bufstart(t_1), t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    
+    
+
+
+
+}
+static void
+pcf_v_pi(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    
+    
+
+}
+static void
+pcf_v_piiii(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIII", &t_0, &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
+    
+    
+
+
+
+
+}
+static void
+pcf_v_pl(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    
+    
+
+}
+static void
+pcf_v_pp(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    
+    
+
+}
+static void
+pcf_i_JPP(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_P_JP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+}
+static void
+pcf_P_JPP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+}
+static void
+pcf_P_JO(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+}
+static void
+pcf_S_JO(PARROT_INTERP, PMC *self)
+{
+    typedef STRING *(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    STRING * return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (STRING *)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+    
+
+}
+static void
+pcf_i_P(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_P_JOPP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+}
+static void
+pcf_P_JOPPP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    PMC * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPP", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+
+}
+static void
+pcf_v_JOPP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_v_JOPPP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    PMC * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPP", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    
+    
+
+
+
+
+}
+static void
+pcf_P_JOPPPP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    PMC * t_4;
+    PMC * t_5;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPPP", &t_1, &t_2, &t_3, &t_4, &t_5);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4, t_5);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+
+
+}
+static void
+pcf_P_JOPPPPP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    PMC * t_4;
+    PMC * t_5;
+    PMC * t_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPPPP", &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4, t_5, t_6);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+
+
+
+}
+static void
+pcf_I_JOSI(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, STRING *, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSI", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_P_JOSII(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, STRING *, INTVAL, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSII", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+
+}
+static void
+pcf_t_p3(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    PMC *t_1; int i_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+    i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_i_pp3p(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2; int i_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPP", &t_0, &t_1, &t_2, &t_3);
+    i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), &i_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+
+}
+static void
+pcf_i_pp3(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2; int i_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
+    i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), &i_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+}
+static void
+pcf_i_ppd(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, double);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    FLOATVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPN", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_ptii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, char *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSII", &t_0, &ts_1, &t_2, &t_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+}
+static void
+pcf_i_pipi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    PMC *t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIPI", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_t_ptti(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *, char *, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSI", &t_0, &ts_1, &ts_2, &t_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+
+}
+static void
+pcf_t_pti(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSI", &t_0, &ts_1, &t_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_t_pttti(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *, char *, char *, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    char *t_3; STRING *ts_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSSI", &t_0, &ts_1, &ts_2, &ts_3, &t_4);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+if (t_3) Parrot_str_free_cstring(t_3);
+
+}
+static void
+pcf_p_Ji(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(PARROT_INTERP, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(interp, t_1);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+}
+static void
+pcf_p_Jipp(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(PARROT_INTERP, int, void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_1;
+    PMC *t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IPP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(interp, t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+}
+static void
+pcf_p_Jbip(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(PARROT_INTERP, void *, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    STRING *t_1;
+    INTVAL t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SIP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(interp, Buffer_bufstart(t_1), t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+}
+static void
+pcf_v_Jp(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    
+    
+
+}
+static void
+pcf_v_JS(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    STRING * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1);
+    
+    
+
+}
+static void
+pcf_t_tt(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(char *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    char *t_0; STRING *ts_0;
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SS", &ts_0, &ts_1);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(t_0, t_1);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_I_JOt(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_v_JOSI(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSI", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_S_JOi(PARROT_INTERP, PMC *self)
+{
+    typedef STRING *(* func_t)(PARROT_INTERP, PMC *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    STRING * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (STRING *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+    
+
+
+}
+static void
+pcf_v_JOi(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_I_JO(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_N_JO(PARROT_INTERP, PMC *self)
+{
+    typedef FLOATVAL(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    FLOATVAL return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (FLOATVAL)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+    
+
+}
+static void
+pcf_v_JON(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, FLOATVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    FLOATVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiN", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_P_JOi(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+}
+static void
+pcf_v_JOI(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_P_JOI(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+}
+static void
+pcf_P_JOIS(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, INTVAL, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    STRING * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiIS", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+}
+static void
+pcf_S_JOSP(PARROT_INTERP, PMC *self)
+{
+    typedef STRING *(* func_t)(PARROT_INTERP, PMC *, STRING *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    STRING * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (STRING *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+    
+
+
+
+}
+static void
+pcf_i_(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)();
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_i_i3i(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1; int i_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IPI", &t_0, &t_1, &t_2);
+    i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, &i_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+
+}
+static void
+pcf_i_ibi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    STRING *t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "ISI", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, Buffer_bufstart(t_1), t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_l_lttl(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(long, char *, char *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "ISSI", &t_0, &ts_1, &ts_2, &t_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(t_0, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+
+}
+static void
+pcf_i_pip(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_piS(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    STRING * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIS", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_S_i(PARROT_INTERP, PMC *self)
+{
+    typedef STRING *(* func_t)(int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    STRING * return_data;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (STRING *)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+    
+}
+static void
+pcf_l_p(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_c_p(PARROT_INTERP, PMC *self)
+{
+    typedef char(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_p_pi(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+}
+static void
+pcf_p_p(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+}
+static void
+pcf_i_pttttt(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, char *, char *, char *, char *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    char *t_3; STRING *ts_3;
+    char *t_4; STRING *ts_4;
+    char *t_5; STRING *ts_5;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSSSS", &t_0, &ts_1, &ts_2, &ts_3, &ts_4, &ts_5);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;t_4 = ts_4 ? Parrot_str_to_cstring(interp, ts_4) : (char *)NULL;t_5 = ts_5 ? Parrot_str_to_cstring(interp, ts_5) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+if (t_3) Parrot_str_free_cstring(t_3);
+if (t_4) Parrot_str_free_cstring(t_4);
+if (t_5) Parrot_str_free_cstring(t_5);
+}
+static void
+pcf_c_pttt(PARROT_INTERP, PMC *self)
+{
+    typedef char(* func_t)(void *, char *, char *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    char *t_3; STRING *ts_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSS", &t_0, &ts_1, &ts_2, &ts_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+if (t_3) Parrot_str_free_cstring(t_3);
+}
+static void
+pcf_p_pttttiti(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, char *, char *, char *, int, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    char *t_3; STRING *ts_3;
+    char *t_4; STRING *ts_4;
+    INTVAL t_5;
+    char *t_6; STRING *ts_6;
+    INTVAL t_7;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSSSISI", &t_0, &ts_1, &ts_2, &ts_3, &ts_4, &t_5, &ts_6, &t_7);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;t_4 = ts_4 ? Parrot_str_to_cstring(interp, ts_4) : (char *)NULL;t_6 = ts_6 ? Parrot_str_to_cstring(interp, ts_6) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, t_6, t_7);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+if (t_3) Parrot_str_free_cstring(t_3);
+if (t_4) Parrot_str_free_cstring(t_4);
+
+if (t_6) Parrot_str_free_cstring(t_6);
+
+}
+static void
+pcf_i_pt(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &ts_1);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_i_ptl(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, char *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSI", &t_0, &ts_1, &t_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_i_pi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_pl(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_l_(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)();
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_p_pt(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &ts_1);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_p_ptt(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSS", &t_0, &ts_1, &ts_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_i_pit(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIS", &t_0, &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_p_pp(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+}
+static void
+pcf_l_ttl(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(char *, char *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    char *t_0; STRING *ts_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SSI", &ts_0, &ts_1, &t_2);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(t_0, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    if (t_0) Parrot_str_free_cstring(t_0);
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_l_pttl(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(void *, char *, char *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSI", &t_0, &ts_1, &ts_2, &t_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+
+}
+static void
+pcf_v_t(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    char *t_0; STRING *ts_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(t_0);
+    
+    if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_p_pttttitl(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, char *, char *, char *, int, char *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    char *t_3; STRING *ts_3;
+    char *t_4; STRING *ts_4;
+    INTVAL t_5;
+    char *t_6; STRING *ts_6;
+    INTVAL t_7;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSSSISI", &t_0, &ts_1, &ts_2, &ts_3, &ts_4, &t_5, &ts_6, &t_7);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;t_4 = ts_4 ? Parrot_str_to_cstring(interp, ts_4) : (char *)NULL;t_6 = ts_6 ? Parrot_str_to_cstring(interp, ts_6) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, t_6, t_7);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+if (t_3) Parrot_str_free_cstring(t_3);
+if (t_4) Parrot_str_free_cstring(t_4);
+
+if (t_6) Parrot_str_free_cstring(t_6);
+
+}
+static void
+pcf_p_tiB3P(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(char *, int, char **, int *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_0; STRING *ts_0;
+    INTVAL t_1;
+    char *t_2; STRING *ts_2;
+    PMC *t_3; int i_3;
+    PMC * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SISPP", &ts_0, &t_1, &ts_2, &t_3, &t_4);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *) NULL;i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1, &t_2, &i_3, t_4);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+if (t_2) Parrot_str_free_cstring(t_2);
+VTABLE_set_integer_native(interp, t_3, i_3);
+
+}
+static void
+pcf_p_tip3P(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(char *, int, void *, int *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_0; STRING *ts_0;
+    INTVAL t_1;
+    PMC *t_2;
+    PMC *t_3; int i_3;
+    PMC * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SIPPP", &ts_0, &t_1, &t_2, &t_3, &t_4);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), &i_3, t_4);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+
+VTABLE_set_integer_native(interp, t_3, i_3);
+
+}
+static void
+pcf_i_pPtiiipi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, PMC *, char *, int, int, int, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC * t_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    PMC *t_6;
+    INTVAL t_7;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPSIIIPI", &t_0, &t_1, &ts_2, &t_3, &t_4, &t_5, &t_6, &t_7);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, PMC_IS_NULL((PMC*)t_6) ? (void *)NULL : VTABLE_get_pointer(interp, t_6), t_7);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+
+
+
+
+
+}
+static void
+pcf_i_tpiibi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(char *, void *, int, int, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    char *t_0; STRING *ts_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    STRING *t_4;
+    INTVAL t_5;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SPIISI", &ts_0, &t_1, &t_2, &t_3, &t_4, &t_5);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, Buffer_bufstart(t_4), t_5);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+
+
+
+
+}
+static void
+pcf_p_ptippppi(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, int, void *, void *, void *, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    PMC *t_3;
+    PMC *t_4;
+    PMC *t_5;
+    PMC *t_6;
+    INTVAL t_7;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSIPPPPI", &t_0, &ts_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3), PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4), PMC_IS_NULL((PMC*)t_5) ? (void *)NULL : VTABLE_get_pointer(interp, t_5), PMC_IS_NULL((PMC*)t_6) ? (void *)NULL : VTABLE_get_pointer(interp, t_6), t_7);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+
+
+
+
+}
+static void
+pcf_p_pi33ipi(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, int, int *, int *, int, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    INTVAL t_1;
+    PMC *t_2; int i_2;
+    PMC *t_3; int i_3;
+    INTVAL t_4;
+    PMC *t_5;
+    INTVAL t_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIPPIPI", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, &i_2, &i_3, t_4, PMC_IS_NULL((PMC*)t_5) ? (void *)NULL : VTABLE_get_pointer(interp, t_5), t_6);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+VTABLE_set_integer_native(interp, t_3, i_3);
+
+
+
+}
+static void
+pcf_p_pttip(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, char *, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    PMC *t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSIP", &t_0, &ts_1, &ts_2, &t_3, &t_4);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4));
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+
+
+}
+static void
+pcf_p_ptipppi(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, int, void *, void *, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    PMC *t_3;
+    PMC *t_4;
+    PMC *t_5;
+    INTVAL t_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSIPPPI", &t_0, &ts_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3), PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4), PMC_IS_NULL((PMC*)t_5) ? (void *)NULL : VTABLE_get_pointer(interp, t_5), t_6);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+
+
+
+}
+static void
+pcf_p_ppP(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, void *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+}
+static void
+pcf_p_iiil(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(int, int, int, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1, t_2, t_3);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+}
+static void
+pcf_i_ppl(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPI", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_v_pip(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    
+    
+
+
+}
+static void
+pcf_p_pti(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSI", &t_0, &ts_1, &t_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_i_ppp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_p_ptii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSII", &t_0, &ts_1, &t_2, &t_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+}
+static void
+pcf_p_ti(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_0; STRING *ts_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SI", &ts_0, &t_1);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+}
+static void
+pcf_p_ptp(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSP", &t_0, &ts_1, &t_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_i_pt33(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, char *, int *, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    PMC *t_2; int i_2;
+    PMC *t_3; int i_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSPP", &t_0, &ts_1, &t_2, &t_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, &i_2, &i_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+VTABLE_set_integer_native(interp, t_3, i_3);
+}
+static void
+pcf_c_(PARROT_INTERP, PMC *self)
+{
+    typedef char(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char)(*fn_pointer)();
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_c_pi(PARROT_INTERP, PMC *self)
+{
+    typedef char(* func_t)(void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_d_(PARROT_INTERP, PMC *self)
+{
+    typedef double(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    FLOATVAL return_data;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (double)(*fn_pointer)();
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+    
+}
+static void
+pcf_d_d(PARROT_INTERP, PMC *self)
+{
+    typedef double(* func_t)(double);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    FLOATVAL return_data;
+
+    FLOATVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "N", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (double)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+    
+}
+static void
+pcf_f_(PARROT_INTERP, PMC *self)
+{
+    typedef float(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    FLOATVAL return_data;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (float)(*fn_pointer)();
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+    
+}
+static void
+pcf_f_ff(PARROT_INTERP, PMC *self)
+{
+    typedef float(* func_t)(float, float);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    FLOATVAL return_data;
+
+    FLOATVAL t_0;
+    FLOATVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "NN", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (float)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+    
+
+}
+static void
+pcf_f_is(PARROT_INTERP, PMC *self)
+{
+    typedef float(* func_t)(int, short);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    FLOATVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (float)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+    
+
+}
+static void
+pcf_i_b(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    STRING *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(Buffer_bufstart(t_0));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_i_d(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(double);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    FLOATVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "N", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_i_i(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_i_ii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_ii4(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, long *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    PMC *t_2; long i_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIP", &t_0, &t_1, &t_2);
+    i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, &i_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+}
+static void
+pcf_i_ii4i(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, long *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    PMC *t_2; long i_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIPI", &t_0, &t_1, &t_2, &t_3);
+    i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, &i_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+
+}
+static void
+pcf_i_iiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_iiilsp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, int, long, short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    PMC *t_5;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIIIP", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2, t_3, t_4, PMC_IS_NULL((PMC*)t_5) ? (void *)NULL : VTABLE_get_pointer(interp, t_5));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+}
+static void
+pcf_i_iil(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "III", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_iili(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, long, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_iip(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_iit(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIS", &t_0, &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_i_iiti(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IISI", &t_0, &t_1, &ts_2, &t_3);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+
+}
+static void
+pcf_i_ilsp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, long, short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIP", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_iti(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "ISI", &t_0, &ts_1, &t_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_i_l(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_i_li(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(long, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_lp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(long, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_lsp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(long, short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_p33(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int *, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1; int i_1;
+    PMC *t_2; int i_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
+    i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, &i_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+}
+static void
+pcf_i_p333(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int *, int *, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1; int i_1;
+    PMC *t_2; int i_2;
+    PMC *t_3; int i_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPP", &t_0, &t_1, &t_2, &t_3);
+    i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, &i_2, &i_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+VTABLE_set_integer_native(interp, t_3, i_3);
+}
+static void
+pcf_i_p333333(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int *, int *, int *, int *, int *, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1; int i_1;
+    PMC *t_2; int i_2;
+    PMC *t_3; int i_3;
+    PMC *t_4; int i_4;
+    PMC *t_5; int i_5;
+    PMC *t_6; int i_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPPPPP", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);i_4 = VTABLE_get_integer(interp, t_4);i_5 = VTABLE_get_integer(interp, t_5);i_6 = VTABLE_get_integer(interp, t_6);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, &i_2, &i_3, &i_4, &i_5, &i_6);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+VTABLE_set_integer_native(interp, t_3, i_3);
+VTABLE_set_integer_native(interp, t_4, i_4);
+VTABLE_set_integer_native(interp, t_5, i_5);
+VTABLE_set_integer_native(interp, t_6, i_6);
+}
+static void
+pcf_i_p4(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1; long i_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+    i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_i_p42p(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long *, short *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1; long i_1;
+    PMC *t_2; short i_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPP", &t_0, &t_1, &t_2, &t_3);
+    i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, &i_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+
+}
+static void
+pcf_i_p4i(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1; long i_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPI", &t_0, &t_1, &t_2);
+    i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+
+}
+static void
+pcf_i_pb(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    STRING *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), Buffer_bufstart(t_1));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_pii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_pii4(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, long *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    PMC *t_3; long i_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIP", &t_0, &t_1, &t_2, &t_3);
+    i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, &i_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+VTABLE_set_integer_native(interp, t_3, i_3);
+}
+static void
+pcf_i_pii4i(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, long *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    PMC *t_3; long i_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIPI", &t_0, &t_1, &t_2, &t_3, &t_4);
+    i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, &i_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+VTABLE_set_integer_native(interp, t_3, i_3);
+
+}
+static void
+pcf_i_piii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_piiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, t_6);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+}
+static void
+pcf_i_piiilsp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, int, long, short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    PMC *t_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIIIIP", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, PMC_IS_NULL((PMC*)t_6) ? (void *)NULL : VTABLE_get_pointer(interp, t_6));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+}
+static void
+pcf_i_piil(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_piili(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, long, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIII", &t_0, &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+}
+static void
+pcf_i_piit(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    char *t_3; STRING *ts_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIS", &t_0, &t_1, &t_2, &ts_3);
+    t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+if (t_3) Parrot_str_free_cstring(t_3);
+}
+static void
+pcf_i_piiti(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    char *t_3; STRING *ts_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIISI", &t_0, &t_1, &t_2, &ts_3, &t_4);
+    t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+if (t_3) Parrot_str_free_cstring(t_3);
+
+}
+static void
+pcf_i_pilsp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, long, short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    PMC *t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIIP", &t_0, &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+}
+static void
+pcf_i_pli(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_pll(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_pllllllll(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long, long, long, long, long, long, long, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    INTVAL t_7;
+    INTVAL t_8;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7, &t_8);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, t_6, t_7, t_8);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+
+
+}
+static void
+pcf_i_plp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_plsp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long, short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIP", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_pp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_ppi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPI", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_ppiiiiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int, int, int, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    INTVAL t_7;
+    INTVAL t_8;
+    INTVAL t_9;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIIIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7, &t_8, &t_9);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4, t_5, t_6, t_7, t_8, t_9);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+
+
+
+}
+static void
+pcf_i_pppp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPP", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_psp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_pti(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSI", &t_0, &ts_1, &t_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_i_pitl(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, char *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PISI", &t_0, &t_1, &ts_2, &t_3);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+
+}
+static void
+pcf_i_s(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(short);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_i_s22(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(short, short *, short *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1; short i_1;
+    PMC *t_2; short i_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IPP", &t_0, &t_1, &t_2);
+    i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, &i_1, &i_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+}
+static void
+pcf_i_s222(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(short, short *, short *, short *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1; short i_1;
+    PMC *t_2; short i_2;
+    PMC *t_3; short i_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IPPP", &t_0, &t_1, &t_2, &t_3);
+    i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, &i_1, &i_2, &i_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+VTABLE_set_integer_native(interp, t_3, i_3);
+}
+static void
+pcf_i_sp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_sss(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(short, short, short);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "III", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_ssss(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(short, short, short, short);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_t(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    char *t_0; STRING *ts_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_i_ti(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    char *t_0; STRING *ts_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SI", &ts_0, &t_1);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+}
+static void
+pcf_i_4(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(long *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0; long i_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    i_0 = VTABLE_get_integer(interp, t_0);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(&i_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    VTABLE_set_integer_native(interp, t_0, i_0);
+}
+static void
+pcf_i_4i(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(long *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0; long i_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    i_0 = VTABLE_get_integer(interp, t_0);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(&i_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    VTABLE_set_integer_native(interp, t_0, i_0);
+
+}
+static void
+pcf_i_42p(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(long *, short *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0; long i_0;
+    PMC *t_1; short i_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
+    i_0 = VTABLE_get_integer(interp, t_0);i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(&i_0, &i_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    VTABLE_set_integer_native(interp, t_0, i_0);
+VTABLE_set_integer_native(interp, t_1, i_1);
+
+}
+static void
+pcf_l_ii(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_l_l4(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(long, long *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1; long i_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+    i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(t_0, &i_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_l_pi(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_l_pii(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_l_p33l(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(void *, int *, int *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1; int i_1;
+    PMC *t_2; int i_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPI", &t_0, &t_1, &t_2, &t_3);
+    i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, &i_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+
+}
+static void
+pcf_l_33l(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(int *, int *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0; int i_0;
+    PMC *t_1; int i_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPI", &t_0, &t_1, &t_2);
+    i_0 = VTABLE_get_integer(interp, t_0);i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(&i_0, &i_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    VTABLE_set_integer_native(interp, t_0, i_0);
+VTABLE_set_integer_native(interp, t_1, i_1);
+
+}
+static void
+pcf_p_(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)();
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+}
+static void
+pcf_p_B(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(char **);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_0; STRING *ts_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *) NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(&t_0);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_p_b(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    STRING *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(Buffer_bufstart(t_0));
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+}
+static void
+pcf_p_Jt(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(PARROT_INTERP, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_1);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(interp, t_1);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_p_i(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+}
+static void
+pcf_p_ii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+}
+static void
+pcf_p_iiii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1, t_2, t_3);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+}
+static void
+pcf_p_iiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(int, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1, t_2, t_3, t_4, t_5);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+
+
+}
+static void
+pcf_p_iiiiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(int, int, int, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    INTVAL t_7;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+
+
+
+
+}
+static void
+pcf_p_pii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+}
+static void
+pcf_p_piiii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIII", &t_0, &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+
+}
+static void
+pcf_p_t(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_0; STRING *ts_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_p_tpp(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(char *, void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_0; STRING *ts_0;
+    PMC *t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SPP", &ts_0, &t_1, &t_2);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+
+}
+static void
+pcf_p_ttttttt(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(char *, char *, char *, char *, char *, char *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_0; STRING *ts_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    char *t_3; STRING *ts_3;
+    char *t_4; STRING *ts_4;
+    char *t_5; STRING *ts_5;
+    char *t_6; STRING *ts_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SSSSSSS", &ts_0, &ts_1, &ts_2, &ts_3, &ts_4, &ts_5, &ts_6);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;t_4 = ts_4 ? Parrot_str_to_cstring(interp, ts_4) : (char *)NULL;t_5 = ts_5 ? Parrot_str_to_cstring(interp, ts_5) : (char *)NULL;t_6 = ts_6 ? Parrot_str_to_cstring(interp, ts_6) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1, t_2, t_3, t_4, t_5, t_6);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+if (t_3) Parrot_str_free_cstring(t_3);
+if (t_4) Parrot_str_free_cstring(t_4);
+if (t_5) Parrot_str_free_cstring(t_5);
+if (t_6) Parrot_str_free_cstring(t_6);
+}
+static void
+pcf_s_(PARROT_INTERP, PMC *self)
+{
+    typedef short(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (short)(*fn_pointer)();
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_t_(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)();
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+}
+static void
+pcf_t_i(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(t_0);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+}
+static void
+pcf_t_ii(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(t_0, t_1);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+
+}
+static void
+pcf_t_pi(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+
+}
+static void
+pcf_t_pii(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+
+
+}
+static void
+pcf_t_t(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    char *t_0; STRING *ts_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(t_0);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_t_tl4(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(char *, long, long *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    char *t_0; STRING *ts_0;
+    INTVAL t_1;
+    PMC *t_2; long i_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SIP", &ts_0, &t_1, &t_2);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(t_0, t_1, &i_2);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+}
+static void
+pcf_t_t4(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(char *, long *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    char *t_0; STRING *ts_0;
+    PMC *t_1; long i_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SP", &ts_0, &t_1);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(t_0, &i_1);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_i_sc(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(short, char);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_s_sc(PARROT_INTERP, PMC *self)
+{
+    typedef short(* func_t)(short, char);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (short)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_c_sc(PARROT_INTERP, PMC *self)
+{
+    typedef char(* func_t)(short, char);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_iii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "III", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_i3(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1; int i_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+    i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, &i_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_t_b(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    STRING *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(Buffer_bufstart(t_0));
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+}
+static void
+pcf_t_B(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(char **);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    char *t_0; STRING *ts_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *) NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(&t_0);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_v_P(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(t_0);
+    
+    
+}
+static void
+pcf_v_pP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    
+    
+
+}
+static void
+pcf_p_ip(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+}
+static void
+pcf_i_33(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int *, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0; int i_0;
+    PMC *t_1; int i_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+    i_0 = VTABLE_get_integer(interp, t_0);i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(&i_0, &i_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    VTABLE_set_integer_native(interp, t_0, i_0);
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_v_pii(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_v_JO(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1);
+    
+    
+
+}
+static void
+pcf_i_JO(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_JOi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_JOt(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_i_Jt(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_1);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_i_Ji(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_v_Vi(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void **, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0; void *v_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    v_0 = VTABLE_get_pointer(interp, t_0);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(&v_0, t_1);
+    
+    VTABLE_set_pointer(interp, t_0, v_0);
+
+}
+static void
+pcf_p_ppiii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, void *, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIII", &t_0, &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+
+}
+static void
+pcf_p_ppiiiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, void *, int, int, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    INTVAL t_7;
+    INTVAL t_8;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7, &t_8);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4, t_5, t_6, t_7, t_8);
+    if (return_data != NULL) {
+                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+
+
+
+
+
+}
+static void
+pcf_i_ppii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_ppiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIII", &t_0, &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+}
+static void
+pcf_i_ppiiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4, t_5);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+}
+static void
+pcf_i_ppiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4, t_5, t_6);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+}
+static void
+pcf_i_ppiiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    INTVAL t_7;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4, t_5, t_6, t_7);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+
+}
+static void
+pcf_i_ppt(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPS", &t_0, &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_i_pppi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPI", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_pppii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPII", &t_0, &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+}
+static void
+pcf_i_pppiiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, void *, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), t_3, t_4, t_5, t_6);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+}
+static void
+pcf_i_ppppiiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, void *, void *, int, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2;
+    PMC *t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    INTVAL t_7;
+    INTVAL t_8;
+    INTVAL t_9;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPPIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7, &t_8, &t_9);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3), t_4, t_5, t_6, t_7, t_8, t_9);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+
+
+
+}
+static void
+pcf_v_fff(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(float, float, float);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    FLOATVAL t_0;
+    FLOATVAL t_1;
+    FLOATVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "NNN", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(t_0, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_v_V(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void **);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0; void *v_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    v_0 = VTABLE_get_pointer(interp, t_0);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(&v_0);
+    
+    VTABLE_set_pointer(interp, t_0, v_0);
+}
+static void
+pcf_v_VVV(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void **, void **, void **);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0; void *v_0;
+    PMC *t_1; void *v_1;
+    PMC *t_2; void *v_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
+    v_0 = VTABLE_get_pointer(interp, t_0);v_1 = VTABLE_get_pointer(interp, t_1);v_2 = VTABLE_get_pointer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(&v_0, &v_1, &v_2);
+    
+    VTABLE_set_pointer(interp, t_0, v_0);
+VTABLE_set_pointer(interp, t_1, v_1);
+VTABLE_set_pointer(interp, t_2, v_2);
+}
+static void
+pcf_i_tV(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(char *, void **);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    char *t_0; STRING *ts_0;
+    PMC *t_1; void *v_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SP", &ts_0, &t_1);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;v_1 = VTABLE_get_pointer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, &v_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    if (t_0) Parrot_str_free_cstring(t_0);
+VTABLE_set_pointer(interp, t_1, v_1);
+}
+static void
+pcf_i_ptiVp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, char *, int, void **, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    PMC *t_3; void *v_3;
+    PMC *t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSIPP", &t_0, &ts_1, &t_2, &t_3, &t_4);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;v_3 = VTABLE_get_pointer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, &v_3, PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+VTABLE_set_pointer(interp, t_3, v_3);
+
+}
+static void
+pcf_i_pid(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, double);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    FLOATVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIN", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_pitii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, char *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PISII", &t_0, &t_1, &ts_2, &t_3, &t_4);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+
+
+}
+
+
+ void
+Parrot_nci_load_extra_thunks(PARROT_INTERP)
+{
+    PMC        *iglobals;
+    PMC        *temp_pmc;
+
+    PMC        *HashPointer   = NULL;
+
+    iglobals = interp->iglobals;
+    if (PMC_IS_NULL(iglobals))
+        PANIC(interp, "iglobals isn't created yet");
+
+    HashPointer = VTABLE_get_pmc_keyed_int(interp, iglobals,
+            IGLOBALS_NCI_FUNCS);
+    if (PMC_IS_NULL(HashPointer))
+        PANIC(interp, "iglobals.nci_funcs isn't created yet");
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_J);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJ"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iip"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPip"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JpP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJpP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_Jpii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJpii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_tp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "itp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_J);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJ"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_Jp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_J);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tJ"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_Jpti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tJpti"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_pt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tpt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pit);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpit"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_ptt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vptt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_Jtiiipt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJtiiipt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_JttPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJttPP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_Jtpi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJtpi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_Vppp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iVppp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JpPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJpPP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_Jpt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJpt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "v"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_Jiiip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJiiip"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_ii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_illllllll);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "villllllll"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_l);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vl"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pbip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpbip"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_piiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpiiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpl"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJPP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JO);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJO"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_JO);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "SJO"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_P);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOPP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOPPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOPPP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOPP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOPPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOPPP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOPPPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOPPPP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOPPPPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOPPPPP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOSI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOSI"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOSII);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOSII"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_p3);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tp3"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pp3p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipp3p"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pp3);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipp3"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppd);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippd"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ptii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iptii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pipi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipipi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_ptti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tptti"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_pti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tpti"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_pttti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tpttti"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_Ji);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_Jipp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJipp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_Jbip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJbip"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_Jp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJS"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_tt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ttt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOSI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOSI"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_JOi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "SJOi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JO);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJO"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_N_JO);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "NJO"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JON);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJON"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOI"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOI"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOIS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOIS"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_JOSP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "SJOSP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "i"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_i3i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ii3i"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ibi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iibi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_lttl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "llttl"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipip"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiS"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "Si"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_c_p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "cp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pttttt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipttttt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_c_pttt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "cpttt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pttttiti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppttttiti"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ptl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iptl"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipl"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "l"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ptt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pptt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pit);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipit"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_ttl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lttl"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_pttl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lpttl"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_t);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pttttitl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppttttitl"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_tiB3P);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ptiB3P"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_tip3P);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ptip3P"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pPtiiipi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipPtiiipi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_tpiibi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "itpiibi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ptippppi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pptippppi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pi33ipi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppi33ipi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pttip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppttip"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ptipppi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pptipppi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ppP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pppP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_iiil);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "piiil"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippl"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpip"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppti"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ptii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pptii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pti"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ptp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pptp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pt33);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipt33"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_c_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "c"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_c_pi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "cpi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_d_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "d"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_d_d);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "dd"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_f_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "f"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_f_ff);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "fff"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_f_is);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "fis"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_b);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ib"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_d);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "id"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ii4);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iii4"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ii4i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iii4i"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iiilsp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiiilsp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iil);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiil"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iili);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiili"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiip"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iit);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiit"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iiti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiiti"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ilsp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iilsp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiti"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_l);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "il"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_li);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ili"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_lp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ilp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_lsp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ilsp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p33);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip33"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p333);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip333"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p333333);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip333333"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p4);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip4"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p42p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip42p"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p4i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip4i"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pb);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipb"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pii4);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipii4"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pii4i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipii4i"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiiiiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piiilsp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiiilsp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piil);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiil"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piili);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiili"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piit);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiit"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piiti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiiti"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pilsp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipilsp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pli);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipli"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pll);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipll"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pllllllll);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipllllllll"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_plp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iplp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_plsp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iplsp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppiiiiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippiiiiiiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pppp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipppp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_psp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipsp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipti"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pitl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipitl"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_s);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "is"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_s22);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "is22"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_s222);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "is222"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_sp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "isp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_sss);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "isss"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ssss);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "issss"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_t);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "it"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iti"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_4);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "i4"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_4i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "i4i"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_42p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "i42p"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_ii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_l4);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ll4"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_pi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lpi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_pii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lpii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_p33l);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lp33l"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_33l);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "l33l"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "p"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_B);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pB"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_b);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pb"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_Jt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_iiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "piiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_iiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "piiiiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_iiiiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "piiiiiiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_piiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppiiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_t);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_tpp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ptpp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ttttttt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pttttttt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_s_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "s"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "t"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ti"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_ii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_pi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tpi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_pii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tpii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_t);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_tl4);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ttl4"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_t4);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tt4"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_sc);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "isc"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_s_sc);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ssc"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_c_sc);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "csc"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_i3);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ii3"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_b);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tb"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_B);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tB"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_P);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpP"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pip"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_33);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "i33"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JO);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJO"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JO);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJO"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JOi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJOi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JOt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJOt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_Jt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_Ji);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_Vi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vVi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ppiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pppiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ppiiiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pppiiiiiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippiiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippiiiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppiiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippiiiiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippt"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pppi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipppi"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pppii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipppii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pppiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipppiiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppppiiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippppiiiiii"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_fff);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vfff"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_V);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vV"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_VVV);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vVVV"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_tV);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "itV"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ptiVp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iptiVp"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pid);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipid"), temp_pmc);
+
+    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pitii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipitii"), temp_pmc);
+
+}
+
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
+

Added: trunk/src/nci/extra_thunks.nci
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/src/nci/extra_thunks.nci	Fri Feb 19 01:01:29 2010	(r44150)
@@ -0,0 +1,416 @@
+# t/src/embed.t
+v    J
+
+# mod_parrot
+i    ip
+i    JPip
+i    JpP
+i    Jpii
+i    p
+i    tp
+p    J
+p    Jp
+t    J
+t    Jpti
+t    p
+t    pt
+v    p
+v    pit
+v    ptt
+v    Jtiiipt
+p    JttPP
+P    Jtpi
+i    Vppp
+v    JpPP
+v    pt
+v    Jpt
+
+v
+v    Jiiip    # examples/japh/japh11.pasm
+v    i
+v    ii
+v    illllllll
+v    l
+v    p
+v    pbip
+v    pi
+v    piiii
+v    pl
+v    pp
+
+# For python
+i    JPP
+
+# Py_func signatures
+P    JP
+P    JPP
+P    JO
+S    JO
+i    P
+
+# PyBuiltins
+P    JOPP
+P    JOPPP
+v    JOPP
+v    JOPPP
+P    JOPPPP
+P    JOPPPPP
+
+# Added for Tcl
+I    JOSI
+P    JOSII
+
+# Added for TclLibrary
+t    p3
+i    pp3p
+i    pp3
+i    ppd
+i    ptii
+i    pipi
+t    ptti
+t    pti
+t    pttti
+
+# libpast
+p    Ji
+p    Jipp
+p    Jbip
+v    Jp
+v    JS
+
+# crypt
+t    tt
+
+# Sub.__get_regs_used
+I    JOt
+
+# declare_lex_preg
+v    JOSI
+
+# Added for .NET => PIR translator dynamic PMCs.
+S    JOi
+v    JOi
+I    JO
+N    JO
+v    JON
+P    JOi
+v    JOI
+
+# Make lua stop panic'ing.
+P    JOI
+P    JOIS
+S    JOSP
+
+i          # void function returning int like fork()
+i    i3i   # POSIX's waitpid
+i    ibi   # POSIX's read
+
+# win32
+l     lttl
+
+i     pip
+i     piS
+S     i
+
+# --- start mysqlclient library ---
+#
+# Created from mysql.h using the following manual method:
+#
+# Edited copy of mysql.h using vi by doing g/, *$/j (repeat) then g/\* *$/j
+# (repeat) to get all functions on one line each.
+#
+# Extracted list of api func names from
+# http://dev.mysql.com/doc/refman/4.1/en/c-api-functions.html and copied to a
+# temporary file to clean up (mysql_api_names.txt)
+#
+# Stripped down to bare names and merged into one line separated by |
+# then egrep -w `cat mysql_api_names.txt` mysql.h > mysql_api.ncidef
+# then edit mysql_api.ncidef in vi: %s/^/   #  /
+# to create space for nci signatures and to use original definition as a #
+# comment.
+#
+# This method isn't ideal, I'm just noting it here in case it helps others.
+# Ideally the process should be automated - but there be many dragons along
+# that path.
+#
+# NCI doesn't yet handle long long values (my_ulonglong), spec'd as long for now
+#
+#
+#    MYSQL_FIELD and MYSQL_RES are structs
+#    typedef char **MYSQL_ROW;           /* return data as array of strings */
+#    typedef unsigned int MYSQL_FIELD_OFFSET; /* offset to current field */
+#    typedef MYSQL_ROWS *MYSQL_ROW_OFFSET;   /* offset to current row */
+#
+l    p    #! my_ulonglong mysql_num_rows(MYSQL_RES *res)
+i    p    #  unsigned int mysql_num_fields(MYSQL_RES *res)
+c    p    #  my_bool mysql_eof(MYSQL_RES *res)
+p    pi   #  MYSQL_FIELD *mysql_fetch_field_direct(MYSQL_RES *res,
+#               unsigned int fieldnr)
+p    p    #  MYSQL_FIELD * mysql_fetch_fields(MYSQL_RES *res)
+p    p    #  MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *res)
+i    p    #  MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES *res)
+i    p    #  unsigned int mysql_field_count(MYSQL *mysql)
+l    p    #! my_ulonglong mysql_affected_rows(MYSQL *mysql)
+l    p    #! my_ulonglong mysql_insert_id(MYSQL *mysql)
+i    p    #  unsigned int mysql_errno(MYSQL *mysql)
+t    p    #  const char * mysql_error(MYSQL *mysql)
+t    p    #  const char * mysql_info(MYSQL *mysql)
+l    p    #  unsigned long mysql_thread_id(MYSQL *mysql)
+t    p    #  const char * mysql_character_set_name(MYSQL *mysql)
+p    p    #  MYSQL * mysql_init(MYSQL *mysql)
+
+i    pttttt      #  int mysql_ssl_set(MYSQL *mysql, const char *key,
+#                        const char *cert, const char *ca, const char *capath,
+#                        const char *cipher)
+c    pttt        #  my_bool mysql_change_user(MYSQL *mysql, const char *user,
+#                        const char *passwd, const char *db)
+p    pttttiti    #  MYSQL * mysql_real_connect(MYSQL *mysql, const char *host,
+#                               const char *user, const char *passwd,
+#                               const char *db, unsigned int port,
+#                               const char *unix_socket,
+#                               unsigned int clientflag)
+v    p     #  void mysql_close(MYSQL *sock)
+i    pt    #  int mysql_select_db(MYSQL *mysql, const char *db)
+i    pt    #  int mysql_query(MYSQL *mysql, const char *q)
+i    ptl   #  int mysql_real_query(MYSQL *mysql, const char *q,
+#                                  unsigned long length)
+i    p     #  int mysql_shutdown(MYSQL *mysql)
+i    p     #  int mysql_dump_debug_info(MYSQL *mysql)
+i    pi    #  int mysql_refresh(MYSQL *mysql, unsigned int refresh_options)
+i    pl    #  int mysql_kill(MYSQL *mysql,unsigned long pid)
+i    p     #  int mysql_ping(MYSQL *mysql)
+t    p     #  const char * mysql_stat(MYSQL *mysql)
+t    p     #  const char * mysql_get_server_info(MYSQL *mysql)
+t    p     #  const char * mysql_get_client_info(void)
+l          #  unsigned long mysql_get_client_version(void)
+t    p     #  const char * mysql_get_host_info(MYSQL *mysql)
+t    p     #  unsigned int mysql_get_proto_info(MYSQL *mysql)
+p    pt    #  MYSQL_RES * mysql_list_dbs(MYSQL *mysql,const char *wild)
+p    pt    #  MYSQL_RES * mysql_list_tables(MYSQL *mysql,const char *wild)
+p    ptt   #  MYSQL_RES * mysql_list_fields(MYSQL *mysql, const char *table,
+#                                           const char *wild)
+p    p     #  MYSQL_RES * mysql_list_processes(MYSQL *mysql)
+p    p     #  MYSQL_RES * mysql_store_result(MYSQL *mysql)
+p    p     #  MYSQL_RES * mysql_use_result(MYSQL *mysql)
+i    pit   #  int mysql_options(MYSQL *mysql,enum mysql_option option,
+#                               const char *arg)
+v    p     #  void mysql_free_result(MYSQL_RES *result)
+v    pl    #  void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset)
+p    pp    #  MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result,
+#                                             MYSQL_ROW_OFFSET offset)
+i    pi    #  MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result,
+#                                                 MYSQL_FIELD_OFFSET offset)
+
+p    p     #  MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
+l    p     #  unsigned long * mysql_fetch_lengths(MYSQL_RES *result)
+p    p     #  MYSQL_FIELD * mysql_fetch_field(MYSQL_RES *result)
+l    ttl   #  unsigned long mysql_escape_string(char *to,const char *from, unsigned long from_length)
+l    pttl  #  unsigned long mysql_real_escape_string(MYSQL *mysql, char *to,const char *from, unsigned long length)
+v    t     #  void mysql_debug(const char *debug)
+# --- end mysqlclient library ---
+
+# My mysql does not fit with the previous section
+p    pttttitl
+#  MYSQL * mysql_real_connect(MYSQL *mysql, const char *host,
+#                               const char *user,
+#                               const char *passwd,
+#                               const char *db,
+#                               unsigned int port,
+#                               const char *unix_socket,
+#                               unsigned long clientflag)
+
+# Used by library/pcre.pir
+p    tiB3P
+p    tip3P
+i    pPtiiipi
+i    tpiibi
+
+# Oddball ones for postgres
+p    ptippppi    PQexecParams
+p    pi33ipi     PQfn
+p    pttip       PQprepage
+p    ptipppi     PQexecPrepared
+p    ppP         PQsetNoticeReceiver
+
+# Used by SDL
+p    iiil
+i    ppl
+v    pip
+p    pti
+i    ppp
+# added by RNH for the RenderXXX_XXXX text routines 
+p    ptii
+
+# Used by SDL::Font
+p    ti
+p    ptp
+i    pt33
+
+# t/pmc/nci.t
+c
+c    p
+c    pi
+
+d
+d    d
+
+f
+f    ff
+f    is
+
+i
+i    b
+i    d
+i    i
+i    ii
+i    ii4
+i    ii4i
+i    iiii
+i    iiilsp
+i    iil
+i    iili
+i    iip
+i    iit
+i    iiti
+i    ilsp
+i    iti
+i    l
+i    li
+i    lp
+i    lsp
+i    p
+i    p33
+i    p333
+i    p333333
+i    p4
+i    p42p
+i    p4i
+i    pb
+i    pi
+i    pii
+i    pii4
+i    pii4i
+i    piii
+i    piiiiii
+i    piiilsp
+i    piil
+i    piili
+i    piit
+i    piiti
+i    pilsp
+i    pit
+i    pl
+i    pli
+i    pll
+i    pllllllll
+i    plp
+i    plsp
+i    pp
+i    ppi
+i    ppiiiiiiii
+i    pppp
+i    psp
+i    pt
+i    pti
+i    pitl
+i    s
+i    s22
+i    s222
+i    sp
+i    sss
+i    ssss
+i    t
+i    ti
+i    4
+i    4i
+i    42p
+
+l
+l    ii
+l    l4
+l    p
+l    pi
+l    pii
+l    p33l
+l    33l
+
+p
+p    B
+p    b
+p    Jt
+p    i
+p    ii
+p    iiii
+p    iiiiii
+p    iiiiiiii
+p    p
+p    pt
+p    pi
+p    pii
+p    piiii
+p    t
+p    tpp
+p    ttttttt
+
+s
+
+t
+t    i
+t    ii
+t    p
+t    pi
+t    pii
+t    pt
+t    t
+t    tl4
+t    t4
+
+i    sc
+s    sc
+c    sc
+i    iii
+i    i3
+t    b
+t    B
+v    P
+v    pP
+p    ip
+i    33
+v    pii
+v    JO
+i    JO
+i    JOi
+i    JOt
+i    Jt
+i    Ji
+
+v    Vi
+v    p
+
+# Testing xlib
+
+p    ppiii
+p    ppiiiiiii
+i    ppii
+i    ppiii
+i    ppiiii
+i    ppiiiii
+i    ppiiiiii
+i    ppt
+i    pppi
+i    pppii
+i    pppiiii
+i    ppppiiiiii
+
+# Testing OpenGL
+v    fff
+
+# Testing Pointer PMC use
+v    V
+v    VVV
+
+# Testing SQLite
+i    tV
+i    ptiVp
+i    pid
+i    pitii

Modified: trunk/t/codingstd/linelength.t
==============================================================================
--- trunk/t/codingstd/linelength.t	Fri Feb 19 00:55:33 2010	(r44149)
+++ trunk/t/codingstd/linelength.t	Fri Feb 19 01:01:29 2010	(r44150)
@@ -125,5 +125,8 @@
 compilers/pirc/macro/macroparser.h
 compilers/pirc/src/hdocprep.l
 compilers/pirc/src/hdocprep.c
+# generated by tools/build/nativecall.pir
+src/nci/core_thunks.c
+src/nci/extra_thunks.c
 # these ones include long POD
 docs/embed.pod

Modified: trunk/t/codingstd/trailing_space.t
==============================================================================
--- trunk/t/codingstd/trailing_space.t	Fri Feb 19 00:55:33 2010	(r44149)
+++ trunk/t/codingstd/trailing_space.t	Fri Feb 19 01:01:29 2010	(r44150)
@@ -9,6 +9,8 @@
 use Parrot::Distribution;
 use Test::More tests => 1;
 use Parrot::Test::Util::Runloop;
+use Parrot::Config qw/ %PConfig /;
+use File::Spec;
 
 =head1 NAME
 
@@ -42,9 +44,20 @@
     $DIST->get_pir_language_files(),
 );
 
+# skip files listed in the __DATA__ section
+my $build_dir = $PConfig{build_dir};
+my %skip_files;
+while (<DATA>) {
+    next if m{^#};
+    next if m{^\s*$};
+    chomp;
+    $_ = File::Spec->catfile($build_dir, $_);
+    $skip_files{$_}++;
+}
+
 Parrot::Test::Util::Runloop->testloop(
     name     => 'no trailing whitespace',
-    files    => [@files],
+    files    => [grep {not $skip_files{$_->path}} @files],
     per_line => sub { $_[0] !~ m{[ \t]$}m },
     diag_prefix => 'Trailing space or tab char found'
 );
@@ -55,3 +68,9 @@
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4:
+
+__DATA__
+# generated by tools/build/nativecall.pir
+src/nci/core_thunks.c
+src/nci/extra_thunks.c
+

Modified: trunk/tools/build/nativecall.pir
==============================================================================
--- trunk/tools/build/nativecall.pir	Fri Feb 19 00:55:33 2010	(r44149)
+++ trunk/tools/build/nativecall.pir	Fri Feb 19 01:01:29 2010	(r44150)
@@ -44,6 +44,10 @@
     .local pmc sigs
     sigs = 'read_sigs'()
 
+    $S0 = 'read_from_opts'('output')
+    $P0 = open $S0, 'w'
+    setstdout $P0
+
     if targ == 'head'   goto get_targ
     if targ == 'thunks' goto get_targ
     if targ == 'loader' goto get_targ
@@ -82,6 +86,7 @@
 
 # getopt stuff {{{
 
+.macro_const OUTPUT                 'output'
 .macro_const THUNK_STORAGE_CLASS    'thunk-storage-class'
 .macro_const THUNK_NAME_PROTO       'thunk-name-proto'
 .macro_const LOADER_STORAGE_CLASS   'loader-storage-class'
@@ -98,6 +103,7 @@
     push getopt, 'help|h'
     push getopt, 'version|v'
     push getopt, 'core'
+    push getopt, 'output|o=s'
     push getopt, 'target=s'
     push getopt, 'thunk-storage-class=s'
     push getopt, 'thunk-name-proto=s'
@@ -135,12 +141,13 @@
 
 Creates a C file of routines suitable for use as Parrot NCI thunks.
 
-Usage ./parrot nativecall.pir [options] <input_signature_list.nci >output_c_file.c
+Usage ./parrot nativecall.pir [options] <input_signature_list.nci
 
 Options
     --help              print this message and exit
     --version           print the version number of this utility
     --core              output a thunks file suitable for inclusion in Parrot core. Default is no.
+    -o --output <file>  specify output file to use.
     --target <target>   select what to output (valid options are 'head', 'thunks',
                         'loader', 'coda', 'all', 'names', and 'signatures'). Default value is 'all'
     --thunk-storage-class <storage class>
@@ -240,8 +247,22 @@
         ext_defn = '#define PARROT_IN_EXTENSION'
     end_ext_defn:
 
+    .local string c_file
+    c_file = 'read_from_opts'(.OUTPUT)
+
+    .local string str_file
+    str_file = clone c_file
+    substr str_file, -2, 2, '.str'
+    strip_str_file_loop:
+        $I0 = index str_file, '/'
+        if $I0 < 0 goto end_strip_str_file_loop
+        $I0 += 1
+        str_file = substr str_file, $I0
+        goto strip_str_file_loop
+    end_strip_str_file_loop:
+
     .local string head
-    head = 'sprintf'(<<'HEAD', ext_defn)
+    head = 'sprintf'(<<'HEAD', c_file, ext_defn, str_file)
 /* ex: set ro ft=c:
  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
  *
@@ -251,8 +272,8 @@
  *
  */
 
-/* nci.c
- *  Copyright (C) 2001-2009, Parrot Foundation.
+/* %s
+ *  Copyright (C) 2010, Parrot Foundation.
  *  SVN Info
  *     $Id$
  *  Overview:
@@ -271,9 +292,9 @@
 
 #ifdef PARROT_IN_EXTENSION
 /* external libraries can't have strings statically compiled into parrot */
-#  define CONST_STRING(i, s) Parrot_str_new_constant(i, s)
+#  define CONST_STRING(i, s) Parrot_str_new_constant((i), (s))
 #else
-#  include "core.str"
+#  include "%s"
 #endif
 
 /* HEADERIZER HFILE: none */
@@ -484,7 +505,7 @@
 
     .local string preamble
     preamble = 'sprintf'(<<'TEMPLATE', sig, fill_params, extra_preamble)
-    Parrot_pcc_fill_params_from_c_args(interp, call_object, "%s" %s);
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "%s"%s);
     %s
 TEMPLATE
 

Added: trunk/tools/dev/mk_nci_thunks.pl
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/tools/dev/mk_nci_thunks.pl	Fri Feb 19 01:01:29 2010	(r44150)
@@ -0,0 +1,41 @@
+#! perl
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+tools/dev/mk_nci_thunks.pl - (re)generate core NCI thunk files
+
+=head1 SYNOPSIS
+
+  > perl tools/dev/mk_nci_thunks.pl
+
+=head1 DESCRIPTION
+
+This script generates the core NCI thunk C files from lists of signatures
+provided in accompanying C<.nci> files.
+
+=cut
+
+use strict;
+use warnings;
+
+foreach (qw( core_thunks extra_thunks )) {
+    my $c_file   = "src/nci/$_.c";
+    my $nci_file = "src/nci/$_.nci";
+    my $loader_name = "Parrot_nci_load_$_";
+    print "$nci_file > $c_file\n";
+    system("./parrot tools/build/nativecall.pir " .
+            "--core " .
+            "--loader-name=$loader_name " .
+            "--output=$c_file " .
+            "<$nci_file "
+    );
+}
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:


More information about the parrot-commits mailing list