diff options
| -rw-r--r-- | .gitignore | 7 | ||||
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | mrblib/Makefile | 1 | ||||
| -rw-r--r-- | src/Makefile | 1 | ||||
| -rw-r--r-- | src/proc.c | 18 | ||||
| -rw-r--r-- | tools/mrbc/Makefile | 1 | ||||
| -rw-r--r-- | tools/mruby/Makefile | 1 |
7 files changed, 29 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore index 76fdc3066..94a9f5d79 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ *.dylib *.inc *.o +*.a *.orig *.rej *.sav @@ -14,5 +15,7 @@ .svn /.git cscope.out -mruby.exe -y.tab.c +/src/y.tab.c +/bin +/mrblib/mrblib.c +/mrblib/*.*tmp @@ -113,8 +113,10 @@ $(OBJM) : $(MSRC) .PHONY : clean clean : $(MAKE) clean -C src $(MAKE_FLAGS) + $(MAKE) clean -C tools/mrbc $(MAKE_FLAGS) $(MAKE) clean -C tools/mruby $(MAKE_FLAGS) -rm -f $(EXE) $(OBJM) -rm -f $(OBJM:.o=.d) + -rm -f $(patsubst %.c,%.o,$(EXCEPT1)) $(patsubst %.c,%.d,$(EXCEPT1)) -rm -f $(IOSLIB) $(IOSSIMLIB) $(IOSDEVLIB) @echo "make: removing targets, objects and depend files of `pwd`" diff --git a/mrblib/Makefile b/mrblib/Makefile index 0192ec941..8fc808cc4 100644 --- a/mrblib/Makefile +++ b/mrblib/Makefile @@ -59,5 +59,6 @@ $(RLIB) : $(MRBS) .PHONY : clean clean : -rm -f $(MRBC) $(MLIB) $(CLIB) $(RLIB) $(DLIB) + -rm -f $(patsubst %.c,%.o,$(EXCEPT1)) $(patsubst %.c,%.d,$(EXCEPT1)) @echo "make: removing targets, objects and depend files of `pwd`" diff --git a/src/Makefile b/src/Makefile index abb6f4c4b..fb5483a72 100644 --- a/src/Makefile +++ b/src/Makefile @@ -86,5 +86,6 @@ clean : $(MAKE) clean -C ../mrblib $(MAKE_FLAGS) -rm -f $(LIB) $(OBJS) $(OBJY) $(YC) -rm -f $(OBJS:.o=.d) $(OBJY:.o=.d) + -rm -f $(patsubst %.c,%.o,$(EXCEPT1)) $(patsubst %.c,%.d,$(EXCEPT1)) @echo "make: removing targets, objects and depend files of `pwd`" diff --git a/src/proc.c b/src/proc.c index aae9b1932..502650ff5 100644 --- a/src/proc.c +++ b/src/proc.c @@ -50,6 +50,22 @@ mrb_proc_new_cfunc(mrb_state *mrb, mrb_func_t func) return p; } +static mrb_value +mrb_proc_initialize(mrb_state *mrb, mrb_value self) +{ + mrb_value blk = mrb->stack[mrb->ci->argc+1]; + + if (!mrb_nil_p(blk)) { + *mrb_proc_ptr(self) = *mrb_proc_ptr(blk); + } + else { + /* Calling Proc.new without a block is not implemented yet */ + mrb_raise(mrb, E_ARGUMENT_ERROR, "tried to create Proc object without a block"); + } + + return self; +} + int mrb_proc_cfunc_p(struct RProc *p) { @@ -86,6 +102,8 @@ mrb_init_proc(mrb_state *mrb) mrb->proc_class = mrb_define_class(mrb, "Proc", mrb->object_class); + mrb_define_method(mrb, mrb->proc_class, "initialize", mrb_proc_initialize, ARGS_NONE()); + m = mrb_proc_new(mrb, call_irep); mrb_define_method_raw(mrb, mrb->proc_class, mrb_intern(mrb, "call"), m); mrb_define_method_raw(mrb, mrb->proc_class, mrb_intern(mrb, "[]"), m); diff --git a/tools/mrbc/Makefile b/tools/mrbc/Makefile index ba7764b78..7271a2fed 100644 --- a/tools/mrbc/Makefile +++ b/tools/mrbc/Makefile @@ -69,5 +69,6 @@ $(YC) : $(YSRC) clean : -rm -f $(EXE) $(OBJS) $(OBJY) $(YC) -rm -f $(OBJS:.o=.d) $(OBJY:.o=.d) + -rm -f $(patsubst %.c,%.o,$(EXCEPT1)) $(patsubst %.c,%.d,$(EXCEPT1)) @echo "make: removing targets, objects and depend files of `pwd`" diff --git a/tools/mruby/Makefile b/tools/mruby/Makefile index dfb8b7f7c..62d7cdd3f 100644 --- a/tools/mruby/Makefile +++ b/tools/mruby/Makefile @@ -86,4 +86,5 @@ clean : $(MAKE) clean -C ../../mrblib $(MAKE_FLAGS) -rm -f $(EXE) $(OBJS) $(OBJY) $(YC) $(EXTS) -rm -f $(OBJS:.o=.d) $(OBJY:.o=.d) $(EXTS:.o=.d) + -rm -f $(patsubst %.c,%.o,$(EXCEPT1)) $(patsubst %.c,%.d,$(EXCEPT1)) @echo "make: removing targets, objects and depend files of `pwd`" |
