summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorRyan Scott <[email protected]>2013-05-17 07:21:33 +1000
committerRyan Scott <[email protected]>2013-05-17 07:21:33 +1000
commit222918deae84ae8dda26aa769bf3cc6b68e3aeec (patch)
tree0446702a3a282491b754988d3e6433c8566b49c3 /include
parenta71bf5e3df961605aeb2712bb472bf3b0f1c0dd3 (diff)
downloadmruby-222918deae84ae8dda26aa769bf3cc6b68e3aeec.tar.gz
mruby-222918deae84ae8dda26aa769bf3cc6b68e3aeec.zip
First implementation of ObjectSpace moved outside of gc.c
Diffstat (limited to 'include')
-rw-r--r--include/mruby/gc.h53
1 files changed, 53 insertions, 0 deletions
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 */