From 222918deae84ae8dda26aa769bf3cc6b68e3aeec Mon Sep 17 00:00:00 2001 From: Ryan Scott Date: Fri, 17 May 2013 07:21:33 +1000 Subject: First implementation of ObjectSpace moved outside of gc.c --- include/mruby/gc.h | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 include/mruby/gc.h (limited to 'include') diff --git a/include/mruby/gc.h b/include/mruby/gc.h new file mode 100644 index 000000000..00564c4fa --- /dev/null +++ b/include/mruby/gc.h @@ -0,0 +1,53 @@ +/* +** gc.c - garbage collector for mruby +** +** See Copyright Notice in mruby.h +*/ + +#ifndef MRUBY_GC_H +#define MRUBY_GC_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "mruby.h" +#include "mruby/array.h" +#include "mruby/class.h" +#include "mruby/data.h" +#include "mruby/hash.h" +#include "mruby/proc.h" +#include "mruby/range.h" +#include "mruby/string.h" +#include "mruby/variable.h" + +struct free_obj { + MRB_OBJECT_HEADER; + struct RBasic *next; +}; + +struct RVALUE { + union { + struct free_obj free; + struct RBasic basic; + struct RObject object; + struct RClass klass; + struct RString string; + struct RArray array; + struct RHash hash; + struct RRange range; + struct RData data; + struct RProc proc; + } as; +}; + +typedef struct RVALUE RVALUE; + +typedef int each_object_callback(RVALUE *obj, void *data); +void mrb_objspace_each_objects(mrb_state *mrb, each_object_callback* callback, void *data); + +#if defined(__cplusplus) +} /* extern "C" { */ +#endif + +#endif /* MRUBY_GC_H */ -- cgit v1.2.3