Skip to content

Commit

Permalink
Merge branch 'master' into XCode
Browse files Browse the repository at this point in the history
Also, fixed issue in Xcode project build settings
  • Loading branch information
pbosetti committed Aug 16, 2012
2 parents 4410795 + 23e88db commit efa4614
Show file tree
Hide file tree
Showing 30 changed files with 356 additions and 263 deletions.
11 changes: 11 additions & 0 deletions include/mrbconf.h
Expand Up @@ -13,6 +13,12 @@
/* add -DMRB_USE_FLOAT to use float instead of double for floating point numbers */
//#define MRB_USE_FLOAT

/* represent mrb_value in boxed double; conflict with MRB_USE_FLOAT */
//#define MRB_NAN_BOXING

/* define on big endian machines; used by MRB_NAN_BOXING */
//#define MRB_ENDIAN_BIG

/* argv max size in mrb_funcall */
//#define MRB_FUNCALL_ARGC_MAX 16

Expand Down Expand Up @@ -54,8 +60,13 @@ typedef double mrb_float;
#endif
#define readfloat(p) (mrb_float)strtod((p),NULL)

#ifdef MRB_NAN_BOXING
typedef int32_t mrb_int;
typedef int32_t mrb_sym;
#else
typedef int mrb_int;
typedef intptr_t mrb_sym;
#endif

/* define ENABLE_XXXX from DISABLE_XXX */
#ifndef DISABLE_REGEXP
Expand Down
151 changes: 2 additions & 149 deletions include/mruby.h
Expand Up @@ -35,154 +35,7 @@ extern "C" {
#include <stdlib.h>
#include "mrbconf.h"

enum mrb_vtype {
MRB_TT_FALSE = 0, /* 0 */
MRB_TT_FREE, /* 1 */
MRB_TT_TRUE, /* 2 */
MRB_TT_FIXNUM, /* 3 */
MRB_TT_SYMBOL, /* 4 */
MRB_TT_UNDEF, /* 5 */
MRB_TT_FLOAT, /* 6 */
MRB_TT_OBJECT, /* 7 */
MRB_TT_CLASS, /* 8 */
MRB_TT_MODULE, /* 9 */
MRB_TT_ICLASS, /* 10 */
MRB_TT_SCLASS, /* 11 */
MRB_TT_PROC, /* 12 */
MRB_TT_ARRAY, /* 13 */
MRB_TT_HASH, /* 14 */
MRB_TT_STRING, /* 15 */
MRB_TT_RANGE, /* 16 */
MRB_TT_REGEX, /* 17 */
MRB_TT_STRUCT, /* 18 */
MRB_TT_EXCEPTION, /* 19 */
MRB_TT_MATCH, /* 20 */
MRB_TT_FILE, /* 21 */
MRB_TT_ENV, /* 22 */
MRB_TT_DATA, /* 23 */
MRB_TT_MAXDEFINE /* 24 */
};

typedef struct mrb_value {
union {
mrb_float f;
void *p;
mrb_int i;
mrb_sym sym;
} value;
enum mrb_vtype tt:8;
} mrb_value;

#define mrb_type(o) (o).tt
#define mrb_nil_p(o) ((o).tt == MRB_TT_FALSE && !(o).value.i)
#define mrb_test(o) ((o).tt != MRB_TT_FALSE)
#define mrb_fixnum(o) (o).value.i
#define mrb_float(o) (o).value.f
#define mrb_symbol(o) (o).value.sym
#define mrb_object(o) ((struct RBasic *) (o).value.p)
#define FIXNUM_P(o) ((o).tt == MRB_TT_FIXNUM)
#define mrb_undef_p(o) ((o).tt == MRB_TT_UNDEF)

#include "mruby/object.h"

#define IMMEDIATE_P(x) (mrb_type(x) <= MRB_TT_FLOAT)
#define SPECIAL_CONST_P(x) IMMEDIATE_P(x)
#define SYMBOL_P(o) (mrb_type(o) == MRB_TT_SYMBOL)
#define RTEST(o) mrb_test(o)

#define FL_ABLE(x) (!SPECIAL_CONST_P(x))
#define FL_TEST(x,f) (FL_ABLE(x)?(RBASIC(x)->flags&(f)):0)
#define FL_ANY(x,f) FL_TEST(x,f)
#define FL_ALL(x,f) (FL_TEST(x,f) == (f))
#define FL_SET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags |= (f);} while (0)
#define FL_UNSET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags &= ~(f);} while (0)

static inline mrb_int
mrb_special_const_p(mrb_value obj)
{
if (SPECIAL_CONST_P(obj)) return 1;
return 0;
}
static inline mrb_value
mrb_fixnum_value(mrb_int i)
{
mrb_value v;

v.tt = MRB_TT_FIXNUM;
v.value.i = i;
return v;
}

static inline mrb_value
mrb_float_value(mrb_float f)
{
mrb_value v;

v.tt = MRB_TT_FLOAT;
v.value.f = f;
return v;
}

static inline mrb_value
mrb_symbol_value(mrb_sym i)
{
mrb_value v;

v.tt = MRB_TT_SYMBOL;
v.value.sym = i;
return v;
}

static inline mrb_value
mrb_obj_value(void *p)
{
mrb_value v;
struct RBasic *b = (struct RBasic*) p;

v.tt = b->tt;
v.value.p = p;
return v;
}

static inline mrb_value
mrb_false_value(void)
{
mrb_value v;

v.tt = MRB_TT_FALSE;
v.value.i = 1;
return v;
}

static inline mrb_value
mrb_nil_value(void)
{
mrb_value v;

v.tt = MRB_TT_FALSE;
v.value.i = 0;
return v;
}

static inline mrb_value
mrb_true_value(void)
{
mrb_value v;

v.tt = MRB_TT_TRUE;
v.value.i = 1;
return v;
}

static inline mrb_value
mrb_undef_value(void)
{
mrb_value v;

v.tt = MRB_TT_UNDEF;
v.value.i = 0;
return v;
}
#include "mruby/value.h"

typedef int32_t mrb_code;

Expand Down Expand Up @@ -376,7 +229,7 @@ int mrb_gc_arena_save(mrb_state*);
void mrb_gc_arena_restore(mrb_state*,int);
void mrb_gc_mark(mrb_state*,struct RBasic*);
#define mrb_gc_mark_value(mrb,val) do {\
if ((val).tt >= MRB_TT_OBJECT) mrb_gc_mark((mrb), mrb_object(val));\
if (mrb_type(val) >= MRB_TT_OBJECT) mrb_gc_mark((mrb), mrb_object(val));\
} while (0);
void mrb_field_write_barrier(mrb_state *, struct RBasic*, struct RBasic*);
#define mrb_field_write_barrier_value(mrb, obj, val) do{\
Expand Down
2 changes: 1 addition & 1 deletion include/mruby/array.h
@@ -1,5 +1,5 @@
/*
** array.h - Array class
** mruby/array.h - Array class
**
** See Copyright Notice in mruby.h
*/
Expand Down
2 changes: 1 addition & 1 deletion include/mruby/cdump.h
@@ -1,5 +1,5 @@
/*
** cdump.h - mruby binary dumper (C source format)
** mruby/cdump.h - mruby binary dumper (C source format)
**
** See Copyright Notice in mruby.h
*/
Expand Down
2 changes: 1 addition & 1 deletion include/mruby/class.h
@@ -1,5 +1,5 @@
/*
** class.h - Class class
** mruby/class.h - Class class
**
** See Copyright Notice in mruby.h
*/
Expand Down
2 changes: 1 addition & 1 deletion include/mruby/compile.h
@@ -1,5 +1,5 @@
/*
** compile.h - mruby parser
** mruby/compile.h - mruby parser
**
** See Copyright Notice in mruby.h
*/
Expand Down
2 changes: 1 addition & 1 deletion include/mruby/data.h
@@ -1,5 +1,5 @@
/*
** data.h - Data class
** mruby/data.h - Data class
**
** See Copyright Notice in mruby.h
*/
Expand Down
2 changes: 1 addition & 1 deletion include/mruby/dump.h
@@ -1,5 +1,5 @@
/*
** dump.h - mruby binary dumper (Rite binary format)
** mruby/dump.h - mruby binary dumper (Rite binary format)
**
** See Copyright Notice in mruby.h
*/
Expand Down
2 changes: 1 addition & 1 deletion include/mruby/hash.h
@@ -1,5 +1,5 @@
/*
** hash.h - Hash class
** mruby/hash.h - Hash class
**
** See Copyright Notice in mruby.h
*/
Expand Down
2 changes: 1 addition & 1 deletion include/mruby/irep.h
@@ -1,5 +1,5 @@
/*
** irep.h - mrb_irep structure
** mruby/irep.h - mrb_irep structure
**
** See Copyright Notice in mruby.h
*/
Expand Down
2 changes: 1 addition & 1 deletion include/mruby/khash.h
@@ -1,5 +1,5 @@
/*
** ritehash.c - Rite Hash for mruby
** mruby/khash.c - Hash for mruby
**
** See Copyright Notice in mruby.h
*/
Expand Down
2 changes: 1 addition & 1 deletion include/mruby/numeric.h
@@ -1,5 +1,5 @@
/*
** numeric.h - Numeric, Integer, Float, Fixnum class
** mruby/numeric.h - Numeric, Integer, Float, Fixnum class
**
** See Copyright Notice in mruby.h
*/
Expand Down
13 changes: 2 additions & 11 deletions include/mruby/object.h
@@ -1,24 +1,19 @@
/*
** object.h - Object, NilClass, TrueClass, FalseClass class
** mruby/object.h - Object, NilClass, TrueClass, FalseClass class
**
** See Copyright Notice in mruby.h
*/

#ifndef MRUBY_OBJECT_H
#define MRUBY_OBJECT_H

#if defined(__cplusplus)
extern "C" {
#endif

#define MRUBY_OBJECT_HEADER \
enum mrb_vtype tt:8; \
enum mrb_vtype tt; \
unsigned int color:3;\
unsigned int flags:21;\
struct RClass *c;\
struct RBasic *gcnext


/* white: 011, black: 100, gray: 000 */
#define MRB_GC_GRAY 0
#define MRB_GC_WHITE_A 1
Expand Down Expand Up @@ -54,8 +49,4 @@ struct RObject {
#define ROBJECT_IVPTR(v) (((struct RObject*)((v).value.p))->iv)
#define ROBJECT_NUMIV(v) (ROBJECT_IVPTR(v) ? ROBJECT_IVPTR(v)->size : 0)

#if defined(__cplusplus)
} /* extern "C" { */
#endif

#endif /* MRUBY_OBJECT_H */
2 changes: 1 addition & 1 deletion include/mruby/proc.h
@@ -1,5 +1,5 @@
/*
** proc.h - Proc class
** mruby/proc.h - Proc class
**
** See Copyright Notice in mruby.h
*/
Expand Down
2 changes: 1 addition & 1 deletion include/mruby/range.h
@@ -1,5 +1,5 @@
/*
** range.h - Range class
** mruby/range.h - Range class
**
** See Copyright Notice in mruby.h
*/
Expand Down
2 changes: 1 addition & 1 deletion include/mruby/string.h
@@ -1,5 +1,5 @@
/*
** string.h - String class
** mruby/string.h - String class
**
** See Copyright Notice in mruby.h
*/
Expand Down
2 changes: 1 addition & 1 deletion include/mruby/struct.h
@@ -1,5 +1,5 @@
/*
** struct.h - Struct class
** mruby/struct.h - Struct class
**
** See Copyright Notice in mruby.h
*/
Expand Down

0 comments on commit efa4614

Please sign in to comment.