[svn:parrot] r40758 - in branches/context_pmc3: include/parrot src

bacek at svn.parrot.org bacek at svn.parrot.org
Mon Aug 24 11:15:31 UTC 2009


Author: bacek
Date: Mon Aug 24 11:15:30 2009
New Revision: 40758
URL: https://trac.parrot.org/parrot/changeset/40758

Log:
[core] Add functions for manipulating Context recursion_depth

Modified:
   branches/context_pmc3/include/parrot/context.h
   branches/context_pmc3/src/context.c

Modified: branches/context_pmc3/include/parrot/context.h
==============================================================================
--- branches/context_pmc3/include/parrot/context.h	Mon Aug 24 11:15:00 2009	(r40757)
+++ branches/context_pmc3/include/parrot/context.h	Mon Aug 24 11:15:30 2009	(r40758)
@@ -75,6 +75,11 @@
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
+UINTVAL Parrot_cx_dec_recursion_depth(PARROT_INTERP, ARGIN(PMC *ctx))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_EXPORT
 PARROT_CAN_RETURN_NULL
 Parrot_Context* Parrot_cx_get_context(PARROT_INTERP, ARGIN_NULLOK(PMC *ctx))
         __attribute__nonnull__(1);
@@ -86,6 +91,11 @@
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
+UINTVAL Parrot_cx_get_recursion_depth(PARROT_INTERP, ARGIN(PMC *ctx))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_EXPORT
 PARROT_CAN_RETURN_NULL
 STRING* Parrot_cx_get_string_constant(PARROT_INTERP,
     ARGIN(PMC *ctx),
@@ -93,17 +103,31 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
+PARROT_EXPORT
+UINTVAL Parrot_cx_inc_recursion_depth(PARROT_INTERP, ARGIN(PMC *ctx))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
 #define ASSERT_ARGS_Parrot_cx_constants __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp) \
     || PARROT_ASSERT_ARG(ctx)
+#define ASSERT_ARGS_Parrot_cx_dec_recursion_depth __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(ctx)
 #define ASSERT_ARGS_Parrot_cx_get_context __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp)
 #define ASSERT_ARGS_Parrot_cx_get_pmc_constant __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp) \
     || PARROT_ASSERT_ARG(ctx)
+#define ASSERT_ARGS_Parrot_cx_get_recursion_depth __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(ctx)
 #define ASSERT_ARGS_Parrot_cx_get_string_constant __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp) \
     || PARROT_ASSERT_ARG(ctx)
+#define ASSERT_ARGS_Parrot_cx_inc_recursion_depth __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+       PARROT_ASSERT_ARG(interp) \
+    || PARROT_ASSERT_ARG(ctx)
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: src/context.c */
 

Modified: branches/context_pmc3/src/context.c
==============================================================================
--- branches/context_pmc3/src/context.c	Mon Aug 24 11:15:00 2009	(r40757)
+++ branches/context_pmc3/src/context.c	Mon Aug 24 11:15:30 2009	(r40758)
@@ -114,6 +114,62 @@
     return (Parrot_Context*)(VTABLE_get_pointer(interp, ctx));
 }
 
+/*
+
+=item C<UINTVAL Parrot_cx_inc_recursion_depth(PARROT_INTERP, PMC *ctx)>
+
+Get recursion depth from context.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+UINTVAL
+Parrot_cx_get_recursion_depth(PARROT_INTERP, ARGIN(PMC *ctx))
+{
+    ASSERT_ARGS(Parrot_cx_inc_recursion_depth)
+    Parrot_Context *c = Parrot_cx_get_context(interp, ctx);
+    return c->recursion_depth;
+}
+
+/*
+
+=item C<INTVAL Parrot_cx_inc_recursion_depth(PARROT_INTERP, PMC *ctx)>
+
+Increase recurtion depth. Returns new recursion_depth value.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+UINTVAL
+Parrot_cx_inc_recursion_depth(PARROT_INTERP, ARGIN(PMC *ctx))
+{
+    ASSERT_ARGS(Parrot_cx_inc_recursion_depth)
+    Parrot_Context *c = Parrot_cx_get_context(interp, ctx);
+    return ++c->recursion_depth;
+}
+
+/*
+
+=item C<UINTVAL Parrot_cx_dec_recursion_depth(PARROT_INTERP, PMC *ctx)>
+
+Decrease recurtion depth. Returns new recursion_depth value.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+UINTVAL
+Parrot_cx_dec_recursion_depth(PARROT_INTERP, ARGIN(PMC *ctx))
+{
+    ASSERT_ARGS(Parrot_cx_dec_recursion_depth)
+    Parrot_Context *c = Parrot_cx_get_context(interp, ctx);
+    --c->recursion_depth;
+}
 
 /*
 


More information about the parrot-commits mailing list