diff options
| author | Ryan Scott <[email protected]> | 2013-05-17 07:21:33 +1000 |
|---|---|---|
| committer | Ryan Scott <[email protected]> | 2013-05-17 07:21:33 +1000 |
| commit | 222918deae84ae8dda26aa769bf3cc6b68e3aeec (patch) | |
| tree | 0446702a3a282491b754988d3e6433c8566b49c3 /include | |
| parent | a71bf5e3df961605aeb2712bb472bf3b0f1c0dd3 (diff) | |
| download | mruby-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.h | 53 |
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 */ |
