summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorDaniel Bovensiepen <[email protected]>2012-11-17 13:54:32 +0800
committerDaniel Bovensiepen <[email protected]>2012-11-17 13:54:32 +0800
commitd8234a45759b3bd7b107750fda886cd828b52173 (patch)
tree864fc0207a46d8d2511e66cd1affc53cdf3984c4 /include
parentc3bd1c1d0d43e7571bc38cfa71c40c69cea1b5a4 (diff)
parent7cea9d7b945a4b00cef699f47c07654f8b7bd579 (diff)
downloadmruby-d8234a45759b3bd7b107750fda886cd828b52173.tar.gz
mruby-d8234a45759b3bd7b107750fda886cd828b52173.zip
Merge remote-tracking branch 'upstream/master' into mrbgems
Diffstat (limited to 'include')
-rw-r--r--include/mrbconf.h47
-rw-r--r--include/mruby/hash.h1
-rw-r--r--include/mruby/variable.h1
3 files changed, 33 insertions, 16 deletions
diff --git a/include/mrbconf.h b/include/mrbconf.h
index 841ef1823..20c9a59a8 100644
--- a/include/mrbconf.h
+++ b/include/mrbconf.h
@@ -13,6 +13,9 @@
/* add -DMRB_USE_FLOAT to use float instead of double for floating point numbers */
//#define MRB_USE_FLOAT
+/* add -DMRB_INT64 to use 64bit integer for mrb_int */
+//#define MRB_INT64
+
/* represent mrb_value in boxed double; conflict with MRB_USE_FLOAT */
//#define MRB_NAN_BOXING
@@ -54,27 +57,39 @@
/* end of configuration */
#ifdef MRB_USE_FLOAT
-typedef float mrb_float;
-#define mrb_float_to_str(buf, i) sprintf((buf), "%.7e", (i))
-#define str_to_mrb_float(buf) (mrb_float)strtof((buf),NULL)
+ typedef float mrb_float;
+# define mrb_float_to_str(buf, i) sprintf((buf), "%.7e", (i))
+# define str_to_mrb_float(buf) (mrb_float)strtof((buf),NULL)
#else
-typedef double mrb_float;
-#define mrb_float_to_str(buf, i) sprintf((buf), "%.16e", (i))
-#define str_to_mrb_float(buf) (mrb_float)strtod((buf),NULL)
+ typedef double mrb_float;
+# define mrb_float_to_str(buf, i) sprintf((buf), "%.16e", (i))
+# define str_to_mrb_float(buf) (mrb_float)strtod((buf),NULL)
#endif
#ifdef MRB_NAN_BOXING
-typedef int32_t mrb_int;
-#define MRB_INT_MIN INT32_MIN
-#define MRB_INT_MAX INT32_MAX
-#define mrb_int_to_str(buf, i) sprintf((buf), "%d", (i))
-#define str_to_mrb_int(buf) (mrb_int)strtol((buf), NULL, 10);
+# ifdef MRB_INT64
+# error Cannot use NaN boxing when mrb_int is 64bit
+# else
+ typedef int32_t mrb_int;
+# define MRB_INT_MIN INT32_MIN
+# define MRB_INT_MAX INT32_MAX
+# define mrb_int_to_str(buf, i) sprintf((buf), "%d", (i))
+# define str_to_mrb_int(buf) (mrb_int)strtol((buf), NULL, 10)
+# endif
#else
-typedef int mrb_int;
-#define MRB_INT_MIN INT_MIN
-#define MRB_INT_MAX INT_MAX
-#define mrb_int_to_str(buf, i) sprintf((buf), "%d", (i))
-#define str_to_mrb_int(buf) (mrb_int)strtol((buf), NULL, 10);
+# ifdef MRB_INT64
+ typedef int64_t mrb_int;
+# define MRB_INT_MIN INT64_MIN
+# define MRB_INT_MAX INT64_MAX
+# define mrb_int_to_str(buf, i) sprintf((buf), "%ld", (i))
+# define str_to_mrb_int(buf) (mrb_int)strtoll((buf), NULL, 10)
+# else
+ typedef int mrb_int;
+# define MRB_INT_MIN INT_MIN
+# define MRB_INT_MAX INT_MAX
+# define mrb_int_to_str(buf, i) sprintf((buf), "%d", (i))
+# define str_to_mrb_int(buf) (mrb_int)strtol((buf), NULL, 10)
+# endif
#endif
typedef short mrb_sym;
diff --git a/include/mruby/hash.h b/include/mruby/hash.h
index 7aab80f21..bb12962ca 100644
--- a/include/mruby/hash.h
+++ b/include/mruby/hash.h
@@ -28,6 +28,7 @@ mrb_value mrb_hash_get(mrb_state *mrb, mrb_value hash, mrb_value key);
mrb_value mrb_hash_fetch(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value def);
mrb_value mrb_hash_delete_key(mrb_state *mrb, mrb_value hash, mrb_value key);
mrb_value mrb_hash(mrb_state *mrb, mrb_value obj);
+mrb_value mrb_hash_keys(mrb_state *mrb, mrb_value hash);
/* RHASH_TBL allocates st_table if not available. */
#define RHASH(obj) ((struct RHash*)((obj).value.p))
diff --git a/include/mruby/variable.h b/include/mruby/variable.h
index e805b4b2b..5126315c4 100644
--- a/include/mruby/variable.h
+++ b/include/mruby/variable.h
@@ -53,6 +53,7 @@ void mrb_gv_set(mrb_state *mrb, mrb_sym sym, mrb_value val);
mrb_value mrb_obj_instance_variables(mrb_state*, mrb_value);
mrb_value mrb_obj_iv_inspect(mrb_state*, struct RObject*);
mrb_sym mrb_class_sym(mrb_state *mrb, struct RClass *c, struct RClass *outer);
+mrb_value mrb_mod_class_variables(mrb_state*, mrb_value);
/* GC functions */
void mrb_gc_mark_gv(mrb_state*);