[svn:parrot] r37186 - in trunk: include/parrot src

NotFound at svn.parrot.org NotFound at svn.parrot.org
Sun Mar 8 00:18:26 UTC 2009


Author: NotFound
Date: Sun Mar  8 00:18:26 2009
New Revision: 37186
URL: https://trac.parrot.org/parrot/changeset/37186

Log:
[core] add Parrot_PMC_push_pmcval and Parrot_PMC_newclass to the extend API

Modified:
   trunk/include/parrot/extend.h
   trunk/src/extend.c

Modified: trunk/include/parrot/extend.h
==============================================================================
--- trunk/include/parrot/extend.h	Sun Mar  8 00:11:26 2009	(r37185)
+++ trunk/include/parrot/extend.h	Sun Mar  8 00:18:26 2009	(r37186)
@@ -267,6 +267,10 @@
         __attribute__nonnull__(1);
 
 PARROT_EXPORT
+Parrot_PMC Parrot_PMC_newclass(PARROT_INTERP, Parrot_PMC classtype)
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
 Parrot_PMC Parrot_PMC_null(void);
 
 PARROT_EXPORT
@@ -280,6 +284,10 @@
         __attribute__nonnull__(1);
 
 PARROT_EXPORT
+void Parrot_PMC_push_pmcval(PARROT_INTERP, Parrot_PMC pmc, Parrot_PMC value)
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
 void Parrot_PMC_set_cstring(PARROT_INTERP,
     Parrot_PMC pmc,
     ARGIN_NULLOK(const char *value))
@@ -503,11 +511,15 @@
        PARROT_ASSERT_ARG(interp)
 #define ASSERT_ARGS_Parrot_PMC_new __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp)
+#define ASSERT_ARGS_Parrot_PMC_newclass __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp)
 #define ASSERT_ARGS_Parrot_PMC_null __attribute__unused__ int _ASSERT_ARGS_CHECK = 0
 #define ASSERT_ARGS_Parrot_PMC_push_intval __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp)
 #define ASSERT_ARGS_Parrot_PMC_push_numval __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp)
+#define ASSERT_ARGS_Parrot_PMC_push_pmcval __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp)
 #define ASSERT_ARGS_Parrot_PMC_set_cstring __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp)
 #define ASSERT_ARGS_Parrot_PMC_set_cstring_intkey __attribute__unused__ int _ASSERT_ARGS_CHECK = \

Modified: trunk/src/extend.c
==============================================================================
--- trunk/src/extend.c	Sun Mar  8 00:11:26 2009	(r37185)
+++ trunk/src/extend.c	Sun Mar  8 00:18:26 2009	(r37186)
@@ -837,6 +837,26 @@
 
 /*
 
+=item C<void Parrot_PMC_push_pmcval>
+
+Push the passed-in Parrot PMC onto the passed in PMC
+
+=cut
+
+*/
+
+PARROT_EXPORT
+void
+Parrot_PMC_push_pmcval(PARROT_INTERP, Parrot_PMC pmc, Parrot_PMC value)
+{
+    ASSERT_ARGS(Parrot_PMC_push_pmcval)
+    PARROT_CALLIN_START(interp);
+    VTABLE_push_pmc(interp, pmc, value);
+    PARROT_CALLIN_END(interp);
+}
+
+/*
+
 =item C<void Parrot_PMC_delete_pmckey>
 
 Deletes the value associated with the passed-in PMC from the PMC.
@@ -1442,7 +1462,7 @@
 
 =item C<Parrot_PMC Parrot_sub_new_from_c_func>
 
-Returns a PMC sub wrapper for a c function
+Returns a PMC sub wrapper for a c function.
 
 =cut
 
@@ -1464,6 +1484,32 @@
 
 /*
 
+=item C<Parrot_PMC Parrot_PMC_newclass>
+
+Create a class with the type given
+
+=cut
+
+*/
+
+PARROT_EXPORT
+Parrot_PMC
+Parrot_PMC_newclass(PARROT_INTERP, Parrot_PMC classtype)
+{
+    ASSERT_ARGS(Parrot_PMC_newclass)
+    Parrot_PMC result;
+    Parrot_PMC hllns;
+    INTVAL hll;
+    PARROT_CALLIN_START(interp);
+
+    result = pmc_new_init(interp, enum_class_Class, classtype);
+
+    PARROT_CALLIN_END(interp);
+    return result;
+}
+
+/*
+
 =back
 
 =head1 SEE ALSO


More information about the parrot-commits mailing list