First implementation of ObjectSpace moved outside of gc.c

This commit is contained in:
Ryan Scott
2013-05-17 07:21:33 +10:00
parent a71bf5e3df
commit 222918deae
7 changed files with 210 additions and 145 deletions
+53
View File
@@ -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 */