summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/mrbconf.h9
-rw-r--r--include/mruby.h3
-rw-r--r--include/mruby/array.h18
-rw-r--r--include/mruby/compile.h22
-rw-r--r--include/mruby/string.h6
5 files changed, 36 insertions, 22 deletions
diff --git a/include/mrbconf.h b/include/mrbconf.h
index c84480af7..8a46e48ba 100644
--- a/include/mrbconf.h
+++ b/include/mrbconf.h
@@ -23,7 +23,7 @@
//#define MRB_ENDIAN_BIG
/* argv max size in mrb_funcall */
-//#define MRB_FUNCALL_ARGC_MAX 16
+//#define MRB_FUNCALL_ARGC_MAX 16
/* number of object per heap page */
//#define MRB_HEAP_PAGE_SIZE 1024
@@ -34,6 +34,9 @@
/* initial size for IV khash; ignored when MRB_USE_IV_SEGLIST is set */
//#define MRB_IVHASH_INIT_SIZE 8
+/* initial size for IREP array */
+//#define MRB_IREP_ARRAY_INIT_SIZE (256u)
+
/* default size of khash table bucket */
//#define KHASH_DEFAULT_SIZE 32
@@ -44,7 +47,6 @@
//#define POOL_PAGE_SIZE 16000
/* -DDISABLE_XXXX to drop following features */
-//#define DISABLE_SPRINTF /* Kernel.sprintf method */
//#define DISABLE_STDIO /* use of stdio */
/* -DENABLE_XXXX to enable following features */
@@ -80,9 +82,6 @@
typedef short mrb_sym;
/* define ENABLE_XXXX from DISABLE_XXX */
-#ifndef DISABLE_SPRINTF
-#define ENABLE_SPRINTF
-#endif
#ifndef DISABLE_STDIO
#define ENABLE_STDIO
#endif
diff --git a/include/mruby.h b/include/mruby.h
index 61df6e9ed..fe97dd055 100644
--- a/include/mruby.h
+++ b/include/mruby.h
@@ -129,9 +129,6 @@ typedef struct mrb_state {
mrb_sym symidx;
struct kh_n2s *name2sym; /* symbol table */
-#ifdef INCLUDE_REGEXP
- struct RNode *local_svar;/* regexp */
-#endif
#ifdef ENABLE_DEBUG
void (*code_fetch_hook)(struct mrb_state* mrb, struct mrb_irep *irep, mrb_code *pc, mrb_value *regs);
diff --git a/include/mruby/array.h b/include/mruby/array.h
index 9f9483545..5d78ccddd 100644
--- a/include/mruby/array.h
+++ b/include/mruby/array.h
@@ -14,14 +14,14 @@ extern "C" {
typedef struct mrb_shared_array {
int refcnt;
mrb_value *ptr;
- int len;
+ mrb_int len;
} mrb_shared_array;
struct RArray {
MRB_OBJECT_HEADER;
- int len;
+ mrb_int len;
union {
- int capa;
+ mrb_int capa;
mrb_shared_array *shared;
} aux;
mrb_value *ptr;
@@ -36,24 +36,24 @@ struct RArray {
#define MRB_ARY_SHARED 256
void mrb_ary_decref(mrb_state*, mrb_shared_array*);
-mrb_value mrb_ary_new_capa(mrb_state*, int);
+mrb_value mrb_ary_new_capa(mrb_state*, mrb_int);
mrb_value mrb_ary_new(mrb_state *mrb);
-mrb_value mrb_ary_new_elts(mrb_state *mrb, int n, const mrb_value *elts);
+mrb_value mrb_ary_new_elts(mrb_state *mrb, mrb_int n, const mrb_value *elts);
void mrb_ary_concat(mrb_state*, mrb_value, mrb_value);
mrb_value mrb_ary_splat(mrb_state*, mrb_value);
void mrb_ary_push(mrb_state*, mrb_value, mrb_value);
mrb_value mrb_ary_pop(mrb_state *mrb, mrb_value ary);
-mrb_value mrb_ary_new_from_values(mrb_state *mrb, int size, mrb_value *vals);
+mrb_value mrb_ary_new_from_values(mrb_state *mrb, mrb_int size, mrb_value *vals);
mrb_value mrb_ary_aget(mrb_state *mrb, mrb_value self);
mrb_value mrb_ary_ref(mrb_state *mrb, mrb_value ary, mrb_int n);
void mrb_ary_set(mrb_state *mrb, mrb_value ary, mrb_int n, mrb_value val);
-int mrb_ary_len(mrb_state *mrb, mrb_value ary);
+mrb_int mrb_ary_len(mrb_state *mrb, mrb_value ary);
void mrb_ary_replace(mrb_state *mrb, mrb_value a, mrb_value b);
mrb_value mrb_check_array_type(mrb_state *mrb, mrb_value self);
mrb_value mrb_ary_unshift(mrb_state *mrb, mrb_value self, mrb_value item);
-mrb_value mrb_ary_new4(mrb_state *mrb, int n, const mrb_value *elts);
+mrb_value mrb_ary_new4(mrb_state *mrb, mrb_int n, const mrb_value *elts);
mrb_value mrb_assoc_new(mrb_state *mrb, mrb_value car, mrb_value cdr);
-mrb_value mrb_ary_entry(mrb_value ary, int offset);
+mrb_value mrb_ary_entry(mrb_value ary, mrb_int offset);
mrb_value mrb_ary_shift(mrb_state *mrb, mrb_value self);
mrb_value mrb_ary_clear(mrb_state *mrb, mrb_value self);
diff --git a/include/mruby/compile.h b/include/mruby/compile.h
index d0de0153b..2cbc28321 100644
--- a/include/mruby/compile.h
+++ b/include/mruby/compile.h
@@ -59,6 +59,21 @@ struct mrb_parser_message {
char* message;
};
+/* heredoc parse type */
+enum heredoc_type {
+ heredoc_type_norm, /* <<EOH */
+ heredoc_type_quote, /* <<'EOH' */
+};
+/* heredoc structure */
+struct mrb_parser_heredoc_info {
+ enum heredoc_type type;
+ int allow_indent:1;
+ int line_head:1;
+ const char *term;
+ int term_len;
+ mrb_ast_node *doc;
+};
+
/* parser structure */
struct mrb_parser_state {
mrb_state *mrb;
@@ -71,7 +86,7 @@ struct mrb_parser_state {
int column;
enum mrb_lex_state_enum lstate;
- int sterm;
+ int sterm; /* string terminator : ' ' means heredoc */
int regexp;
unsigned int cond_stack;
@@ -85,7 +100,10 @@ struct mrb_parser_state {
char buf[1024];
int bidx;
- mrb_ast_node *heredoc;
+ mrb_ast_node *heredocs; /* list of mrb_parser_heredoc_info* */
+ mrb_ast_node *parsing_heredoc;
+ int heredoc_starts_nextline:1;
+ int heredoc_end_now:1; /* for mirb */
void *ylval;
diff --git a/include/mruby/string.h b/include/mruby/string.h
index 353d8cefc..3f661a742 100644
--- a/include/mruby/string.h
+++ b/include/mruby/string.h
@@ -24,14 +24,14 @@ extern const char mrb_digitmap[];
typedef struct mrb_shared_string {
int refcnt;
char *ptr;
- int len;
+ mrb_int len;
} mrb_shared_string;
struct RString {
MRB_OBJECT_HEADER;
- int len;
+ mrb_int len;
union {
- int capa;
+ mrb_int capa;
mrb_shared_string *shared;
} aux;
char *ptr;