[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