From 8b218e7c33f5cfaba2e9292a46d3bdd919efff30 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 10 Jun 2007 03:06:15 +0000 Subject: * include/ruby: moved public headers. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@12501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 + Makefile.in | 6 +- array.c | 6 +- bignum.c | 2 +- blockinlining.c | 4 +- class.c | 8 +- common.mk | 170 ++++---- compar.c | 2 +- compile.c | 4 +- configure.in | 27 +- cont.c | 2 +- cygwin/GNUmakefile.in | 2 +- debug.c | 2 +- debug.h | 4 +- defines.h | 269 ------------ dir.c | 4 +- dln.c | 6 +- enum.c | 6 +- enumerator.c | 2 +- error.c | 4 +- eval_intern.h | 10 +- ext/bigdecimal/bigdecimal.c | 3 +- ext/digest/extconf.rb | 2 +- ext/dl/cptr.c | 7 +- ext/dl/dl.c | 5 +- ext/dl/extconf.rb | 4 +- ext/extmk.rb | 24 +- ext/iconv/iconv.c | 6 +- ext/json/ext/generator/generator.c | 4 +- ext/json/ext/parser/parser.c | 8 +- ext/json/ext/parser/parser.rl | 8 +- ext/openssl/extconf.rb | 2 + ext/probeprofiler/extconf.rb | 2 + ext/probeprofiler/probeprofiler.c | 2 +- ext/pty/pty.c | 16 +- ext/racc/cparse/cparse.c | 6 +- ext/racc/cparse/extconf.rb | 1 + ext/readline/readline.c | 8 +- ext/ripper/depend | 8 +- ext/ripper/extconf.rb | 6 +- ext/sdbm/_sdbm.c | 2 +- ext/socket/depend | 8 +- ext/socket/getaddrinfo.c | 2 +- ext/socket/getnameinfo.c | 2 +- ext/socket/socket.c | 8 +- ext/stringio/depend | 4 +- ext/strscan/depend | 3 +- ext/strscan/strscan.c | 4 +- ext/syck/bytecode.c | 2 +- ext/syck/emitter.c | 2 +- ext/syck/handler.c | 2 +- ext/syck/implicit.c | 2 +- ext/syck/node.c | 2 +- ext/syck/rubyext.c | 2 +- ext/syck/syck.c | 2 +- ext/syck/syck.h | 2 +- ext/syck/token.c | 2 +- ext/syck/yaml2byte.c | 2 +- ext/syslog/syslog.c | 4 +- ext/tk/extconf.rb | 2 + ext/tk/stubs.c | 2 +- ext/tk/tcltklib.c | 5 +- ext/tk/tkutil/extconf.rb | 1 + ext/tk/tkutil/tkutil.c | 9 +- ext/win32ole/win32ole.c | 15 +- file.c | 8 +- gc.c | 10 +- hash.c | 8 +- include/ruby.h | 1 + include/ruby/defines.h | 284 +++++++++++++ include/ruby/intern.h | 627 ++++++++++++++++++++++++++++ include/ruby/io.h | 126 ++++++ include/ruby/missing.h | 162 ++++++++ include/ruby/node.h | 400 ++++++++++++++++++ include/ruby/oniguruma.h | 816 ++++++++++++++++++++++++++++++++++++ include/ruby/re.h | 58 +++ include/ruby/regex.h | 46 +++ include/ruby/ruby.h | 826 +++++++++++++++++++++++++++++++++++++ include/ruby/signal.h | 93 +++++ include/ruby/st.h | 79 ++++ include/ruby/util.h | 81 ++++ include/ruby/win32.h | 544 ++++++++++++++++++++++++ include/rubyio.h | 1 + include/rubysig.h | 1 + inits.c | 2 +- instruby.rb | 31 +- intern.h | 613 --------------------------- io.c | 8 +- iseq.c | 4 +- lib/mkmf.rb | 66 ++- main.c | 2 +- marshal.c | 8 +- math.c | 2 +- missing.h | 148 ------- missing/flock.c | 2 +- missing/strftime.c | 2 +- node.h | 394 ------------------ numeric.c | 2 +- object.c | 11 +- oniguruma.h | 810 ------------------------------------ pack.c | 2 +- parse.y | 12 +- prec.c | 2 +- process.c | 6 +- random.c | 2 +- range.c | 2 +- re.c | 4 +- re.h | 43 -- regenc.h | 4 +- regex.h | 28 -- regint.h | 6 +- regparse.c | 2 +- ruby.c | 8 +- ruby.h | 826 ------------------------------------- rubyio.h | 111 ----- rubysig.h | 78 ---- signal.c | 6 +- sprintf.c | 4 +- st.c | 9 +- st.h | 66 --- string.c | 4 +- struct.c | 2 +- time.c | 2 +- unicode.c | 2 +- util.c | 4 +- util.h | 67 --- variable.c | 8 +- version.c | 2 +- version.h | 6 +- vm.c | 6 +- vm_dump.c | 4 +- win32/Makefile.sub | 43 +- win32/mkexports.rb | 4 +- win32/win32.c | 6 +- win32/win32.h | 530 ------------------------ yarvcore.c | 4 +- yarvcore.h | 8 +- 137 files changed, 4597 insertions(+), 4359 deletions(-) delete mode 100644 defines.h create mode 100644 include/ruby.h create mode 100644 include/ruby/defines.h create mode 100644 include/ruby/intern.h create mode 100644 include/ruby/io.h create mode 100644 include/ruby/missing.h create mode 100644 include/ruby/node.h create mode 100644 include/ruby/oniguruma.h create mode 100644 include/ruby/re.h create mode 100644 include/ruby/regex.h create mode 100644 include/ruby/ruby.h create mode 100644 include/ruby/signal.h create mode 100644 include/ruby/st.h create mode 100644 include/ruby/util.h create mode 100644 include/ruby/win32.h create mode 100644 include/rubyio.h create mode 100644 include/rubysig.h delete mode 100644 intern.h delete mode 100644 missing.h delete mode 100644 node.h delete mode 100644 oniguruma.h delete mode 100644 re.h delete mode 100644 regex.h delete mode 100644 ruby.h delete mode 100644 rubyio.h delete mode 100644 rubysig.h delete mode 100644 st.h delete mode 100644 util.h delete mode 100644 win32/win32.h diff --git a/ChangeLog b/ChangeLog index 91f942435..29db0239b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Sun Jun 10 12:07:41 2007 Nobuyoshi Nakada + + * include/ruby: moved public headers. + Sun Jun 10 10:42:04 2007 Tanaka Akira * lib/securerandom.rb: renamed from lib/secrand.rb. diff --git a/Makefile.in b/Makefile.in index 4dba2db71..506fcbeb4 100644 --- a/Makefile.in +++ b/Makefile.in @@ -4,7 +4,7 @@ NULLCMD = : #### Start of system configuration section. #### srcdir = @srcdir@ -VPATH = $(srcdir):$(srcdir)/missing +hdrdir = $(srcdir)/include CC = @CC@ YACC = bison @@ -32,11 +32,13 @@ RDOCTARGET = @RDOCTARGET@ EXTOUT = @EXTOUT@ RIDATADIR = $(DESTDIR)$(datadir)/ri/$(MAJOR).$(MINOR)/system +arch_hdrdir = $(EXTOUT)/include/$(arch) +VPATH = $(arch_hdrdir)/ruby:$(hdrdir)/ruby:$(srcdir):$(srcdir)/missing empty = OUTFLAG = @OUTFLAG@$(empty) CFLAGS = @CFLAGS@ @ARCH_FLAG@ -XCFLAGS = -I. -I$(srcdir) @XCFLAGS@ +XCFLAGS = -I$(arch_hdrdir) -I$(hdrdir) -I$(srcdir) @XCFLAGS@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@ EXTLDFLAGS = diff --git a/array.c b/array.c index dc52e8f84..a713e390a 100644 --- a/array.c +++ b/array.c @@ -12,9 +12,9 @@ **********************************************************************/ -#include "ruby.h" -#include "util.h" -#include "st.h" +#include "ruby/ruby.h" +#include "ruby/util.h" +#include "ruby/st.h" VALUE rb_cArray; diff --git a/bignum.c b/bignum.c index b24259e4d..d24e8ae70 100644 --- a/bignum.c +++ b/bignum.c @@ -10,7 +10,7 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" #include #include diff --git a/blockinlining.c b/blockinlining.c index b6563bd81..9913b035d 100644 --- a/blockinlining.c +++ b/blockinlining.c @@ -9,8 +9,8 @@ **********************************************************************/ -#include "ruby.h" -#include "node.h" +#include "ruby/ruby.h" +#include "ruby/node.h" #include "yarvcore.h" VALUE yarv_new_iseqval(VALUE node, VALUE name, VALUE file, diff --git a/class.c b/class.c index d38d64e62..f881e690e 100644 --- a/class.c +++ b/class.c @@ -10,10 +10,10 @@ **********************************************************************/ -#include "ruby.h" -#include "rubysig.h" -#include "node.h" -#include "st.h" +#include "ruby/ruby.h" +#include "ruby/signal.h" +#include "ruby/node.h" +#include "ruby/st.h" #include extern st_table *rb_class_tbl; diff --git a/common.mk b/common.mk index 444e85741..4a8170854 100644 --- a/common.mk +++ b/common.mk @@ -370,218 +370,218 @@ win32.$(OBJEXT): {$(VPATH)}win32.c ### -array.$(OBJEXT): {$(VPATH)}array.c {$(VPATH)}ruby.h config.h \ +array.$(OBJEXT): {$(VPATH)}array.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}util.h {$(VPATH)}st.h ascii.$(OBJEXT): {$(VPATH)}ascii.c {$(VPATH)}regenc.h \ - {$(VPATH)}oniguruma.h config.h -bignum.$(OBJEXT): {$(VPATH)}bignum.c {$(VPATH)}ruby.h config.h \ + {$(VPATH)}oniguruma.h {$(VPATH)}config.h +bignum.$(OBJEXT): {$(VPATH)}bignum.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h -class.$(OBJEXT): {$(VPATH)}class.c {$(VPATH)}ruby.h config.h \ +class.$(OBJEXT): {$(VPATH)}class.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ - {$(VPATH)}rubysig.h {$(VPATH)}node.h {$(VPATH)}st.h -compar.$(OBJEXT): {$(VPATH)}compar.c {$(VPATH)}ruby.h config.h \ + {$(VPATH)}signal.h {$(VPATH)}node.h {$(VPATH)}st.h +compar.$(OBJEXT): {$(VPATH)}compar.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h -dir.$(OBJEXT): {$(VPATH)}dir.c {$(VPATH)}ruby.h config.h \ +dir.$(OBJEXT): {$(VPATH)}dir.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}util.h -dln.$(OBJEXT): {$(VPATH)}dln.c {$(VPATH)}ruby.h config.h \ +dln.$(OBJEXT): {$(VPATH)}dln.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}dln.h dmydln.$(OBJEXT): {$(VPATH)}dmydln.c {$(VPATH)}dln.c {$(VPATH)}ruby.h \ - config.h {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ + {$(VPATH)}config.h {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}dln.h dmyext.$(OBJEXT): {$(VPATH)}dmyext.c -enum.$(OBJEXT): {$(VPATH)}enum.c {$(VPATH)}ruby.h config.h \ +enum.$(OBJEXT): {$(VPATH)}enum.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}node.h {$(VPATH)}util.h -enumerator.$(OBJEXT): {$(VPATH)}enumerator.c {$(VPATH)}ruby.h config.h \ +enumerator.$(OBJEXT): {$(VPATH)}enumerator.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h -error.$(OBJEXT): {$(VPATH)}error.c {$(VPATH)}ruby.h config.h \ +error.$(OBJEXT): {$(VPATH)}error.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ - {$(VPATH)}st.h {$(VPATH)}vm_opts.h {$(VPATH)}rubysig.h \ + {$(VPATH)}st.h {$(VPATH)}vm_opts.h {$(VPATH)}signal.h \ {$(VPATH)}yarvcore.h {$(VPATH)}node.h {$(VPATH)}debug.h \ {$(VPATH)}thread_$(THREAD_MODEL).h euc_jp.$(OBJEXT): {$(VPATH)}euc_jp.c {$(VPATH)}regenc.h \ - {$(VPATH)}oniguruma.h config.h + {$(VPATH)}oniguruma.h {$(VPATH)}config.h eval.$(OBJEXT): {$(VPATH)}eval.c {$(VPATH)}eval_error.h {$(VPATH)}eval_intern.h \ {$(VPATH)}eval_method.h {$(VPATH)}eval_safe.h {$(VPATH)}eval_jump.h \ - {$(VPATH)}ruby.h config.h {$(VPATH)}yarvcore.h \ + {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}yarvcore.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ - {$(VPATH)}node.h {$(VPATH)}util.h {$(VPATH)}rubysig.h \ + {$(VPATH)}node.h {$(VPATH)}util.h {$(VPATH)}signal.h \ {$(VPATH)}st.h {$(VPATH)}dln.h {$(VPATH)}debug.h \ {$(VPATH)}vm_opts.h {$(VPATH)}thread_$(THREAD_MODEL).h eval_load.$(OBJEXT): {$(VPATH)}eval_load.c {$(VPATH)}eval_intern.h \ - {$(VPATH)}ruby.h config.h \ + {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}node.h {$(VPATH)}util.h {$(VPATH)}yarvcore.h \ - {$(VPATH)}rubysig.h {$(VPATH)}st.h {$(VPATH)}dln.h {$(VPATH)}debug.h \ + {$(VPATH)}signal.h {$(VPATH)}st.h {$(VPATH)}dln.h {$(VPATH)}debug.h \ {$(VPATH)}vm_opts.h {$(VPATH)}thread_$(THREAD_MODEL).h -file.$(OBJEXT): {$(VPATH)}file.c {$(VPATH)}ruby.h config.h \ +file.$(OBJEXT): {$(VPATH)}file.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ - {$(VPATH)}rubyio.h {$(VPATH)}rubysig.h {$(VPATH)}util.h \ + {$(VPATH)}io.h {$(VPATH)}signal.h {$(VPATH)}util.h \ {$(VPATH)}dln.h -gc.$(OBJEXT): {$(VPATH)}gc.c {$(VPATH)}ruby.h config.h \ +gc.$(OBJEXT): {$(VPATH)}gc.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ - {$(VPATH)}rubysig.h {$(VPATH)}st.h {$(VPATH)}node.h \ + {$(VPATH)}signal.h {$(VPATH)}st.h {$(VPATH)}node.h \ {$(VPATH)}re.h {$(VPATH)}regex.h {$(VPATH)}oniguruma.h \ {$(VPATH)}yarvcore.h {$(VPATH)}debug.h {$(VPATH)}vm_opts.h \ {$(VPATH)}thread_$(THREAD_MODEL).h -hash.$(OBJEXT): {$(VPATH)}hash.c {$(VPATH)}ruby.h config.h \ +hash.$(OBJEXT): {$(VPATH)}hash.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ - {$(VPATH)}st.h {$(VPATH)}util.h {$(VPATH)}rubysig.h -inits.$(OBJEXT): {$(VPATH)}inits.c {$(VPATH)}ruby.h config.h \ + {$(VPATH)}st.h {$(VPATH)}util.h {$(VPATH)}signal.h +inits.$(OBJEXT): {$(VPATH)}inits.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h -io.$(OBJEXT): {$(VPATH)}io.c {$(VPATH)}ruby.h config.h \ +io.$(OBJEXT): {$(VPATH)}io.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ - {$(VPATH)}rubyio.h {$(VPATH)}rubysig.h {$(VPATH)}util.h -main.$(OBJEXT): {$(VPATH)}main.c {$(VPATH)}ruby.h config.h \ + {$(VPATH)}io.h {$(VPATH)}signal.h {$(VPATH)}util.h +main.$(OBJEXT): {$(VPATH)}main.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h -marshal.$(OBJEXT): {$(VPATH)}marshal.c {$(VPATH)}ruby.h config.h \ +marshal.$(OBJEXT): {$(VPATH)}marshal.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ - {$(VPATH)}rubyio.h {$(VPATH)}st.h {$(VPATH)}util.h -math.$(OBJEXT): {$(VPATH)}math.c {$(VPATH)}ruby.h config.h \ + {$(VPATH)}io.h {$(VPATH)}st.h {$(VPATH)}util.h +math.$(OBJEXT): {$(VPATH)}math.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h -numeric.$(OBJEXT): {$(VPATH)}numeric.c {$(VPATH)}ruby.h config.h \ +numeric.$(OBJEXT): {$(VPATH)}numeric.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h \ {$(VPATH)}missing.h -object.$(OBJEXT): {$(VPATH)}object.c {$(VPATH)}ruby.h config.h \ +object.$(OBJEXT): {$(VPATH)}object.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}st.h {$(VPATH)}util.h {$(VPATH)}debug.h -pack.$(OBJEXT): {$(VPATH)}pack.c {$(VPATH)}ruby.h config.h \ +pack.$(OBJEXT): {$(VPATH)}pack.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h -parse.$(OBJEXT): {$(VPATH)}parse.c {$(VPATH)}ruby.h config.h \ +parse.$(OBJEXT): {$(VPATH)}parse.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}node.h {$(VPATH)}st.h {$(VPATH)}oniguruma.h \ {$(VPATH)}regex.h {$(VPATH)}util.h {$(VPATH)}lex.c -prec.$(OBJEXT): {$(VPATH)}prec.c {$(VPATH)}ruby.h config.h \ +prec.$(OBJEXT): {$(VPATH)}prec.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h proc.$(OBJEXT): {$(VPATH)}proc.c {$(VPATH)}eval_intern.h \ - {$(VPATH)}ruby.h config.h {$(VPATH)}yarvcore.h \ + {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}yarvcore.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}node.h {$(VPATH)}util.h {$(VPATH)}gc.h \ - {$(VPATH)}rubysig.h {$(VPATH)}st.h {$(VPATH)}dln.h \ + {$(VPATH)}signal.h {$(VPATH)}st.h {$(VPATH)}dln.h \ {$(VPATH)}debug.h {$(VPATH)}vm_opts.h \ {$(VPATH)}thread_$(THREAD_MODEL).h -process.$(OBJEXT): {$(VPATH)}process.c {$(VPATH)}ruby.h config.h \ +process.$(OBJEXT): {$(VPATH)}process.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ - {$(VPATH)}rubysig.h {$(VPATH)}st.h {$(VPATH)}yarvcore.h -random.$(OBJEXT): {$(VPATH)}random.c {$(VPATH)}ruby.h config.h \ + {$(VPATH)}signal.h {$(VPATH)}st.h {$(VPATH)}yarvcore.h +random.$(OBJEXT): {$(VPATH)}random.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h -range.$(OBJEXT): {$(VPATH)}range.c {$(VPATH)}ruby.h config.h \ +range.$(OBJEXT): {$(VPATH)}range.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h -re.$(OBJEXT): {$(VPATH)}re.c {$(VPATH)}ruby.h config.h \ +re.$(OBJEXT): {$(VPATH)}re.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}oniguruma.h {$(VPATH)}re.h {$(VPATH)}regex.h \ - {$(VPATH)}regint.h {$(VPATH)}regenc.h {$(VPATH)}rubysig.h -regcomp.$(OBJEXT): {$(VPATH)}regcomp.c {$(VPATH)}ruby.h config.h \ + {$(VPATH)}regint.h {$(VPATH)}regenc.h {$(VPATH)}signal.h +regcomp.$(OBJEXT): {$(VPATH)}regcomp.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}oniguruma.h {$(VPATH)}regint.h {$(VPATH)}regparse.h \ - {$(VPATH)}regenc.h {$(VPATH)}rubysig.h + {$(VPATH)}regenc.h {$(VPATH)}signal.h regenc.$(OBJEXT): {$(VPATH)}regenc.c {$(VPATH)}regint.h \ {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h {$(VPATH)}ruby.h \ {$(VPATH)}defines.h {$(VPATH)}missing.h {$(VPATH)}intern.h \ - {$(VPATH)}rubysig.h + {$(VPATH)}signal.h regerror.$(OBJEXT): {$(VPATH)}regerror.c {$(VPATH)}regint.h \ - {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h config.h \ + {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h {$(VPATH)}config.h \ {$(VPATH)}ruby.h {$(VPATH)}defines.h {$(VPATH)}missing.h \ - {$(VPATH)}intern.h {$(VPATH)}rubysig.h + {$(VPATH)}intern.h {$(VPATH)}signal.h regexec.$(OBJEXT): {$(VPATH)}regexec.c {$(VPATH)}regint.h \ - {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h config.h \ + {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h {$(VPATH)}config.h \ {$(VPATH)}ruby.h {$(VPATH)}defines.h {$(VPATH)}missing.h \ - {$(VPATH)}intern.h {$(VPATH)}rubysig.h + {$(VPATH)}intern.h {$(VPATH)}signal.h regparse.$(OBJEXT): {$(VPATH)}regparse.c {$(VPATH)}oniguruma.h \ - {$(VPATH)}regint.h {$(VPATH)}regparse.h {$(VPATH)}regenc.h config.h \ + {$(VPATH)}regint.h {$(VPATH)}regparse.h {$(VPATH)}regenc.h {$(VPATH)}config.h \ {$(VPATH)}ruby.h {$(VPATH)}defines.h {$(VPATH)}missing.h \ - {$(VPATH)}intern.h {$(VPATH)}rubysig.h + {$(VPATH)}intern.h {$(VPATH)}signal.h regsyntax.$(OBJEXT): {$(VPATH)}regsyntax.c {$(VPATH)}oniguruma.h \ - {$(VPATH)}regint.h {$(VPATH)}regenc.h config.h \ + {$(VPATH)}regint.h {$(VPATH)}regenc.h {$(VPATH)}config.h \ {$(VPATH)}ruby.h {$(VPATH)}defines.h {$(VPATH)}missing.h -ruby.$(OBJEXT): {$(VPATH)}ruby.c {$(VPATH)}ruby.h config.h \ +ruby.$(OBJEXT): {$(VPATH)}ruby.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}dln.h {$(VPATH)}node.h {$(VPATH)}util.h -signal.$(OBJEXT): {$(VPATH)}signal.c {$(VPATH)}ruby.h config.h \ +signal.$(OBJEXT): {$(VPATH)}signal.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ - {$(VPATH)}rubysig.h {$(VPATH)}yarvcore.h {$(VPATH)}node.h \ + {$(VPATH)}signal.h {$(VPATH)}yarvcore.h {$(VPATH)}node.h \ {$(VPATH)}debug.h {$(VPATH)}vm_opts.h \ {$(VPATH)}thread_$(THREAD_MODEL).h sjis.$(OBJEXT): {$(VPATH)}sjis.c {$(VPATH)}regenc.h \ - {$(VPATH)}oniguruma.h config.h -sprintf.$(OBJEXT): {$(VPATH)}sprintf.c {$(VPATH)}ruby.h config.h \ + {$(VPATH)}oniguruma.h {$(VPATH)}config.h +sprintf.$(OBJEXT): {$(VPATH)}sprintf.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}re.h {$(VPATH)}regex.h {$(VPATH)}oniguruma.h \ {$(VPATH)}missing/vsnprintf.c -st.$(OBJEXT): {$(VPATH)}st.c config.h {$(VPATH)}st.h {$(VPATH)}defines.h -string.$(OBJEXT): {$(VPATH)}string.c {$(VPATH)}ruby.h config.h \ +st.$(OBJEXT): {$(VPATH)}st.c {$(VPATH)}config.h {$(VPATH)}st.h {$(VPATH)}defines.h +string.$(OBJEXT): {$(VPATH)}string.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}re.h {$(VPATH)}regex.h -struct.$(OBJEXT): {$(VPATH)}struct.c {$(VPATH)}ruby.h config.h \ +struct.$(OBJEXT): {$(VPATH)}struct.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h thread.$(OBJEXT): {$(VPATH)}thread.c {$(VPATH)}eval_intern.h \ {$(VPATH)}thread_win32.h {$(VPATH)}thread_pthread.h \ {$(VPATH)}thread_win32.ci {$(VPATH)}thread_pthread.ci \ - {$(VPATH)}ruby.h {$(VPATH)}yarvcore.h config.h \ + {$(VPATH)}ruby.h {$(VPATH)}yarvcore.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}node.h {$(VPATH)}util.h \ - {$(VPATH)}rubysig.h {$(VPATH)}st.h {$(VPATH)}dln.h + {$(VPATH)}signal.h {$(VPATH)}st.h {$(VPATH)}dln.h cont.$(OBJEXT): {$(VPATH)}cont.c {$(VPATH)}eval_intern.h \ - {$(VPATH)}ruby.h {$(VPATH)}yarvcore.h config.h \ + {$(VPATH)}ruby.h {$(VPATH)}yarvcore.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}node.h {$(VPATH)}util.h \ - {$(VPATH)}rubysig.h {$(VPATH)}st.h {$(VPATH)}dln.h -time.$(OBJEXT): {$(VPATH)}time.c {$(VPATH)}ruby.h config.h \ + {$(VPATH)}signal.h {$(VPATH)}st.h {$(VPATH)}dln.h +time.$(OBJEXT): {$(VPATH)}time.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h unicode.$(OBJEXT): {$(VPATH)}unicode.c {$(VPATH)}regenc.h \ - {$(VPATH)}oniguruma.h config.h + {$(VPATH)}oniguruma.h {$(VPATH)}config.h utf8.$(OBJEXT): {$(VPATH)}utf8.c {$(VPATH)}regenc.h \ - {$(VPATH)}oniguruma.h config.h -util.$(OBJEXT): {$(VPATH)}util.c {$(VPATH)}ruby.h config.h \ + {$(VPATH)}oniguruma.h {$(VPATH)}config.h +util.$(OBJEXT): {$(VPATH)}util.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}util.h -variable.$(OBJEXT): {$(VPATH)}variable.c {$(VPATH)}ruby.h config.h \ +variable.$(OBJEXT): {$(VPATH)}variable.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}node.h {$(VPATH)}st.h {$(VPATH)}util.h -version.$(OBJEXT): {$(VPATH)}version.c {$(VPATH)}ruby.h config.h \ +version.$(OBJEXT): {$(VPATH)}version.c {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ {$(VPATH)}version.h compile.$(OBJEXT): {$(VPATH)}compile.c {$(VPATH)}yarvcore.h \ - {$(VPATH)}compile.h {$(VPATH)}debug.h {$(VPATH)}ruby.h config.h \ + {$(VPATH)}compile.h {$(VPATH)}debug.h {$(VPATH)}ruby.h {$(VPATH)}config.h \ {$(VPATH)}defines.h {$(VPATH)}missing.h {$(VPATH)}intern.h \ - {$(VPATH)}st.h {$(VPATH)}node.h {$(VPATH)}rubysig.h \ + {$(VPATH)}st.h {$(VPATH)}node.h {$(VPATH)}signal.h \ {$(VPATH)}insns.inc {$(VPATH)}insns_info.inc {$(VPATH)}optinsn.inc \ {$(VPATH)}opt_sc.inc {$(VPATH)}optunifs.inc {$(VPATH)}vm_opts.h \ {$(VPATH)}thread_$(THREAD_MODEL).h iseq.$(OBJEXT): {$(VPATH)}iseq.c {$(VPATH)}yarvcore.h {$(VPATH)}debug.h \ {$(VPATH)}ruby.h {$(VPATH)}defines.h {$(VPATH)}missing.h \ - {$(VPATH)}intern.h {$(VPATH)}st.h {$(VPATH)}rubysig.h \ - {$(VPATH)}gc.h {$(VPATH)}vm_opts.h config.h {$(VPATH)}node.h \ + {$(VPATH)}intern.h {$(VPATH)}st.h {$(VPATH)}signal.h \ + {$(VPATH)}gc.h {$(VPATH)}vm_opts.h {$(VPATH)}config.h {$(VPATH)}node.h \ {$(VPATH)}thread_$(THREAD_MODEL).h\ {$(VPATH)}insns.inc {$(VPATH)}insns_info.inc vm.$(OBJEXT): {$(VPATH)}vm.c {$(VPATH)}vm.h {$(VPATH)}insnhelper.h \ - {$(VPATH)}yarvcore.h {$(VPATH)}debug.h {$(VPATH)}ruby.h config.h\ - {$(VPATH)}node.h {$(VPATH)}util.h {$(VPATH)}rubysig.h {$(VPATH)}dln.h \ + {$(VPATH)}yarvcore.h {$(VPATH)}debug.h {$(VPATH)}ruby.h {$(VPATH)}config.h\ + {$(VPATH)}node.h {$(VPATH)}util.h {$(VPATH)}signal.h {$(VPATH)}dln.h \ {$(VPATH)}vm_evalbody.ci {$(VPATH)}call_cfunc.ci \ {$(VPATH)}insns.inc {$(VPATH)}vm.inc {$(VPATH)}vmtc.inc \ {$(VPATH)}vm_macro.inc {$(VPATH)}vm_opts.h {$(VPATH)}eval_intern.h \ {$(VPATH)}defines.h {$(VPATH)}missing.h {$(VPATH)}intern.h \ {$(VPATH)}gc.h {$(VPATH)}thread_$(THREAD_MODEL).h vm_dump.$(OBJEXT): {$(VPATH)}vm_dump.c {$(VPATH)}yarvcore.h {$(VPATH)}vm.h \ - {$(VPATH)}ruby.h config.h {$(VPATH)}defines.h {$(VPATH)}missing.h \ + {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}defines.h {$(VPATH)}missing.h \ {$(VPATH)}intern.h {$(VPATH)}st.h {$(VPATH)}node.h {$(VPATH)}debug.h \ - {$(VPATH)}rubysig.h {$(VPATH)}vm_opts.h {$(VPATH)}thread_$(THREAD_MODEL).h + {$(VPATH)}signal.h {$(VPATH)}vm_opts.h {$(VPATH)}thread_$(THREAD_MODEL).h yarvcore.$(OBJEXT): {$(VPATH)}yarvcore.c {$(VPATH)}yarvcore.h \ - {$(VPATH)}debug.h {$(VPATH)}ruby.h config.h {$(VPATH)}defines.h \ + {$(VPATH)}debug.h {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}defines.h \ {$(VPATH)}missing.h {$(VPATH)}intern.h {$(VPATH)}st.h \ - {$(VPATH)}rubysig.h {$(VPATH)}node.h {$(VPATH)}gc.h {$(VPATH)}vm_opts.h \ + {$(VPATH)}signal.h {$(VPATH)}node.h {$(VPATH)}gc.h {$(VPATH)}vm_opts.h \ {$(VPATH)}thread_$(THREAD_MODEL).h debug.$(OBJEXT): {$(VPATH)}debug.h {$(VPATH)}ruby.h {$(VPATH)}defines.h \ - {$(VPATH)}missing.h {$(VPATH)}intern.h {$(VPATH)}st.h config.h \ + {$(VPATH)}missing.h {$(VPATH)}intern.h {$(VPATH)}st.h {$(VPATH)}config.h \ {$(VPATH)}st.h blockinlining.$(OBJEXT): {$(VPATH)}blockinlining.c \ {$(VPATH)}ruby.h {$(VPATH)}defines.h \ - {$(VPATH)}missing.h {$(VPATH)}intern.h {$(VPATH)}st.h config.h \ - {$(VPATH)}node.h {$(VPATH)}yarvcore.h {$(VPATH)}rubysig.h \ + {$(VPATH)}missing.h {$(VPATH)}intern.h {$(VPATH)}st.h {$(VPATH)}config.h \ + {$(VPATH)}node.h {$(VPATH)}yarvcore.h {$(VPATH)}signal.h \ {$(VPATH)}debug.h {$(VPATH)}vm_opts.h \ {$(VPATH)}thread_$(THREAD_MODEL).h diff --git a/compar.c b/compar.c index 80c4c70ca..780256707 100644 --- a/compar.c +++ b/compar.c @@ -10,7 +10,7 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" VALUE rb_mComparable; diff --git a/compile.c b/compile.c index 3195a2cd7..3ce622fde 100644 --- a/compile.c +++ b/compile.c @@ -10,8 +10,8 @@ **********************************************************************/ -#include "ruby.h" -#include "node.h" +#include "ruby/ruby.h" +#include "ruby/node.h" #include "yarvcore.h" #include "compile.h" diff --git a/configure.in b/configure.in index 223264926..f8f3b3d62 100644 --- a/configure.in +++ b/configure.in @@ -216,10 +216,11 @@ AC_MINIX AC_SUBST(RM, ['rm -f']) AC_SUBST(CP, ['cp']) if $as_mkdir_p; then - AC_SUBST(MAKEDIRS, ['mkdir -p']) + MAKEDIRS='mkdir -p' else - AC_SUBST(MAKEDIRS, ['install -d']) + MAKEDIRS='install -d' fi +AC_SUBST(MAKEDIRS) dnl check for large file stuff AC_SYS_LARGEFILE @@ -1271,7 +1272,7 @@ fi AC_SUBST(MINIRUBY) AC_SUBST(PREP) AC_SUBST(RUNRUBY) -AC_SUBST(EXTOUT, [${EXTOUT-.ext}]) +AC_SUBST(EXTOUT, [${EXTOUT=.ext}]) FIRSTMAKEFILE="" LIBRUBY_A='lib$(RUBY_SO_NAME)-static.a' @@ -1607,6 +1608,19 @@ if test "$search_path" != ""; then AC_DEFINE_UNQUOTED(RUBY_SEARCH_PATH,"$search_path") fi +AC_ARG_WITH(rubyhdrdir, + [ --with-ruby-hdrdir=DIR core headers in DIR [INCLUDEDIR]], + [rubyhdrdir=$withval], + [rubyhdrdir='${includedir}/ruby-${MAJOR}.${MINOR}']) + +AC_ARG_WITH(sitehdrdir, + [ --with-site-hdrdir=DIR core headers in DIR [INCLUDEDIR]], + [sitehdrdir=$withval], + [sitehdrdir='${rubyhdrdir}/site_ruby']) + +AC_SUBST(rubyhdrdir)dnl +AC_SUBST(sitehdrdir)dnl + AC_ARG_WITH(mantype, [ --with-mantype=TYPE specify man page type; TYPE is one of man and doc], [ @@ -1646,11 +1660,14 @@ AC_ARG_WITH(baseruby, ]) AC_SUBST(BASERUBY) -if test -f config.h && tr -d '\015' < confdefs.h | cmp -s config.h -; then +arch_hdrdir="${EXTOUT}/include/${arch}/ruby" +$MAKEDIRS "${arch_hdrdir}" +config_h="${arch_hdrdir}/config.h" +if test -f "${config_h}" && tr -d '\015' < confdefs.h | cmp -s "${config_h}" -; then echo "config.h unchanged" else echo "creating config.h" - tr -d '\015' < confdefs.h > config.h + tr -d '\015' < confdefs.h > "${config_h}" fi : > confdefs.h diff --git a/cont.c b/cont.c index 97a805d0a..58149979c 100644 --- a/cont.c +++ b/cont.c @@ -10,7 +10,7 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" #include "yarvcore.h" #include "gc.h" #include "eval_intern.h" diff --git a/cygwin/GNUmakefile.in b/cygwin/GNUmakefile.in index c9283d84b..719dae7e5 100644 --- a/cygwin/GNUmakefile.in +++ b/cygwin/GNUmakefile.in @@ -61,7 +61,7 @@ $(RUBY_EXP): $(LIBRUBY_A) GNUmakefile: $(srcdir)/cygwin/GNUmakefile.in ifeq (@target_os@,mingw32) -$(OBJS) $(MAINOBJ): win32/win32.h +$(OBJS) $(MAINOBJ): win32.h $(LIBRUBY_SO): $(RUBYDEF) diff --git a/debug.c b/debug.c index 683f4ec07..ec28be3eb 100644 --- a/debug.c +++ b/debug.c @@ -10,7 +10,7 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" #include "debug.h" void diff --git a/debug.h b/debug.h index b25fa6ddc..66ea10883 100644 --- a/debug.h +++ b/debug.h @@ -13,8 +13,8 @@ #ifndef _DEBUG_H_INCLUDED_ #define _DEBUG_H_INCLUDED_ -#include -#include +#include "ruby/ruby.h" +#include "ruby/node.h" #define dpv(h,v) ruby_debug_value(-1, 0, h, v) #define dp(v) ruby_debug_value(-1, 0, "", v) diff --git a/defines.h b/defines.h deleted file mode 100644 index 1f5a0054f..000000000 --- a/defines.h +++ /dev/null @@ -1,269 +0,0 @@ -/************************************************ - - defines.h - - - $Author$ - $Date$ - created at: Wed May 18 00:21:44 JST 1994 - -************************************************/ -#ifndef DEFINES_H -#define DEFINES_H - -#define RUBY - -#include -#ifdef __cplusplus -# ifndef HAVE_PROTOTYPES -# define HAVE_PROTOTYPES 1 -# endif -# ifndef HAVE_STDARG_PROTOTYPES -# define HAVE_STDARG_PROTOTYPES 1 -# endif -#endif - -#undef _ -#ifdef HAVE_PROTOTYPES -# define _(args) args -#else -# define _(args) () -#endif - -#undef __ -#ifdef HAVE_STDARG_PROTOTYPES -# define __(args) args -#else -# define __(args) () -#endif - -#ifdef __cplusplus -#define ANYARGS ... -#else -#define ANYARGS -#endif - -#define xmalloc ruby_xmalloc -#define xmalloc2 ruby_xmalloc2 -#define xcalloc ruby_xcalloc -#define xrealloc ruby_xrealloc -#define xrealloc2 ruby_xrealloc2 -#define xfree ruby_xfree - -void *xmalloc(size_t); -void *xmalloc2(size_t,size_t); -void *xcalloc(size_t,size_t); -void *xrealloc(void*,size_t); -void *xrealloc2(void*,size_t,size_t); -void xfree(void*); - -#if SIZEOF_LONG_LONG > 0 -# define LONG_LONG long long -#elif SIZEOF___INT64 > 0 -# define HAVE_LONG_LONG 1 -# define LONG_LONG __int64 -# undef SIZEOF_LONG_LONG -# define SIZEOF_LONG_LONG SIZEOF___INT64 -#endif - -#if SIZEOF_INT*2 <= SIZEOF_LONG_LONG -# define BDIGIT unsigned int -# define SIZEOF_BDIGITS SIZEOF_INT -# define BDIGIT_DBL unsigned LONG_LONG -# define BDIGIT_DBL_SIGNED LONG_LONG -#elif SIZEOF_INT*2 <= SIZEOF_LONG -# define BDIGIT unsigned int -# define SIZEOF_BDIGITS SIZEOF_INT -# define BDIGIT_DBL unsigned long -# define BDIGIT_DBL_SIGNED long -#elif SIZEOF_SHORT*2 <= SIZEOF_LONG -# define BDIGIT unsigned short -# define SIZEOF_BDIGITS SIZEOF_SHORT -# define BDIGIT_DBL unsigned long -# define BDIGIT_DBL_SIGNED long -#else -# define BDIGIT unsigned short -# define SIZEOF_BDIGITS (SIZEOF_LONG/2) -# define BDIGIT_DBL unsigned long -# define BDIGIT_DBL_SIGNED long -#endif - -#ifdef __CYGWIN__ -#undef _WIN32 -#endif - -#if defined(MSDOS) || defined(_WIN32) || defined(__human68k__) || defined(__EMX__) -#define DOSISH 1 -#ifndef _WIN32_WCE -# define DOSISH_DRIVE_LETTER -#endif -#endif - -/* define RUBY_USE_EUC/SJIS for default kanji-code */ -#ifndef DEFAULT_KCODE -#if defined(DOSISH) || defined(__CYGWIN__) || defined(__MACOS__) || defined(OS2) -#define DEFAULT_KCODE KCODE_SJIS -#else -#define DEFAULT_KCODE KCODE_EUC -#endif -#endif - -#ifdef __NeXT__ -/* NextStep, OpenStep, Rhapsody */ -#ifndef S_IRUSR -#define S_IRUSR 0000400 /* read permission, owner */ -#endif -#ifndef S_IRGRP -#define S_IRGRP 0000040 /* read permission, group */ -#endif -#ifndef S_IROTH -#define S_IROTH 0000004 /* read permission, other */ -#endif -#ifndef S_IWUSR -#define S_IWUSR 0000200 /* write permission, owner */ -#endif -#ifndef S_IWGRP -#define S_IWGRP 0000020 /* write permission, group */ -#endif -#ifndef S_IWOTH -#define S_IWOTH 0000002 /* write permission, other */ -#endif -#ifndef S_IXUSR -#define S_IXUSR 0000100 /* execute/search permission, owner */ -#endif -#ifndef S_IXGRP -#define S_IXGRP 0000010 /* execute/search permission, group */ -#endif -#ifndef S_IXOTH -#define S_IXOTH 0000001 /* execute/search permission, other */ -#endif -#ifndef S_IRWXU -#define S_IRWXU 0000700 /* read, write, execute permissions, owner */ -#endif -#ifndef S_IRWXG -#define S_IRWXG 0000070 /* read, write, execute permissions, group */ -#endif -#ifndef S_IRWXO -#define S_IRWXO 0000007 /* read, write, execute permissions, other */ -#endif -#ifndef S_ISBLK -#define S_ISBLK(mode) (((mode) & (0170000)) == (0060000)) -#endif -#ifndef S_ISCHR -#define S_ISCHR(mode) (((mode) & (0170000)) == (0020000)) -#endif -#ifndef S_ISDIR -#define S_ISDIR(mode) (((mode) & (0170000)) == (0040000)) -#endif -#ifndef S_ISFIFO -#define S_ISFIFO(mode) (((mode) & (0170000)) == (0010000)) -#endif -#ifndef S_ISREG -#define S_ISREG(mode) (((mode) & (0170000)) == (0100000)) -#endif -/* Do not trust WORDS_BIGENDIAN from configure since -arch compiler flag may - result in a different endian. Instead trust __BIG_ENDIAN__ and - __LITTLE_ENDIAN__ which are set correctly by -arch. */ -#undef WORDS_BIGENDIAN -#ifdef __BIG_ENDIAN__ -#define WORDS_BIGENDIAN -#endif -#ifndef __APPLE__ -/* NextStep, OpenStep (but not Rhapsody) */ -#ifndef GETPGRP_VOID -#define GETPGRP_VOID 1 -#endif -#ifndef WNOHANG -#define WNOHANG 01 -#endif -#ifndef WUNTRACED -#define WUNTRACED 02 -#endif -#ifndef X_OK -#define X_OK 1 -#endif -#endif /* __APPLE__ */ -#endif /* NeXT */ - -#ifdef _WIN32 -#include "win32/win32.h" -#endif - -#if defined(__VMS) -#include "vms/vms.h" -#endif - -#if defined(__BEOS__) -#include /* intern.h needs fd_set definition */ -#endif - -#ifdef RUBY_EXPORT -#undef RUBY_EXTERN -#endif - -#ifndef RUBY_EXTERN -#define RUBY_EXTERN extern -#endif - -#ifndef EXTERN -#define EXTERN RUBY_EXTERN /* deprecated */ -#endif - -#ifndef RUBY_MBCHAR_MAXSIZE -#define RUBY_MBCHAR_MAXSIZE INT_MAX - /* MB_CUR_MAX will not work well in C locale */ -#endif - -#if defined(sparc) || defined(__sparc__) -static inline void -flush_register_windows(void) -{ - asm -#ifdef __GNUC__ - volatile -#endif -# if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__) - ("flushw") -# elif defined(linux) || defined(__linux__) - ("ta 0x83") -# else /* Solaris, OpenBSD, NetBSD, etc. */ - ("ta 0x03") -# endif /* trap always to flush register windows if we are on a Sparc system */ - ; -} -# define FLUSH_REGISTER_WINDOWS flush_register_windows() -#elif defined(__ia64) -void *rb_ia64_bsp(void); -void rb_ia64_flushrs(void); -# define FLUSH_REGISTER_WINDOWS rb_ia64_flushrs() -#else -# define FLUSH_REGISTER_WINDOWS ((void)0) -#endif - -#if defined(DOSISH) -#define PATH_SEP ";" -#elif defined(riscos) -#define PATH_SEP "," -#else -#define PATH_SEP ":" -#endif -#define PATH_SEP_CHAR PATH_SEP[0] - -#if defined(__human68k__) -#define PATH_ENV "path" -#else -#define PATH_ENV "PATH" -#endif - -#if defined(DOSISH) && !defined(__human68k__) && !defined(__EMX__) -#define ENV_IGNORECASE -#endif - -#ifndef DLEXT_MAXLEN -#define DLEXT_MAXLEN 4 -#endif - -#ifndef RUBY_PLATFORM -#define RUBY_PLATFORM "unknown-unknown" -#endif - -#endif diff --git a/dir.c b/dir.c index d0af80447..ecffc37f9 100644 --- a/dir.c +++ b/dir.c @@ -12,7 +12,7 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" #include #include @@ -61,7 +61,7 @@ char *strchr(char*,char); #include -#include "util.h" +#include "ruby/util.h" #if !defined HAVE_LSTAT && !defined lstat #define lstat stat diff --git a/dln.c b/dln.c index 3dce788c3..1e953990d 100644 --- a/dln.c +++ b/dln.c @@ -10,7 +10,7 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" #include "dln.h" #ifdef HAVE_STDLIB_H @@ -182,8 +182,8 @@ static int dln_init_p = 0; #define INVALID_OBJECT(h) (N_MAGIC(h) != OMAGIC) -#include "util.h" -#include "st.h" +#include "ruby/util.h" +#include "ruby/st.h" static st_table *sym_tbl; static st_table *undef_tbl; diff --git a/enum.c b/enum.c index f4c649550..c251141dd 100644 --- a/enum.c +++ b/enum.c @@ -10,9 +10,9 @@ **********************************************************************/ -#include "ruby.h" -#include "node.h" -#include "util.h" +#include "ruby/ruby.h" +#include "ruby/node.h" +#include "ruby/util.h" VALUE rb_mEnumerable; static ID id_each, id_eqq, id_cmp; diff --git a/enumerator.c b/enumerator.c index 83cdff9c5..d3bb17347 100644 --- a/enumerator.c +++ b/enumerator.c @@ -12,7 +12,7 @@ ************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" /* * Document-class: Enumerable::Enumerator diff --git a/error.c b/error.c index c50668a69..283e9c856 100644 --- a/error.c +++ b/error.c @@ -10,8 +10,8 @@ **********************************************************************/ -#include "ruby.h" -#include "st.h" +#include "ruby/ruby.h" +#include "ruby/st.h" #include "yarvcore.h" #include diff --git a/eval_intern.h b/eval_intern.h index 3c67ddc2f..f17f829f1 100644 --- a/eval_intern.h +++ b/eval_intern.h @@ -6,10 +6,10 @@ (GET_THREAD()->passed_block = \ GC_GUARDED_PTR_REF((rb_block_t *)GET_THREAD()->cfp->lfp[0])) -#include "ruby.h" -#include "node.h" -#include "util.h" -#include "rubysig.h" +#include "ruby/ruby.h" +#include "ruby/node.h" +#include "ruby/util.h" +#include "ruby/signal.h" #include "yarvcore.h" #ifdef HAVE_STDLIB_H @@ -25,7 +25,7 @@ #include #include -#include "st.h" +#include "ruby/st.h" #include "dln.h" #ifdef __APPLE__ diff --git a/ext/bigdecimal/bigdecimal.c b/ext/bigdecimal/bigdecimal.c index a4b769e8c..c9e7ceb2e 100644 --- a/ext/bigdecimal/bigdecimal.c +++ b/ext/bigdecimal/bigdecimal.c @@ -13,7 +13,7 @@ * */ -#include "ruby.h" +#include "ruby/ruby.h" #include #include #include @@ -22,7 +22,6 @@ #include #include #include "math.h" -#include "version.h" /* #define ENABLE_NUMERIC_STRING */ diff --git a/ext/digest/extconf.rb b/ext/digest/extconf.rb index cf9127ecc..a20ca8d68 100644 --- a/ext/digest/extconf.rb +++ b/ext/digest/extconf.rb @@ -4,7 +4,7 @@ require "mkmf" $INSTALLFILES = { - "digest.h" => "$(RUBYARCHDIR)" + "digest.h" => "$(HDRDIR)" } create_makefile("digest") diff --git a/ext/dl/cptr.c b/ext/dl/cptr.c index abfd9e8d1..74a233b52 100644 --- a/ext/dl/cptr.c +++ b/ext/dl/cptr.c @@ -2,10 +2,9 @@ * $Id$ */ -#include -#include +#include +#include #include -#include /* for ruby version code */ #include "dl.h" VALUE rb_cDLCPtr; @@ -421,7 +420,7 @@ rb_dlptr_s_to_ptr(VALUE self, VALUE val) rb_io_t *fptr; FILE *fp; GetOpenFile(val, fptr); -#if RUBY_VERSION_CODE >= 190 +#if HAVE_RB_IO_STDIO_FILE fp = rb_io_stdio_file(fptr); #else fp = fptr->f; diff --git a/ext/dl/dl.c b/ext/dl/dl.c index 015e76f09..e4bd4d41e 100644 --- a/ext/dl/dl.c +++ b/ext/dl/dl.c @@ -1,6 +1,5 @@ -#include -#include -#include +#include +#include #include #include "dl.h" diff --git a/ext/dl/extconf.rb b/ext/dl/extconf.rb index 99419b2d7..8bac1e83f 100644 --- a/ext/dl/extconf.rb +++ b/ext/dl/extconf.rb @@ -5,7 +5,7 @@ if( RbConfig::CONFIG['CC'] =~ /gcc/ ) end $INSTALLFILES = [ - ["dl.h", "$(archdir)$(target_prefix)", ""], + ["dl.h", "$(HDRDIR)"], ] $distcleanfiles << "callback.h" @@ -26,5 +26,7 @@ else end if( check ) + have_func("rb_io_stdio_file", "ruby/ruby.h") + $defs << %[-DRUBY_VERSION=\\"#{RUBY_VERSION}\\"] create_makefile("dl") end diff --git a/ext/extmk.rb b/ext/extmk.rb index a932a1441..d4be9fc53 100644 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -112,10 +112,12 @@ def extmake(target) Dir.chdir target top_srcdir = $top_srcdir topdir = $topdir + hdrdir = $hdrdir mk_srcdir = CONFIG["srcdir"] mk_topdir = CONFIG["topdir"] prefix = "../" * (target.count("/")+1) - $hdrdir = $top_srcdir = relative_from(top_srcdir, prefix) + $top_srcdir = relative_from(top_srcdir, prefix) + $hdrdir = relative_from(hdrdir, prefix) $topdir = prefix + $topdir $target = target $mdir = target @@ -130,8 +132,8 @@ def extmake(target) RbConfig::CONFIG["hdrdir"] = $hdrdir RbConfig::CONFIG["srcdir"] = $srcdir RbConfig::CONFIG["topdir"] = $topdir - CONFIG["hdrdir"] = ($hdrdir == top_srcdir) ? top_srcdir : "$(topdir)"+top_srcdir[2..-1] - CONFIG["srcdir"] = "$(hdrdir)/ext/#{$mdir}" + CONFIG["hdrdir"] = ($hdrdir == top_srcdir) ? top_srcdir : "$(top_srcdir)/include" + CONFIG["srcdir"] = "$(top_srcdir)/ext/#{$mdir}" CONFIG["topdir"] = $topdir begin $extconf_h = nil @@ -200,8 +202,9 @@ def extmake(target) CONFIG["srcdir"] = mk_srcdir CONFIG["topdir"] = mk_topdir CONFIG.delete("hdrdir") - $hdrdir = $top_srcdir = top_srcdir + $top_srcdir = top_srcdir $topdir = topdir + $hdrdir = hdrdir Dir.chdir dir end begin @@ -284,6 +287,7 @@ def parse_args() $continue = $mflags.set?(?k) if $extout $extout = '$(topdir)/'+$extout + RbConfig::CONFIG["extout"] = CONFIG["extout"] = $extout $extout_prefix = $extout ? "$(extout)$(target_prefix)/" : "" $mflags << "extout=#$extout" << "extout_prefix=#$extout_prefix" end @@ -322,10 +326,10 @@ elsif sep = config_string('BUILD_FILE_SEPARATOR') else $ruby = '$(topdir)/miniruby' + EXEEXT end -$ruby << " -I'$(topdir)' -I'$(hdrdir)/lib'" +$ruby << " -I'$(topdir)' -I'$(top_srcdir)/lib'" $ruby << " -I'$(extout)/$(arch)' -I'$(extout)/common'" if $extout -$ruby << " -I'$(hdrdir)/ext' -rpurelib.rb" -$config_h = '$(topdir)/config.h' +$ruby << " -I'$(top_srcdir)/ext' -rpurelib.rb" +$config_h = '$(arch_hdrdir)/ruby/config.h' ENV["RUBYLIB"] = "-" ENV["RUBYOPT"] = "-rpurelib.rb" @@ -404,12 +408,14 @@ dir = Dir.pwd FileUtils::makedirs('ext') Dir::chdir('ext') -$hdrdir = $top_srcdir = relative_from(srcdir, $topdir = "..") +hdrdir = $hdrdir +$hdrdir = ($top_srcdir = relative_from(srcdir, $topdir = "..")) + "/include" exts.each do |d| extmake(d) or abort end -$hdrdir = $top_srcdir = srcdir +$top_srcdir = srcdir $topdir = "." +$hdrdir = hdrdir extinit = Struct.new(:c, :o) { def initialize(src) diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index 27a4cf102..b6bc0a11a 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -14,12 +14,12 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" #include #include #include -#include "st.h" -#include "intern.h" +#include "ruby/st.h" +#include "ruby/intern.h" /* * Document-class: Iconv diff --git a/ext/json/ext/generator/generator.c b/ext/json/ext/generator/generator.c index 60e09355f..07e348aa1 100644 --- a/ext/json/ext/generator/generator.c +++ b/ext/json/ext/generator/generator.c @@ -1,8 +1,8 @@ /* vim: set cin et sw=4 ts=4: */ #include -#include "ruby.h" -#include "st.h" +#include "ruby/ruby.h" +#include "ruby/st.h" #include "unicode.h" static VALUE mJSON, mExt, mGenerator, cState, mGeneratorMethods, mObject, diff --git a/ext/json/ext/parser/parser.c b/ext/json/ext/parser/parser.c index 7448e5fb7..3b8411037 100644 --- a/ext/json/ext/parser/parser.c +++ b/ext/json/ext/parser/parser.c @@ -1,9 +1,9 @@ #line 1 "parser.rl" -/* vim: set cin et sw=4 ts=4: */ +/* -*-c-*- vim: set cin et sw=4 ts=4: */ -#include "ruby.h" -#include "re.h" -#include "st.h" +#include "ruby/ruby.h" +#include "ruby/re.h" +#include "ruby/st.h" #include "unicode.h" #define EVIL 0x666 diff --git a/ext/json/ext/parser/parser.rl b/ext/json/ext/parser/parser.rl index 9ce8c6fc2..9e2a5015e 100644 --- a/ext/json/ext/parser/parser.rl +++ b/ext/json/ext/parser/parser.rl @@ -1,8 +1,8 @@ -/* vim: set cin et sw=4 ts=4: */ +/* -*-c-*- vim: set cin et sw=4 ts=4: */ -#include "ruby.h" -#include "re.h" -#include "st.h" +#include "ruby/ruby.h" +#include "ruby/re.h" +#include "ruby/st.h" #include "unicode.h" #define EVIL 0x666 diff --git a/ext/openssl/extconf.rb b/ext/openssl/extconf.rb index bc3f4fd2e..9356853e1 100644 --- a/ext/openssl/extconf.rb +++ b/ext/openssl/extconf.rb @@ -19,6 +19,8 @@ require "mkmf" dir_config("openssl") dir_config("kerberos") +$defs << "-DRUBY_VERSION_CODE=#{RUBY_VERSION.gsub(/\D/, '')}" + message "=== OpenSSL for Ruby configurator ===\n" ## diff --git a/ext/probeprofiler/extconf.rb b/ext/probeprofiler/extconf.rb index 31cfc85c0..da94e654d 100644 --- a/ext/probeprofiler/extconf.rb +++ b/ext/probeprofiler/extconf.rb @@ -1,2 +1,4 @@ require 'mkmf' +$VPATH << "$(top_srcdir)" +$INCFLAGS << " -I$(top_srcdir)" create_makefile("probeprofiler") diff --git a/ext/probeprofiler/probeprofiler.c b/ext/probeprofiler/probeprofiler.c index 9ffb20367..fba4d85f4 100644 --- a/ext/probeprofiler/probeprofiler.c +++ b/ext/probeprofiler/probeprofiler.c @@ -1,4 +1,4 @@ -#include +#include #include static void diff --git a/ext/pty/pty.c b/ext/pty/pty.c index 5847aff2b..d89cc7d45 100644 --- a/ext/pty/pty.c +++ b/ext/pty/pty.c @@ -1,4 +1,4 @@ -#include "config.h" +#include "ruby/config.h" #ifdef RUBY_EXTCONF_H #include RUBY_EXTCONF_H #endif @@ -25,9 +25,9 @@ #endif #include -#include "ruby.h" -#include "rubyio.h" -#include "util.h" +#include "ruby/ruby.h" +#include "ruby/io.h" +#include "ruby/util.h" #include #ifdef HAVE_SYS_STROPTS_H @@ -192,7 +192,7 @@ pty_exec(VALUE v) static void establishShell(int argc, VALUE *argv, struct pty_info *info) { - int i,master,slave; + int master,slave; rb_pid_t pid; char *p,*getenv(); struct passwd *pwent; @@ -240,9 +240,9 @@ establishShell(int argc, VALUE *argv, struct pty_info *info) # else /* SETGRP_VOID */ if (setpgrp(0, getpid()) == -1) rb_sys_fail("setpgrp()"); - if ((i = open("/dev/tty", O_RDONLY)) < 0) - rb_sys_fail("/dev/tty"); - else { + { + int i = open("/dev/tty", O_RDONLY); + if (i < 0) rb_sys_fail("/dev/tty"); if (ioctl(i, TIOCNOTTY, (char *)0)) perror("ioctl(TIOCNOTTY)"); close(i); diff --git a/ext/racc/cparse/cparse.c b/ext/racc/cparse/cparse.c index e52d0da80..d085158f1 100644 --- a/ext/racc/cparse/cparse.c +++ b/ext/racc/cparse/cparse.c @@ -11,8 +11,7 @@ */ -#include "ruby.h" -#include "version.h" +#include "ruby/ruby.h" /* ----------------------------------------------------------------------- Important Constants @@ -65,9 +64,6 @@ static ID id_d_e_pop; #ifndef LONG2NUM # define LONG2NUM(i) INT2NUM(i) #endif -#if RUBY_VERSION_CODE >= 190 -# define HAVE_RB_BLOCK_CALL 1 -#endif static ID value_to_id _((VALUE v)); static inline long num_to_long _((VALUE n)); diff --git a/ext/racc/cparse/extconf.rb b/ext/racc/cparse/extconf.rb index dd953a7e1..3710f6f7e 100644 --- a/ext/racc/cparse/extconf.rb +++ b/ext/racc/cparse/extconf.rb @@ -1,4 +1,5 @@ # $Id$ require 'mkmf' +have_func('rb_block_call', 'ruby/ruby.h') create_makefile 'racc/cparse' diff --git a/ext/readline/readline.c b/ext/readline/readline.c index 12837b5ac..169a19616 100644 --- a/ext/readline/readline.c +++ b/ext/readline/readline.c @@ -5,7 +5,7 @@ #include RUBY_EXTCONF_H #endif -#include "config.h" +#include "ruby/config.h" #include #include #include @@ -20,9 +20,9 @@ #include #endif -#include "ruby.h" -#include "rubyio.h" -#include "rubysig.h" +#include "ruby/ruby.h" +#include "ruby/io.h" +#include "ruby/signal.h" #ifdef HAVE_UNISTD_H #include diff --git a/ext/ripper/depend b/ext/ripper/depend index bd0f8010c..f74f7f0fe 100644 --- a/ext/ripper/depend +++ b/ext/ripper/depend @@ -1,11 +1,11 @@ GEN = $(srcdir)/tools/generate.rb -SRC1 = $(hdrdir)/parse.y +SRC1 = $(top_srcdir)/parse.y SRC2 = $(srcdir)/eventids2.c BISON = bison src: ripper.c eventids1.c eventids2table.c -ripper.o: ripper.c $(topdir)/lex.c eventids1.c $(srcdir)/eventids2.c eventids2table.c +ripper.o: ripper.c lex.c eventids1.c eventids2.c eventids2table.c .y.c: $(BISON) -t -v -o$@ $< @@ -13,8 +13,8 @@ ripper.o: ripper.c $(topdir)/lex.c eventids1.c $(srcdir)/eventids2.c eventids2ta all: check static: check -ripper.y: $(srcdir)/tools/preproc.rb $(hdrdir)/parse.y - $(RUBY) $(srcdir)/tools/preproc.rb $(hdrdir)/parse.y --output=$@ +ripper.y: $(srcdir)/tools/preproc.rb $(top_srcdir)/parse.y + $(RUBY) $(srcdir)/tools/preproc.rb $(top_srcdir)/parse.y --output=$@ check: $(GEN) $(SRC1) $(SRC2) $(RUBY) $(GEN) --mode=check --ids1src=$(SRC1) --ids2src=$(SRC2) diff --git a/ext/ripper/extconf.rb b/ext/ripper/extconf.rb index 6b4407330..a41a6af2d 100644 --- a/ext/ripper/extconf.rb +++ b/ext/ripper/extconf.rb @@ -12,8 +12,10 @@ def main end $objs = %w(ripper.o) $cleanfiles.concat %w(ripper.y ripper.c ripper.E ripper.output eventids1.c eventids2table.c) - $CPPFLAGS += ' -DRIPPER' - $CPPFLAGS += ' -DRIPPER_DEBUG' if $debug + $defs << '-DRIPPER' + $defs << '-DRIPPER_DEBUG' if $debug + $VPATH << '$(topdir)' << '$(top_srcdir)' + $INCFLAGS << ' -I$(topdir) -I$(top_srcdir)' create_makefile 'ripper' end diff --git a/ext/sdbm/_sdbm.c b/ext/sdbm/_sdbm.c index f9a588862..7fdeb0dbd 100644 --- a/ext/sdbm/_sdbm.c +++ b/ext/sdbm/_sdbm.c @@ -12,7 +12,7 @@ #endif #include "sdbm.h" -#include "config.h" +#include "ruby/config.h" /* * sdbm - ndbm work-alike hashed database library diff --git a/ext/socket/depend b/ext/socket/depend index 77d5b6655..7577a6929 100644 --- a/ext/socket/depend +++ b/ext/socket/depend @@ -1,6 +1,8 @@ -socket.o: socket.c $(hdrdir)/ruby.h $(topdir)/config.h $(hdrdir)/defines.h $(hdrdir)/rubyio.h $(hdrdir)/rubysig.h sockport.h constants.h -getnameinfo.o: getnameinfo.c $(topdir)/config.h addrinfo.h sockport.h -getaddrinfo.o: getaddrinfo.c $(topdir)/config.h addrinfo.h sockport.h +socket.o: socket.c $(hdrdir)/ruby/ruby.h $(arch_hdrdir)/ruby/config.h \ + $(hdrdir)/ruby/defines.h $(hdrdir)/ruby/io.h $(hdrdir)/ruby/signal.h \ + sockport.h constants.h +getnameinfo.o: getnameinfo.c $(arch_hdrdir)/ruby/config.h addrinfo.h sockport.h +getaddrinfo.o: getaddrinfo.c $(arch_hdrdir)/ruby/config.h addrinfo.h sockport.h constants.h: $(srcdir)/mkconstants.rb @echo "generating constants.h" diff --git a/ext/socket/getaddrinfo.c b/ext/socket/getaddrinfo.c index 49fdf9b59..d97012a3c 100644 --- a/ext/socket/getaddrinfo.c +++ b/ext/socket/getaddrinfo.c @@ -38,7 +38,7 @@ * - PF_UNSPEC case would be handled in getipnodebyname() with the AI_ALL flag. */ -#include "config.h" +#include "ruby/config.h" #include #ifndef _WIN32 #include diff --git a/ext/socket/getnameinfo.c b/ext/socket/getnameinfo.c index 91e18e916..dcfdc6b35 100644 --- a/ext/socket/getnameinfo.c +++ b/ext/socket/getnameinfo.c @@ -34,7 +34,7 @@ * but INRIA implementation returns EAI_xxx defined for getaddrinfo(). */ -#include "config.h" +#include "ruby/config.h" #include #ifndef _WIN32 #if defined(__BEOS__) diff --git a/ext/socket/socket.c b/ext/socket/socket.c index a69baac7b..aee4b2156 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -10,10 +10,10 @@ ************************************************/ -#include "ruby.h" -#include "rubyio.h" -#include "rubysig.h" -#include "util.h" +#include "ruby/ruby.h" +#include "ruby/io.h" +#include "ruby/signal.h" +#include "ruby/util.h" #include #include diff --git a/ext/stringio/depend b/ext/stringio/depend index cc9eae3f5..a052c73de 100644 --- a/ext/stringio/depend +++ b/ext/stringio/depend @@ -1,2 +1,2 @@ -stringio.o: stringio.c $(hdrdir)/ruby.h $(topdir)/config.h \ - $(hdrdir)/defines.h $(hdrdir)/intern.h $(hdrdir)/rubyio.h +stringio.o: stringio.c $(hdrdir)/ruby/ruby.h $(arch_hdrdir)/ruby/config.h \ + $(hdrdir)/ruby/defines.h $(hdrdir)/ruby/intern.h $(hdrdir)/ruby/io.h diff --git a/ext/strscan/depend b/ext/strscan/depend index 2a4255e91..76f6e0b18 100644 --- a/ext/strscan/depend +++ b/ext/strscan/depend @@ -1,3 +1,2 @@ strscan.o: strscan.c $(hdrdir)/ruby.h $(hdrdir)/re.h $(hdrdir)/regex.h \ - $(hdrdir)/regint.h $(hdrdir)/oniguruma.h $(topdir)/config.h \ - $(hdrdir)/defines.h + $(hdrdir)/oniguruma.h $(topdir)/config.h $(hdrdir)/defines.h diff --git a/ext/strscan/strscan.c b/ext/strscan/strscan.c index f991a13ac..63a0f1185 100644 --- a/ext/strscan/strscan.c +++ b/ext/strscan/strscan.c @@ -8,8 +8,8 @@ the Ruby License. For details, see the file COPYING. */ -#include "ruby.h" -#include "re.h" +#include "ruby/ruby.h" +#include "ruby/re.h" #define STRSCAN_VERSION "0.7.0" diff --git a/ext/syck/bytecode.c b/ext/syck/bytecode.c index 567aaf52a..314ef229f 100644 --- a/ext/syck/bytecode.c +++ b/ext/syck/bytecode.c @@ -8,7 +8,7 @@ * * Copyright (C) 2003 why the lucky stiff */ -#include "ruby.h" +#include "ruby/ruby.h" #include "syck.h" #include "gram.h" diff --git a/ext/syck/emitter.c b/ext/syck/emitter.c index d3704f867..03bdaa2dd 100644 --- a/ext/syck/emitter.c +++ b/ext/syck/emitter.c @@ -9,7 +9,7 @@ * All Base64 code from Ruby's pack.c. * Ruby is Copyright (C) 1993-2003 Yukihiro Matsumoto */ -#include "ruby.h" +#include "ruby/ruby.h" #include #include diff --git a/ext/syck/handler.c b/ext/syck/handler.c index b04c4e3c0..3ff1a4e44 100644 --- a/ext/syck/handler.c +++ b/ext/syck/handler.c @@ -7,7 +7,7 @@ * Copyright (C) 2003 why the lucky stiff */ -#include "ruby.h" +#include "ruby/ruby.h" #include "syck.h" SYMID diff --git a/ext/syck/implicit.c b/ext/syck/implicit.c index cfd5d7b3e..df32d9194 100644 --- a/ext/syck/implicit.c +++ b/ext/syck/implicit.c @@ -9,7 +9,7 @@ * Copyright (C) 2003 why the lucky stiff */ -#include "ruby.h" +#include "ruby/ruby.h" #include "syck.h" #define YYCTYPE char diff --git a/ext/syck/node.c b/ext/syck/node.c index 47bce6490..99cc9c751 100644 --- a/ext/syck/node.c +++ b/ext/syck/node.c @@ -7,7 +7,7 @@ * Copyright (C) 2003 why the lucky stiff */ -#include "ruby.h" +#include "ruby/ruby.h" #include "syck.h" /* diff --git a/ext/syck/rubyext.c b/ext/syck/rubyext.c index 1966a2d33..9a41c18e8 100644 --- a/ext/syck/rubyext.c +++ b/ext/syck/rubyext.c @@ -8,7 +8,7 @@ * Copyright (C) 2003-2005 why the lucky stiff */ -#include "ruby.h" +#include "ruby/ruby.h" #include "syck.h" #include #include diff --git a/ext/syck/syck.c b/ext/syck/syck.c index bab7ee5dc..20aaecc9f 100644 --- a/ext/syck/syck.c +++ b/ext/syck/syck.c @@ -6,7 +6,7 @@ * * Copyright (C) 2003 why the lucky stiff */ -#include "ruby.h" +#include "ruby/ruby.h" #include #include diff --git a/ext/syck/syck.h b/ext/syck/syck.h index 8d878a435..0fdff8e38 100644 --- a/ext/syck/syck.h +++ b/ext/syck/syck.h @@ -18,7 +18,7 @@ #include #include -#include "st.h" +#include "ruby/st.h" #if defined(__cplusplus) extern "C" { diff --git a/ext/syck/token.c b/ext/syck/token.c index 3c6cd1a9c..0517ffc40 100644 --- a/ext/syck/token.c +++ b/ext/syck/token.c @@ -8,7 +8,7 @@ * * Copyright (C) 2003 why the lucky stiff */ -#include "ruby.h" +#include "ruby/ruby.h" #include "syck.h" #include "gram.h" diff --git a/ext/syck/yaml2byte.c b/ext/syck/yaml2byte.c index bcc428e1c..fd5caadd8 100644 --- a/ext/syck/yaml2byte.c +++ b/ext/syck/yaml2byte.c @@ -9,7 +9,7 @@ * WARNING WARNING WARNING --- THIS IS *NOT JUST* PLAYING * ANYMORE! -- WHY HAS EMBRACED THIS AS THE REAL THING! */ -#include "ruby.h" +#include "ruby/ruby.h" #include #include #define YAMLBYTE_UTF8 diff --git a/ext/syslog/syslog.c b/ext/syslog/syslog.c index d4945ae7b..4ac645969 100644 --- a/ext/syslog/syslog.c +++ b/ext/syslog/syslog.c @@ -7,8 +7,8 @@ * $Id$ */ -#include "ruby.h" -#include "util.h" +#include "ruby/ruby.h" +#include "ruby/util.h" #include /* Syslog class */ diff --git a/ext/tk/extconf.rb b/ext/tk/extconf.rb index 5ed86a8b7..123899043 100644 --- a/ext/tk/extconf.rb +++ b/ext/tk/extconf.rb @@ -307,6 +307,8 @@ if tcltk_framework || $INSTALLFILES << ["lib/tkextlib/SUPPORT_STATUS", "$(RUBYLIBDIR)", "lib"] # create + $defs << %[-DRUBY_VERSION=\\"#{RUBY_VERSION}\\"] + $defs << %[-DRUBY_RELEASE_DATE=\\"#{RUBY_RELEASE_DATE}\\"] create_makefile("tcltklib") end end diff --git a/ext/tk/stubs.c b/ext/tk/stubs.c index 426505f3a..d0aaf61f3 100644 --- a/ext/tk/stubs.c +++ b/ext/tk/stubs.c @@ -1,5 +1,5 @@ #include "stubs.h" -#include "ruby.h" +#include "ruby/ruby.h" #include #include diff --git a/ext/tk/tcltklib.c b/ext/tk/tcltklib.c index 498944d45..4f779c731 100644 --- a/ext/tk/tcltklib.c +++ b/ext/tk/tcltklib.c @@ -6,9 +6,8 @@ #define TCLTKLIB_RELEASE_DATE "2006-12-01" -#include "ruby.h" -#include "rubysig.h" -#include "version.h" +#include "ruby/ruby.h" +#include "ruby/signal.h" #undef EXTERN /* avoid conflict with tcl.h of tcl8.2 or before */ #include #ifdef HAVE_STDARG_PROTOTYPES diff --git a/ext/tk/tkutil/extconf.rb b/ext/tk/tkutil/extconf.rb index dd00d5d53..51f775619 100644 --- a/ext/tk/tkutil/extconf.rb +++ b/ext/tk/tkutil/extconf.rb @@ -7,5 +7,6 @@ end if has_tk require 'mkmf' + have_func("rb_obj_instance_exec", "ruby.h") create_makefile('tkutil') end diff --git a/ext/tk/tkutil/tkutil.c b/ext/tk/tkutil/tkutil.c index 0b2597ec1..25c4af742 100644 --- a/ext/tk/tkutil/tkutil.c +++ b/ext/tk/tkutil/tkutil.c @@ -10,10 +10,9 @@ #define TKUTIL_RELEASE_DATE "2006-04-06" -#include "ruby.h" -#include "rubysig.h" -#include "version.h" -#include "st.h" +#include "ruby/ruby.h" +#include "ruby/signal.h" +#include "ruby/st.h" static VALUE cMethod; @@ -59,7 +58,7 @@ tk_s_new(argc, argv, klass) VALUE obj = rb_class_new_instance(argc, argv, klass); if (rb_block_given_p()) { -#if RUBY_VERSION_MAJOR == 1 && RUBY_VERSION_MINOR <= 8 /* ruby 1.8.x */ +#ifndef HAVE_RB_OBJ_INSTANCE_EXEC rb_obj_instance_eval(0, 0, obj); #else rb_obj_instance_exec(1, &obj, obj); diff --git a/ext/win32ole/win32ole.c b/ext/win32ole/win32ole.c index c63401a7c..5b3189831 100644 --- a/ext/win32ole/win32ole.c +++ b/ext/win32ole/win32ole.c @@ -16,8 +16,8 @@ modified for win32ole (ruby) by Masaki.Suketa */ -#include "ruby.h" -#include "st.h" +#include "ruby/ruby.h" +#include "ruby/st.h" #include #include #include @@ -1076,8 +1076,8 @@ ole_set_safe_array(long n, SAFEARRAY *psa, long *pid, long *pub, VALUE val, long val1 = ole_ary_m_entry(val, pid); p = val2variant_ptr(val1, &var, vt); if (is_all_index_under(pid, pub, dim) == Qtrue) { - if (V_VT(&var) == VT_DISPATCH && V_DISPATCH(&var) == NULL || - V_VT(&var) == VT_UNKNOWN && V_UNKNOWN(&var) == NULL) { + if ((V_VT(&var) == VT_DISPATCH && V_DISPATCH(&var) == NULL) || + (V_VT(&var) == VT_UNKNOWN && V_UNKNOWN(&var) == NULL)) { rb_raise(eWIN32OLERuntimeError, "argument does not have IDispatch or IUnknown Interface"); } hr = SafeArrayPutElement(psa, pid, p); @@ -2669,7 +2669,7 @@ fole_s_set_locale(VALUE self, VALUE vlcid) cWIN32OLE_lcid = lcid; break; default: - rb_raise(eWIN32OLERuntimeError, "not installed locale: %d", lcid); + rb_raise(eWIN32OLERuntimeError, "not installed locale: %u", (unsigned int)lcid); } } return Qnil; @@ -7827,7 +7827,6 @@ folevariant_ary_aset(int argc, VALUE *argv, VALUE self) { struct olevariantdata *pvar; SAFEARRAY *psa; - VALUE val = Qnil; VARIANT var; VARTYPE vt; long *pid; @@ -7849,8 +7848,8 @@ folevariant_ary_aset(int argc, VALUE *argv, VALUE self) VariantInit(&var); vt = (V_VT(&(pvar->var)) & ~VT_ARRAY); p = val2variant_ptr(argv[argc-1], &var, vt); - if (V_VT(&var) == VT_DISPATCH && V_DISPATCH(&var) == NULL || - V_VT(&var) == VT_UNKNOWN && V_UNKNOWN(&var) == NULL) { + if ((V_VT(&var) == VT_DISPATCH && V_DISPATCH(&var) == NULL) || + (V_VT(&var) == VT_UNKNOWN && V_UNKNOWN(&var) == NULL)) { rb_raise(eWIN32OLERuntimeError, "argument does not have IDispatch or IUnknown Interface"); } hr = SafeArrayPutElement(psa, pid, p); diff --git a/file.c b/file.c index 54822a85a..ed682a0b8 100644 --- a/file.c +++ b/file.c @@ -16,10 +16,10 @@ #include "missing/file.h" #endif -#include "ruby.h" -#include "rubyio.h" -#include "rubysig.h" -#include "util.h" +#include "ruby/ruby.h" +#include "ruby/io.h" +#include "ruby/signal.h" +#include "ruby/util.h" #include "dln.h" #ifdef HAVE_UNISTD_H diff --git a/gc.c b/gc.c index 91340475e..4ea96efe2 100644 --- a/gc.c +++ b/gc.c @@ -12,11 +12,11 @@ **********************************************************************/ -#include "ruby.h" -#include "rubysig.h" -#include "st.h" -#include "node.h" -#include "re.h" +#include "ruby/ruby.h" +#include "ruby/signal.h" +#include "ruby/st.h" +#include "ruby/node.h" +#include "ruby/re.h" #include "yarvcore.h" #include "gc.h" #include diff --git a/hash.c b/hash.c index 5f578fa29..3f27a0c63 100644 --- a/hash.c +++ b/hash.c @@ -12,10 +12,10 @@ **********************************************************************/ -#include "ruby.h" -#include "st.h" -#include "util.h" -#include "rubysig.h" +#include "ruby/ruby.h" +#include "ruby/st.h" +#include "ruby/util.h" +#include "ruby/signal.h" #ifdef __APPLE__ #include diff --git a/include/ruby.h b/include/ruby.h new file mode 100644 index 000000000..b1fb46c89 --- /dev/null +++ b/include/ruby.h @@ -0,0 +1 @@ +#include diff --git a/include/ruby/defines.h b/include/ruby/defines.h new file mode 100644 index 000000000..81f2ef45e --- /dev/null +++ b/include/ruby/defines.h @@ -0,0 +1,284 @@ +/************************************************ + + defines.h - + + $Author$ + $Date$ + created at: Wed May 18 00:21:44 JST 1994 + +************************************************/ + +#ifndef RUBY_DEFINES_H +#define RUBY_DEFINES_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#define RUBY + +#include +#ifdef __cplusplus +# ifndef HAVE_PROTOTYPES +# define HAVE_PROTOTYPES 1 +# endif +# ifndef HAVE_STDARG_PROTOTYPES +# define HAVE_STDARG_PROTOTYPES 1 +# endif +#endif + +#undef _ +#ifdef HAVE_PROTOTYPES +# define _(args) args +#else +# define _(args) () +#endif + +#undef __ +#ifdef HAVE_STDARG_PROTOTYPES +# define __(args) args +#else +# define __(args) () +#endif + +#ifdef __cplusplus +#define ANYARGS ... +#else +#define ANYARGS +#endif + +#define xmalloc ruby_xmalloc +#define xmalloc2 ruby_xmalloc2 +#define xcalloc ruby_xcalloc +#define xrealloc ruby_xrealloc +#define xrealloc2 ruby_xrealloc2 +#define xfree ruby_xfree + +void *xmalloc(size_t); +void *xmalloc2(size_t,size_t); +void *xcalloc(size_t,size_t); +void *xrealloc(void*,size_t); +void *xrealloc2(void*,size_t,size_t); +void xfree(void*); + +#if SIZEOF_LONG_LONG > 0 +# define LONG_LONG long long +#elif SIZEOF___INT64 > 0 +# define HAVE_LONG_LONG 1 +# define LONG_LONG __int64 +# undef SIZEOF_LONG_LONG +# define SIZEOF_LONG_LONG SIZEOF___INT64 +#endif + +#if SIZEOF_INT*2 <= SIZEOF_LONG_LONG +# define BDIGIT unsigned int +# define SIZEOF_BDIGITS SIZEOF_INT +# define BDIGIT_DBL unsigned LONG_LONG +# define BDIGIT_DBL_SIGNED LONG_LONG +#elif SIZEOF_INT*2 <= SIZEOF_LONG +# define BDIGIT unsigned int +# define SIZEOF_BDIGITS SIZEOF_INT +# define BDIGIT_DBL unsigned long +# define BDIGIT_DBL_SIGNED long +#elif SIZEOF_SHORT*2 <= SIZEOF_LONG +# define BDIGIT unsigned short +# define SIZEOF_BDIGITS SIZEOF_SHORT +# define BDIGIT_DBL unsigned long +# define BDIGIT_DBL_SIGNED long +#else +# define BDIGIT unsigned short +# define SIZEOF_BDIGITS (SIZEOF_LONG/2) +# define BDIGIT_DBL unsigned long +# define BDIGIT_DBL_SIGNED long +#endif + +#ifdef __CYGWIN__ +#undef _WIN32 +#endif + +#if defined(MSDOS) || defined(_WIN32) || defined(__human68k__) || defined(__EMX__) +#define DOSISH 1 +#ifndef _WIN32_WCE +# define DOSISH_DRIVE_LETTER +#endif +#endif + +/* define RUBY_USE_EUC/SJIS for default kanji-code */ +#ifndef DEFAULT_KCODE +#if defined(DOSISH) || defined(__CYGWIN__) || defined(__MACOS__) || defined(OS2) +#define DEFAULT_KCODE KCODE_SJIS +#else +#define DEFAULT_KCODE KCODE_EUC +#endif +#endif + +#ifdef __NeXT__ +/* NextStep, OpenStep, Rhapsody */ +#ifndef S_IRUSR +#define S_IRUSR 0000400 /* read permission, owner */ +#endif +#ifndef S_IRGRP +#define S_IRGRP 0000040 /* read permission, group */ +#endif +#ifndef S_IROTH +#define S_IROTH 0000004 /* read permission, other */ +#endif +#ifndef S_IWUSR +#define S_IWUSR 0000200 /* write permission, owner */ +#endif +#ifndef S_IWGRP +#define S_IWGRP 0000020 /* write permission, group */ +#endif +#ifndef S_IWOTH +#define S_IWOTH 0000002 /* write permission, other */ +#endif +#ifndef S_IXUSR +#define S_IXUSR 0000100 /* execute/search permission, owner */ +#endif +#ifndef S_IXGRP +#define S_IXGRP 0000010 /* execute/search permission, group */ +#endif +#ifndef S_IXOTH +#define S_IXOTH 0000001 /* execute/search permission, other */ +#endif +#ifndef S_IRWXU +#define S_IRWXU 0000700 /* read, write, execute permissions, owner */ +#endif +#ifndef S_IRWXG +#define S_IRWXG 0000070 /* read, write, execute permissions, group */ +#endif +#ifndef S_IRWXO +#define S_IRWXO 0000007 /* read, write, execute permissions, other */ +#endif +#ifndef S_ISBLK +#define S_ISBLK(mode) (((mode) & (0170000)) == (0060000)) +#endif +#ifndef S_ISCHR +#define S_ISCHR(mode) (((mode) & (0170000)) == (0020000)) +#endif +#ifndef S_ISDIR +#define S_ISDIR(mode) (((mode) & (0170000)) == (0040000)) +#endif +#ifndef S_ISFIFO +#define S_ISFIFO(mode) (((mode) & (0170000)) == (0010000)) +#endif +#ifndef S_ISREG +#define S_ISREG(mode) (((mode) & (0170000)) == (0100000)) +#endif +/* Do not trust WORDS_BIGENDIAN from configure since -arch compiler flag may + result in a different endian. Instead trust __BIG_ENDIAN__ and + __LITTLE_ENDIAN__ which are set correctly by -arch. */ +#undef WORDS_BIGENDIAN +#ifdef __BIG_ENDIAN__ +#define WORDS_BIGENDIAN +#endif +#ifndef __APPLE__ +/* NextStep, OpenStep (but not Rhapsody) */ +#ifndef GETPGRP_VOID +#define GETPGRP_VOID 1 +#endif +#ifndef WNOHANG +#define WNOHANG 01 +#endif +#ifndef WUNTRACED +#define WUNTRACED 02 +#endif +#ifndef X_OK +#define X_OK 1 +#endif +#endif /* __APPLE__ */ +#endif /* NeXT */ + +#ifdef _WIN32 +#include "ruby/win32.h" +#endif + +#if defined(__VMS) +#include "vms/vms.h" +#endif + +#if defined(__BEOS__) +#include /* intern.h needs fd_set definition */ +#endif + +#ifdef RUBY_EXPORT +#undef RUBY_EXTERN +#endif + +#ifndef RUBY_EXTERN +#define RUBY_EXTERN extern +#endif + +#ifndef EXTERN +#define EXTERN RUBY_EXTERN /* deprecated */ +#endif + +#ifndef RUBY_MBCHAR_MAXSIZE +#define RUBY_MBCHAR_MAXSIZE INT_MAX + /* MB_CUR_MAX will not work well in C locale */ +#endif + +#if defined(sparc) || defined(__sparc__) +static inline void +flush_register_windows(void) +{ + asm +#ifdef __GNUC__ + volatile +#endif +# if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__) + ("flushw") +# elif defined(linux) || defined(__linux__) + ("ta 0x83") +# else /* Solaris, OpenBSD, NetBSD, etc. */ + ("ta 0x03") +# endif /* trap always to flush register windows if we are on a Sparc system */ + ; +} +# define FLUSH_REGISTER_WINDOWS flush_register_windows() +#elif defined(__ia64) +void *rb_ia64_bsp(void); +void rb_ia64_flushrs(void); +# define FLUSH_REGISTER_WINDOWS rb_ia64_flushrs() +#else +# define FLUSH_REGISTER_WINDOWS ((void)0) +#endif + +#if defined(DOSISH) +#define PATH_SEP ";" +#elif defined(riscos) +#define PATH_SEP "," +#else +#define PATH_SEP ":" +#endif +#define PATH_SEP_CHAR PATH_SEP[0] + +#if defined(__human68k__) +#define PATH_ENV "path" +#else +#define PATH_ENV "PATH" +#endif + +#if defined(DOSISH) && !defined(__human68k__) && !defined(__EMX__) +#define ENV_IGNORECASE +#endif + +#ifndef DLEXT_MAXLEN +#define DLEXT_MAXLEN 4 +#endif + +#ifndef RUBY_PLATFORM +#define RUBY_PLATFORM "unknown-unknown" +#endif + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* RUBY_DEFINES_H */ diff --git a/include/ruby/intern.h b/include/ruby/intern.h new file mode 100644 index 000000000..a74bd8ed2 --- /dev/null +++ b/include/ruby/intern.h @@ -0,0 +1,627 @@ +/********************************************************************** + + intern.h - + + $Author$ + $Date$ + created at: Thu Jun 10 14:22:17 JST 1993 + + Copyright (C) 1993-2003 Yukihiro Matsumoto + Copyright (C) 2000 Network Applied Communication Laboratory, Inc. + Copyright (C) 2000 Information-technology Promotion Agency, Japan + +**********************************************************************/ + +#ifndef RUBY_INTERN_H +#define RUBY_INTERN_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#ifdef HAVE_STDARG_PROTOTYPES +# include +#else +# include +#endif +#include + +/* + * Functions and variables that are used by more than one source file of + * the kernel. + */ + +#define ID_ALLOCATOR 1 + +/* array.c */ +void rb_mem_clear(register VALUE*, register long); +VALUE rb_assoc_new(VALUE, VALUE); +VALUE rb_check_array_type(VALUE); +VALUE rb_ary_new(void); +VALUE rb_ary_new2(long); +VALUE rb_ary_new3(long,...); +VALUE rb_ary_new4(long, const VALUE *); +void rb_ary_free(VALUE); +VALUE rb_values_new(long,...); +VALUE rb_values_new2(long, const VALUE *); +VALUE rb_values_from_ary(VALUE); +VALUE rb_ary_from_values(VALUE); +VALUE rb_ary_freeze(VALUE); +VALUE rb_ary_aref(int, VALUE*, VALUE); +void rb_ary_store(VALUE, long, VALUE); +VALUE rb_ary_dup(VALUE); +VALUE rb_ary_to_ary(VALUE); +VALUE rb_ary_to_s(VALUE); +VALUE rb_ary_push(VALUE, VALUE); +VALUE rb_ary_pop(VALUE); +VALUE rb_ary_shift(VALUE); +VALUE rb_ary_unshift(VALUE, VALUE); +VALUE rb_ary_entry(VALUE, long); +VALUE rb_ary_each(VALUE); +VALUE rb_ary_join(VALUE, VALUE); +VALUE rb_ary_print_on(VALUE, VALUE); +VALUE rb_ary_reverse(VALUE); +VALUE rb_ary_sort(VALUE); +VALUE rb_ary_sort_bang(VALUE); +VALUE rb_ary_delete(VALUE, VALUE); +VALUE rb_ary_delete_at(VALUE, long); +VALUE rb_ary_clear(VALUE); +VALUE rb_ary_plus(VALUE, VALUE); +VALUE rb_ary_concat(VALUE, VALUE); +VALUE rb_ary_assoc(VALUE, VALUE); +VALUE rb_ary_rassoc(VALUE, VALUE); +VALUE rb_ary_includes(VALUE, VALUE); +VALUE rb_ary_cmp(VALUE, VALUE); +VALUE rb_ary_replace(VALUE copy, VALUE orig); +VALUE rb_check_array_value(VALUE); +VALUE rb_get_values_at(VALUE, long, int, VALUE*, VALUE(*)(VALUE,long)); +/* bignum.c */ +VALUE rb_big_clone(VALUE); +void rb_big_2comp(VALUE); +VALUE rb_big_norm(VALUE); +VALUE rb_uint2big(VALUE); +VALUE rb_int2big(SIGNED_VALUE); +VALUE rb_uint2inum(VALUE); +VALUE rb_int2inum(SIGNED_VALUE); +VALUE rb_cstr_to_inum(const char*, int, int); +VALUE rb_str_to_inum(VALUE, int, int); +VALUE rb_cstr2inum(const char*, int); +VALUE rb_str2inum(VALUE, int); +VALUE rb_big2str(VALUE, int); +VALUE rb_big2str0(VALUE, int, int); +SIGNED_VALUE rb_big2long(VALUE); +#define rb_big2int(x) rb_big2long(x) +VALUE rb_big2ulong(VALUE); +#define rb_big2uint(x) rb_big2ulong(x) +#if HAVE_LONG_LONG +VALUE rb_ll2inum(LONG_LONG); +VALUE rb_ull2inum(unsigned LONG_LONG); +LONG_LONG rb_big2ll(VALUE); +unsigned LONG_LONG rb_big2ull(VALUE); +#endif /* HAVE_LONG_LONG */ +void rb_quad_pack(char*,VALUE); +VALUE rb_quad_unpack(const char*,int); +VALUE rb_dbl2big(double); +double rb_big2dbl(VALUE); +VALUE rb_big_cmp(VALUE, VALUE); +VALUE rb_big_eq(VALUE, VALUE); +VALUE rb_big_plus(VALUE, VALUE); +VALUE rb_big_minus(VALUE, VALUE); +VALUE rb_big_mul(VALUE, VALUE); +VALUE rb_big_div(VALUE, VALUE); +VALUE rb_big_modulo(VALUE, VALUE); +VALUE rb_big_divmod(VALUE, VALUE); +VALUE rb_big_pow(VALUE, VALUE); +VALUE rb_big_and(VALUE, VALUE); +VALUE rb_big_or(VALUE, VALUE); +VALUE rb_big_xor(VALUE, VALUE); +VALUE rb_big_lshift(VALUE, VALUE); +/* class.c */ +VALUE rb_class_boot(VALUE); +VALUE rb_class_new(VALUE); +VALUE rb_mod_init_copy(VALUE, VALUE); +VALUE rb_class_init_copy(VALUE, VALUE); +VALUE rb_singleton_class_clone(VALUE); +void rb_singleton_class_attached(VALUE,VALUE); +VALUE rb_make_metaclass(VALUE, VALUE); +void rb_check_inheritable(VALUE); +VALUE rb_class_inherited(VALUE, VALUE); +VALUE rb_define_class_id(ID, VALUE); +VALUE rb_module_new(void); +VALUE rb_define_module_id(ID); +VALUE rb_mod_included_modules(VALUE); +VALUE rb_mod_include_p(VALUE, VALUE); +VALUE rb_mod_ancestors(VALUE); +VALUE rb_class_instance_methods(int, VALUE*, VALUE); +VALUE rb_class_public_instance_methods(int, VALUE*, VALUE); +VALUE rb_class_protected_instance_methods(int, VALUE*, VALUE); +VALUE rb_class_private_instance_methods(int, VALUE*, VALUE); +VALUE rb_class_local_methods(VALUE); +VALUE rb_obj_singleton_methods(int, VALUE*, VALUE); +void rb_define_method_id(VALUE, ID, VALUE (*)(ANYARGS), int); +void rb_frozen_class_p(VALUE); +void rb_undef(VALUE, ID); +void rb_define_protected_method(VALUE, const char*, VALUE (*)(ANYARGS), int); +void rb_define_private_method(VALUE, const char*, VALUE (*)(ANYARGS), int); +void rb_define_singleton_method(VALUE, const char*, VALUE(*)(ANYARGS), int); +VALUE rb_singleton_class(VALUE); +/* compar.c */ +int rb_cmpint(VALUE, VALUE, VALUE); +NORETURN(void rb_cmperr(VALUE, VALUE)); +/* enum.c */ +/* enumerator.c */ +VALUE rb_enumeratorize(VALUE, VALUE, int, VALUE *); +#define RETURN_ENUMERATOR(obj, argc, argv) do { \ + if (!rb_block_given_p()) \ + return rb_enumeratorize(obj, ID2SYM(rb_frame_this_func()), \ + argc, argv); \ + } while (0) +/* error.c */ +RUBY_EXTERN int ruby_nerrs; +VALUE rb_exc_new(VALUE, const char*, long); +VALUE rb_exc_new2(VALUE, const char*); +VALUE rb_exc_new3(VALUE, VALUE); +PRINTF_ARGS(NORETURN(void rb_loaderror(const char*, ...)), 1, 2); +PRINTF_ARGS(NORETURN(void rb_name_error(ID, const char*, ...)), 2, 3); +NORETURN(void rb_invalid_str(const char*, const char*)); +PRINTF_ARGS(void rb_compile_error(const char*, ...), 1, 2); +PRINTF_ARGS(void rb_compile_error_append(const char*, ...), 1, 2); +NORETURN(void rb_load_fail(const char*)); +NORETURN(void rb_error_frozen(const char*)); +void rb_check_frozen(VALUE); +/* eval.c */ +#if defined(NFDBITS) && defined(HAVE_RB_FD_INIT) +typedef struct { + int maxfd; + fd_set *fdset; +} rb_fdset_t; + +void rb_fd_init(volatile rb_fdset_t *); +void rb_fd_term(rb_fdset_t *); +void rb_fd_zero(rb_fdset_t *); +void rb_fd_set(int, rb_fdset_t *); +void rb_fd_clr(int, rb_fdset_t *); +int rb_fd_isset(int, const rb_fdset_t *); +void rb_fd_copy(rb_fdset_t *, const fd_set *, int); +int rb_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *); + +#define rb_fd_ptr(f) ((f)->fdset) +#define rb_fd_max(f) ((f)->maxfd) + +#else + +typedef fd_set rb_fdset_t; +#define rb_fd_zero(f) FD_ZERO(f) +#define rb_fd_set(n, f) FD_SET(n, f) +#define rb_fd_clr(n, f) FD_CLR(n, f) +#define rb_fd_isset(n, f) FD_ISSET(n, f) +#define rb_fd_copy(d, s, n) (*(d) = *(s)) +#define rb_fd_ptr(f) (f) +#define rb_fd_init(f) FD_ZERO(f) +#define rb_fd_term(f) (f) +#define rb_fd_max(f) FD_SETSIZE +#define rb_fd_select(n, rfds, wfds, efds, timeout) select(n, rfds, wfds, efds, timeout) + +#endif + +RUBY_EXTERN struct RNode *ruby_current_node; +void ruby_set_current_source(void); +NORETURN(void rb_exc_raise(VALUE)); +NORETURN(void rb_exc_fatal(VALUE)); +VALUE rb_f_exit(int,VALUE*); +VALUE rb_f_abort(int,VALUE*); +void rb_remove_method(VALUE, const char*); +#define rb_disable_super(klass, name) ((void)0) +#define rb_enable_super(klass, name) ((void)0) +#define HAVE_RB_DEFINE_ALLOC_FUNC 1 +void rb_define_alloc_func(VALUE, VALUE (*)(VALUE)); +void rb_undef_alloc_func(VALUE); +void rb_clear_cache(void); +void rb_clear_cache_by_class(VALUE); +void rb_alias(VALUE, ID, ID); +void rb_attr(VALUE,ID,int,int,int); +int rb_method_boundp(VALUE, ID, int); +void rb_dvar_asgn(ID, VALUE); +void rb_dvar_push(ID, VALUE); +VALUE *rb_svar(int); +VALUE rb_eval_cmd(VALUE, VALUE, int); +int rb_obj_respond_to(VALUE, ID, int); +int rb_respond_to(VALUE, ID); +void rb_interrupt(void); +VALUE rb_apply(VALUE, ID, VALUE); +void rb_backtrace(void); +ID rb_frame_this_func(void); +VALUE rb_obj_instance_eval(int, VALUE*, VALUE); +VALUE rb_mod_module_eval(int, VALUE*, VALUE); +void rb_load(VALUE, int); +void rb_load_protect(VALUE, int, int*); +NORETURN(void rb_jump_tag(int)); +int rb_provided(const char*); +void rb_provide(const char*); +VALUE rb_f_require(VALUE, VALUE); +VALUE rb_require_safe(VALUE, int); +void rb_obj_call_init(VALUE, int, VALUE*); +VALUE rb_class_new_instance(int, VALUE*, VALUE); +VALUE rb_block_proc(void); +VALUE rb_f_lambda(void); +VALUE rb_proc_new(VALUE (*)(ANYARGS/* VALUE yieldarg[, VALUE procarg] */), VALUE); +VALUE rb_proc_call(VALUE, VALUE); +int rb_proc_arity(VALUE); +VALUE rb_binding_new(void); +VALUE rb_obj_method(VALUE, VALUE); +VALUE rb_method_call(int, VALUE*, VALUE); +int rb_mod_method_arity(VALUE, ID); +int rb_obj_method_arity(VALUE, ID); +VALUE rb_protect(VALUE (*)(VALUE), VALUE, int*); +void rb_set_end_proc(void (*)(VALUE), VALUE); +void rb_mark_end_proc(void); +void rb_exec_end_proc(void); +void Init_jump(void); +void ruby_finalize(void); +NORETURN(void ruby_stop(int)); +int ruby_cleanup(int); +int ruby_exec(void); +void rb_gc_mark_threads(void); +void rb_thread_start_timer(void); +void rb_thread_stop_timer(void); +void rb_thread_schedule(void); +void rb_thread_wait_fd(int); +int rb_thread_fd_writable(int); +void rb_thread_fd_close(int); +int rb_thread_alone(void); +void rb_thread_polling(void); +void rb_thread_sleep(int); +void rb_thread_sleep_forever(void); +VALUE rb_thread_stop(void); +VALUE rb_thread_wakeup(VALUE); +VALUE rb_thread_run(VALUE); +VALUE rb_thread_kill(VALUE); +VALUE rb_thread_create(VALUE (*)(ANYARGS), void*); +void rb_thread_trap_eval(VALUE, int, int); +void rb_thread_signal_raise(void *, int); +void rb_thread_signal_exit(void *); +int rb_thread_select(int, fd_set *, fd_set *, fd_set *, struct timeval *); +void rb_thread_wait_for(struct timeval); +VALUE rb_thread_current(void); +VALUE rb_thread_main(void); +VALUE rb_thread_local_aref(VALUE, ID); +VALUE rb_thread_local_aset(VALUE, ID, VALUE); +void rb_thread_atfork(void); +VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE); +/* file.c */ +VALUE rb_file_s_expand_path(int, VALUE *); +VALUE rb_file_expand_path(VALUE, VALUE); +void rb_file_const(const char*, VALUE); +int rb_find_file_ext(VALUE*, const char* const*); +VALUE rb_find_file(VALUE); +char *rb_path_next(const char *); +char *rb_path_skip_prefix(const char *); +char *rb_path_last_separator(const char *); +char *rb_path_end(const char *); +VALUE rb_file_directory_p(VALUE,VALUE); +/* gc.c */ +void ruby_set_stack_size(size_t); +NORETURN(void rb_memerror(void)); +int ruby_stack_check(void); +int ruby_stack_length(VALUE**); +char *rb_source_filename(const char*); +void rb_gc_mark_locations(VALUE*, VALUE*); +void rb_mark_tbl(struct st_table*); +void rb_mark_hash(struct st_table*); +void rb_gc_mark_maybe(VALUE); +void rb_gc_mark(VALUE); +void rb_gc_force_recycle(VALUE); +void rb_gc(void); +void rb_gc_copy_finalizer(VALUE,VALUE); +void rb_gc_finalize_deferred(void); +void rb_gc_call_finalizer_at_exit(void); +VALUE rb_gc_enable(void); +VALUE rb_gc_disable(void); +VALUE rb_gc_start(void); +/* hash.c */ +void st_foreach_safe(struct st_table *, int (*)(ANYARGS), st_data_t); +void rb_hash_foreach(VALUE, int (*)(ANYARGS), VALUE); +VALUE rb_hash(VALUE); +VALUE rb_hash_new(void); +VALUE rb_hash_freeze(VALUE); +VALUE rb_hash_aref(VALUE, VALUE); +VALUE rb_hash_aset(VALUE, VALUE, VALUE); +VALUE rb_hash_delete_if(VALUE); +VALUE rb_hash_delete(VALUE,VALUE); +int rb_path_check(const char*); +int rb_env_path_tainted(void); +/* io.c */ +#define rb_defout rb_stdout +RUBY_EXTERN VALUE rb_fs; +RUBY_EXTERN VALUE rb_output_fs; +RUBY_EXTERN VALUE rb_rs; +RUBY_EXTERN VALUE rb_default_rs; +RUBY_EXTERN VALUE rb_output_rs; +VALUE rb_io_write(VALUE, VALUE); +VALUE rb_io_gets(VALUE); +VALUE rb_io_getc(VALUE); +VALUE rb_io_ungetc(VALUE, VALUE); +VALUE rb_io_close(VALUE); +VALUE rb_io_flush(VALUE); +VALUE rb_io_eof(VALUE); +VALUE rb_io_binmode(VALUE); +VALUE rb_io_addstr(VALUE, VALUE); +VALUE rb_io_printf(int, VALUE*, VALUE); +VALUE rb_io_print(int, VALUE*, VALUE); +VALUE rb_io_puts(int, VALUE*, VALUE); +VALUE rb_file_open(const char*, const char*); +VALUE rb_gets(void); +void rb_write_error(const char*); +void rb_write_error2(const char*, long); +/* marshal.c */ +VALUE rb_marshal_dump(VALUE, VALUE); +VALUE rb_marshal_load(VALUE); +/* numeric.c */ +void rb_num_zerodiv(void); +VALUE rb_num_coerce_bin(VALUE, VALUE); +VALUE rb_num_coerce_cmp(VALUE, VALUE); +VALUE rb_num_coerce_relop(VALUE, VALUE); +VALUE rb_float_new(double); +VALUE rb_num2fix(VALUE); +VALUE rb_fix2str(VALUE, int); +VALUE rb_dbl_cmp(double, double); +/* object.c */ +int rb_eql(VALUE, VALUE); +VALUE rb_any_to_s(VALUE); +VALUE rb_inspect(VALUE); +VALUE rb_obj_is_instance_of(VALUE, VALUE); +VALUE rb_obj_is_kind_of(VALUE, VALUE); +VALUE rb_obj_alloc(VALUE); +VALUE rb_obj_clone(VALUE); +VALUE rb_obj_dup(VALUE); +VALUE rb_obj_init_copy(VALUE,VALUE); +VALUE rb_obj_taint(VALUE); +VALUE rb_obj_tainted(VALUE); +VALUE rb_obj_untaint(VALUE); +VALUE rb_obj_freeze(VALUE); +VALUE rb_obj_id(VALUE); +VALUE rb_obj_class(VALUE); +VALUE rb_class_real(VALUE); +VALUE rb_class_inherited_p(VALUE, VALUE); +VALUE rb_convert_type(VALUE,int,const char*,const char*); +VALUE rb_check_convert_type(VALUE,int,const char*,const char*); +VALUE rb_check_to_integer(VALUE, const char *); +VALUE rb_to_int(VALUE); +VALUE rb_Integer(VALUE); +VALUE rb_Float(VALUE); +VALUE rb_String(VALUE); +VALUE rb_Array(VALUE); +double rb_cstr_to_dbl(const char*, int); +double rb_str_to_dbl(VALUE, int); +/* parse.y */ +RUBY_EXTERN int ruby_sourceline; +RUBY_EXTERN char *ruby_sourcefile; +ID rb_id_attrset(ID); +void rb_gc_mark_parser(void); +int rb_is_const_id(ID); +int rb_is_instance_id(ID); +int rb_is_class_id(ID); +int rb_is_local_id(ID); +int rb_is_junk_id(ID); +int rb_symname_p(const char*); +int rb_sym_interned_p(VALUE); +void rb_gc_mark_symbols(void); +VALUE rb_backref_get(void); +void rb_backref_set(VALUE); +VALUE rb_lastline_get(void); +void rb_lastline_set(VALUE); +VALUE rb_sym_all_symbols(void); +/* process.c */ +void rb_last_status_set(int status, rb_pid_t pid); +VALUE rb_last_status_get(void); +struct rb_exec_arg { + int argc; + VALUE *argv; + const char *prog; +}; +int rb_proc_exec_n(int, VALUE*, const char*); +int rb_proc_exec(const char*); +VALUE rb_check_argv(int, VALUE*); +int rb_exec(const struct rb_exec_arg*); +rb_pid_t rb_fork(int*, int (*)(void*), void*); +VALUE rb_f_exec(int,VALUE*); +rb_pid_t rb_waitpid(rb_pid_t pid, int *status, int flags); +void rb_syswait(rb_pid_t pid); +rb_pid_t rb_spawn(int, VALUE*); +VALUE rb_proc_times(VALUE); +VALUE rb_detach_process(rb_pid_t pid); +/* range.c */ +VALUE rb_range_new(VALUE, VALUE, int); +VALUE rb_range_beg_len(VALUE, long*, long*, long, int); +VALUE rb_length_by_each(VALUE); +/* random.c */ +unsigned long genrand_int32(void); +double genrand_real(void); +/* re.c */ +int rb_memcmp(const void*,const void*,long); +int rb_memcicmp(const void*,const void*,long); +long rb_memsearch(const void*,long,const void*,long); +VALUE rb_reg_nth_defined(int, VALUE); +VALUE rb_reg_nth_match(int, VALUE); +VALUE rb_reg_last_match(VALUE); +VALUE rb_reg_match_pre(VALUE); +VALUE rb_reg_match_post(VALUE); +VALUE rb_reg_match_last(VALUE); +VALUE rb_reg_new(const char*, long, int); +VALUE rb_reg_compile(const char*, long, int); +VALUE rb_reg_match(VALUE, VALUE); +VALUE rb_reg_match2(VALUE); +int rb_reg_options(VALUE); +void rb_set_kcode(const char*); +const char* rb_get_kcode(void); +/* ruby.c */ +RUBY_EXTERN VALUE rb_argv; +RUBY_EXTERN VALUE rb_argv0; +void *rb_load_file(const char*); +void ruby_script(const char*); +void ruby_prog_init(void); +void ruby_set_argv(int, char**); +void ruby_process_options(int, char**); +void ruby_load_script(void); +void ruby_init_loadpath(void); +void ruby_incpush(const char*); +/* signal.c */ +VALUE rb_f_kill(int, VALUE*); +void rb_gc_mark_trap_list(void); +#ifdef POSIX_SIGNAL +#define posix_signal ruby_posix_signal +void posix_signal(int, RETSIGTYPE (*)(int)); +#endif +void rb_trap_exit(void); +void rb_trap_exec(void); +const char *ruby_signal_name(int); +void ruby_default_signal(int); +/* sprintf.c */ +VALUE rb_f_sprintf(int, const VALUE*); +PRINTF_ARGS(VALUE rb_sprintf(const char*, ...), 1, 2); +VALUE rb_vsprintf(const char*, va_list); +VALUE rb_str_format(int, const VALUE *, VALUE); +/* string.c */ +VALUE rb_str_new(const char*, long); +VALUE rb_str_new2(const char*); +VALUE rb_str_new3(VALUE); +VALUE rb_str_new4(VALUE); +VALUE rb_str_new5(VALUE, const char*, long); +VALUE rb_tainted_str_new(const char*, long); +VALUE rb_tainted_str_new2(const char*); +VALUE rb_str_buf_new(long); +VALUE rb_str_buf_new2(const char*); +void rb_str_free(VALUE); +VALUE rb_str_buf_append(VALUE, VALUE); +VALUE rb_str_buf_cat(VALUE, const char*, long); +VALUE rb_str_buf_cat2(VALUE, const char*); +VALUE rb_obj_as_string(VALUE); +VALUE rb_check_string_type(VALUE); +VALUE rb_str_dup(VALUE); +VALUE rb_str_locktmp(VALUE); +VALUE rb_str_unlocktmp(VALUE); +VALUE rb_str_dup_frozen(VALUE); +VALUE rb_str_plus(VALUE, VALUE); +VALUE rb_str_times(VALUE, VALUE); +VALUE rb_str_substr(VALUE, long, long); +void rb_str_modify(VALUE); +VALUE rb_str_freeze(VALUE); +void rb_str_set_len(VALUE, long); +VALUE rb_str_resize(VALUE, long); +VALUE rb_str_cat(VALUE, const char*, long); +VALUE rb_str_cat2(VALUE, const char*); +VALUE rb_str_append(VALUE, VALUE); +VALUE rb_str_concat(VALUE, VALUE); +int rb_memhash(const void *ptr, long len); +int rb_str_hash(VALUE); +int rb_str_cmp(VALUE, VALUE); +VALUE rb_str_upto(VALUE, VALUE, int); +void rb_str_update(VALUE, long, long, VALUE); +VALUE rb_str_inspect(VALUE); +VALUE rb_str_dump(VALUE); +VALUE rb_str_split(VALUE, const char*); +void rb_str_associate(VALUE, VALUE); +VALUE rb_str_associated(VALUE); +void rb_str_setter(VALUE, ID, VALUE*); +VALUE rb_str_intern(VALUE); +VALUE rb_sym_to_s(VALUE); +/* struct.c */ +VALUE rb_struct_new(VALUE, ...); +VALUE rb_struct_define(const char*, ...); +VALUE rb_struct_alloc(VALUE, VALUE); +VALUE rb_struct_aref(VALUE, VALUE); +VALUE rb_struct_aset(VALUE, VALUE, VALUE); +VALUE rb_struct_getmember(VALUE, ID); +VALUE rb_struct_iv_get(VALUE, const char*); +VALUE rb_struct_s_members(VALUE); +VALUE rb_struct_members(VALUE); +/* thread.c */ +typedef struct rb_thread_struct rb_thread_t; +typedef void rb_unblock_function_t(rb_thread_t *); +typedef VALUE rb_blocking_function_t(rb_thread_t *th, void *); +VALUE rb_thread_blocking_region(rb_blocking_function_t *func, void *data, + rb_unblock_function_t *ubf); +#define RB_UBF_DFL ((rb_unblock_function_t *)-1) +VALUE rb_mutex_new(void); +VALUE rb_mutex_locked_p(VALUE mutex); +VALUE rb_mutex_try_lock(VALUE mutex); +VALUE rb_mutex_lock(VALUE mutex); +VALUE rb_mutex_unlock(VALUE mutex); +VALUE rb_mutex_sleep(VALUE self, VALUE timeout); +VALUE rb_mutex_synchronize(VALUE self); +VALUE rb_barrier_new(void); +VALUE rb_barrier_wait(VALUE self); +VALUE rb_barrier_release(VALUE self); +/* time.c */ +VALUE rb_time_new(time_t, time_t); +/* variable.c */ +VALUE rb_mod_name(VALUE); +VALUE rb_class_path(VALUE); +void rb_set_class_path(VALUE, VALUE, const char*); +VALUE rb_path2class(const char*); +void rb_name_class(VALUE, ID); +VALUE rb_class_name(VALUE); +void rb_autoload(VALUE, ID, const char*); +VALUE rb_autoload_load(VALUE, ID); +VALUE rb_autoload_p(VALUE, ID); +void rb_gc_mark_global_tbl(void); +VALUE rb_f_trace_var(int, VALUE*); +VALUE rb_f_untrace_var(int, VALUE*); +VALUE rb_f_global_variables(void); +void rb_alias_variable(ID, ID); +struct st_table* rb_generic_ivar_table(VALUE); +void rb_copy_generic_ivar(VALUE,VALUE); +void rb_mark_generic_ivar(VALUE); +void rb_mark_generic_ivar_tbl(void); +void rb_free_generic_ivar(VALUE); +VALUE rb_ivar_get(VALUE, ID); +VALUE rb_ivar_set(VALUE, ID, VALUE); +VALUE rb_ivar_defined(VALUE, ID); +VALUE rb_iv_set(VALUE, const char*, VALUE); +VALUE rb_iv_get(VALUE, const char*); +VALUE rb_attr_get(VALUE, ID); +VALUE rb_obj_instance_variables(VALUE); +VALUE rb_obj_remove_instance_variable(VALUE, VALUE); +void *rb_mod_const_at(VALUE, void*); +void *rb_mod_const_of(VALUE, void*); +VALUE rb_const_list(void*); +VALUE rb_mod_constants(int, VALUE *, VALUE); +VALUE rb_mod_remove_const(VALUE, VALUE); +int rb_const_defined(VALUE, ID); +int rb_const_defined_at(VALUE, ID); +int rb_const_defined_from(VALUE, ID); +VALUE rb_const_get(VALUE, ID); +VALUE rb_const_get_at(VALUE, ID); +VALUE rb_const_get_from(VALUE, ID); +void rb_const_set(VALUE, ID, VALUE); +VALUE rb_mod_const_missing(VALUE,VALUE); +VALUE rb_cvar_defined(VALUE, ID); +void rb_cvar_set(VALUE, ID, VALUE); +VALUE rb_cvar_get(VALUE, ID); +void rb_cv_set(VALUE, const char*, VALUE); +VALUE rb_cv_get(VALUE, const char*); +void rb_define_class_variable(VALUE, const char*, VALUE); +VALUE rb_mod_class_variables(VALUE); +VALUE rb_mod_remove_cvar(VALUE, VALUE); +/* version.c */ +void ruby_show_version(void); +void ruby_show_copyright(void); + +ID rb_frame_callee(void); +VALUE rb_str_succ(VALUE); +VALUE rb_time_succ(VALUE); +void Init_stack(VALUE*); +void rb_frame_pop(void); +NORETURN(void rb_thread_start_1(void)); + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* RUBY_INTERN_H */ diff --git a/include/ruby/io.h b/include/ruby/io.h new file mode 100644 index 000000000..6d22de8df --- /dev/null +++ b/include/ruby/io.h @@ -0,0 +1,126 @@ +/********************************************************************** + + rubyio.h - + + $Author$ + $Date$ + created at: Fri Nov 12 16:47:09 JST 1993 + + Copyright (C) 1993-2003 Yukihiro Matsumoto + +**********************************************************************/ + +#ifndef RUBY_IO_H +#define RUBY_IO_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#include +#include + +#if defined(HAVE_STDIO_EXT_H) +#include +#endif + +typedef struct rb_io_t { + int fd; /* file descriptor */ + FILE *stdio_file; /* stdio ptr for read/write if available */ + int mode; /* mode flags */ + rb_pid_t pid; /* child's pid (for pipes) */ + int lineno; /* number of lines read */ + char *path; /* pathname for file */ + void (*finalize)(struct rb_io_t*,int); /* finalize proc */ + long refcnt; + char *wbuf; /* wbuf_off + wbuf_len <= wbuf_capa */ + int wbuf_off; + int wbuf_len; + int wbuf_capa; + char *rbuf; /* rbuf_off + rbuf_len <= rbuf_capa */ + int rbuf_off; + int rbuf_len; + int rbuf_capa; +} rb_io_t; + +#define HAVE_RB_IO_T 1 + +#define FMODE_READABLE 1 +#define FMODE_WRITABLE 2 +#define FMODE_READWRITE 3 +#define FMODE_APPEND 64 +#define FMODE_CREATE 128 +#define FMODE_BINMODE 4 +#define FMODE_SYNC 8 +#define FMODE_TTY 16 +#define FMODE_DUPLEX 32 +#define FMODE_WSPLIT 0x200 +#define FMODE_WSPLIT_INITIALIZED 0x400 + +#define GetOpenFile(obj,fp) rb_io_check_closed((fp) = RFILE(rb_io_taint_check(obj))->fptr) + +#define MakeOpenFile(obj, fp) do {\ + if (RFILE(obj)->fptr) {\ + rb_io_close(obj);\ + free(RFILE(obj)->fptr);\ + RFILE(obj)->fptr = 0;\ + }\ + fp = 0;\ + fp = RFILE(obj)->fptr = ALLOC(rb_io_t);\ + fp->fd = -1;\ + fp->stdio_file = NULL;\ + fp->mode = 0;\ + fp->pid = 0;\ + fp->lineno = 0;\ + fp->path = NULL;\ + fp->finalize = 0;\ + fp->refcnt = 1;\ + fp->wbuf = NULL;\ + fp->wbuf_off = 0;\ + fp->wbuf_len = 0;\ + fp->wbuf_capa = 0;\ + fp->rbuf = NULL;\ + fp->rbuf_off = 0;\ + fp->rbuf_len = 0;\ + fp->rbuf_capa = 0;\ +} while (0) + +FILE *rb_io_stdio_file(rb_io_t *fptr); + +FILE *rb_fopen(const char*, const char*); +FILE *rb_fdopen(int, const char*); +int rb_io_mode_flags(const char*); +int rb_io_modenum_flags(int); +void rb_io_check_writable(rb_io_t*); +void rb_io_check_readable(rb_io_t*); +int rb_io_fptr_finalize(rb_io_t*); +void rb_io_synchronized(rb_io_t*); +void rb_io_check_initialized(rb_io_t*); +void rb_io_check_closed(rb_io_t*); +int rb_io_wait_readable(int); +int rb_io_wait_writable(int); +void rb_io_set_nonblock(rb_io_t *fptr); + +VALUE rb_io_taint_check(VALUE); +NORETURN(void rb_eof_error(void)); + +void rb_io_read_check(rb_io_t*); +int rb_io_read_pending(rb_io_t*); +void rb_read_check(FILE*); + +DEPRECATED(int rb_getc(FILE*)); +DEPRECATED(long rb_io_fread(char *, long, FILE *)); +DEPRECATED(long rb_io_fwrite(const char *, long, FILE *)); +DEPRECATED(int rb_read_pending(FILE*)); + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* RUBY_IO_H */ diff --git a/include/ruby/missing.h b/include/ruby/missing.h new file mode 100644 index 000000000..007c54661 --- /dev/null +++ b/include/ruby/missing.h @@ -0,0 +1,162 @@ +/************************************************ + + missing.h - prototype for *.c in ./missing, and + for missing timeval struct + + $Author$ + $Date$ + created at: Sat May 11 23:46:03 JST 2002 + +************************************************/ + +#ifndef RUBY_MISSING_H +#define RUBY_MISSING_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#if defined(HAVE_SYS_TIME_H) +# include +#elif !defined(_WIN32) +# define time_t long +struct timeval { + time_t tv_sec; /* seconds */ + time_t tv_usec; /* microseconds */ +}; +#endif +#if defined(HAVE_SYS_TYPES_H) +# include +#endif + +#ifndef HAVE_ACOSH +extern double acosh(double); +extern double asinh(double); +extern double atanh(double); +#endif + +#ifndef HAVE_CRYPT +extern char *crypt(const char *, const char *); +#endif + +#ifndef HAVE_DUP2 +extern int dup2(int, int); +#endif + +#ifndef HAVE_EACCESS +extern int eaccess(const char*, int); +#endif + +#ifndef HAVE_FINITE +extern int finite(double); +#endif + +#ifndef HAVE_FLOCK +extern int flock(int, int); +#endif + +/* +#ifndef HAVE_FREXP +extern double frexp(double, int *); +#endif +*/ + +#ifndef HAVE_HYPOT +extern double hypot(double, double); +#endif + +#ifndef HAVE_ERF +extern double erf(double); +extern double erfc(double); +#endif + +#ifndef isinf +# ifndef HAVE_ISINF +# if defined(HAVE_FINITE) && defined(HAVE_ISNAN) +# define isinf(x) (!finite(x) && !isnan(x)) +# else +extern int isinf(double); +# endif +# endif +#endif + +#ifndef HAVE_ISNAN +extern int isnan(double); +#endif + +/* +#ifndef HAVE_MEMCMP +extern int memcmp(const void *, const void *, size_t); +#endif +*/ + +#ifndef HAVE_MEMMOVE +extern void *memmove(void *, const void *, size_t); +#endif + +/* +#ifndef HAVE_MODF +extern double modf(double, double *); +#endif +*/ + +#ifndef HAVE_STRCASECMP +extern int strcasecmp(const char *, const char *); +#endif + +#ifndef HAVE_STRNCASECMP +extern int strncasecmp(const char *, const char *, size_t); +#endif + +#ifndef HAVE_STRCHR +extern char *strchr(const char *, int); +extern char *strrchr(const char *, int); +#endif + +#ifndef HAVE_STRERROR +extern char *strerror(int); +#endif + +#ifndef HAVE_STRFTIME +extern size_t strftime(char *, size_t, const char *, const struct tm *); +#endif + +#ifndef HAVE_STRSTR +extern char *strstr(const char *, const char *); +#endif + +/* +#ifndef HAVE_STRTOL +extern long strtol(const char *, char **, int); +#endif +*/ + +#ifndef HAVE_STRTOUL +extern unsigned long strtoul(const char *, char **, int); +#endif + +#ifndef HAVE_VSNPRINTF +# include +extern int snprintf(char *, size_t n, char const *, ...); +extern int vsnprintf(char *, size_t n, char const *, va_list); +#endif + +#ifndef HAVE_STRLCPY +extern size_t strlcpy(char *, const char*, size_t); +#endif + +#ifndef HAVE_STRLCAT +extern size_t strlcat(char *, const char*, size_t); +#endif + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* RUBY_MISSING_H */ diff --git a/include/ruby/node.h b/include/ruby/node.h new file mode 100644 index 000000000..a477c9d55 --- /dev/null +++ b/include/ruby/node.h @@ -0,0 +1,400 @@ +/********************************************************************** + + node.h - + + $Author$ + $Date$ + created at: Fri May 28 15:14:02 JST 1993 + + Copyright (C) 1993-2003 Yukihiro Matsumoto + +**********************************************************************/ + +#ifndef RUBY_NODE_H +#define RUBY_NODE_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +enum node_type { + NODE_METHOD, + NODE_FBODY, + NODE_CFUNC, + NODE_SCOPE, + NODE_BLOCK, + NODE_IF, + NODE_CASE, + NODE_WHEN, + NODE_OPT_N, + NODE_WHILE, + NODE_UNTIL, + NODE_ITER, + NODE_FOR, + NODE_BREAK, + NODE_NEXT, + NODE_REDO, + NODE_RETRY, + NODE_BEGIN, + NODE_RESCUE, + NODE_RESBODY, + NODE_ENSURE, + NODE_AND, + NODE_OR, + NODE_NOT, + NODE_MASGN, + NODE_LASGN, + NODE_DASGN, + NODE_DASGN_CURR, + NODE_GASGN, + NODE_IASGN, + NODE_IASGN2, + NODE_CDECL, + NODE_CVASGN, + NODE_CVDECL, + NODE_OP_ASGN1, + NODE_OP_ASGN2, + NODE_OP_ASGN_AND, + NODE_OP_ASGN_OR, + NODE_CALL, + NODE_FCALL, + NODE_VCALL, + NODE_SUPER, + NODE_ZSUPER, + NODE_ARRAY, + NODE_ZARRAY, + NODE_VALUES, + NODE_HASH, + NODE_RETURN, + NODE_YIELD, + NODE_LVAR, + NODE_DVAR, + NODE_GVAR, + NODE_IVAR, + NODE_CONST, + NODE_CVAR, + NODE_NTH_REF, + NODE_BACK_REF, + NODE_MATCH, + NODE_MATCH2, + NODE_MATCH3, + NODE_LIT, + NODE_STR, + NODE_DSTR, + NODE_XSTR, + NODE_DXSTR, + NODE_EVSTR, + NODE_DREGX, + NODE_DREGX_ONCE, + NODE_ARGS, + NODE_ARGS_AUX, + NODE_OPT_ARG, + NODE_POSTARG, + NODE_ARGSCAT, + NODE_ARGSPUSH, + NODE_SPLAT, + NODE_TO_ARY, + NODE_BLOCK_ARG, + NODE_BLOCK_PASS, + NODE_DEFN, + NODE_DEFS, + NODE_ALIAS, + NODE_VALIAS, + NODE_UNDEF, + NODE_CLASS, + NODE_MODULE, + NODE_SCLASS, + NODE_COLON2, + NODE_COLON3, + NODE_CREF, + NODE_DOT2, + NODE_DOT3, + NODE_FLIP2, + NODE_FLIP3, + NODE_ATTRSET, + NODE_SELF, + NODE_NIL, + NODE_TRUE, + NODE_FALSE, + NODE_ERRINFO, + NODE_DEFINED, + NODE_POSTEXE, + NODE_ALLOCA, + NODE_BMETHOD, + NODE_MEMO, + NODE_IFUNC, + NODE_DSYM, + NODE_ATTRASGN, + NODE_PRELUDE, + NODE_LAMBDA, + NODE_OPTBLOCK, + NODE_LAST +}; + +typedef struct RNode { + unsigned long flags; + char *nd_file; + union { + struct RNode *node; + ID id; + VALUE value; + VALUE (*cfunc)(ANYARGS); + ID *tbl; + } u1; + union { + struct RNode *node; + ID id; + long argc; + VALUE value; + } u2; + union { + struct RNode *node; + ID id; + long state; + struct global_entry *entry; + long cnt; + VALUE value; + } u3; +} NODE; + +#define RNODE(obj) (R_CAST(RNode)(obj)) + +/* 0..4:T_TYPES, 5:FL_MARK, 6:reserved, 7:NODE_NEWLINE */ +#define NODE_NEWLINE (1<<7) + +#define NODE_TYPESHIFT 8 +#define NODE_TYPEMASK (0x7f<flags & NODE_TYPEMASK)>>NODE_TYPESHIFT)) +#define nd_set_type(n,t) \ + RNODE(n)->flags=((RNODE(n)->flags&~NODE_TYPEMASK)|(((t)<flags>>NODE_LSHIFT)&NODE_LMASK)) +#define nd_set_line(n,l) \ + RNODE(n)->flags=((RNODE(n)->flags&~(-1< + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef __cplusplus +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#define ONIGURUMA +#define ONIGURUMA_VERSION_MAJOR 5 +#define ONIGURUMA_VERSION_MINOR 7 +#define ONIGURUMA_VERSION_TEENY 0 + +#ifdef __cplusplus +# ifndef HAVE_PROTOTYPES +# define HAVE_PROTOTYPES 1 +# endif +# ifndef HAVE_STDARG_PROTOTYPES +# define HAVE_STDARG_PROTOTYPES 1 +# endif +#endif + +/* escape Mac OS X/Xcode 2.4/gcc 4.0.1 problem */ +#if defined(__APPLE__) && defined(__GNUC__) && __GNUC__ >= 4 +# ifndef HAVE_STDARG_PROTOTYPES +# define HAVE_STDARG_PROTOTYPES 1 +# endif +#endif + +#ifndef P_ +#if defined(__STDC__) || defined(_WIN32) +# define P_(args) args +#else +# define P_(args) () +#endif +#endif + +#ifndef PV_ +#ifdef HAVE_STDARG_PROTOTYPES +# define PV_(args) args +#else +# define PV_(args) () +#endif +#endif + +#ifndef ONIG_EXTERN +#if defined(_WIN32) && !defined(__GNUC__) +#if defined(EXPORT) || defined(RUBY_EXPORT) +#define ONIG_EXTERN extern __declspec(dllexport) +#else +#define ONIG_EXTERN extern __declspec(dllimport) +#endif +#endif +#endif + +#ifndef ONIG_EXTERN +#define ONIG_EXTERN extern +#endif + +/* PART: character encoding */ + +#ifndef ONIG_ESCAPE_UCHAR_COLLISION +#define UChar OnigUChar +#endif + +typedef unsigned char OnigUChar; +typedef unsigned long OnigCodePoint; +typedef unsigned int OnigDistance; + +#define ONIG_INFINITE_DISTANCE ~((OnigDistance )0) + +/* case fold flag */ +typedef unsigned int OnigCaseFoldType; + +ONIG_EXTERN OnigCaseFoldType OnigDefaultCaseFoldFlag; + +/* #define ONIGENC_CASE_FOLD_HIRAGANA_KATAKANA (1<<1) */ +/* #define ONIGENC_CASE_FOLD_KATAKANA_WIDTH (1<<2) */ +#define ONIGENC_CASE_FOLD_TURKISH_AZERI (1<<20) +#define INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR (1<<30) + +#define ONIGENC_CASE_FOLD_MIN INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR +#define ONIGENC_CASE_FOLD_DEFAULT OnigDefaultCaseFoldFlag + + +#define ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN 3 +#define ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM 13 +/* 13 => Unicode:0x1ffc */ + +/* code range */ +#define ONIGENC_CODE_RANGE_NUM(range) ((int )range[0]) +#define ONIGENC_CODE_RANGE_FROM(range,i) range[((i)*2) + 1] +#define ONIGENC_CODE_RANGE_TO(range,i) range[((i)*2) + 2] + +typedef struct { + int byte_len; /* argument(original) character(s) byte length */ + int code_len; /* number of code */ + OnigCodePoint code[ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN]; +} OnigCaseFoldCodeItem; + +typedef struct { + OnigCodePoint esc; + OnigCodePoint anychar; + OnigCodePoint anytime; + OnigCodePoint zero_or_one_time; + OnigCodePoint one_or_more_time; + OnigCodePoint anychar_anytime; +} OnigMetaCharTableType; + +typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg); + +typedef struct OnigEncodingTypeST { + int (*mbc_enc_len)(const OnigUChar* p); + const char* name; + int max_enc_len; + int min_enc_len; + int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end); + OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end); + int (*code_to_mbclen)(OnigCodePoint code); + int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf); + int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to); + int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg); + int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[]); + int (*property_name_to_ctype)(struct OnigEncodingTypeST* enc, OnigUChar* p, OnigUChar* end); + int (*is_code_ctype)(OnigCodePoint code, unsigned int ctype); + int (*get_ctype_code_range)(int ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]); + OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p); + int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end); +} OnigEncodingType; + +typedef OnigEncodingType* OnigEncoding; + +ONIG_EXTERN OnigEncodingType OnigEncodingASCII; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_1; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_2; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_3; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_4; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_5; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_6; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_7; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_8; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_9; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_10; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_11; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_13; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_14; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_15; +ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_16; +ONIG_EXTERN OnigEncodingType OnigEncodingUTF8; +ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_BE; +ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_LE; +ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_BE; +ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_LE; +ONIG_EXTERN OnigEncodingType OnigEncodingEUC_JP; +ONIG_EXTERN OnigEncodingType OnigEncodingEUC_TW; +ONIG_EXTERN OnigEncodingType OnigEncodingEUC_KR; +ONIG_EXTERN OnigEncodingType OnigEncodingEUC_CN; +ONIG_EXTERN OnigEncodingType OnigEncodingSJIS; +ONIG_EXTERN OnigEncodingType OnigEncodingKOI8; +ONIG_EXTERN OnigEncodingType OnigEncodingKOI8_R; +ONIG_EXTERN OnigEncodingType OnigEncodingCP1251; +ONIG_EXTERN OnigEncodingType OnigEncodingBIG5; +ONIG_EXTERN OnigEncodingType OnigEncodingGB18030; + +#define ONIG_ENCODING_ASCII (&OnigEncodingASCII) +#define ONIG_ENCODING_ISO_8859_1 (&OnigEncodingISO_8859_1) +#define ONIG_ENCODING_ISO_8859_2 (&OnigEncodingISO_8859_2) +#define ONIG_ENCODING_ISO_8859_3 (&OnigEncodingISO_8859_3) +#define ONIG_ENCODING_ISO_8859_4 (&OnigEncodingISO_8859_4) +#define ONIG_ENCODING_ISO_8859_5 (&OnigEncodingISO_8859_5) +#define ONIG_ENCODING_ISO_8859_6 (&OnigEncodingISO_8859_6) +#define ONIG_ENCODING_ISO_8859_7 (&OnigEncodingISO_8859_7) +#define ONIG_ENCODING_ISO_8859_8 (&OnigEncodingISO_8859_8) +#define ONIG_ENCODING_ISO_8859_9 (&OnigEncodingISO_8859_9) +#define ONIG_ENCODING_ISO_8859_10 (&OnigEncodingISO_8859_10) +#define ONIG_ENCODING_ISO_8859_11 (&OnigEncodingISO_8859_11) +#define ONIG_ENCODING_ISO_8859_13 (&OnigEncodingISO_8859_13) +#define ONIG_ENCODING_ISO_8859_14 (&OnigEncodingISO_8859_14) +#define ONIG_ENCODING_ISO_8859_15 (&OnigEncodingISO_8859_15) +#define ONIG_ENCODING_ISO_8859_16 (&OnigEncodingISO_8859_16) +#define ONIG_ENCODING_UTF8 (&OnigEncodingUTF8) +#define ONIG_ENCODING_UTF16_BE (&OnigEncodingUTF16_BE) +#define ONIG_ENCODING_UTF16_LE (&OnigEncodingUTF16_LE) +#define ONIG_ENCODING_UTF32_BE (&OnigEncodingUTF32_BE) +#define ONIG_ENCODING_UTF32_LE (&OnigEncodingUTF32_LE) +#define ONIG_ENCODING_EUC_JP (&OnigEncodingEUC_JP) +#define ONIG_ENCODING_EUC_TW (&OnigEncodingEUC_TW) +#define ONIG_ENCODING_EUC_KR (&OnigEncodingEUC_KR) +#define ONIG_ENCODING_EUC_CN (&OnigEncodingEUC_CN) +#define ONIG_ENCODING_SJIS (&OnigEncodingSJIS) +#define ONIG_ENCODING_KOI8 (&OnigEncodingKOI8) +#define ONIG_ENCODING_KOI8_R (&OnigEncodingKOI8_R) +#define ONIG_ENCODING_CP1251 (&OnigEncodingCP1251) +#define ONIG_ENCODING_BIG5 (&OnigEncodingBIG5) +#define ONIG_ENCODING_GB18030 (&OnigEncodingGB18030) + +#define ONIG_ENCODING_UNDEF ((OnigEncoding )0) + + +/* work size */ +#define ONIGENC_CODE_TO_MBC_MAXLEN 7 +#define ONIGENC_MBC_CASE_FOLD_MAXLEN 18 +/* 18: 6(max-byte) * 3(case-fold chars) */ + +/* character types */ +#define ONIGENC_CTYPE_NEWLINE 0 +#define ONIGENC_CTYPE_ALPHA 1 +#define ONIGENC_CTYPE_BLANK 2 +#define ONIGENC_CTYPE_CNTRL 3 +#define ONIGENC_CTYPE_DIGIT 4 +#define ONIGENC_CTYPE_GRAPH 5 +#define ONIGENC_CTYPE_LOWER 6 +#define ONIGENC_CTYPE_PRINT 7 +#define ONIGENC_CTYPE_PUNCT 8 +#define ONIGENC_CTYPE_SPACE 9 +#define ONIGENC_CTYPE_UPPER 10 +#define ONIGENC_CTYPE_XDIGIT 11 +#define ONIGENC_CTYPE_WORD 12 +#define ONIGENC_CTYPE_ALNUM 13 /* alpha || digit */ +#define ONIGENC_CTYPE_ASCII 14 +#define ONIGENC_MAX_STD_CTYPE ONIGENC_CTYPE_ASCII + + +#define enc_len(enc,p) ONIGENC_MBC_ENC_LEN(enc, p) + +#define ONIGENC_IS_UNDEF(enc) ((enc) == ONIG_ENCODING_UNDEF) +#define ONIGENC_IS_SINGLEBYTE(enc) (ONIGENC_MBC_MAXLEN(enc) == 1) +#define ONIGENC_IS_MBC_HEAD(enc,p) (ONIGENC_MBC_ENC_LEN(enc,p) != 1) +#define ONIGENC_IS_MBC_ASCII(p) (*(p) < 128) +#define ONIGENC_IS_CODE_ASCII(code) ((code) < 128) +#define ONIGENC_IS_MBC_WORD(enc,s,end) \ + ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end)) + + +#define ONIGENC_NAME(enc) ((enc)->name) + +#define ONIGENC_MBC_CASE_FOLD(enc,flag,pp,end,buf) \ + (enc)->mbc_case_fold(flag,(const OnigUChar** )pp,end,buf) +#define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) \ + (enc)->is_allowed_reverse_match(s,end) +#define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s) \ + (enc)->left_adjust_char_head(start, s) +#define ONIGENC_APPLY_ALL_CASE_FOLD(enc,case_fold_flag,f,arg) \ + (enc)->apply_all_case_fold(case_fold_flag,f,arg) +#define ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc,case_fold_flag,p,end,acs) \ + (enc)->get_case_fold_codes_by_str(case_fold_flag,p,end,acs) +#define ONIGENC_STEP_BACK(enc,start,s,n) \ + onigenc_step_back((enc),(start),(s),(n)) + +#define ONIGENC_MBC_ENC_LEN(enc,p) (enc)->mbc_enc_len(p) +#define ONIGENC_MBC_MAXLEN(enc) ((enc)->max_enc_len) +#define ONIGENC_MBC_MAXLEN_DIST(enc) ONIGENC_MBC_MAXLEN(enc) +#define ONIGENC_MBC_MINLEN(enc) ((enc)->min_enc_len) +#define ONIGENC_IS_MBC_NEWLINE(enc,p,end) (enc)->is_mbc_newline((p),(end)) +#define ONIGENC_MBC_TO_CODE(enc,p,end) (enc)->mbc_to_code((p),(end)) +#define ONIGENC_CODE_TO_MBCLEN(enc,code) (enc)->code_to_mbclen(code) +#define ONIGENC_CODE_TO_MBC(enc,code,buf) (enc)->code_to_mbc(code,buf) +#define ONIGENC_PROPERTY_NAME_TO_CTYPE(enc,p,end) \ + (enc)->property_name_to_ctype(enc,p,end) + +#define ONIGENC_IS_CODE_CTYPE(enc,code,ctype) (enc)->is_code_ctype(code,ctype) + +#define ONIGENC_IS_CODE_NEWLINE(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_NEWLINE) +#define ONIGENC_IS_CODE_GRAPH(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_GRAPH) +#define ONIGENC_IS_CODE_PRINT(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PRINT) +#define ONIGENC_IS_CODE_ALNUM(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALNUM) +#define ONIGENC_IS_CODE_ALPHA(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALPHA) +#define ONIGENC_IS_CODE_LOWER(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_LOWER) +#define ONIGENC_IS_CODE_UPPER(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_UPPER) +#define ONIGENC_IS_CODE_CNTRL(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_CNTRL) +#define ONIGENC_IS_CODE_PUNCT(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PUNCT) +#define ONIGENC_IS_CODE_SPACE(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_SPACE) +#define ONIGENC_IS_CODE_BLANK(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_BLANK) +#define ONIGENC_IS_CODE_DIGIT(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_DIGIT) +#define ONIGENC_IS_CODE_XDIGIT(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_XDIGIT) +#define ONIGENC_IS_CODE_WORD(enc,code) \ + ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_WORD) + +#define ONIGENC_GET_CTYPE_CODE_RANGE(enc,ctype,sbout,ranges) \ + (enc)->get_ctype_code_range(ctype,sbout,ranges) + +ONIG_EXTERN +OnigUChar* onigenc_step_back P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, int n)); + + +/* encoding API */ +ONIG_EXTERN +int onigenc_init P_((void)); +ONIG_EXTERN +int onigenc_set_default_encoding P_((OnigEncoding enc)); +ONIG_EXTERN +OnigEncoding onigenc_get_default_encoding P_((void)); +ONIG_EXTERN +void onigenc_set_default_caseconv_table P_((const OnigUChar* table)); +ONIG_EXTERN +OnigUChar* onigenc_get_right_adjust_char_head_with_prev P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar** prev)); +ONIG_EXTERN +OnigUChar* onigenc_get_prev_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); +ONIG_EXTERN +OnigUChar* onigenc_get_left_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); +ONIG_EXTERN +OnigUChar* onigenc_get_right_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); +ONIG_EXTERN +int onigenc_strlen P_((OnigEncoding enc, const OnigUChar* p, const OnigUChar* end)); +ONIG_EXTERN +int onigenc_strlen_null P_((OnigEncoding enc, const OnigUChar* p)); +ONIG_EXTERN +int onigenc_str_bytelen_null P_((OnigEncoding enc, const OnigUChar* p)); + + + +/* PART: regular expression */ + +/* config parameters */ +#define ONIG_NREGION 10 +#define ONIG_MAX_BACKREF_NUM 1000 +#define ONIG_MAX_REPEAT_NUM 100000 +#define ONIG_MAX_MULTI_BYTE_RANGES_NUM 10000 +/* constants */ +#define ONIG_MAX_ERROR_MESSAGE_LEN 90 + +typedef unsigned int OnigOptionType; + +#define ONIG_OPTION_DEFAULT ONIG_OPTION_NONE + +/* options */ +#define ONIG_OPTION_NONE 0U +#define ONIG_OPTION_IGNORECASE 1U +#define ONIG_OPTION_EXTEND (ONIG_OPTION_IGNORECASE << 1) +#define ONIG_OPTION_MULTILINE (ONIG_OPTION_EXTEND << 1) +#define ONIG_OPTION_SINGLELINE (ONIG_OPTION_MULTILINE << 1) +#define ONIG_OPTION_FIND_LONGEST (ONIG_OPTION_SINGLELINE << 1) +#define ONIG_OPTION_FIND_NOT_EMPTY (ONIG_OPTION_FIND_LONGEST << 1) +#define ONIG_OPTION_NEGATE_SINGLELINE (ONIG_OPTION_FIND_NOT_EMPTY << 1) +#define ONIG_OPTION_DONT_CAPTURE_GROUP (ONIG_OPTION_NEGATE_SINGLELINE << 1) +#define ONIG_OPTION_CAPTURE_GROUP (ONIG_OPTION_DONT_CAPTURE_GROUP << 1) +/* options (search time) */ +#define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1) +#define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1) +#define ONIG_OPTION_POSIX_REGION (ONIG_OPTION_NOTEOL << 1) +#define ONIG_OPTION_MAXBIT ONIG_OPTION_POSIX_REGION /* limit */ + +#define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt)) +#define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt)) +#define ONIG_IS_OPTION_ON(options,option) ((options) & (option)) + +/* syntax */ +typedef struct { + unsigned int op; + unsigned int op2; + unsigned int behavior; + OnigOptionType options; /* default option */ + OnigMetaCharTableType meta_char_table; +} OnigSyntaxType; + +ONIG_EXTERN OnigSyntaxType OnigSyntaxASIS; +ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixBasic; +ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixExtended; +ONIG_EXTERN OnigSyntaxType OnigSyntaxEmacs; +ONIG_EXTERN OnigSyntaxType OnigSyntaxGrep; +ONIG_EXTERN OnigSyntaxType OnigSyntaxGnuRegex; +ONIG_EXTERN OnigSyntaxType OnigSyntaxJava; +ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl; +ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl_NG; +ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby; + +/* predefined syntaxes (see regsyntax.c) */ +#define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS) +#define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic) +#define ONIG_SYNTAX_POSIX_EXTENDED (&OnigSyntaxPosixExtended) +#define ONIG_SYNTAX_EMACS (&OnigSyntaxEmacs) +#define ONIG_SYNTAX_GREP (&OnigSyntaxGrep) +#define ONIG_SYNTAX_GNU_REGEX (&OnigSyntaxGnuRegex) +#define ONIG_SYNTAX_JAVA (&OnigSyntaxJava) +#define ONIG_SYNTAX_PERL (&OnigSyntaxPerl) +#define ONIG_SYNTAX_PERL_NG (&OnigSyntaxPerl_NG) +#define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby) + +/* default syntax */ +ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; +#define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax + +/* syntax (operators) */ +#define ONIG_SYN_OP_VARIABLE_META_CHARACTERS (1U<<0) +#define ONIG_SYN_OP_DOT_ANYCHAR (1U<<1) /* . */ +#define ONIG_SYN_OP_ASTERISK_ZERO_INF (1U<<2) /* * */ +#define ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF (1U<<3) +#define ONIG_SYN_OP_PLUS_ONE_INF (1U<<4) /* + */ +#define ONIG_SYN_OP_ESC_PLUS_ONE_INF (1U<<5) +#define ONIG_SYN_OP_QMARK_ZERO_ONE (1U<<6) /* ? */ +#define ONIG_SYN_OP_ESC_QMARK_ZERO_ONE (1U<<7) +#define ONIG_SYN_OP_BRACE_INTERVAL (1U<<8) /* {lower,upper} */ +#define ONIG_SYN_OP_ESC_BRACE_INTERVAL (1U<<9) /* \{lower,upper\} */ +#define ONIG_SYN_OP_VBAR_ALT (1U<<10) /* | */ +#define ONIG_SYN_OP_ESC_VBAR_ALT (1U<<11) /* \| */ +#define ONIG_SYN_OP_LPAREN_SUBEXP (1U<<12) /* (...) */ +#define ONIG_SYN_OP_ESC_LPAREN_SUBEXP (1U<<13) /* \(...\) */ +#define ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR (1U<<14) /* \A, \Z, \z */ +#define ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR (1U<<15) /* \G */ +#define ONIG_SYN_OP_DECIMAL_BACKREF (1U<<16) /* \num */ +#define ONIG_SYN_OP_BRACKET_CC (1U<<17) /* [...] */ +#define ONIG_SYN_OP_ESC_W_WORD (1U<<18) /* \w, \W */ +#define ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END (1U<<19) /* \<. \> */ +#define ONIG_SYN_OP_ESC_B_WORD_BOUND (1U<<20) /* \b, \B */ +#define ONIG_SYN_OP_ESC_S_WHITE_SPACE (1U<<21) /* \s, \S */ +#define ONIG_SYN_OP_ESC_D_DIGIT (1U<<22) /* \d, \D */ +#define ONIG_SYN_OP_LINE_ANCHOR (1U<<23) /* ^, $ */ +#define ONIG_SYN_OP_POSIX_BRACKET (1U<<24) /* [:xxxx:] */ +#define ONIG_SYN_OP_QMARK_NON_GREEDY (1U<<25) /* ??,*?,+?,{n,m}? */ +#define ONIG_SYN_OP_ESC_CONTROL_CHARS (1U<<26) /* \n,\r,\t,\a ... */ +#define ONIG_SYN_OP_ESC_C_CONTROL (1U<<27) /* \cx */ +#define ONIG_SYN_OP_ESC_OCTAL3 (1U<<28) /* \OOO */ +#define ONIG_SYN_OP_ESC_X_HEX2 (1U<<29) /* \xHH */ +#define ONIG_SYN_OP_ESC_X_BRACE_HEX8 (1U<<30) /* \x{7HHHHHHH} */ + +#define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (1U<<0) /* \Q...\E */ +#define ONIG_SYN_OP2_QMARK_GROUP_EFFECT (1U<<1) /* (?...) */ +#define ONIG_SYN_OP2_OPTION_PERL (1U<<2) /* (?imsx),(?-imsx) */ +#define ONIG_SYN_OP2_OPTION_RUBY (1U<<3) /* (?imx), (?-imx) */ +#define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT (1U<<4) /* ?+,*+,++ */ +#define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL (1U<<5) /* {n,m}+ */ +#define ONIG_SYN_OP2_CCLASS_SET_OP (1U<<6) /* [...&&..[..]..] */ +#define ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP (1U<<7) /* (?...) */ +#define ONIG_SYN_OP2_ESC_K_NAMED_BACKREF (1U<<8) /* \k */ +#define ONIG_SYN_OP2_ESC_G_SUBEXP_CALL (1U<<9) /* \g, \g */ +#define ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY (1U<<10) /* (?@..),(?@..) */ +#define ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL (1U<<11) /* \C-x */ +#define ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META (1U<<12) /* \M-x */ +#define ONIG_SYN_OP2_ESC_V_VTAB (1U<<13) /* \v as VTAB */ +#define ONIG_SYN_OP2_ESC_U_HEX4 (1U<<14) /* \uHHHH */ +#define ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR (1U<<15) /* \`, \' */ +#define ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY (1U<<16) /* \p{...}, \P{...} */ +#define ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT (1U<<17) /* \p{^..}, \P{^..} */ +/* #define ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS (1U<<18) */ +#define ONIG_SYN_OP2_ESC_H_XDIGIT (1U<<19) /* \h, \H */ +#define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1U<<20) /* \ */ + +/* syntax (behavior) */ +#define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31) /* not implemented */ +#define ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS (1U<<0) /* ?, *, +, {n,m} */ +#define ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS (1U<<1) /* error or ignore */ +#define ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP (1U<<2) /* ...)... */ +#define ONIG_SYN_ALLOW_INVALID_INTERVAL (1U<<3) /* {??? */ +#define ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV (1U<<4) /* {,n} => {0,n} */ +#define ONIG_SYN_STRICT_CHECK_BACKREF (1U<<5) /* /(\1)/,/\1()/ ..*/ +#define ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND (1U<<6) /* (?<=a|bc) */ +#define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (1U<<7) /* see doc/RE */ +#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1U<<8) /* (?)(?) */ +#define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (1U<<9) /* a{n}?=(?:a{n})? */ + +/* syntax (behavior) in char class [...] */ +#define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (1U<<20) /* [^...] */ +#define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (1U<<21) /* [..\w..] etc.. */ +#define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (1U<<22) +#define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (1U<<23) /* [0-9-a]=[0-9\-a] */ +/* syntax (behavior) warning */ +#define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (1U<<24) /* [,-,] */ +#define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (1U<<25) /* (?:a*)+ */ + +/* meta character specifiers (onig_set_meta_char()) */ +#define ONIG_META_CHAR_ESCAPE 0 +#define ONIG_META_CHAR_ANYCHAR 1 +#define ONIG_META_CHAR_ANYTIME 2 +#define ONIG_META_CHAR_ZERO_OR_ONE_TIME 3 +#define ONIG_META_CHAR_ONE_OR_MORE_TIME 4 +#define ONIG_META_CHAR_ANYCHAR_ANYTIME 5 + +#define ONIG_INEFFECTIVE_META_CHAR 0 + +/* error codes */ +#define ONIG_IS_PATTERN_ERROR(ecode) ((ecode) <= -100 && (ecode) > -1000) +/* normal return */ +#define ONIG_NORMAL 0 +#define ONIG_MISMATCH -1 +#define ONIG_NO_SUPPORT_CONFIG -2 + +/* internal error */ +#define ONIGERR_MEMORY -5 +#define ONIGERR_TYPE_BUG -6 +#define ONIGERR_PARSER_BUG -11 +#define ONIGERR_STACK_BUG -12 +#define ONIGERR_UNDEFINED_BYTECODE -13 +#define ONIGERR_UNEXPECTED_BYTECODE -14 +#define ONIGERR_MATCH_STACK_LIMIT_OVER -15 +#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED -21 +#define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22 +/* general error */ +#define ONIGERR_INVALID_ARGUMENT -30 +/* syntax error */ +#define ONIGERR_END_PATTERN_AT_LEFT_BRACE -100 +#define ONIGERR_END_PATTERN_AT_LEFT_BRACKET -101 +#define ONIGERR_EMPTY_CHAR_CLASS -102 +#define ONIGERR_PREMATURE_END_OF_CHAR_CLASS -103 +#define ONIGERR_END_PATTERN_AT_ESCAPE -104 +#define ONIGERR_END_PATTERN_AT_META -105 +#define ONIGERR_END_PATTERN_AT_CONTROL -106 +#define ONIGERR_META_CODE_SYNTAX -108 +#define ONIGERR_CONTROL_CODE_SYNTAX -109 +#define ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE -110 +#define ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE -111 +#define ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS -112 +#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED -113 +#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID -114 +#define ONIGERR_NESTED_REPEAT_OPERATOR -115 +#define ONIGERR_UNMATCHED_CLOSE_PARENTHESIS -116 +#define ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS -117 +#define ONIGERR_END_PATTERN_IN_GROUP -118 +#define ONIGERR_UNDEFINED_GROUP_OPTION -119 +#define ONIGERR_INVALID_POSIX_BRACKET_TYPE -121 +#define ONIGERR_INVALID_LOOK_BEHIND_PATTERN -122 +#define ONIGERR_INVALID_REPEAT_RANGE_PATTERN -123 +/* values error (syntax error) */ +#define ONIGERR_TOO_BIG_NUMBER -200 +#define ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE -201 +#define ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE -202 +#define ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS -203 +#define ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE -204 +#define ONIGERR_TOO_MANY_MULTI_BYTE_RANGES -205 +#define ONIGERR_TOO_SHORT_MULTI_BYTE_STRING -206 +#define ONIGERR_TOO_BIG_BACKREF_NUMBER -207 +#define ONIGERR_INVALID_BACKREF -208 +#define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED -209 +#define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE -212 +#define ONIGERR_EMPTY_GROUP_NAME -214 +#define ONIGERR_INVALID_GROUP_NAME -215 +#define ONIGERR_INVALID_CHAR_IN_GROUP_NAME -216 +#define ONIGERR_UNDEFINED_NAME_REFERENCE -217 +#define ONIGERR_UNDEFINED_GROUP_REFERENCE -218 +#define ONIGERR_MULTIPLEX_DEFINED_NAME -219 +#define ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL -220 +#define ONIGERR_NEVER_ENDING_RECURSION -221 +#define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222 +#define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223 +#define ONIGERR_INVALID_WIDE_CHAR_VALUE -400 +#define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401 +#define ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION -402 +#define ONIGERR_INVALID_COMBINATION_OF_OPTIONS -403 + +/* errors related to thread */ +#define ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT -1001 + + +/* must be smaller than BIT_STATUS_BITS_NUM (unsigned int * 8) */ +#define ONIG_MAX_CAPTURE_HISTORY_GROUP 31 +#define ONIG_IS_CAPTURE_HISTORY_GROUP(r, i) \ + ((i) <= ONIG_MAX_CAPTURE_HISTORY_GROUP && (r)->list && (r)->list[i]) + +typedef struct OnigCaptureTreeNodeStruct { + int group; /* group number */ + int beg; + int end; + int allocated; + int num_childs; + struct OnigCaptureTreeNodeStruct** childs; +} OnigCaptureTreeNode; + +/* match result region type */ +struct re_registers { + int allocated; + int num_regs; + int* beg; + int* end; + /* extended */ + OnigCaptureTreeNode* history_root; /* capture history tree root */ +}; + +/* capture tree traverse */ +#define ONIG_TRAVERSE_CALLBACK_AT_FIRST 1 +#define ONIG_TRAVERSE_CALLBACK_AT_LAST 2 +#define ONIG_TRAVERSE_CALLBACK_AT_BOTH \ + ( ONIG_TRAVERSE_CALLBACK_AT_FIRST | ONIG_TRAVERSE_CALLBACK_AT_LAST ) + + +#define ONIG_REGION_NOTPOS -1 + +typedef struct re_registers OnigRegion; + +typedef struct { + OnigEncoding enc; + OnigUChar* par; + OnigUChar* par_end; +} OnigErrorInfo; + +typedef struct { + int lower; + int upper; +} OnigRepeatRange; + +typedef void (*OnigWarnFunc) P_((const char* s)); +extern void onig_null_warn P_((const char* s)); +#define ONIG_NULL_WARN onig_null_warn + +#define ONIG_CHAR_TABLE_SIZE 256 + +/* regex_t state */ +#define ONIG_STATE_NORMAL 0 +#define ONIG_STATE_SEARCHING 1 +#define ONIG_STATE_COMPILING -1 +#define ONIG_STATE_MODIFY -2 + +#define ONIG_STATE(reg) \ + ((reg)->state > 0 ? ONIG_STATE_SEARCHING : (reg)->state) + +typedef struct re_pattern_buffer { + /* common members of BBuf(bytes-buffer) */ + unsigned char* p; /* compiled pattern */ + unsigned int used; /* used space for p */ + unsigned int alloc; /* allocated space for p */ + + int state; /* normal, searching, compiling */ + int num_mem; /* used memory(...) num counted from 1 */ + int num_repeat; /* OP_REPEAT/OP_REPEAT_NG id-counter */ + int num_null_check; /* OP_NULL_CHECK_START/END id counter */ + int num_comb_exp_check; /* combination explosion check */ + int num_call; /* number of subexp call */ + unsigned int capture_history; /* (?@...) flag (1-31) */ + unsigned int bt_mem_start; /* need backtrack flag */ + unsigned int bt_mem_end; /* need backtrack flag */ + int stack_pop_level; + int repeat_range_alloc; + OnigRepeatRange* repeat_range; + + OnigEncoding enc; + OnigOptionType options; + OnigSyntaxType* syntax; + OnigCaseFoldType case_fold_flag; + void* name_table; + + /* optimization info (string search, char-map and anchors) */ + int optimize; /* optimize flag */ + int threshold_len; /* search str-length for apply optimize */ + int anchor; /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */ + OnigDistance anchor_dmin; /* (SEMI_)END_BUF anchor distance */ + OnigDistance anchor_dmax; /* (SEMI_)END_BUF anchor distance */ + int sub_anchor; /* start-anchor for exact or map */ + unsigned char *exact; + unsigned char *exact_end; + unsigned char map[ONIG_CHAR_TABLE_SIZE]; /* used as BM skip or char-map */ + int *int_map; /* BM skip for exact_len > 255 */ + int *int_map_backward; /* BM skip for backward search */ + OnigDistance dmin; /* min-distance of exact or map */ + OnigDistance dmax; /* max-distance of exact or map */ + + /* regex_t link chain */ + struct re_pattern_buffer* chain; /* escape compile-conflict */ +} OnigRegexType; + +typedef OnigRegexType* OnigRegex; + +#ifndef ONIG_ESCAPE_REGEX_T_COLLISION + typedef OnigRegexType regex_t; +#endif + + +typedef struct { + int num_of_elements; + OnigEncoding pattern_enc; + OnigEncoding target_enc; + OnigSyntaxType* syntax; + OnigOptionType option; + OnigCaseFoldType case_fold_flag; +} OnigCompileInfo; + +/* Oniguruma Native API */ +ONIG_EXTERN +int onig_init P_((void)); +ONIG_EXTERN +int onig_error_code_to_str PV_((OnigUChar* s, int err_code, ...)); +ONIG_EXTERN +void onig_set_warn_func P_((OnigWarnFunc f)); +ONIG_EXTERN +void onig_set_verb_warn_func P_((OnigWarnFunc f)); +ONIG_EXTERN +int onig_new P_((OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); +ONIG_EXTERN +int onig_new_deluxe P_((OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo)); +ONIG_EXTERN +void onig_free P_((OnigRegex)); +ONIG_EXTERN +int onig_recompile P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); +ONIG_EXTERN +int onig_recompile_deluxe P_((OnigRegex reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo)); +ONIG_EXTERN +int onig_search P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option)); +ONIG_EXTERN +int onig_match P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option)); +ONIG_EXTERN +OnigRegion* onig_region_new P_((void)); +ONIG_EXTERN +void onig_region_init P_((OnigRegion* region)); +ONIG_EXTERN +void onig_region_free P_((OnigRegion* region, int free_self)); +ONIG_EXTERN +void onig_region_copy P_((OnigRegion* to, OnigRegion* from)); +ONIG_EXTERN +void onig_region_clear P_((OnigRegion* region)); +ONIG_EXTERN +int onig_region_resize P_((OnigRegion* region, int n)); +ONIG_EXTERN +int onig_region_set P_((OnigRegion* region, int at, int beg, int end)); +ONIG_EXTERN +int onig_name_to_group_numbers P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums)); +ONIG_EXTERN +int onig_name_to_backref_number P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, OnigRegion *region)); +ONIG_EXTERN +int onig_foreach_name P_((OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg)); +ONIG_EXTERN +int onig_number_of_names P_((OnigRegex reg)); +ONIG_EXTERN +int onig_number_of_captures P_((OnigRegex reg)); +ONIG_EXTERN +int onig_number_of_capture_histories P_((OnigRegex reg)); +ONIG_EXTERN +OnigCaptureTreeNode* onig_get_capture_tree P_((OnigRegion* region)); +ONIG_EXTERN +int onig_capture_tree_traverse P_((OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg)); +ONIG_EXTERN +int onig_noname_group_capture_is_active P_((OnigRegex reg)); +ONIG_EXTERN +OnigEncoding onig_get_encoding P_((OnigRegex reg)); +ONIG_EXTERN +OnigOptionType onig_get_options P_((OnigRegex reg)); +ONIG_EXTERN +OnigCaseFoldType onig_get_case_fold_flag P_((OnigRegex reg)); +ONIG_EXTERN +OnigSyntaxType* onig_get_syntax P_((OnigRegex reg)); +ONIG_EXTERN +int onig_set_default_syntax P_((OnigSyntaxType* syntax)); +ONIG_EXTERN +void onig_copy_syntax P_((OnigSyntaxType* to, OnigSyntaxType* from)); +ONIG_EXTERN +unsigned int onig_get_syntax_op P_((OnigSyntaxType* syntax)); +ONIG_EXTERN +unsigned int onig_get_syntax_op2 P_((OnigSyntaxType* syntax)); +ONIG_EXTERN +unsigned int onig_get_syntax_behavior P_((OnigSyntaxType* syntax)); +ONIG_EXTERN +OnigOptionType onig_get_syntax_options P_((OnigSyntaxType* syntax)); +ONIG_EXTERN +void onig_set_syntax_op P_((OnigSyntaxType* syntax, unsigned int op)); +ONIG_EXTERN +void onig_set_syntax_op2 P_((OnigSyntaxType* syntax, unsigned int op2)); +ONIG_EXTERN +void onig_set_syntax_behavior P_((OnigSyntaxType* syntax, unsigned int behavior)); +ONIG_EXTERN +void onig_set_syntax_options P_((OnigSyntaxType* syntax, OnigOptionType options)); +ONIG_EXTERN +int onig_set_meta_char P_((OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code)); +ONIG_EXTERN +void onig_copy_encoding P_((OnigEncoding to, OnigEncoding from)); +ONIG_EXTERN +OnigCaseFoldType onig_get_default_case_fold_flag P_((void)); +ONIG_EXTERN +int onig_set_default_case_fold_flag P_((OnigCaseFoldType case_fold_flag)); +ONIG_EXTERN +unsigned int onig_get_match_stack_limit_size P_((void)); +ONIG_EXTERN +int onig_set_match_stack_limit_size P_((unsigned int size)); +ONIG_EXTERN +int onig_end P_((void)); +ONIG_EXTERN +const char* onig_version P_((void)); +ONIG_EXTERN +const char* onig_copyright P_((void)); + +#ifdef __cplusplus +#if 0 +{ /* satisfy cc-mode */ +#endif +} +#endif + +#endif /* ONIGURUMA_H */ diff --git a/include/ruby/re.h b/include/ruby/re.h new file mode 100644 index 000000000..ae6e0357b --- /dev/null +++ b/include/ruby/re.h @@ -0,0 +1,58 @@ +/********************************************************************** + + re.h - + + $Author$ + $Date$ + created at: Thu Sep 30 14:18:32 JST 1993 + + Copyright (C) 1993-2003 Yukihiro Matsumoto + +**********************************************************************/ + +#ifndef RUBY_RE_H +#define RUBY_RE_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#include +#include + +#include "ruby/regex.h" + +typedef struct re_pattern_buffer Regexp; + +struct RMatch { + struct RBasic basic; + VALUE str; + struct re_registers *regs; + VALUE regexp; /* RRegexp */ +}; + +#define RMATCH(obj) (R_CAST(RMatch)(obj)) + +VALUE rb_reg_regcomp(VALUE); +long rb_reg_search(VALUE, VALUE, long, long); +VALUE rb_reg_regsub(VALUE, VALUE, struct re_registers *, VALUE); +long rb_reg_adjust_startpos(VALUE, VALUE, long, long); +void rb_match_busy(VALUE); +VALUE rb_reg_quote(VALUE); + +RUBY_EXTERN int ruby_ignorecase; + +int rb_reg_mbclen2(unsigned int, VALUE); +#define mbclen2(c,re) rb_reg_mbclen2((c),(re)) + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* RUBY_RE_H */ diff --git a/include/ruby/regex.h b/include/ruby/regex.h new file mode 100644 index 000000000..118c37c48 --- /dev/null +++ b/include/ruby/regex.h @@ -0,0 +1,46 @@ +/********************************************************************** + + regex.h - + + $Author$ + $Date$ + + Copyright (C) 1993-2005 Yukihiro Matsumoto + +**********************************************************************/ + +#ifndef ONIGURUMA_REGEX_H +#define ONIGURUMA_REGEX_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#ifdef RUBY +#include "ruby/oniguruma.h" +#else +#include "oniguruma.h" +#endif + +#ifndef ONIG_RUBY_M17N + +ONIG_EXTERN OnigEncoding OnigEncDefaultCharEncoding; + +#undef ismbchar +#define ismbchar(c) (mbclen((c)) != 1) +#define mbclen(c) \ + ONIGENC_MBC_ENC_LEN(OnigEncDefaultCharEncoding, (UChar* )(&c)) + +#endif /* ifndef ONIG_RUBY_M17N */ + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* ONIGURUMA_REGEX_H */ diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h new file mode 100644 index 000000000..69aadf14c --- /dev/null +++ b/include/ruby/ruby.h @@ -0,0 +1,826 @@ +/********************************************************************** + + ruby.h - + + $Author$ + created at: Thu Jun 10 14:26:32 JST 1993 + + Copyright (C) 1993-2003 Yukihiro Matsumoto + Copyright (C) 2000 Network Applied Communication Laboratory, Inc. + Copyright (C) 2000 Information-technology Promotion Agency, Japan + +**********************************************************************/ + +#ifndef RUBY_H +#define RUBY_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#include "ruby/config.h" +#ifdef RUBY_EXTCONF_H +#include RUBY_EXTCONF_H +#endif + +#define NORETURN_STYLE_NEW 1 +#ifndef NORETURN +# define NORETURN(x) x +#endif +#ifndef DEPRECATED +# define DEPRECATED(x) x +#endif +#ifndef NOINLINE +# define NOINLINE(x) x +#endif + +#ifdef __GNUC__ +#define PRINTF_ARGS(decl, string_index, first_to_check) \ + decl __attribute__((format(printf, string_index, first_to_check))) +#else +#define PRINTF_ARGS(decl, string_index, first_to_check) decl +#endif + +#ifdef HAVE_STDLIB_H +# include +#endif + +#ifdef HAVE_STRING_H +# include +#else +# include +#endif + +#ifdef HAVE_INTRINSICS_H +# include +#endif + +#include +#include + +#include "defines.h" + +/* need to include to use these macros */ +#ifndef ISPRINT +#define ISASCII(c) isascii((int)(unsigned char)(c)) +#undef ISPRINT +#define ISPRINT(c) (ISASCII(c) && isprint((int)(unsigned char)(c))) +#define ISSPACE(c) (ISASCII(c) && isspace((int)(unsigned char)(c))) +#define ISUPPER(c) (ISASCII(c) && isupper((int)(unsigned char)(c))) +#define ISLOWER(c) (ISASCII(c) && islower((int)(unsigned char)(c))) +#define ISALNUM(c) (ISASCII(c) && isalnum((int)(unsigned char)(c))) +#define ISALPHA(c) (ISASCII(c) && isalpha((int)(unsigned char)(c))) +#define ISDIGIT(c) (ISASCII(c) && isdigit((int)(unsigned char)(c))) +#define ISXDIGIT(c) (ISASCII(c) && isxdigit((int)(unsigned char)(c))) +#endif + +#if defined(HAVE_ALLOCA_H) +#include +#else +# ifdef _AIX +#pragma alloca +# endif +#endif + +#if defined(__VMS) +# pragma builtins +# define alloca __alloca +#endif + +#if SIZEOF_LONG == SIZEOF_VOIDP +typedef unsigned long VALUE; +typedef unsigned long ID; +# define SIGNED_VALUE long +# define SIZEOF_VALUE SIZEOF_LONG +#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP +typedef unsigned LONG_LONG VALUE; +typedef unsigned LONG_LONG ID; +# define SIGNED_VALUE LONG_LONG +# define LONG_LONG_VALUE 1 +# define SIZEOF_VALUE SIZEOF_LONG_LONG +#else +# error ---->> ruby requires sizeof(void*) == sizeof(long) to be compiled. <<---- +#endif + + +#ifdef __STDC__ +# include +#else +# ifndef LONG_MAX +# ifdef HAVE_LIMITS_H +# include +# else + /* assuming 32bit(2's compliment) long */ +# define LONG_MAX 2147483647 +# endif +# endif +# ifndef LONG_MIN +# define LONG_MIN (-LONG_MAX-1) +# endif +# ifndef CHAR_BIT +# define CHAR_BIT 8 +# endif +#endif + +#ifdef HAVE_LONG_LONG +# ifndef LLONG_MAX +# ifdef LONG_LONG_MAX +# define LLONG_MAX LONG_LONG_MAX +# else +# ifdef _I64_MAX +# define LLONG_MAX _I64_MAX +# else + /* assuming 64bit(2's complement) long long */ +# define LLONG_MAX 9223372036854775807LL +# endif +# endif +# endif +# ifndef LLONG_MIN +# ifdef LONG_LONG_MIN +# define LLONG_MIN LONG_LONG_MIN +# else +# ifdef _I64_MIN +# define LLONG_MIN _I64_MIN +# else +# define LLONG_MIN (-LLONG_MAX-1) +# endif +# endif +# endif +#endif + +#ifdef LONG_LONG_VALUE +# define FIXNUM_MAX (LLONG_MAX>>1) +# define FIXNUM_MIN RSHIFT((LONG_LONG)LLONG_MIN,1) +#else +# define FIXNUM_MAX (LONG_MAX>>1) +# define FIXNUM_MIN RSHIFT((long)LONG_MIN,1) +#endif + +#define FIXNUM_FLAG 0x01 +#define INT2FIX(i) ((VALUE)(((SIGNED_VALUE)(i))<<1 | FIXNUM_FLAG)) +#define LONG2FIX(i) INT2FIX(i) +#define rb_fix_new(v) INT2FIX(v) +VALUE rb_int2inum(SIGNED_VALUE); +#define INT2NUM(v) rb_int2inum(v) +#define LONG2NUM(v) INT2NUM(v) +#define rb_int_new(v) rb_int2inum(v) +VALUE rb_uint2inum(VALUE); +#define UINT2NUM(v) rb_uint2inum(v) +#define ULONG2NUM(v) UINT2NUM(v) +#define rb_uint_new(v) rb_uint2inum(v) + +#ifdef HAVE_LONG_LONG +VALUE rb_ll2inum(LONG_LONG); +#define LL2NUM(v) rb_ll2inum(v) +VALUE rb_ull2inum(unsigned LONG_LONG); +#define ULL2NUM(v) rb_ull2inum(v) +#endif + +#if SIZEOF_OFF_T > SIZEOF_LONG && defined(HAVE_LONG_LONG) +# define OFFT2NUM(v) LL2NUM(v) +#elif SIZEOF_OFF_T == SIZEOF_LONG +# define OFFT2NUM(v) LONG2NUM(v) +#else +# define OFFT2NUM(v) INT2NUM(v) +#endif + +#ifndef PIDT2NUM +#define PIDT2NUM(v) LONG2NUM(v) +#endif +#ifndef NUM2PIDT +#define NUM2PIDT(v) NUM2LONG(v) +#endif +#ifndef UIDT2NUM +#define UIDT2NUM(v) LONG2NUM(v) +#endif +#ifndef NUM2UIDT +#define NUM2UIDT(v) NUM2LONG(v) +#endif +#ifndef GIDT2NUM +#define GIDT2NUM(v) LONG2NUM(v) +#endif +#ifndef NUM2GIDT +#define NUM2GIDT(v) NUM2LONG(v) +#endif + +#define FIX2LONG(x) RSHIFT((SIGNED_VALUE)x,1) +#define FIX2ULONG(x) (((VALUE)(x))>>1) +#define FIXNUM_P(f) (((SIGNED_VALUE)(f))&FIXNUM_FLAG) +#define POSFIXABLE(f) ((f) <= FIXNUM_MAX) +#define NEGFIXABLE(f) ((f) >= FIXNUM_MIN) +#define FIXABLE(f) (POSFIXABLE(f) && NEGFIXABLE(f)) + +#define IMMEDIATE_MASK 0x03 +#define IMMEDIATE_P(x) ((VALUE)(x) & IMMEDIATE_MASK) + +#define SYMBOL_FLAG 0x0e +#define SYMBOL_P(x) (((VALUE)(x)&0xff)==SYMBOL_FLAG) +#define ID2SYM(x) ((VALUE)(((long)(x))<<8|SYMBOL_FLAG)) +#define SYM2ID(x) RSHIFT((unsigned long)x,8) + +/* special contants - i.e. non-zero and non-fixnum constants */ +#define Qfalse ((VALUE)0) +#define Qtrue ((VALUE)2) +#define Qnil ((VALUE)4) +#define Qundef ((VALUE)6) /* undefined value for placeholder */ + +#define RTEST(v) (((VALUE)(v) & ~Qnil) != 0) +#define NIL_P(v) ((VALUE)(v) == Qnil) + +#define CLASS_OF(v) rb_class_of((VALUE)(v)) + +#define T_NONE 0x00 + +#define T_NIL 0x01 +#define T_OBJECT 0x02 +#define T_CLASS 0x03 +#define T_ICLASS 0x04 +#define T_MODULE 0x05 +#define T_FLOAT 0x06 +#define T_STRING 0x07 +#define T_REGEXP 0x08 +#define T_ARRAY 0x09 +#define T_FIXNUM 0x0a +#define T_HASH 0x0b +#define T_STRUCT 0x0c +#define T_BIGNUM 0x0d +#define T_FILE 0x0e + +#define T_TRUE 0x10 +#define T_FALSE 0x11 +#define T_DATA 0x12 +#define T_MATCH 0x13 +#define T_SYMBOL 0x14 + +#define T_VALUES 0x1a +#define T_BLOCK 0x1b +#define T_UNDEF 0x1c +#define T_NODE 0x1f + +#define T_MASK 0x1f + +#define BUILTIN_TYPE(x) (((struct RBasic*)(x))->flags & T_MASK) + +#define TYPE(x) rb_type((VALUE)(x)) + +void rb_check_type(VALUE,int); +#define Check_Type(v,t) rb_check_type((VALUE)(v),t) + +VALUE rb_str_to_str(VALUE); +VALUE rb_string_value(volatile VALUE*); +char *rb_string_value_ptr(volatile VALUE*); +char *rb_string_value_cstr(volatile VALUE*); + +#define StringValue(v) rb_string_value(&(v)) +#define StringValuePtr(v) rb_string_value_ptr(&(v)) +#define StringValueCStr(v) rb_string_value_cstr(&(v)) + +void rb_check_safe_obj(VALUE); +void rb_check_safe_str(VALUE); +#define SafeStringValue(v) do {\ + StringValue(v);\ + rb_check_safe_obj(v);\ +} while (0) +/* obsolete macro - use SafeStringValue(v) */ +#define Check_SafeStr(v) rb_check_safe_str((VALUE)(v)) + +VALUE rb_get_path(VALUE); +#define FilePathValue(v) ((v) = rb_get_path(v)) + +void rb_secure(int); +int rb_safe_level(void); +void rb_set_safe_level(int); +void rb_set_safe_level_force(int); +void rb_secure_update(VALUE); + +VALUE rb_errinfo(void); +void rb_set_errinfo(VALUE); + +SIGNED_VALUE rb_num2long(VALUE); +VALUE rb_num2ulong(VALUE); +#define NUM2LONG(x) (FIXNUM_P(x)?FIX2LONG(x):rb_num2long((VALUE)x)) +#define NUM2ULONG(x) rb_num2ulong((VALUE)x) +#if SIZEOF_INT < SIZEOF_LONG +long rb_num2int(VALUE); +#define NUM2INT(x) (FIXNUM_P(x)?FIX2INT(x):rb_num2int((VALUE)x)) +long rb_fix2int(VALUE); +#define FIX2INT(x) rb_fix2int((VALUE)x) +unsigned long rb_num2uint(VALUE); +#define NUM2UINT(x) rb_num2uint(x) +unsigned long rb_fix2uint(VALUE); +#define FIX2UINT(x) rb_fix2uint(x) +#else +#define NUM2INT(x) ((int)NUM2LONG(x)) +#define NUM2UINT(x) ((unsigned int)NUM2ULONG(x)) +#define FIX2INT(x) ((int)FIX2LONG(x)) +#define FIX2UINT(x) ((unsigned int)FIX2ULONG(x)) +#endif + +#ifdef HAVE_LONG_LONG +LONG_LONG rb_num2ll(VALUE); +unsigned LONG_LONG rb_num2ull(VALUE); +# define NUM2LL(x) (FIXNUM_P(x)?FIX2LONG(x):rb_num2ll((VALUE)x)) +# define NUM2ULL(x) rb_num2ull((VALUE)x) +#endif + +#if defined(HAVE_LONG_LONG) && SIZEOF_OFF_T > SIZEOF_LONG +# define NUM2OFFT(x) ((off_t)NUM2LL(x)) +#else +# define NUM2OFFT(x) NUM2LONG(x) +#endif + +double rb_num2dbl(VALUE); +#define NUM2DBL(x) rb_num2dbl((VALUE)(x)) + +/* obsolete API - use StringValue() */ +char *rb_str2cstr(VALUE,long*); +/* obsolete API - use StringValuePtr() */ +#define STR2CSTR(x) rb_str2cstr((VALUE)(x),0) + +#define NUM2CHR(x) (((TYPE(x) == T_STRING)&&(RSTRING_LEN(x)>=1))?\ + RSTRING_PTR(x)[0]:(char)(NUM2INT(x)&0xff)) +#define CHR2FIX(x) INT2FIX((long)((x)&0xff)) + +VALUE rb_newobj(void); +#define NEWOBJ(obj,type) type *obj = (type*)rb_newobj() +#define OBJSETUP(obj,c,t) do {\ + RBASIC(obj)->flags = (t);\ + RBASIC(obj)->klass = (c);\ + if (rb_safe_level() >= 3) FL_SET(obj, FL_TAINT);\ +} while (0) +#define CLONESETUP(clone,obj) do {\ + OBJSETUP(clone,rb_singleton_class_clone((VALUE)obj),RBASIC(obj)->flags);\ + rb_singleton_class_attached(RBASIC(clone)->klass, (VALUE)clone);\ + if (FL_TEST(obj, FL_EXIVAR)) rb_copy_generic_ivar((VALUE)clone,(VALUE)obj);\ +} while (0) +#define DUPSETUP(dup,obj) do {\ + OBJSETUP(dup,rb_obj_class(obj),(RBASIC(obj)->flags)&(T_MASK|FL_EXIVAR|FL_TAINT));\ + if (FL_TEST(obj, FL_EXIVAR)) rb_copy_generic_ivar((VALUE)dup,(VALUE)obj);\ +} while (0) + +struct RBasic { + VALUE flags; + VALUE klass; +}; + +struct RObject { + struct RBasic basic; + struct st_table *iv_tbl; +}; + +struct RValues { + struct RBasic basic; + VALUE v1; + VALUE v2; + VALUE v3; +}; + +struct RClass { + struct RBasic basic; + struct st_table *iv_tbl; + struct st_table *m_tbl; + VALUE super; +}; + +struct RFloat { + struct RBasic basic; + double value; +}; + +#define ELTS_SHARED FL_USER2 + +#define RSTRING_EMBED_LEN_MAX ((sizeof(VALUE)*3)/sizeof(char)-1) +struct RString { + struct RBasic basic; + union { + struct { + long len; + char *ptr; + union { + long capa; + VALUE shared; + } aux; + } heap; + char ary[RSTRING_EMBED_LEN_MAX]; + } as; +}; +#define RSTRING_NOEMBED FL_USER1 +#define RSTRING_EMBED_LEN_MASK (FL_USER2|FL_USER3|FL_USER4|FL_USER5|FL_USER6) +#define RSTRING_EMBED_LEN_SHIFT (FL_USHIFT+2) +#define RSTRING_LEN(str) \ + (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \ + (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & \ + (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : \ + RSTRING(str)->as.heap.len) +#define RSTRING_PTR(str) \ + (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \ + RSTRING(str)->as.ary : \ + RSTRING(str)->as.heap.ptr) + +struct RArray { + struct RBasic basic; + long len; + union { + long capa; + VALUE shared; + } aux; + VALUE *ptr; +}; +#define RARRAY_LEN(a) RARRAY(a)->len +#define RARRAY_PTR(a) RARRAY(a)->ptr + +struct RRegexp { + struct RBasic basic; + struct re_pattern_buffer *ptr; + long len; + char *str; +}; + +struct RHash { + struct RBasic basic; + struct st_table *tbl; + int iter_lev; + VALUE ifnone; +}; + +struct RFile { + struct RBasic basic; + struct rb_io_t *fptr; +}; + +struct RData { + struct RBasic basic; + void (*dmark)(void*); + void (*dfree)(void*); + void *data; +}; + +#define DATA_PTR(dta) (RDATA(dta)->data) + +/* +#define RUBY_DATA_FUNC(func) ((void (*)(void*))func) +*/ +typedef void (*RUBY_DATA_FUNC)(void*); + +VALUE rb_data_object_alloc(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC); + +#define Data_Wrap_Struct(klass,mark,free,sval)\ + rb_data_object_alloc(klass,sval,(RUBY_DATA_FUNC)mark,(RUBY_DATA_FUNC)free) + +#define Data_Make_Struct(klass,type,mark,free,sval) (\ + sval = ALLOC(type),\ + memset(sval, 0, sizeof(type)),\ + Data_Wrap_Struct(klass,mark,free,sval)\ +) + +#define Data_Get_Struct(obj,type,sval) do {\ + Check_Type(obj, T_DATA); \ + sval = (type*)DATA_PTR(obj);\ +} while (0) + +#define RSTRUCT_EMBED_LEN_MAX 3 +struct RStruct { + struct RBasic basic; + union { + struct { + long len; + VALUE *ptr; + } heap; + VALUE ary[RSTRUCT_EMBED_LEN_MAX]; + } as; +}; +#define RSTRUCT_EMBED_LEN_MASK (FL_USER2|FL_USER1) +#define RSTRUCT_EMBED_LEN_SHIFT (FL_USHIFT+1) +#define RSTRUCT_LEN(st) \ + ((RBASIC(st)->flags & RSTRUCT_EMBED_LEN_MASK) ? \ + (long)((RBASIC(st)->flags >> RSTRUCT_EMBED_LEN_SHIFT) & \ + (RSTRUCT_EMBED_LEN_MASK >> RSTRUCT_EMBED_LEN_SHIFT)) : \ + RSTRUCT(st)->as.heap.len) +#define RSTRUCT_PTR(st) \ + ((RBASIC(st)->flags & RSTRUCT_EMBED_LEN_MASK) ? \ + RSTRUCT(st)->as.ary : \ + RSTRUCT(st)->as.heap.ptr) + +struct RBignum { + struct RBasic basic; + char sign; + long len; + void *digits; +}; + +#define R_CAST(st) (struct st*) +#define RBASIC(obj) (R_CAST(RBasic)(obj)) +#define ROBJECT(obj) (R_CAST(RObject)(obj)) +#define RCLASS(obj) (R_CAST(RClass)(obj)) +#define RMODULE(obj) RCLASS(obj) +#define RFLOAT(obj) (R_CAST(RFloat)(obj)) +#define RSTRING(obj) (R_CAST(RString)(obj)) +#define RREGEXP(obj) (R_CAST(RRegexp)(obj)) +#define RARRAY(obj) (R_CAST(RArray)(obj)) +#define RHASH(obj) (R_CAST(RHash)(obj)) +#define RDATA(obj) (R_CAST(RData)(obj)) +#define RSTRUCT(obj) (R_CAST(RStruct)(obj)) +#define RBIGNUM(obj) (R_CAST(RBignum)(obj)) +#define RFILE(obj) (R_CAST(RFile)(obj)) +#define RVALUES(obj) (R_CAST(RValues)(obj)) + +#define FL_SINGLETON FL_USER0 +#define FL_MARK (1<<5) +#define FL_RESERVED (1<<6) /* will be used in the future GC */ +#define FL_FINALIZE (1<<7) +#define FL_TAINT (1<<8) +#define FL_EXIVAR (1<<9) +#define FL_FREEZE (1<<10) + +#define FL_USHIFT 11 + +#define FL_USER0 (1<<(FL_USHIFT+0)) +#define FL_USER1 (1<<(FL_USHIFT+1)) +#define FL_USER2 (1<<(FL_USHIFT+2)) +#define FL_USER3 (1<<(FL_USHIFT+3)) +#define FL_USER4 (1<<(FL_USHIFT+4)) +#define FL_USER5 (1<<(FL_USHIFT+5)) +#define FL_USER6 (1<<(FL_USHIFT+6)) +#define FL_USER7 (1<<(FL_USHIFT+7)) + +#define SPECIAL_CONST_P(x) (IMMEDIATE_P(x) || !RTEST(x)) + +#define FL_ABLE(x) (!SPECIAL_CONST_P(x) && BUILTIN_TYPE(x) != T_NODE) +#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) +#define FL_REVERSE(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags ^= (f);} while (0) + +#define OBJ_TAINTED(x) FL_TEST((x), FL_TAINT) +#define OBJ_TAINT(x) FL_SET((x), FL_TAINT) +#define OBJ_INFECT(x,s) do {if (FL_ABLE(x) && FL_ABLE(s)) RBASIC(x)->flags |= RBASIC(s)->flags & FL_TAINT;} while (0) + +#define OBJ_FROZEN(x) FL_TEST((x), FL_FREEZE) +#define OBJ_FREEZE(x) FL_SET((x), FL_FREEZE) + +#define ALLOC_N(type,n) (type*)xmalloc2((n),sizeof(type)) +#define ALLOC(type) (type*)xmalloc(sizeof(type)) +#define REALLOC_N(var,type,n) (var)=(type*)xrealloc2((char*)(var),(n),sizeof(type)) + +#define ALLOCA_N(type,n) (type*)alloca(sizeof(type)*(n)) + +#define MEMZERO(p,type,n) memset((p), 0, sizeof(type)*(n)) +#define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(n)) +#define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), sizeof(type)*(n)) +#define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), sizeof(type)*(n)) + +void rb_obj_infect(VALUE,VALUE); + +typedef int ruby_glob_func(const char*,VALUE); +void rb_glob(const char*,void(*)(const char*,VALUE),VALUE); +int ruby_glob(const char*,int,ruby_glob_func*,VALUE); +int ruby_brace_expand(const char*,int,ruby_glob_func*,VALUE); +int ruby_brace_glob(const char*,int,ruby_glob_func*,VALUE); + +VALUE rb_define_class(const char*,VALUE); +VALUE rb_define_module(const char*); +VALUE rb_define_class_under(VALUE, const char*, VALUE); +VALUE rb_define_module_under(VALUE, const char*); + +void rb_include_module(VALUE,VALUE); +void rb_extend_object(VALUE,VALUE); + +void rb_define_variable(const char*,VALUE*); +void rb_define_virtual_variable(const char*,VALUE(*)(ANYARGS),void(*)(ANYARGS)); +void rb_define_hooked_variable(const char*,VALUE*,VALUE(*)(ANYARGS),void(*)(ANYARGS)); +void rb_define_readonly_variable(const char*,VALUE*); +void rb_define_const(VALUE,const char*,VALUE); +void rb_define_global_const(const char*,VALUE); + +#define RUBY_METHOD_FUNC(func) ((VALUE (*)(ANYARGS))func) +void rb_define_method(VALUE,const char*,VALUE(*)(ANYARGS),int); +void rb_define_module_function(VALUE,const char*,VALUE(*)(ANYARGS),int); +void rb_define_global_function(const char*,VALUE(*)(ANYARGS),int); + +void rb_undef_method(VALUE,const char*); +void rb_define_alias(VALUE,const char*,const char*); +void rb_define_attr(VALUE,const char*,int,int); + +void rb_global_variable(VALUE*); +void rb_register_mark_object(VALUE); +void rb_gc_register_address(VALUE*); +void rb_gc_unregister_address(VALUE*); + +ID rb_intern(const char*); +ID rb_intern2(const char*, long); +const char *rb_id2name(ID); +ID rb_to_id(VALUE); +VALUE rb_id2str(ID); + +char *rb_class2name(VALUE); +char *rb_obj_classname(VALUE); + +void rb_p(VALUE); + +VALUE rb_eval_string(const char*); +VALUE rb_eval_string_protect(const char*, int*); +VALUE rb_eval_string_wrap(const char*, int*); +VALUE rb_funcall(VALUE, ID, int, ...); +VALUE rb_funcall2(VALUE, ID, int, const VALUE*); +VALUE rb_funcall3(VALUE, ID, int, const VALUE*); +int rb_scan_args(int, const VALUE*, const char*, ...); +VALUE rb_call_super(int, const VALUE*); + +VALUE rb_gv_set(const char*, VALUE); +VALUE rb_gv_get(const char*); +VALUE rb_iv_get(VALUE, const char*); +VALUE rb_iv_set(VALUE, const char*, VALUE); + +VALUE rb_equal(VALUE,VALUE); + +RUBY_EXTERN VALUE ruby_verbose, ruby_debug; + +PRINTF_ARGS(NORETURN(void rb_raise(VALUE, const char*, ...)), 2, 3); +PRINTF_ARGS(NORETURN(void rb_fatal(const char*, ...)), 1, 2); +PRINTF_ARGS(NORETURN(void rb_bug(const char*, ...)), 1, 2); +NORETURN(void rb_sys_fail(const char*)); +NORETURN(void rb_iter_break(void)); +NORETURN(void rb_exit(int)); +NORETURN(void rb_notimplement(void)); + +/* reports if `-w' specified */ +PRINTF_ARGS(void rb_warning(const char*, ...), 1, 2); +PRINTF_ARGS(void rb_compile_warning(const char*, ...), 1, 2); +PRINTF_ARGS(void rb_sys_warning(const char*, ...), 1, 2); +/* reports always */ +PRINTF_ARGS(void rb_warn(const char*, ...), 1, 2); +PRINTF_ARGS(void rb_compile_warn(const char*, ...), 1, 2); + +VALUE rb_each(VALUE); +VALUE rb_yield(VALUE); +VALUE rb_yield_values(int n, ...); +VALUE rb_yield_splat(VALUE); +int rb_block_given_p(void); +void rb_need_block(void); +VALUE rb_iterate(VALUE(*)(VALUE),VALUE,VALUE(*)(ANYARGS),VALUE); +VALUE rb_block_call(VALUE,ID,int,VALUE*,VALUE(*)(ANYARGS),VALUE); +VALUE rb_rescue(VALUE(*)(ANYARGS),VALUE,VALUE(*)(ANYARGS),VALUE); +VALUE rb_rescue2(VALUE(*)(ANYARGS),VALUE,VALUE(*)(ANYARGS),VALUE,...); +VALUE rb_ensure(VALUE(*)(ANYARGS),VALUE,VALUE(*)(ANYARGS),VALUE); +VALUE rb_catch(const char*,VALUE(*)(ANYARGS),VALUE); +NORETURN(void rb_throw(const char*,VALUE)); + +VALUE rb_require(const char*); + +#ifdef __ia64 +void ruby_init_stack(VALUE*, void*); +#define RUBY_INIT_STACK \ + VALUE variable_in_this_stack_frame; \ + ruby_init_stack(&variable_in_this_stack_frame, rb_ia64_bsp()); +#else +void ruby_init_stack(VALUE*); +#define RUBY_INIT_STACK \ + VALUE variable_in_this_stack_frame; \ + ruby_init_stack(&variable_in_this_stack_frame); +#endif +void ruby_init(void); +void ruby_options(int, char**); +NORETURN(void ruby_run(void)); + +RUBY_EXTERN VALUE rb_mKernel; +RUBY_EXTERN VALUE rb_mComparable; +RUBY_EXTERN VALUE rb_mEnumerable; +RUBY_EXTERN VALUE rb_mPrecision; +RUBY_EXTERN VALUE rb_mErrno; +RUBY_EXTERN VALUE rb_mFileTest; +RUBY_EXTERN VALUE rb_mGC; +RUBY_EXTERN VALUE rb_mMath; +RUBY_EXTERN VALUE rb_mProcess; + +RUBY_EXTERN VALUE rb_cBasicObject; +RUBY_EXTERN VALUE rb_cObject; +RUBY_EXTERN VALUE rb_cArray; +RUBY_EXTERN VALUE rb_cBignum; +RUBY_EXTERN VALUE rb_cBinding; +RUBY_EXTERN VALUE rb_cClass; +RUBY_EXTERN VALUE rb_cCont; +RUBY_EXTERN VALUE rb_cDir; +RUBY_EXTERN VALUE rb_cData; +RUBY_EXTERN VALUE rb_cFalseClass; +RUBY_EXTERN VALUE rb_cFile; +RUBY_EXTERN VALUE rb_cFixnum; +RUBY_EXTERN VALUE rb_cFloat; +RUBY_EXTERN VALUE rb_cHash; +RUBY_EXTERN VALUE rb_cInteger; +RUBY_EXTERN VALUE rb_cIO; +RUBY_EXTERN VALUE rb_cMatch; +RUBY_EXTERN VALUE rb_cMethod; +RUBY_EXTERN VALUE rb_cModule; +RUBY_EXTERN VALUE rb_cNameErrorMesg; +RUBY_EXTERN VALUE rb_cNilClass; +RUBY_EXTERN VALUE rb_cNumeric; +RUBY_EXTERN VALUE rb_cProc; +RUBY_EXTERN VALUE rb_cRange; +RUBY_EXTERN VALUE rb_cRegexp; +RUBY_EXTERN VALUE rb_cStat; +RUBY_EXTERN VALUE rb_cString; +RUBY_EXTERN VALUE rb_cStruct; +RUBY_EXTERN VALUE rb_cSymbol; +RUBY_EXTERN VALUE rb_cThread; +RUBY_EXTERN VALUE rb_cTime; +RUBY_EXTERN VALUE rb_cTrueClass; +RUBY_EXTERN VALUE rb_cUnboundMethod; +RUBY_EXTERN VALUE rb_cISeq; +RUBY_EXTERN VALUE rb_cVM; +RUBY_EXTERN VALUE rb_cEnv; + +RUBY_EXTERN VALUE rb_eException; +RUBY_EXTERN VALUE rb_eStandardError; +RUBY_EXTERN VALUE rb_eSystemExit; +RUBY_EXTERN VALUE rb_eInterrupt; +RUBY_EXTERN VALUE rb_eSignal; +RUBY_EXTERN VALUE rb_eFatal; +RUBY_EXTERN VALUE rb_eArgError; +RUBY_EXTERN VALUE rb_eEOFError; +RUBY_EXTERN VALUE rb_eIndexError; +RUBY_EXTERN VALUE rb_eKeyError; +RUBY_EXTERN VALUE rb_eRangeError; +RUBY_EXTERN VALUE rb_eIOError; +RUBY_EXTERN VALUE rb_eRuntimeError; +RUBY_EXTERN VALUE rb_eSecurityError; +RUBY_EXTERN VALUE rb_eSystemCallError; +RUBY_EXTERN VALUE rb_eThreadError; +RUBY_EXTERN VALUE rb_eTypeError; +RUBY_EXTERN VALUE rb_eZeroDivError; +RUBY_EXTERN VALUE rb_eNotImpError; +RUBY_EXTERN VALUE rb_eNoMemError; +RUBY_EXTERN VALUE rb_eNoMethodError; +RUBY_EXTERN VALUE rb_eFloatDomainError; +RUBY_EXTERN VALUE rb_eLocalJumpError; +RUBY_EXTERN VALUE rb_eSysStackError; +RUBY_EXTERN VALUE rb_eRegexpError; + +RUBY_EXTERN VALUE rb_eScriptError; +RUBY_EXTERN VALUE rb_eNameError; +RUBY_EXTERN VALUE rb_eSyntaxError; +RUBY_EXTERN VALUE rb_eLoadError; + +RUBY_EXTERN VALUE rb_stdin, rb_stdout, rb_stderr; + +static inline VALUE +rb_class_of(VALUE obj) +{ + if (IMMEDIATE_P(obj)) { + if (FIXNUM_P(obj)) return rb_cFixnum; + if (obj == Qtrue) return rb_cTrueClass; + if (SYMBOL_P(obj)) return rb_cSymbol; + } + else if (!RTEST(obj)) { + if (obj == Qnil) return rb_cNilClass; + if (obj == Qfalse) return rb_cFalseClass; + } + return RBASIC(obj)->klass; +} + +static inline int +rb_type(VALUE obj) +{ + if (IMMEDIATE_P(obj)) { + if (FIXNUM_P(obj)) return T_FIXNUM; + if (obj == Qtrue) return T_TRUE; + if (SYMBOL_P(obj)) return T_SYMBOL; + if (obj == Qundef) return T_UNDEF; + } + else if (!RTEST(obj)) { + if (obj == Qnil) return T_NIL; + if (obj == Qfalse) return T_FALSE; + } + return BUILTIN_TYPE(obj); +} + +static inline int +rb_special_const_p(VALUE obj) +{ + if (SPECIAL_CONST_P(obj)) return Qtrue; + return Qfalse; +} + +#include "ruby/missing.h" +#include "ruby/intern.h" + +#if defined(EXTLIB) && defined(USE_DLN_A_OUT) +/* hook for external modules */ +static char *dln_libs_to_be_linked[] = { EXTLIB, 0 }; +#endif + +#define RUBY_VM 1 /* YARV */ +#define HAVE_NATIVETHREAD + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* RUBY_H */ diff --git a/include/ruby/signal.h b/include/ruby/signal.h new file mode 100644 index 000000000..29ffcd9f1 --- /dev/null +++ b/include/ruby/signal.h @@ -0,0 +1,93 @@ +/********************************************************************** + + rubysig.h - + + $Author$ + $Date$ + created at: Wed Aug 16 01:15:38 JST 1995 + + Copyright (C) 1993-2003 Yukihiro Matsumoto + +**********************************************************************/ + +#ifndef RUBYSIG_H +#define RUBYSIG_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#include + +#ifdef _WIN32 +typedef LONG rb_atomic_t; + +# define ATOMIC_TEST(var) InterlockedExchange(&(var), 0) +# define ATOMIC_SET(var, val) InterlockedExchange(&(var), (val)) +# define ATOMIC_INC(var) InterlockedIncrement(&(var)) +# define ATOMIC_DEC(var) InterlockedDecrement(&(var)) + +/* Windows doesn't allow interrupt while system calls */ +# define TRAP_BEG do {\ + rb_atomic_t trap_immediate = ATOMIC_SET(rb_trap_immediate, 1) + +# define TRAP_END\ + ATOMIC_SET(rb_trap_immediate, trap_immediate);\ +} while (0) + +# define RUBY_CRITICAL(statements) do {\ + rb_atomic_t trap_immediate = ATOMIC_SET(rb_trap_immediate, 0);\ + statements;\ + ATOMIC_SET(rb_trap_immediate, trap_immediate);\ +} while (0) +#else +typedef int rb_atomic_t; + +# define ATOMIC_TEST(var) ((var) ? ((var) = 0, 1) : 0) +# define ATOMIC_SET(var, val) ((var) = (val)) +# define ATOMIC_INC(var) (++(var)) +# define ATOMIC_DEC(var) (--(var)) + +# define TRAP_BEG do {\ + int trap_immediate = rb_trap_immediate;\ + rb_trap_immediate = 1 + +# define TRAP_END \ + rb_trap_immediate = trap_immediate;\ +} while (0) + +# define RUBY_CRITICAL(statements) do {\ + int trap_immediate = rb_trap_immediate;\ + rb_trap_immediate = 0;\ + statements;\ + rb_trap_immediate = trap_immediate;\ +} while (0) +#endif +RUBY_EXTERN rb_atomic_t rb_trap_immediate; + +RUBY_EXTERN int rb_prohibit_interrupt; +#define DEFER_INTS (rb_prohibit_interrupt++) +#define ALLOW_INTS do {\ + rb_prohibit_interrupt--;\ +} while (0) +#define ENABLE_INTS (rb_prohibit_interrupt--) + +VALUE rb_with_disable_interrupt(VALUE(*)(ANYARGS),VALUE); + +RUBY_EXTERN rb_atomic_t rb_trap_pending; +void rb_trap_restore_mask(void); + +RUBY_EXTERN int rb_thread_critical; +void rb_thread_schedule(void); + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* RUBYSIG_H */ diff --git a/include/ruby/st.h b/include/ruby/st.h new file mode 100644 index 000000000..d6d4479b3 --- /dev/null +++ b/include/ruby/st.h @@ -0,0 +1,79 @@ +/* This is a public domain general purpose hash table package written by Peter Moore @ UCB. */ + +/* @(#) st.h 5.1 89/12/14 */ + +#ifndef RUBY_ST_H +#define RUBY_ST_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#if SIZEOF_LONG == SIZEOF_VOIDP +typedef unsigned long st_data_t; +#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP +typedef unsigned LONG_LONG st_data_t; +#else +# error ---->> st.c requires sizeof(void*) == sizeof(long) to be compiled. <<--- +- +#endif +#define ST_DATA_T_DEFINED + +typedef struct st_table st_table; + +struct st_hash_type { + int (*compare)(); + int (*hash)(); +}; + +struct st_table { + struct st_hash_type *type; + int num_bins; + int num_entries; + struct st_table_entry **bins; +}; + +#define st_is_member(table,key) st_lookup(table,key,(st_data_t *)0) + +enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK}; + +#ifndef _ +# define _(args) args +#endif +#ifndef ANYARGS +# ifdef __cplusplus +# define ANYARGS ... +# else +# define ANYARGS +# endif +#endif + +st_table *st_init_table(struct st_hash_type *); +st_table *st_init_table_with_size(struct st_hash_type *, int); +st_table *st_init_numtable(void); +st_table *st_init_numtable_with_size(int); +st_table *st_init_strtable(void); +st_table *st_init_strtable_with_size(int); +int st_delete(st_table *, st_data_t *, st_data_t *); +int st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t); +int st_insert(st_table *, st_data_t, st_data_t); +int st_lookup(st_table *, st_data_t, st_data_t *); +int st_foreach(st_table *, int (*)(ANYARGS), st_data_t); +void st_add_direct(st_table *, st_data_t, st_data_t); +void st_free_table(st_table *); +void st_cleanup_safe(st_table *, st_data_t); +st_table *st_copy(st_table *); +int st_numcmp(long, long); +int st_numhash(long); + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* RUBY_ST_H */ diff --git a/include/ruby/util.h b/include/ruby/util.h new file mode 100644 index 000000000..843787247 --- /dev/null +++ b/include/ruby/util.h @@ -0,0 +1,81 @@ +/********************************************************************** + + util.h - + + $Author$ + $Date$ + created at: Thu Mar 9 11:55:53 JST 1995 + + Copyright (C) 1993-2003 Yukihiro Matsumoto + +**********************************************************************/ + +#ifndef RUBY_UTIL_H +#define RUBY_UTIL_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +#ifndef _ +#ifdef __cplusplus +# ifndef HAVE_PROTOTYPES +# define HAVE_PROTOTYPES 1 +# endif +# ifndef HAVE_STDARG_PROTOTYPES +# define HAVE_STDARG_PROTOTYPES 1 +# endif +#endif +#ifdef HAVE_PROTOTYPES +# define _(args) args +#else +# define _(args) () +#endif +#ifdef HAVE_STDARG_PROTOTYPES +# define __(args) args +#else +# define __(args) () +#endif +#endif + +#define scan_oct ruby_scan_oct +unsigned long ruby_scan_oct(const char *, int, int *); +#define scan_hex ruby_scan_hex +unsigned long ruby_scan_hex(const char *, int, int *); + +#if defined(MSDOS) || defined(__CYGWIN32__) || defined(_WIN32) +void ruby_add_suffix(VALUE str, const char *suffix); +#endif + +void ruby_qsort(void *, const int, const int, + int (*)(const void *, const void *, void *), void *); + +void ruby_setenv(const char *, const char *); +void ruby_unsetenv(const char *); +#undef setenv +#undef unsetenv +#define setenv(name,val) ruby_setenv(name,val) +#define unsetenv(name,val) ruby_unsetenv(name); + +char *ruby_strdup(const char *); +#undef strdup +#define strdup(s) ruby_strdup(s) + +char *ruby_getcwd(void); +#define my_getcwd() ruby_getcwd() + +double ruby_strtod(const char *, char **); +#undef strtod +#define strtod(s,e) ruby_strtod(s,e) + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* RUBY_UTIL_H */ diff --git a/include/ruby/win32.h b/include/ruby/win32.h new file mode 100644 index 000000000..450cb3285 --- /dev/null +++ b/include/ruby/win32.h @@ -0,0 +1,544 @@ +#ifndef RUBY_WIN32_H +#define RUBY_WIN32_H 1 + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +/* + * Copyright (c) 1993, Intergraph Corporation + * + * You may distribute under the terms of either the GNU General Public + * License or the Artistic License, as specified in the perl README file. + * + */ + +// +// Definitions for NT port of Perl +// + + +// +// Ok now we can include the normal include files. +// + +// #include conflict with varargs.h? +#if !defined(WSAAPI) +#include +#endif + +#define NT 1 /* deprecated */ + +#ifdef _WIN32_WCE +#undef CharNext +#define CharNext CharNextA +#endif + +// +// We're not using Microsoft's "extensions" to C for +// Structured Exception Handling (SEH) so we can nuke these +// +#undef try +#undef except +#undef finally +#undef leave + +#if defined(__cplusplus) +extern "C++" { +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef HAVE_SYS_UTIME_H +# include +#else +# include +#endif +#include +#include + +#if defined(__cplusplus) +} +#endif + +#ifdef _M_IX86 +# define WIN95 1 +#else +# undef WIN95 +#endif + +#ifdef WIN95 +extern DWORD rb_w32_osid(void); +#define rb_w32_iswinnt() (rb_w32_osid() == VER_PLATFORM_WIN32_NT) +#define rb_w32_iswin95() (rb_w32_osid() == VER_PLATFORM_WIN32_WINDOWS) +#else +#define rb_w32_iswinnt() TRUE +#define rb_w32_iswin95() FALSE +#endif + +#define WNOHANG -1 + +#undef getc +#undef putc +#undef fgetc +#undef fputc +#undef getchar +#undef putchar +#undef fgetchar +#undef fputchar +#undef utime +#undef lseek +#undef fstat +#define getc(_stream) rb_w32_getc(_stream) +#define getchar() rb_w32_getc(stdin) +#define putc(_c, _stream) rb_w32_putc(_c, _stream) +#define putchar(_c) rb_w32_putc(_c, stdout) +#ifdef RUBY_EXPORT +#define fgetc(_stream) getc(_stream) +#define fputc(_c, _stream) putc(_c, _stream) +#define fgetchar() getchar() +#define fputchar(_c) putchar(_c) +#define utime(_p, _t) rb_w32_utime(_p, _t) +#define lseek(_f, _o, _w) _lseeki64(_f, _o, _w) + +#define pipe(p) _pipe(p, 2048L, O_BINARY) +#define close(h) rb_w32_close(h) +#define fclose(f) rb_w32_fclose(f) +#define read(f, b, s) rb_w32_read(f, b, s) +#define write(f, b, s) rb_w32_write(f, b, s) +#define getpid() rb_w32_getpid() +#define sleep(x) rb_w32_Sleep((x)*1000) +#define Sleep(msec) (void)rb_w32_Sleep(msec) +#define fstat(fd,st) _fstati64(fd,st) +#ifdef __BORLANDC__ +#define creat(p, m) _creat(p, m) +#define eof() _eof() +#define filelength(h) _filelength(h) +#define mktemp(t) _mktemp(t) +#define tell(h) _tell(h) +#define _open _sopen +#define sopen _sopen +#define _fstati64(fd,st) rb_w32_fstati64(fd,st) +#undef fopen +#define fopen(p, m) rb_w32_fopen(p, m) +#undef fdopen +#define fdopen(h, m) rb_w32_fdopen(h, m) +#undef fsopen +#define fsopen(p, m, sh) rb_w32_fsopen(p, m, sh) +#endif + +#undef execv +#define execv(path,argv) rb_w32_aspawn(P_OVERLAY,path,argv) +#if !defined(__BORLANDC__) && !defined(_WIN32_WCE) +#undef isatty +#define isatty(h) rb_w32_isatty(h) +#endif + +#undef mkdir +#define mkdir(p, m) rb_w32_mkdir(p, m) +#undef rmdir +#define rmdir(p) rb_w32_rmdir(p) +#undef unlink +#define unlink(p) rb_w32_unlink(p) +#endif + +#if SIZEOF_OFF_T == 8 +#define off_t __int64 +#define stat stati64 +#if defined(__BORLANDC__) +#define stati64(path, st) rb_w32_stati64(path, st) +#elif !defined(_MSC_VER) || _MSC_VER < 1400 +#define stati64 _stati64 +#define _stati64(path, st) rb_w32_stati64(path, st) +#else +#define stati64 _stat64 +#define _stat64(path, st) rb_w32_stati64(path, st) +#endif +#else +#define stat(path,st) rb_w32_stat(path,st) +#define fstat(fd,st) rb_w32_fstat(fd,st) +extern int rb_w32_stat(const char *, struct stat *); +extern int rb_w32_fstat(int, struct stat *); +#endif + +#define strcasecmp(s1, s2) stricmp(s1, s2) +#define strncasecmp(s1, s2, n) strnicmp(s1, s2, n) +#define fsync(h) _commit(h) + +#ifdef __MINGW32__ +struct timezone { + int tz_minuteswest; + int tz_dsttime; +}; +#undef isascii +#define isascii __isascii +#endif +extern void NtInitialize(int *, char ***); +extern int rb_w32_cmdvector(const char *, char ***); +extern rb_pid_t rb_w32_pipe_exec(const char *, const char *, int, int *); +extern int flock(int fd, int oper); +extern int rb_w32_is_socket(int); +extern int WSAAPI rb_w32_accept(int, struct sockaddr *, int *); +extern int WSAAPI rb_w32_bind(int, const struct sockaddr *, int); +extern int WSAAPI rb_w32_connect(int, const struct sockaddr *, int); +extern void rb_w32_fdset(int, fd_set*); +extern void rb_w32_fdclr(int, fd_set*); +extern int rb_w32_fdisset(int, fd_set*); +extern int WSAAPI rb_w32_select(int, fd_set *, fd_set *, fd_set *, struct timeval *); +extern int WSAAPI rb_w32_getpeername(int, struct sockaddr *, int *); +extern int WSAAPI rb_w32_getsockname(int, struct sockaddr *, int *); +extern int WSAAPI rb_w32_getsockopt(int, int, int, char *, int *); +extern int WSAAPI rb_w32_ioctlsocket(int, long, u_long *); +extern int WSAAPI rb_w32_listen(int, int); +extern int WSAAPI rb_w32_recv(int, char *, int, int); +extern int WSAAPI rb_w32_recvfrom(int, char *, int, int, struct sockaddr *, int *); +extern int WSAAPI rb_w32_send(int, const char *, int, int); +extern int WSAAPI rb_w32_sendto(int, const char *, int, int, const struct sockaddr *, int); +extern int WSAAPI rb_w32_setsockopt(int, int, int, const char *, int); +extern int WSAAPI rb_w32_shutdown(int, int); +extern int WSAAPI rb_w32_socket(int, int, int); +extern SOCKET rb_w32_get_osfhandle(int); +extern struct hostent *WSAAPI rb_w32_gethostbyaddr(const char *, int, int); +extern struct hostent *WSAAPI rb_w32_gethostbyname(const char *); +extern int WSAAPI rb_w32_gethostname(char *, int); +extern struct protoent *WSAAPI rb_w32_getprotobyname(const char *); +extern struct protoent *WSAAPI rb_w32_getprotobynumber(int); +extern struct servent *WSAAPI rb_w32_getservbyname(const char *, const char *); +extern struct servent *WSAAPI rb_w32_getservbyport(int, const char *); +extern int rb_w32_socketpair(int, int, int, int *); +extern char * rb_w32_getenv(const char *); +extern int rb_w32_rename(const char *, const char *); +extern char **rb_w32_get_environ(void); +extern void rb_w32_free_environ(char **); + +#define vsnprintf(s,n,f,l) rb_w32_vsnprintf(s,n,f,l) +#define snprintf rb_w32_snprintf +extern int rb_w32_vsnprintf(char *, size_t, const char *, va_list); +extern int rb_w32_snprintf(char *, size_t, const char *, ...); + +extern int chown(const char *, int, int); +extern int link(const char *, const char *); +extern int gettimeofday(struct timeval *, struct timezone *); +extern rb_pid_t waitpid (rb_pid_t, int *, int); +extern int rb_w32_argv_size(char *const *); +extern char *rb_w32_join_argv(char *, char *const *); +extern rb_pid_t rb_w32_spawn(int, const char *, const char*); +extern rb_pid_t rb_w32_aspawn(int, const char *, char *const *); +extern int kill(int, int); +extern int fcntl(int, int, ...); +extern rb_pid_t rb_w32_getpid(void); +#if !defined(__BORLANDC__) && !defined(_WIN32_WCE) +extern int rb_w32_isatty(int); +#endif +extern int rb_w32_mkdir(const char *, int); +extern int rb_w32_rmdir(const char *); +extern int rb_w32_unlink(const char *); +extern int rb_w32_stati64(const char *, struct stati64 *); + +#ifdef __BORLANDC__ +extern int rb_w32_fstati64(int, struct stati64 *); +extern off_t _lseeki64(int, off_t, int); +extern FILE *rb_w32_fopen(const char *, const char *); +extern FILE *rb_w32_fdopen(int, const char *); +extern FILE *rb_w32_fsopen(const char *, const char *, int); +#endif + +#include +#if !defined __MINGW32__ || defined __NO_ISOCEXT +#ifndef isnan +#define isnan(x) _isnan(x) +#endif +#ifndef finite +#define finite(x) _finite(x) +#endif +#ifndef copysign +#define copysign(a, b) _copysign(a, b) +#endif +#ifndef scalb +#define scalb(a, b) _scalb(a, b) +#endif +#endif + +#if !defined S_IFIFO && defined _S_IFIFO +#define S_IFIFO _S_IFIFO +#endif + +#if 0 && defined __BORLANDC__ +#undef S_ISDIR +#undef S_ISFIFO +#undef S_ISBLK +#undef S_ISCHR +#undef S_ISREG +#define S_ISDIR(m) (((unsigned short)(m) & S_IFMT) == S_IFDIR) +#define S_ISFIFO(m) (((unsigned short)(m) & S_IFMT) == S_IFIFO) +#define S_ISBLK(m) (((unsigned short)(m) & S_IFMT) == S_IFBLK) +#define S_ISCHR(m) (((unsigned short)(m) & S_IFMT) == S_IFCHR) +#define S_ISREG(m) (((unsigned short)(m) & S_IFMT) == S_IFREG) +#endif + +#if !defined S_IRUSR && !defined __MINGW32__ +#define S_IRUSR 0400 +#endif +#ifndef S_IRGRP +#define S_IRGRP 0040 +#endif +#ifndef S_IROTH +#define S_IROTH 0004 +#endif + +#if !defined S_IWUSR && !defined __MINGW32__ +#define S_IWUSR 0200 +#endif +#ifndef S_IWGRP +#define S_IWGRP 0020 +#endif +#ifndef S_IWOTH +#define S_IWOTH 0002 +#endif + +#if !defined S_IXUSR && !defined __MINGW32__ +#define S_IXUSR 0100 +#endif +#ifndef S_IXGRP +#define S_IXGRP 0010 +#endif +#ifndef S_IXOTH +#define S_IXOTH 0001 +#endif + +// +// define this so we can do inplace editing +// + +#define SUFFIX +extern int truncate(const char *path, off_t length); +extern int ftruncate(int fd, off_t length); +extern int fseeko(FILE *stream, off_t offset, int whence); +extern off_t ftello(FILE *stream); + +// +// stubs +// +extern int ioctl (int, int, ...); +extern rb_uid_t getuid (void); +extern rb_uid_t geteuid (void); +extern rb_gid_t getgid (void); +extern rb_gid_t getegid (void); +extern int setuid (rb_uid_t); +extern int setgid (rb_gid_t); + +extern char *rb_w32_strerror(int); + +#ifdef RUBY_EXPORT +#define strerror(e) rb_w32_strerror(e) +#endif + +#define PIPE_BUF 1024 + +#define LOCK_SH 1 +#define LOCK_EX 2 +#define LOCK_NB 4 +#define LOCK_UN 8 + + +#ifndef SIGINT +#define SIGINT 2 +#endif +#ifndef SIGKILL +#define SIGKILL 9 +#endif + + +/* #undef va_start */ +/* #undef va_end */ + +/* winsock error map */ +#define EWOULDBLOCK WSAEWOULDBLOCK +#define EINPROGRESS WSAEINPROGRESS +#define EALREADY WSAEALREADY +#define ENOTSOCK WSAENOTSOCK +#define EDESTADDRREQ WSAEDESTADDRREQ +#define EMSGSIZE WSAEMSGSIZE +#define EPROTOTYPE WSAEPROTOTYPE +#define ENOPROTOOPT WSAENOPROTOOPT +#define EPROTONOSUPPORT WSAEPROTONOSUPPORT +#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT +#define EOPNOTSUPP WSAEOPNOTSUPP +#define EPFNOSUPPORT WSAEPFNOSUPPORT +#define EAFNOSUPPORT WSAEAFNOSUPPORT +#define EADDRINUSE WSAEADDRINUSE +#define EADDRNOTAVAIL WSAEADDRNOTAVAIL +#define ENETDOWN WSAENETDOWN +#define ENETUNREACH WSAENETUNREACH +#define ENETRESET WSAENETRESET +#define ECONNABORTED WSAECONNABORTED +#define ECONNRESET WSAECONNRESET +#define ENOBUFS WSAENOBUFS +#define EISCONN WSAEISCONN +#define ENOTCONN WSAENOTCONN +#define ESHUTDOWN WSAESHUTDOWN +#define ETOOMANYREFS WSAETOOMANYREFS +#define ETIMEDOUT WSAETIMEDOUT +#define ECONNREFUSED WSAECONNREFUSED +#define ELOOP WSAELOOP +/*#define ENAMETOOLONG WSAENAMETOOLONG*/ +#define EHOSTDOWN WSAEHOSTDOWN +#define EHOSTUNREACH WSAEHOSTUNREACH +/*#define ENOTEMPTY WSAENOTEMPTY*/ +#define EPROCLIM WSAEPROCLIM +#define EUSERS WSAEUSERS +#define EDQUOT WSAEDQUOT +#define ESTALE WSAESTALE +#define EREMOTE WSAEREMOTE + +#define F_SETFL 1 +#define O_NONBLOCK 1 + +#undef FD_SET +#define FD_SET(f, s) rb_w32_fdset(f, s) + +#undef FD_CLR +#define FD_CLR(f, s) rb_w32_fdclr(f, s) + +#undef FD_ISSET +#define FD_ISSET(f, s) rb_w32_fdisset(f, s) + +#ifdef RUBY_EXPORT +#undef accept +#define accept(s, a, l) rb_w32_accept(s, a, l) + +#undef bind +#define bind(s, a, l) rb_w32_bind(s, a, l) + +#undef connect +#define connect(s, a, l) rb_w32_connect(s, a, l) + +#undef select +#define select(n, r, w, e, t) rb_w32_select(n, r, w, e, t) + +#undef getpeername +#define getpeername(s, a, l) rb_w32_getpeername(s, a, l) + +#undef getsockname +#define getsockname(s, a, l) rb_w32_getsockname(s, a, l) + +#undef getsockopt +#define getsockopt(s, v, n, o, l) rb_w32_getsockopt(s, v, n, o, l) + +#undef ioctlsocket +#define ioctlsocket(s, c, a) rb_w32_ioctlsocket(s, c, a) + +#undef listen +#define listen(s, b) rb_w32_listen(s, b) + +#undef recv +#define recv(s, b, l, f) rb_w32_recv(s, b, l, f) + +#undef recvfrom +#define recvfrom(s, b, l, f, fr, frl) rb_w32_recvfrom(s, b, l, f, fr, frl) + +#undef send +#define send(s, b, l, f) rb_w32_send(s, b, l, f) + +#undef sendto +#define sendto(s, b, l, f, t, tl) rb_w32_sendto(s, b, l, f, t, tl) + +#undef setsockopt +#define setsockopt(s, v, n, o, l) rb_w32_setsockopt(s, v, n, o, l) + +#undef shutdown +#define shutdown(s, h) rb_w32_shutdown(s, h) + +#undef socket +#define socket(s, t, p) rb_w32_socket(s, t, p) + +#undef gethostbyaddr +#define gethostbyaddr(a, l, t) rb_w32_gethostbyaddr(a, l, t) + +#undef gethostbyname +#define gethostbyname(n) rb_w32_gethostbyname(n) + +#undef gethostname +#define gethostname(n, l) rb_w32_gethostname(n, l) + +#undef getprotobyname +#define getprotobyname(n) rb_w32_getprotobyname(n) + +#undef getprotobynumber +#define getprotobynumber(n) rb_w32_getprotobynumber(n) + +#undef getservbyname +#define getservbyname(n, p) rb_w32_getservbyname(n, p) + +#undef getservbyport +#define getservbyport(p, pr) rb_w32_getservbyport(p, pr) + +#undef socketpair +#define socketpair(a, t, p, s) rb_w32_socketpair(a, t, p, s) + +#undef get_osfhandle +#define get_osfhandle(h) rb_w32_get_osfhandle(h) + +#undef getcwd +#define getcwd(b, s) rb_w32_getcwd(b, s) + +#undef getenv +#define getenv(n) rb_w32_getenv(n) + +#undef rename +#define rename(o, n) rb_w32_rename(o, n) + +#undef times +#define times(t) rb_w32_times(t) +#endif + +struct tms { + long tms_utime; + long tms_stime; + long tms_cutime; + long tms_cstime; +}; + +int rb_w32_times(struct tms *); + +/* thread stuff */ +HANDLE GetCurrentThreadHandle(void); +int rb_w32_sleep(unsigned long msec); +int rb_w32_putc(int, FILE*); +int rb_w32_getc(FILE*); +int rb_w32_close(int); +int rb_w32_fclose(FILE*); +size_t rb_w32_read(int, void *, size_t); +size_t rb_w32_write(int, const void *, size_t); +int rb_w32_utime(const char *, const struct utimbuf *); +int WINAPI rb_w32_Sleep(unsigned long msec); + +/* +== ***CAUTION*** +Since this function is very dangerous, ((*NEVER*)) +* lock any HANDLEs(i.e. Mutex, Semaphore, CriticalSection and so on) or, +* use anything like TRAP_BEG...TRAP_END block structure, +in asynchronous_func_t. +*/ +typedef DWORD (*asynchronous_func_t)(DWORD self, int argc, DWORD* argv); +DWORD rb_w32_asynchronize(asynchronous_func_t func, DWORD self, int argc, DWORD* argv, DWORD intrval); + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif /* RUBY_WIN32_H */ diff --git a/include/rubyio.h b/include/rubyio.h new file mode 100644 index 000000000..f385058c4 --- /dev/null +++ b/include/rubyio.h @@ -0,0 +1 @@ +#include diff --git a/include/rubysig.h b/include/rubysig.h new file mode 100644 index 000000000..cc8cdb2f6 --- /dev/null +++ b/include/rubysig.h @@ -0,0 +1 @@ +#include diff --git a/inits.c b/inits.c index e6b757239..ef94f993e 100644 --- a/inits.c +++ b/inits.c @@ -10,7 +10,7 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" void Init_Array(void); void Init_Bignum(void); diff --git a/instruby.rb b/instruby.rb index 8327d8c57..52f81af4d 100755 --- a/instruby.rb +++ b/instruby.rb @@ -127,7 +127,14 @@ def install_recursive(srcdir, dest, options = {}) subpath = srcdir.size..-1 Dir.glob("#{srcdir}/**/*", File::FNM_DOTMATCH) do |src| next if /\A\.{1,2}\z/ =~ (base = File.basename(src)) - next if noinst and File.fnmatch?(noinst, File.basename(src)) + if noinst + base = File.basename(src) + if Array === noinst + next if noinst.any? {|n| File.fnmatch?(n, base)} + else + next if File.fnmatch?(noinst, base) + end + end d = dest + src[subpath] if File.directory?(src) makedirs(d) @@ -158,6 +165,8 @@ rubyw_install_name = CONFIG["rubyw_install_name"] version = CONFIG["ruby_version"] bindir = CONFIG["bindir"] libdir = CONFIG["libdir"] +archhdrdir = rubyhdrdir = CONFIG["rubyhdrdir"] +archhdrdir += "/" + CONFIG["arch"] rubylibdir = CONFIG["rubylibdir"] archlibdir = CONFIG["archdir"] sitelibdir = CONFIG["sitelibdir"] @@ -172,7 +181,7 @@ arc = CONFIG["LIBRUBY_A"] install?(:local, :arch, :bin) do puts "installing binary commands" - makedirs [bindir, libdir, archlibdir] + makedirs [bindir, libdir, archlibdir, archhdrdir] install ruby_install_name+exeext, bindir, :mode => 0755 if rubyw_install_name and !rubyw_install_name.empty? @@ -183,7 +192,6 @@ install?(:local, :arch, :bin) do end install lib, libdir, :mode => 0755 unless lib == arc install arc, libdir, :mode => 0644 - install "config.h", archlibdir, :mode => 0644 install "rbconfig.rb", archlibdir, :mode => 0644 if CONFIG["ARCHFILE"] for file in CONFIG["ARCHFILE"].split @@ -207,11 +215,13 @@ if $extout noinst = nil end install_recursive("#{extout}/#{CONFIG['arch']}", archlibdir, :no_install => noinst) + install_recursive("#{extout}/include/#{CONFIG['arch']}", archhdrdir) end install?(:ext, :comm, :'ext-comm') do puts "installing extension scripts" makedirs [rubylibdir, sitelibdir] install_recursive("#{extout}/common", rubylibdir) + install_recursive("#{extout}/include", rubyhdrdir) end end @@ -297,16 +307,13 @@ install?(:local, :arch, :lib) do puts "installing headers" Dir.chdir(srcdir) - makedirs [archlibdir] - for f in Dir["*.h"] - install f, archlibdir, :mode => 0644 - end - - if RUBY_PLATFORM =~ /mswin32|mingw|bccwin32/ - win32libdir = File.join(archlibdir, "win32") - makedirs win32libdir - install "win32/win32.h", win32libdir, :mode => 0644 + makedirs [rubyhdrdir] + noinst = [] + unless RUBY_PLATFORM =~ /mswin32|mingw|bccwin32/ + noinst << "win32.h" end + noinst = nil if noinst.empty? + install_recursive("include", rubyhdrdir, :no_install => noinst) end install?(:local, :comm, :man) do diff --git a/intern.h b/intern.h deleted file mode 100644 index e230ac5ce..000000000 --- a/intern.h +++ /dev/null @@ -1,613 +0,0 @@ -/********************************************************************** - - intern.h - - - $Author$ - $Date$ - created at: Thu Jun 10 14:22:17 JST 1993 - - Copyright (C) 1993-2003 Yukihiro Matsumoto - Copyright (C) 2000 Network Applied Communication Laboratory, Inc. - Copyright (C) 2000 Information-technology Promotion Agency, Japan - -**********************************************************************/ - -#ifndef RUBY_INTERN_H -#define RUBY_INTERN_H 1 - -#ifdef HAVE_STDARG_PROTOTYPES -# include -#else -# include -#endif -#include - -/* - * Functions and variables that are used by more than one source file of - * the kernel. - */ - -#define ID_ALLOCATOR 1 - -/* array.c */ -void rb_mem_clear(register VALUE*, register long); -VALUE rb_assoc_new(VALUE, VALUE); -VALUE rb_check_array_type(VALUE); -VALUE rb_ary_new(void); -VALUE rb_ary_new2(long); -VALUE rb_ary_new3(long,...); -VALUE rb_ary_new4(long, const VALUE *); -void rb_ary_free(VALUE); -VALUE rb_values_new(long,...); -VALUE rb_values_new2(long, const VALUE *); -VALUE rb_values_from_ary(VALUE); -VALUE rb_ary_from_values(VALUE); -VALUE rb_ary_freeze(VALUE); -VALUE rb_ary_aref(int, VALUE*, VALUE); -void rb_ary_store(VALUE, long, VALUE); -VALUE rb_ary_dup(VALUE); -VALUE rb_ary_to_ary(VALUE); -VALUE rb_ary_to_s(VALUE); -VALUE rb_ary_push(VALUE, VALUE); -VALUE rb_ary_pop(VALUE); -VALUE rb_ary_shift(VALUE); -VALUE rb_ary_unshift(VALUE, VALUE); -VALUE rb_ary_entry(VALUE, long); -VALUE rb_ary_each(VALUE); -VALUE rb_ary_join(VALUE, VALUE); -VALUE rb_ary_print_on(VALUE, VALUE); -VALUE rb_ary_reverse(VALUE); -VALUE rb_ary_sort(VALUE); -VALUE rb_ary_sort_bang(VALUE); -VALUE rb_ary_delete(VALUE, VALUE); -VALUE rb_ary_delete_at(VALUE, long); -VALUE rb_ary_clear(VALUE); -VALUE rb_ary_plus(VALUE, VALUE); -VALUE rb_ary_concat(VALUE, VALUE); -VALUE rb_ary_assoc(VALUE, VALUE); -VALUE rb_ary_rassoc(VALUE, VALUE); -VALUE rb_ary_includes(VALUE, VALUE); -VALUE rb_ary_cmp(VALUE, VALUE); -VALUE rb_ary_replace(VALUE copy, VALUE orig); -VALUE rb_check_array_value(VALUE); -VALUE rb_get_values_at(VALUE, long, int, VALUE*, VALUE(*)(VALUE,long)); -/* bignum.c */ -VALUE rb_big_clone(VALUE); -void rb_big_2comp(VALUE); -VALUE rb_big_norm(VALUE); -VALUE rb_uint2big(VALUE); -VALUE rb_int2big(SIGNED_VALUE); -VALUE rb_uint2inum(VALUE); -VALUE rb_int2inum(SIGNED_VALUE); -VALUE rb_cstr_to_inum(const char*, int, int); -VALUE rb_str_to_inum(VALUE, int, int); -VALUE rb_cstr2inum(const char*, int); -VALUE rb_str2inum(VALUE, int); -VALUE rb_big2str(VALUE, int); -VALUE rb_big2str0(VALUE, int, int); -SIGNED_VALUE rb_big2long(VALUE); -#define rb_big2int(x) rb_big2long(x) -VALUE rb_big2ulong(VALUE); -#define rb_big2uint(x) rb_big2ulong(x) -#if HAVE_LONG_LONG -VALUE rb_ll2inum(LONG_LONG); -VALUE rb_ull2inum(unsigned LONG_LONG); -LONG_LONG rb_big2ll(VALUE); -unsigned LONG_LONG rb_big2ull(VALUE); -#endif /* HAVE_LONG_LONG */ -void rb_quad_pack(char*,VALUE); -VALUE rb_quad_unpack(const char*,int); -VALUE rb_dbl2big(double); -double rb_big2dbl(VALUE); -VALUE rb_big_cmp(VALUE, VALUE); -VALUE rb_big_eq(VALUE, VALUE); -VALUE rb_big_plus(VALUE, VALUE); -VALUE rb_big_minus(VALUE, VALUE); -VALUE rb_big_mul(VALUE, VALUE); -VALUE rb_big_div(VALUE, VALUE); -VALUE rb_big_modulo(VALUE, VALUE); -VALUE rb_big_divmod(VALUE, VALUE); -VALUE rb_big_pow(VALUE, VALUE); -VALUE rb_big_and(VALUE, VALUE); -VALUE rb_big_or(VALUE, VALUE); -VALUE rb_big_xor(VALUE, VALUE); -VALUE rb_big_lshift(VALUE, VALUE); -/* class.c */ -VALUE rb_class_boot(VALUE); -VALUE rb_class_new(VALUE); -VALUE rb_mod_init_copy(VALUE, VALUE); -VALUE rb_class_init_copy(VALUE, VALUE); -VALUE rb_singleton_class_clone(VALUE); -void rb_singleton_class_attached(VALUE,VALUE); -VALUE rb_make_metaclass(VALUE, VALUE); -void rb_check_inheritable(VALUE); -VALUE rb_class_inherited(VALUE, VALUE); -VALUE rb_define_class_id(ID, VALUE); -VALUE rb_module_new(void); -VALUE rb_define_module_id(ID); -VALUE rb_mod_included_modules(VALUE); -VALUE rb_mod_include_p(VALUE, VALUE); -VALUE rb_mod_ancestors(VALUE); -VALUE rb_class_instance_methods(int, VALUE*, VALUE); -VALUE rb_class_public_instance_methods(int, VALUE*, VALUE); -VALUE rb_class_protected_instance_methods(int, VALUE*, VALUE); -VALUE rb_class_private_instance_methods(int, VALUE*, VALUE); -VALUE rb_class_local_methods(VALUE); -VALUE rb_obj_singleton_methods(int, VALUE*, VALUE); -void rb_define_method_id(VALUE, ID, VALUE (*)(ANYARGS), int); -void rb_frozen_class_p(VALUE); -void rb_undef(VALUE, ID); -void rb_define_protected_method(VALUE, const char*, VALUE (*)(ANYARGS), int); -void rb_define_private_method(VALUE, const char*, VALUE (*)(ANYARGS), int); -void rb_define_singleton_method(VALUE, const char*, VALUE(*)(ANYARGS), int); -VALUE rb_singleton_class(VALUE); -/* compar.c */ -int rb_cmpint(VALUE, VALUE, VALUE); -NORETURN(void rb_cmperr(VALUE, VALUE)); -/* enum.c */ -/* enumerator.c */ -VALUE rb_enumeratorize(VALUE, VALUE, int, VALUE *); -#define RETURN_ENUMERATOR(obj, argc, argv) do { \ - if (!rb_block_given_p()) \ - return rb_enumeratorize(obj, ID2SYM(rb_frame_this_func()), \ - argc, argv); \ - } while (0) -/* error.c */ -RUBY_EXTERN int ruby_nerrs; -VALUE rb_exc_new(VALUE, const char*, long); -VALUE rb_exc_new2(VALUE, const char*); -VALUE rb_exc_new3(VALUE, VALUE); -PRINTF_ARGS(NORETURN(void rb_loaderror(const char*, ...)), 1, 2); -PRINTF_ARGS(NORETURN(void rb_name_error(ID, const char*, ...)), 2, 3); -NORETURN(void rb_invalid_str(const char*, const char*)); -PRINTF_ARGS(void rb_compile_error(const char*, ...), 1, 2); -PRINTF_ARGS(void rb_compile_error_append(const char*, ...), 1, 2); -NORETURN(void rb_load_fail(const char*)); -NORETURN(void rb_error_frozen(const char*)); -void rb_check_frozen(VALUE); -/* eval.c */ -#if defined(NFDBITS) && defined(HAVE_RB_FD_INIT) -typedef struct { - int maxfd; - fd_set *fdset; -} rb_fdset_t; - -void rb_fd_init(volatile rb_fdset_t *); -void rb_fd_term(rb_fdset_t *); -void rb_fd_zero(rb_fdset_t *); -void rb_fd_set(int, rb_fdset_t *); -void rb_fd_clr(int, rb_fdset_t *); -int rb_fd_isset(int, const rb_fdset_t *); -void rb_fd_copy(rb_fdset_t *, const fd_set *, int); -int rb_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *); - -#define rb_fd_ptr(f) ((f)->fdset) -#define rb_fd_max(f) ((f)->maxfd) - -#else - -typedef fd_set rb_fdset_t; -#define rb_fd_zero(f) FD_ZERO(f) -#define rb_fd_set(n, f) FD_SET(n, f) -#define rb_fd_clr(n, f) FD_CLR(n, f) -#define rb_fd_isset(n, f) FD_ISSET(n, f) -#define rb_fd_copy(d, s, n) (*(d) = *(s)) -#define rb_fd_ptr(f) (f) -#define rb_fd_init(f) FD_ZERO(f) -#define rb_fd_term(f) (f) -#define rb_fd_max(f) FD_SETSIZE -#define rb_fd_select(n, rfds, wfds, efds, timeout) select(n, rfds, wfds, efds, timeout) - -#endif - -RUBY_EXTERN struct RNode *ruby_current_node; -void ruby_set_current_source(void); -NORETURN(void rb_exc_raise(VALUE)); -NORETURN(void rb_exc_fatal(VALUE)); -VALUE rb_f_exit(int,VALUE*); -VALUE rb_f_abort(int,VALUE*); -void rb_remove_method(VALUE, const char*); -#define rb_disable_super(klass, name) ((void)0) -#define rb_enable_super(klass, name) ((void)0) -#define HAVE_RB_DEFINE_ALLOC_FUNC 1 -void rb_define_alloc_func(VALUE, VALUE (*)(VALUE)); -void rb_undef_alloc_func(VALUE); -void rb_clear_cache(void); -void rb_clear_cache_by_class(VALUE); -void rb_alias(VALUE, ID, ID); -void rb_attr(VALUE,ID,int,int,int); -int rb_method_boundp(VALUE, ID, int); -void rb_dvar_asgn(ID, VALUE); -void rb_dvar_push(ID, VALUE); -VALUE *rb_svar(int); -VALUE rb_eval_cmd(VALUE, VALUE, int); -int rb_obj_respond_to(VALUE, ID, int); -int rb_respond_to(VALUE, ID); -void rb_interrupt(void); -VALUE rb_apply(VALUE, ID, VALUE); -void rb_backtrace(void); -ID rb_frame_this_func(void); -VALUE rb_obj_instance_eval(int, VALUE*, VALUE); -VALUE rb_mod_module_eval(int, VALUE*, VALUE); -void rb_load(VALUE, int); -void rb_load_protect(VALUE, int, int*); -NORETURN(void rb_jump_tag(int)); -int rb_provided(const char*); -void rb_provide(const char*); -VALUE rb_f_require(VALUE, VALUE); -VALUE rb_require_safe(VALUE, int); -void rb_obj_call_init(VALUE, int, VALUE*); -VALUE rb_class_new_instance(int, VALUE*, VALUE); -VALUE rb_block_proc(void); -VALUE rb_f_lambda(void); -VALUE rb_proc_new(VALUE (*)(ANYARGS/* VALUE yieldarg[, VALUE procarg] */), VALUE); -VALUE rb_proc_call(VALUE, VALUE); -int rb_proc_arity(VALUE); -VALUE rb_binding_new(void); -VALUE rb_obj_method(VALUE, VALUE); -VALUE rb_method_call(int, VALUE*, VALUE); -int rb_mod_method_arity(VALUE, ID); -int rb_obj_method_arity(VALUE, ID); -VALUE rb_protect(VALUE (*)(VALUE), VALUE, int*); -void rb_set_end_proc(void (*)(VALUE), VALUE); -void rb_mark_end_proc(void); -void rb_exec_end_proc(void); -void Init_jump(void); -void ruby_finalize(void); -NORETURN(void ruby_stop(int)); -int ruby_cleanup(int); -int ruby_exec(void); -void rb_gc_mark_threads(void); -void rb_thread_start_timer(void); -void rb_thread_stop_timer(void); -void rb_thread_schedule(void); -void rb_thread_wait_fd(int); -int rb_thread_fd_writable(int); -void rb_thread_fd_close(int); -int rb_thread_alone(void); -void rb_thread_polling(void); -void rb_thread_sleep(int); -void rb_thread_sleep_forever(void); -VALUE rb_thread_stop(void); -VALUE rb_thread_wakeup(VALUE); -VALUE rb_thread_run(VALUE); -VALUE rb_thread_kill(VALUE); -VALUE rb_thread_create(VALUE (*)(ANYARGS), void*); -void rb_thread_trap_eval(VALUE, int, int); -void rb_thread_signal_raise(void *, int); -void rb_thread_signal_exit(void *); -int rb_thread_select(int, fd_set *, fd_set *, fd_set *, struct timeval *); -void rb_thread_wait_for(struct timeval); -VALUE rb_thread_current(void); -VALUE rb_thread_main(void); -VALUE rb_thread_local_aref(VALUE, ID); -VALUE rb_thread_local_aset(VALUE, ID, VALUE); -void rb_thread_atfork(void); -VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE); -/* file.c */ -VALUE rb_file_s_expand_path(int, VALUE *); -VALUE rb_file_expand_path(VALUE, VALUE); -void rb_file_const(const char*, VALUE); -int rb_find_file_ext(VALUE*, const char* const*); -VALUE rb_find_file(VALUE); -char *rb_path_next(const char *); -char *rb_path_skip_prefix(const char *); -char *rb_path_last_separator(const char *); -char *rb_path_end(const char *); -VALUE rb_file_directory_p(VALUE,VALUE); -/* gc.c */ -void ruby_set_stack_size(size_t); -NORETURN(void rb_memerror(void)); -int ruby_stack_check(void); -int ruby_stack_length(VALUE**); -char *rb_source_filename(const char*); -void rb_gc_mark_locations(VALUE*, VALUE*); -void rb_mark_tbl(struct st_table*); -void rb_mark_hash(struct st_table*); -void rb_gc_mark_maybe(VALUE); -void rb_gc_mark(VALUE); -void rb_gc_force_recycle(VALUE); -void rb_gc(void); -void rb_gc_copy_finalizer(VALUE,VALUE); -void rb_gc_finalize_deferred(void); -void rb_gc_call_finalizer_at_exit(void); -VALUE rb_gc_enable(void); -VALUE rb_gc_disable(void); -VALUE rb_gc_start(void); -/* hash.c */ -void st_foreach_safe(struct st_table *, int (*)(ANYARGS), st_data_t); -void rb_hash_foreach(VALUE, int (*)(ANYARGS), VALUE); -VALUE rb_hash(VALUE); -VALUE rb_hash_new(void); -VALUE rb_hash_freeze(VALUE); -VALUE rb_hash_aref(VALUE, VALUE); -VALUE rb_hash_aset(VALUE, VALUE, VALUE); -VALUE rb_hash_delete_if(VALUE); -VALUE rb_hash_delete(VALUE,VALUE); -int rb_path_check(const char*); -int rb_env_path_tainted(void); -/* io.c */ -#define rb_defout rb_stdout -RUBY_EXTERN VALUE rb_fs; -RUBY_EXTERN VALUE rb_output_fs; -RUBY_EXTERN VALUE rb_rs; -RUBY_EXTERN VALUE rb_default_rs; -RUBY_EXTERN VALUE rb_output_rs; -VALUE rb_io_write(VALUE, VALUE); -VALUE rb_io_gets(VALUE); -VALUE rb_io_getc(VALUE); -VALUE rb_io_ungetc(VALUE, VALUE); -VALUE rb_io_close(VALUE); -VALUE rb_io_flush(VALUE); -VALUE rb_io_eof(VALUE); -VALUE rb_io_binmode(VALUE); -VALUE rb_io_addstr(VALUE, VALUE); -VALUE rb_io_printf(int, VALUE*, VALUE); -VALUE rb_io_print(int, VALUE*, VALUE); -VALUE rb_io_puts(int, VALUE*, VALUE); -VALUE rb_file_open(const char*, const char*); -VALUE rb_gets(void); -void rb_write_error(const char*); -void rb_write_error2(const char*, long); -/* marshal.c */ -VALUE rb_marshal_dump(VALUE, VALUE); -VALUE rb_marshal_load(VALUE); -/* numeric.c */ -void rb_num_zerodiv(void); -VALUE rb_num_coerce_bin(VALUE, VALUE); -VALUE rb_num_coerce_cmp(VALUE, VALUE); -VALUE rb_num_coerce_relop(VALUE, VALUE); -VALUE rb_float_new(double); -VALUE rb_num2fix(VALUE); -VALUE rb_fix2str(VALUE, int); -VALUE rb_dbl_cmp(double, double); -/* object.c */ -int rb_eql(VALUE, VALUE); -VALUE rb_any_to_s(VALUE); -VALUE rb_inspect(VALUE); -VALUE rb_obj_is_instance_of(VALUE, VALUE); -VALUE rb_obj_is_kind_of(VALUE, VALUE); -VALUE rb_obj_alloc(VALUE); -VALUE rb_obj_clone(VALUE); -VALUE rb_obj_dup(VALUE); -VALUE rb_obj_init_copy(VALUE,VALUE); -VALUE rb_obj_taint(VALUE); -VALUE rb_obj_tainted(VALUE); -VALUE rb_obj_untaint(VALUE); -VALUE rb_obj_freeze(VALUE); -VALUE rb_obj_id(VALUE); -VALUE rb_obj_class(VALUE); -VALUE rb_class_real(VALUE); -VALUE rb_class_inherited_p(VALUE, VALUE); -VALUE rb_convert_type(VALUE,int,const char*,const char*); -VALUE rb_check_convert_type(VALUE,int,const char*,const char*); -VALUE rb_check_to_integer(VALUE, const char *); -VALUE rb_to_int(VALUE); -VALUE rb_Integer(VALUE); -VALUE rb_Float(VALUE); -VALUE rb_String(VALUE); -VALUE rb_Array(VALUE); -double rb_cstr_to_dbl(const char*, int); -double rb_str_to_dbl(VALUE, int); -/* parse.y */ -RUBY_EXTERN int ruby_sourceline; -RUBY_EXTERN char *ruby_sourcefile; -ID rb_id_attrset(ID); -void rb_gc_mark_parser(void); -int rb_is_const_id(ID); -int rb_is_instance_id(ID); -int rb_is_class_id(ID); -int rb_is_local_id(ID); -int rb_is_junk_id(ID); -int rb_symname_p(const char*); -int rb_sym_interned_p(VALUE); -void rb_gc_mark_symbols(void); -VALUE rb_backref_get(void); -void rb_backref_set(VALUE); -VALUE rb_lastline_get(void); -void rb_lastline_set(VALUE); -VALUE rb_sym_all_symbols(void); -/* process.c */ -void rb_last_status_set(int status, rb_pid_t pid); -VALUE rb_last_status_get(void); -struct rb_exec_arg { - int argc; - VALUE *argv; - const char *prog; -}; -int rb_proc_exec_n(int, VALUE*, const char*); -int rb_proc_exec(const char*); -VALUE rb_check_argv(int, VALUE*); -int rb_exec(const struct rb_exec_arg*); -rb_pid_t rb_fork(int*, int (*)(void*), void*); -VALUE rb_f_exec(int,VALUE*); -rb_pid_t rb_waitpid(rb_pid_t pid, int *status, int flags); -void rb_syswait(rb_pid_t pid); -rb_pid_t rb_spawn(int, VALUE*); -VALUE rb_proc_times(VALUE); -VALUE rb_detach_process(rb_pid_t pid); -/* range.c */ -VALUE rb_range_new(VALUE, VALUE, int); -VALUE rb_range_beg_len(VALUE, long*, long*, long, int); -VALUE rb_length_by_each(VALUE); -/* random.c */ -unsigned long genrand_int32(void); -double genrand_real(void); -/* re.c */ -int rb_memcmp(const void*,const void*,long); -int rb_memcicmp(const void*,const void*,long); -long rb_memsearch(const void*,long,const void*,long); -VALUE rb_reg_nth_defined(int, VALUE); -VALUE rb_reg_nth_match(int, VALUE); -VALUE rb_reg_last_match(VALUE); -VALUE rb_reg_match_pre(VALUE); -VALUE rb_reg_match_post(VALUE); -VALUE rb_reg_match_last(VALUE); -VALUE rb_reg_new(const char*, long, int); -VALUE rb_reg_compile(const char*, long, int); -VALUE rb_reg_match(VALUE, VALUE); -VALUE rb_reg_match2(VALUE); -int rb_reg_options(VALUE); -void rb_set_kcode(const char*); -const char* rb_get_kcode(void); -/* ruby.c */ -RUBY_EXTERN VALUE rb_argv; -RUBY_EXTERN VALUE rb_argv0; -void *rb_load_file(const char*); -void ruby_script(const char*); -void ruby_prog_init(void); -void ruby_set_argv(int, char**); -void ruby_process_options(int, char**); -void ruby_load_script(void); -void ruby_init_loadpath(void); -void ruby_incpush(const char*); -/* signal.c */ -VALUE rb_f_kill(int, VALUE*); -void rb_gc_mark_trap_list(void); -#ifdef POSIX_SIGNAL -#define posix_signal ruby_posix_signal -void posix_signal(int, RETSIGTYPE (*)(int)); -#endif -void rb_trap_exit(void); -void rb_trap_exec(void); -const char *ruby_signal_name(int); -void ruby_default_signal(int); -/* sprintf.c */ -VALUE rb_f_sprintf(int, const VALUE*); -PRINTF_ARGS(VALUE rb_sprintf(const char*, ...), 1, 2); -VALUE rb_vsprintf(const char*, va_list); -VALUE rb_str_format(int, const VALUE *, VALUE); -/* string.c */ -VALUE rb_str_new(const char*, long); -VALUE rb_str_new2(const char*); -VALUE rb_str_new3(VALUE); -VALUE rb_str_new4(VALUE); -VALUE rb_str_new5(VALUE, const char*, long); -VALUE rb_tainted_str_new(const char*, long); -VALUE rb_tainted_str_new2(const char*); -VALUE rb_str_buf_new(long); -VALUE rb_str_buf_new2(const char*); -void rb_str_free(VALUE); -VALUE rb_str_buf_append(VALUE, VALUE); -VALUE rb_str_buf_cat(VALUE, const char*, long); -VALUE rb_str_buf_cat2(VALUE, const char*); -VALUE rb_obj_as_string(VALUE); -VALUE rb_check_string_type(VALUE); -VALUE rb_str_dup(VALUE); -VALUE rb_str_locktmp(VALUE); -VALUE rb_str_unlocktmp(VALUE); -VALUE rb_str_dup_frozen(VALUE); -VALUE rb_str_plus(VALUE, VALUE); -VALUE rb_str_times(VALUE, VALUE); -VALUE rb_str_substr(VALUE, long, long); -void rb_str_modify(VALUE); -VALUE rb_str_freeze(VALUE); -void rb_str_set_len(VALUE, long); -VALUE rb_str_resize(VALUE, long); -VALUE rb_str_cat(VALUE, const char*, long); -VALUE rb_str_cat2(VALUE, const char*); -VALUE rb_str_append(VALUE, VALUE); -VALUE rb_str_concat(VALUE, VALUE); -int rb_memhash(const void *ptr, long len); -int rb_str_hash(VALUE); -int rb_str_cmp(VALUE, VALUE); -VALUE rb_str_upto(VALUE, VALUE, int); -void rb_str_update(VALUE, long, long, VALUE); -VALUE rb_str_inspect(VALUE); -VALUE rb_str_dump(VALUE); -VALUE rb_str_split(VALUE, const char*); -void rb_str_associate(VALUE, VALUE); -VALUE rb_str_associated(VALUE); -void rb_str_setter(VALUE, ID, VALUE*); -VALUE rb_str_intern(VALUE); -VALUE rb_sym_to_s(VALUE); -/* struct.c */ -VALUE rb_struct_new(VALUE, ...); -VALUE rb_struct_define(const char*, ...); -VALUE rb_struct_alloc(VALUE, VALUE); -VALUE rb_struct_aref(VALUE, VALUE); -VALUE rb_struct_aset(VALUE, VALUE, VALUE); -VALUE rb_struct_getmember(VALUE, ID); -VALUE rb_struct_iv_get(VALUE, const char*); -VALUE rb_struct_s_members(VALUE); -VALUE rb_struct_members(VALUE); -/* thread.c */ -typedef struct rb_thread_struct rb_thread_t; -typedef void rb_unblock_function_t(rb_thread_t *); -typedef VALUE rb_blocking_function_t(rb_thread_t *th, void *); -VALUE rb_thread_blocking_region(rb_blocking_function_t *func, void *data, - rb_unblock_function_t *ubf); -#define RB_UBF_DFL ((rb_unblock_function_t *)-1) -VALUE rb_mutex_new(void); -VALUE rb_mutex_locked_p(VALUE mutex); -VALUE rb_mutex_try_lock(VALUE mutex); -VALUE rb_mutex_lock(VALUE mutex); -VALUE rb_mutex_unlock(VALUE mutex); -VALUE rb_mutex_sleep(VALUE self, VALUE timeout); -VALUE rb_mutex_synchronize(VALUE self); -VALUE rb_barrier_new(void); -VALUE rb_barrier_wait(VALUE self); -VALUE rb_barrier_release(VALUE self); -/* time.c */ -VALUE rb_time_new(time_t, time_t); -/* variable.c */ -VALUE rb_mod_name(VALUE); -VALUE rb_class_path(VALUE); -void rb_set_class_path(VALUE, VALUE, const char*); -VALUE rb_path2class(const char*); -void rb_name_class(VALUE, ID); -VALUE rb_class_name(VALUE); -void rb_autoload(VALUE, ID, const char*); -VALUE rb_autoload_load(VALUE, ID); -VALUE rb_autoload_p(VALUE, ID); -void rb_gc_mark_global_tbl(void); -VALUE rb_f_trace_var(int, VALUE*); -VALUE rb_f_untrace_var(int, VALUE*); -VALUE rb_f_global_variables(void); -void rb_alias_variable(ID, ID); -struct st_table* rb_generic_ivar_table(VALUE); -void rb_copy_generic_ivar(VALUE,VALUE); -void rb_mark_generic_ivar(VALUE); -void rb_mark_generic_ivar_tbl(void); -void rb_free_generic_ivar(VALUE); -VALUE rb_ivar_get(VALUE, ID); -VALUE rb_ivar_set(VALUE, ID, VALUE); -VALUE rb_ivar_defined(VALUE, ID); -VALUE rb_iv_set(VALUE, const char*, VALUE); -VALUE rb_iv_get(VALUE, const char*); -VALUE rb_attr_get(VALUE, ID); -VALUE rb_obj_instance_variables(VALUE); -VALUE rb_obj_remove_instance_variable(VALUE, VALUE); -void *rb_mod_const_at(VALUE, void*); -void *rb_mod_const_of(VALUE, void*); -VALUE rb_const_list(void*); -VALUE rb_mod_constants(int, VALUE *, VALUE); -VALUE rb_mod_remove_const(VALUE, VALUE); -int rb_const_defined(VALUE, ID); -int rb_const_defined_at(VALUE, ID); -int rb_const_defined_from(VALUE, ID); -VALUE rb_const_get(VALUE, ID); -VALUE rb_const_get_at(VALUE, ID); -VALUE rb_const_get_from(VALUE, ID); -void rb_const_set(VALUE, ID, VALUE); -VALUE rb_mod_const_missing(VALUE,VALUE); -VALUE rb_cvar_defined(VALUE, ID); -void rb_cvar_set(VALUE, ID, VALUE); -VALUE rb_cvar_get(VALUE, ID); -void rb_cv_set(VALUE, const char*, VALUE); -VALUE rb_cv_get(VALUE, const char*); -void rb_define_class_variable(VALUE, const char*, VALUE); -VALUE rb_mod_class_variables(VALUE); -VALUE rb_mod_remove_cvar(VALUE, VALUE); -/* version.c */ -void ruby_show_version(void); -void ruby_show_copyright(void); - -ID rb_frame_callee(void); -VALUE rb_str_succ(VALUE); -VALUE rb_time_succ(VALUE); -void Init_stack(VALUE*); -void rb_frame_pop(void); -NORETURN(void rb_thread_start_1(void)); - -#endif /* RUBY_INTERN_H */ diff --git a/io.c b/io.c index 84c6b87cf..cda216789 100644 --- a/io.c +++ b/io.c @@ -12,9 +12,9 @@ **********************************************************************/ -#include "ruby.h" -#include "rubyio.h" -#include "rubysig.h" +#include "ruby/ruby.h" +#include "ruby/io.h" +#include "ruby/signal.h" #include #include @@ -87,7 +87,7 @@ extern void Init_File(void); #include #endif -#include "util.h" +#include "ruby/util.h" #ifndef O_ACCMODE #define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR) diff --git a/iseq.c b/iseq.c index f8a7e8a54..8fe442316 100644 --- a/iseq.c +++ b/iseq.c @@ -10,8 +10,8 @@ **********************************************************************/ -#include -#include +#include "ruby/ruby.h" +#include "ruby/node.h" #include "yarvcore.h" #include "insns.inc" diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 797388f59..54299fe69 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -73,11 +73,13 @@ end INSTALL_DIRS = [ [dir_re('commondir'), "$(RUBYCOMMONDIR)"], - [dir_re("sitedir"), "$(RUBYCOMMONDIR)"], + [dir_re('sitedir'), "$(RUBYCOMMONDIR)"], [dir_re('rubylibdir'), "$(RUBYLIBDIR)"], [dir_re('archdir'), "$(RUBYARCHDIR)"], [dir_re('sitelibdir'), "$(RUBYLIBDIR)"], - [dir_re('sitearchdir'), "$(RUBYARCHDIR)"] + [dir_re('sitearchdir'), "$(RUBYARCHDIR)"], + [dir_re('rubyhdrdir'), "$(RUBYHDRDIR)"], + [dir_re('sitehdrdir'), "$(SITEHDRDIR)"], ] def install_dirs(target_prefix = nil) @@ -86,6 +88,8 @@ def install_dirs(target_prefix = nil) ['RUBYCOMMONDIR', '$(extout)/common'], ['RUBYLIBDIR', '$(RUBYCOMMONDIR)$(target_prefix)'], ['RUBYARCHDIR', '$(extout)/$(arch)$(target_prefix)'], + ['HDRDIR', '$(extout)/include/ruby$(target_prefix)'], + ['ARCHHDRDIR', '$(extout)/include/$(arch)/ruby$(target_prefix)'], ['extout', "#$extout"], ['extout_prefix', "#$extout_prefix"], ] @@ -94,12 +98,16 @@ def install_dirs(target_prefix = nil) ['RUBYCOMMONDIR', '$(rubylibdir)'], ['RUBYLIBDIR', '$(rubylibdir)$(target_prefix)'], ['RUBYARCHDIR', '$(archdir)$(target_prefix)'], + ['HDRDIR', '$(rubyhdrdir)/ruby$(target_prefix)'], + ['ARCHHDRDIR', '$(rubyhdrdir)/$(arch)/ruby$(target_prefix)'], ] else - dirs = [ +n dirs = [ ['RUBYCOMMONDIR', '$(sitedir)$(target_prefix)'], ['RUBYLIBDIR', '$(sitelibdir)$(target_prefix)'], ['RUBYARCHDIR', '$(sitearchdir)$(target_prefix)'], + ['HDRDIR', '$(rubyhdrdir)/ruby$(target_prefix)'], + ['ARCHHDRDIR', '$(rubyhdrdir)/$(arch)/ruby$(target_prefix)'], ] end dirs << ['target_prefix', (target_prefix ? "/#{target_prefix}" : "")] @@ -114,11 +122,13 @@ end topdir = File.dirname(libdir = File.dirname(__FILE__)) extdir = File.expand_path("ext", topdir) $extmk = File.expand_path($0)[0, extdir.size+1] == extdir+"/" -if not $extmk and File.exist?(RbConfig::CONFIG["archdir"] + "/ruby.h") - $hdrdir = $topdir = RbConfig::CONFIG["archdir"] -elsif File.exist?(($top_srcdir ||= topdir) + "/ruby.h") and - File.exist?(($topdir ||= RbConfig::CONFIG["topdir"]) + "/config.h") - $hdrdir = $top_srcdir +if not $extmk and File.exist?(($hdrdir = RbConfig::CONFIG["rubyhdrdir"]) + "/ruby/ruby.h") + $topdir = $hdrdir + $arch_hdrdir = $hdrdir + "/$(arch)" +elsif File.exist?(($hdrdir = ($top_srcdir ||= topdir) + "/include") + "/ruby.h") and + File.exist?("#{CONFIG["EXTOUT"]}/include/#{CONFIG["arch"]}/ruby/config.h") + $topdir ||= RbConfig::CONFIG["topdir"] + $arch_hdrdir = "$(extout)/include/$(arch)" else abort "can't find header files for ruby." end @@ -126,11 +136,11 @@ end OUTFLAG = CONFIG['OUTFLAG'] CPPOUTFILE = CONFIG['CPPOUTFILE'] -CONFTEST_C = "conftest.c" +CONFTEST_C = "conftest.c".freeze class String def quote - /\s/ =~ self ? "\"#{self}\"" : self + /\s/ =~ self ? "\"#{self}\"" : "#{self}" end end class Array @@ -269,8 +279,10 @@ def link_command(ldflags, opt="", libpath=$DEFLIBPATH|$LIBPATH) RbConfig::expand(TRY_LINK.dup, CONFIG.merge('hdrdir' => $hdrdir.quote, 'src' => CONFTEST_C, - 'INCFLAGS' => $INCFLAGS, - 'CPPFLAGS' => $CPPFLAGS, + 'arch_hdrdir' => "#$arch_hdrdir", + 'top_srcdir' => $top_srcdir.quote, + 'INCFLAGS' => "#$INCFLAGS", + 'CPPFLAGS' => "#$CPPFLAGS", 'CFLAGS' => "#$CFLAGS", 'ARCH_FLAG' => "#$ARCH_FLAG", 'LDFLAGS' => "#$LDFLAGS #{ldflags}", @@ -281,12 +293,16 @@ end def cc_command(opt="") RbConfig::expand("$(CC) #$INCFLAGS #$CPPFLAGS #$CFLAGS #$ARCH_FLAG #{opt} -c #{CONFTEST_C}", - CONFIG.merge('hdrdir' => $hdrdir.quote, 'srcdir' => $srcdir.quote)) + CONFIG.merge('hdrdir' => $hdrdir.quote, 'srcdir' => $srcdir.quote, + 'arch_hdrdir' => "#$arch_hdrdir", + 'top_srcdir' => $top_srcdir.quote)) end def cpp_command(outfile, opt="") RbConfig::expand("$(CPP) #$INCFLAGS #$CPPFLAGS #$CFLAGS #{opt} #{CONFTEST_C} #{outfile}", - CONFIG.merge('hdrdir' => $hdrdir.quote, 'srcdir' => $srcdir.quote)) + CONFIG.merge('hdrdir' => $hdrdir.quote, 'srcdir' => $srcdir.quote, + 'arch_hdrdir' => "#$arch_hdrdir", + 'top_srcdir' => $top_srcdir.quote)) end def libpathflag(libpath=$DEFLIBPATH|$LIBPATH) @@ -1037,12 +1053,12 @@ end def configuration(srcdir) mk = [] - vpath = %w[$(srcdir) $(topdir) $(hdrdir)] + vpath = $VPATH.dup if !CROSS_COMPILING case CONFIG['build_os'] when 'cygwin' if CONFIG['target_os'] != 'cygwin' - vpath.each {|p| p.sub!(/.*/, '$(shell cygpath -u \&)')} + vpath = vpath.map {|p| p.sub(/.*/, '$(shell cygpath -u \&)')} end when 'msdosdjgpp', 'mingw32' CONFIG['PATH_SEPARATOR'] = ';' @@ -1053,10 +1069,15 @@ def configuration(srcdir) SHELL = /bin/sh #### Start of system configuration section. #### - +#{ +if $extmk + "top_srcdir = " + $top_srcdir.sub(%r"\A#{Regexp.quote($topdir)}/", "$(topdir)/") +end +} srcdir = #{srcdir.gsub(/\$\((srcdir)\)|\$\{(srcdir)\}/) {CONFIG[$1||$2]}.quote} topdir = #{($extmk ? CONFIG["topdir"] : $topdir).quote} -hdrdir = #{$extmk ? CONFIG["hdrdir"].quote : '$(topdir)'} +hdrdir = #{CONFIG["hdrdir"].quote} +arch_hdrdir = #{$arch_hdrdir} VPATH = #{vpath.join(CONFIG['PATH_SEPARATOR'])} } if $extmk @@ -1071,7 +1092,8 @@ VPATH = #{vpath.join(CONFIG['PATH_SEPARATOR'])} end CONFIG.each do |key, var| next if /^abs_/ =~ key - next unless /^(?:src|top|hdr|(.*))dir$/ =~ key and $1 + next if /^(?:src|top|hdr)dir$/ =~ key + next unless /dir$/ =~ key mk << "#{key} = #{with_destdir(var)}\n" end if !$extmk and !$configure_args.has_key?('--ruby') and @@ -1397,7 +1419,8 @@ site-install-rb: install-rb end while line = dfile.gets() line.gsub!(/\.o\b/, ".#{$OBJEXT}") - line.gsub!(/\$\(hdrdir\)\/config.h/, $config_h) if $config_h + line.gsub!(/\$\((?:hdr|top)dir\)\/config.h/, $config_h) if $config_h + line.gsub!(%r"\$\(hdrdir\)/(?!ruby/)", '\&ruby/') if /(?:^|[^\\])(?:\\\\)*\\$/ =~ line (cont ||= []) << line next @@ -1442,7 +1465,7 @@ def init_mkmf(config = CONFIG) $ARCH_FLAG = with_config("arch_flag", arg_config("ARCH_FLAG", config["ARCH_FLAG"])).dup $CPPFLAGS = with_config("cppflags", arg_config("CPPFLAGS", config["CPPFLAGS"])).dup $LDFLAGS = with_config("ldflags", arg_config("LDFLAGS", config["LDFLAGS"])).dup - $INCFLAGS = "-I$(topdir) -I$(hdrdir) -I$(srcdir)" + $INCFLAGS = "-I$(arch_hdrdir) -I$(hdrdir) -I$(srcdir)" $DLDFLAGS = with_config("dldflags", arg_config("DLDFLAGS", config["DLDFLAGS"])).dup $LIBEXT = config['LIBEXT'].dup $OBJEXT = config["OBJEXT"].dup @@ -1454,6 +1477,7 @@ def init_mkmf(config = CONFIG) $DEFLIBPATH.unshift(".") $LIBPATH = [] $INSTALLFILES = nil + $VPATH = %w[$(srcdir) $(arch_hdrdir)/ruby $(hdrdir)/ruby] $objs = nil $srcs = nil diff --git a/main.c b/main.c index 48ec4e08d..80a155fb0 100644 --- a/main.c +++ b/main.c @@ -11,7 +11,7 @@ **********************************************************************/ #undef RUBY_EXPORT -#include "ruby.h" +#include "ruby/ruby.h" #if defined(__MACOS__) && defined(__MWERKS__) #include diff --git a/marshal.c b/marshal.c index 96ed62723..c6c512bdb 100644 --- a/marshal.c +++ b/marshal.c @@ -10,10 +10,10 @@ **********************************************************************/ -#include "ruby.h" -#include "rubyio.h" -#include "st.h" -#include "util.h" +#include "ruby/ruby.h" +#include "ruby/io.h" +#include "ruby/st.h" +#include "ruby/util.h" #include #ifdef HAVE_FLOAT_H diff --git a/math.c b/math.c index bd0284900..d0c2eee48 100644 --- a/math.c +++ b/math.c @@ -10,7 +10,7 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" #include #include diff --git a/missing.h b/missing.h deleted file mode 100644 index 81fdfecf7..000000000 --- a/missing.h +++ /dev/null @@ -1,148 +0,0 @@ -/************************************************ - - missing.h - prototype for *.c in ./missing, and - for missing timeval struct - - $Author$ - $Date$ - created at: Sat May 11 23:46:03 JST 2002 - -************************************************/ - -#ifndef MISSING_H -#define MISSING_H - -#if defined(HAVE_SYS_TIME_H) -# include -#elif !defined(_WIN32) -# define time_t long -struct timeval { - time_t tv_sec; /* seconds */ - time_t tv_usec; /* microseconds */ -}; -#endif -#if defined(HAVE_SYS_TYPES_H) -# include -#endif - -#ifndef HAVE_ACOSH -extern double acosh(double); -extern double asinh(double); -extern double atanh(double); -#endif - -#ifndef HAVE_CRYPT -extern char *crypt(const char *, const char *); -#endif - -#ifndef HAVE_DUP2 -extern int dup2(int, int); -#endif - -#ifndef HAVE_EACCESS -extern int eaccess(const char*, int); -#endif - -#ifndef HAVE_FINITE -extern int finite(double); -#endif - -#ifndef HAVE_FLOCK -extern int flock(int, int); -#endif - -/* -#ifndef HAVE_FREXP -extern double frexp(double, int *); -#endif -*/ - -#ifndef HAVE_HYPOT -extern double hypot(double, double); -#endif - -#ifndef HAVE_ERF -extern double erf(double); -extern double erfc(double); -#endif - -#ifndef isinf -# ifndef HAVE_ISINF -# if defined(HAVE_FINITE) && defined(HAVE_ISNAN) -# define isinf(x) (!finite(x) && !isnan(x)) -# else -extern int isinf(double); -# endif -# endif -#endif - -#ifndef HAVE_ISNAN -extern int isnan(double); -#endif - -/* -#ifndef HAVE_MEMCMP -extern int memcmp(const void *, const void *, size_t); -#endif -*/ - -#ifndef HAVE_MEMMOVE -extern void *memmove(void *, const void *, size_t); -#endif - -/* -#ifndef HAVE_MODF -extern double modf(double, double *); -#endif -*/ - -#ifndef HAVE_STRCASECMP -extern int strcasecmp(const char *, const char *); -#endif - -#ifndef HAVE_STRNCASECMP -extern int strncasecmp(const char *, const char *, size_t); -#endif - -#ifndef HAVE_STRCHR -extern char *strchr(const char *, int); -extern char *strrchr(const char *, int); -#endif - -#ifndef HAVE_STRERROR -extern char *strerror(int); -#endif - -#ifndef HAVE_STRFTIME -extern size_t strftime(char *, size_t, const char *, const struct tm *); -#endif - -#ifndef HAVE_STRSTR -extern char *strstr(const char *, const char *); -#endif - -/* -#ifndef HAVE_STRTOL -extern long strtol(const char *, char **, int); -#endif -*/ - -#ifndef HAVE_STRTOUL -extern unsigned long strtoul(const char *, char **, int); -#endif - -#ifndef HAVE_VSNPRINTF -# include -extern int snprintf(char *, size_t n, char const *, ...); -extern int vsnprintf(char *, size_t n, char const *, va_list); -#endif - -#ifndef HAVE_STRLCPY -extern size_t strlcpy(char *, const char*, size_t); -#endif - -#ifndef HAVE_STRLCAT -extern size_t strlcat(char *, const char*, size_t); -#endif - -#endif /* MISSING_H */ diff --git a/missing/flock.c b/missing/flock.c index 2219d176d..b02f8bf83 100644 --- a/missing/flock.c +++ b/missing/flock.c @@ -1,4 +1,4 @@ -#include "config.h" +#include "ruby/config.h" #if defined _WIN32 #elif defined HAVE_FCNTL && defined HAVE_FCNTL_H diff --git a/missing/strftime.c b/missing/strftime.c index 5522226ec..ba6785233 100644 --- a/missing/strftime.c +++ b/missing/strftime.c @@ -45,7 +45,7 @@ * January 1996 */ -#include "config.h" +#include "ruby/config.h" #ifndef GAWK #include diff --git a/node.h b/node.h deleted file mode 100644 index bc9a5923d..000000000 --- a/node.h +++ /dev/null @@ -1,394 +0,0 @@ -/********************************************************************** - - node.h - - - $Author$ - $Date$ - created at: Fri May 28 15:14:02 JST 1993 - - Copyright (C) 1993-2003 Yukihiro Matsumoto - -**********************************************************************/ - -#ifndef NODE_H -#define NODE_H - -#if defined(__cplusplus) -extern "C" { -#endif - -enum node_type { - NODE_METHOD, - NODE_FBODY, - NODE_CFUNC, - NODE_SCOPE, - NODE_BLOCK, - NODE_IF, - NODE_CASE, - NODE_WHEN, - NODE_OPT_N, - NODE_WHILE, - NODE_UNTIL, - NODE_ITER, - NODE_FOR, - NODE_BREAK, - NODE_NEXT, - NODE_REDO, - NODE_RETRY, - NODE_BEGIN, - NODE_RESCUE, - NODE_RESBODY, - NODE_ENSURE, - NODE_AND, - NODE_OR, - NODE_NOT, - NODE_MASGN, - NODE_LASGN, - NODE_DASGN, - NODE_DASGN_CURR, - NODE_GASGN, - NODE_IASGN, - NODE_IASGN2, - NODE_CDECL, - NODE_CVASGN, - NODE_CVDECL, - NODE_OP_ASGN1, - NODE_OP_ASGN2, - NODE_OP_ASGN_AND, - NODE_OP_ASGN_OR, - NODE_CALL, - NODE_FCALL, - NODE_VCALL, - NODE_SUPER, - NODE_ZSUPER, - NODE_ARRAY, - NODE_ZARRAY, - NODE_VALUES, - NODE_HASH, - NODE_RETURN, - NODE_YIELD, - NODE_LVAR, - NODE_DVAR, - NODE_GVAR, - NODE_IVAR, - NODE_CONST, - NODE_CVAR, - NODE_NTH_REF, - NODE_BACK_REF, - NODE_MATCH, - NODE_MATCH2, - NODE_MATCH3, - NODE_LIT, - NODE_STR, - NODE_DSTR, - NODE_XSTR, - NODE_DXSTR, - NODE_EVSTR, - NODE_DREGX, - NODE_DREGX_ONCE, - NODE_ARGS, - NODE_ARGS_AUX, - NODE_OPT_ARG, - NODE_POSTARG, - NODE_ARGSCAT, - NODE_ARGSPUSH, - NODE_SPLAT, - NODE_TO_ARY, - NODE_BLOCK_ARG, - NODE_BLOCK_PASS, - NODE_DEFN, - NODE_DEFS, - NODE_ALIAS, - NODE_VALIAS, - NODE_UNDEF, - NODE_CLASS, - NODE_MODULE, - NODE_SCLASS, - NODE_COLON2, - NODE_COLON3, - NODE_CREF, - NODE_DOT2, - NODE_DOT3, - NODE_FLIP2, - NODE_FLIP3, - NODE_ATTRSET, - NODE_SELF, - NODE_NIL, - NODE_TRUE, - NODE_FALSE, - NODE_ERRINFO, - NODE_DEFINED, - NODE_POSTEXE, - NODE_ALLOCA, - NODE_BMETHOD, - NODE_MEMO, - NODE_IFUNC, - NODE_DSYM, - NODE_ATTRASGN, - NODE_PRELUDE, - NODE_LAMBDA, - NODE_OPTBLOCK, - NODE_LAST -}; - -typedef struct RNode { - unsigned long flags; - char *nd_file; - union { - struct RNode *node; - ID id; - VALUE value; - VALUE (*cfunc)(ANYARGS); - ID *tbl; - } u1; - union { - struct RNode *node; - ID id; - long argc; - VALUE value; - } u2; - union { - struct RNode *node; - ID id; - long state; - struct global_entry *entry; - long cnt; - VALUE value; - } u3; -} NODE; - -#define RNODE(obj) (R_CAST(RNode)(obj)) - -/* 0..4:T_TYPES, 5:FL_MARK, 6:reserved, 7:NODE_NEWLINE */ -#define NODE_NEWLINE (1<<7) - -#define NODE_TYPESHIFT 8 -#define NODE_TYPEMASK (0x7f<flags & NODE_TYPEMASK)>>NODE_TYPESHIFT)) -#define nd_set_type(n,t) \ - RNODE(n)->flags=((RNODE(n)->flags&~NODE_TYPEMASK)|(((t)<flags>>NODE_LSHIFT)&NODE_LMASK)) -#define nd_set_line(n,l) \ - RNODE(n)->flags=((RNODE(n)->flags&~(-1< #include #include diff --git a/object.c b/object.c index 573f75a3d..6264b163c 100644 --- a/object.c +++ b/object.c @@ -12,9 +12,10 @@ **********************************************************************/ -#include "ruby.h" -#include "st.h" -#include "util.h" +#include "ruby/ruby.h" +#include "ruby/st.h" +#include "ruby/util.h" +#include "debug.h" #include #include #include @@ -384,7 +385,7 @@ rb_obj_is_instance_of(VALUE obj, VALUE c) * b.kind_of? C #=> false * b.kind_of? M #=> true */ -#include "debug.h" + VALUE rb_obj_is_kind_of(VALUE obj, VALUE c) { @@ -1675,7 +1676,7 @@ rb_obj_public_methods(int argc, VALUE *argv, VALUE obj) * fred.instance_variable_get(:@a) #=> "cat" * fred.instance_variable_get("@b") #=> 99 */ -#include "debug.h" + static VALUE rb_obj_ivar_get(VALUE obj, VALUE iv) { diff --git a/oniguruma.h b/oniguruma.h deleted file mode 100644 index 97c581dfd..000000000 --- a/oniguruma.h +++ /dev/null @@ -1,810 +0,0 @@ -#ifndef ONIGURUMA_H -#define ONIGURUMA_H -/********************************************************************** - oniguruma.h - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2007 K.Kosako - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#define ONIGURUMA -#define ONIGURUMA_VERSION_MAJOR 5 -#define ONIGURUMA_VERSION_MINOR 7 -#define ONIGURUMA_VERSION_TEENY 0 - -#ifdef __cplusplus -# ifndef HAVE_PROTOTYPES -# define HAVE_PROTOTYPES 1 -# endif -# ifndef HAVE_STDARG_PROTOTYPES -# define HAVE_STDARG_PROTOTYPES 1 -# endif -#endif - -/* escape Mac OS X/Xcode 2.4/gcc 4.0.1 problem */ -#if defined(__APPLE__) && defined(__GNUC__) && __GNUC__ >= 4 -# ifndef HAVE_STDARG_PROTOTYPES -# define HAVE_STDARG_PROTOTYPES 1 -# endif -#endif - -#ifndef P_ -#if defined(__STDC__) || defined(_WIN32) -# define P_(args) args -#else -# define P_(args) () -#endif -#endif - -#ifndef PV_ -#ifdef HAVE_STDARG_PROTOTYPES -# define PV_(args) args -#else -# define PV_(args) () -#endif -#endif - -#ifndef ONIG_EXTERN -#if defined(_WIN32) && !defined(__GNUC__) -#if defined(EXPORT) || defined(RUBY_EXPORT) -#define ONIG_EXTERN extern __declspec(dllexport) -#else -#define ONIG_EXTERN extern __declspec(dllimport) -#endif -#endif -#endif - -#ifndef ONIG_EXTERN -#define ONIG_EXTERN extern -#endif - -/* PART: character encoding */ - -#ifndef ONIG_ESCAPE_UCHAR_COLLISION -#define UChar OnigUChar -#endif - -typedef unsigned char OnigUChar; -typedef unsigned long OnigCodePoint; -typedef unsigned int OnigDistance; - -#define ONIG_INFINITE_DISTANCE ~((OnigDistance )0) - -/* case fold flag */ -typedef unsigned int OnigCaseFoldType; - -ONIG_EXTERN OnigCaseFoldType OnigDefaultCaseFoldFlag; - -/* #define ONIGENC_CASE_FOLD_HIRAGANA_KATAKANA (1<<1) */ -/* #define ONIGENC_CASE_FOLD_KATAKANA_WIDTH (1<<2) */ -#define ONIGENC_CASE_FOLD_TURKISH_AZERI (1<<20) -#define INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR (1<<30) - -#define ONIGENC_CASE_FOLD_MIN INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR -#define ONIGENC_CASE_FOLD_DEFAULT OnigDefaultCaseFoldFlag - - -#define ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN 3 -#define ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM 13 -/* 13 => Unicode:0x1ffc */ - -/* code range */ -#define ONIGENC_CODE_RANGE_NUM(range) ((int )range[0]) -#define ONIGENC_CODE_RANGE_FROM(range,i) range[((i)*2) + 1] -#define ONIGENC_CODE_RANGE_TO(range,i) range[((i)*2) + 2] - -typedef struct { - int byte_len; /* argument(original) character(s) byte length */ - int code_len; /* number of code */ - OnigCodePoint code[ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN]; -} OnigCaseFoldCodeItem; - -typedef struct { - OnigCodePoint esc; - OnigCodePoint anychar; - OnigCodePoint anytime; - OnigCodePoint zero_or_one_time; - OnigCodePoint one_or_more_time; - OnigCodePoint anychar_anytime; -} OnigMetaCharTableType; - -typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg); - -typedef struct OnigEncodingTypeST { - int (*mbc_enc_len)(const OnigUChar* p); - const char* name; - int max_enc_len; - int min_enc_len; - int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end); - OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end); - int (*code_to_mbclen)(OnigCodePoint code); - int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf); - int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to); - int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg); - int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[]); - int (*property_name_to_ctype)(struct OnigEncodingTypeST* enc, OnigUChar* p, OnigUChar* end); - int (*is_code_ctype)(OnigCodePoint code, unsigned int ctype); - int (*get_ctype_code_range)(int ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]); - OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p); - int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end); -} OnigEncodingType; - -typedef OnigEncodingType* OnigEncoding; - -ONIG_EXTERN OnigEncodingType OnigEncodingASCII; -ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_1; -ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_2; -ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_3; -ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_4; -ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_5; -ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_6; -ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_7; -ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_8; -ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_9; -ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_10; -ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_11; -ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_13; -ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_14; -ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_15; -ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_16; -ONIG_EXTERN OnigEncodingType OnigEncodingUTF8; -ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_BE; -ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_LE; -ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_BE; -ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_LE; -ONIG_EXTERN OnigEncodingType OnigEncodingEUC_JP; -ONIG_EXTERN OnigEncodingType OnigEncodingEUC_TW; -ONIG_EXTERN OnigEncodingType OnigEncodingEUC_KR; -ONIG_EXTERN OnigEncodingType OnigEncodingEUC_CN; -ONIG_EXTERN OnigEncodingType OnigEncodingSJIS; -ONIG_EXTERN OnigEncodingType OnigEncodingKOI8; -ONIG_EXTERN OnigEncodingType OnigEncodingKOI8_R; -ONIG_EXTERN OnigEncodingType OnigEncodingCP1251; -ONIG_EXTERN OnigEncodingType OnigEncodingBIG5; -ONIG_EXTERN OnigEncodingType OnigEncodingGB18030; - -#define ONIG_ENCODING_ASCII (&OnigEncodingASCII) -#define ONIG_ENCODING_ISO_8859_1 (&OnigEncodingISO_8859_1) -#define ONIG_ENCODING_ISO_8859_2 (&OnigEncodingISO_8859_2) -#define ONIG_ENCODING_ISO_8859_3 (&OnigEncodingISO_8859_3) -#define ONIG_ENCODING_ISO_8859_4 (&OnigEncodingISO_8859_4) -#define ONIG_ENCODING_ISO_8859_5 (&OnigEncodingISO_8859_5) -#define ONIG_ENCODING_ISO_8859_6 (&OnigEncodingISO_8859_6) -#define ONIG_ENCODING_ISO_8859_7 (&OnigEncodingISO_8859_7) -#define ONIG_ENCODING_ISO_8859_8 (&OnigEncodingISO_8859_8) -#define ONIG_ENCODING_ISO_8859_9 (&OnigEncodingISO_8859_9) -#define ONIG_ENCODING_ISO_8859_10 (&OnigEncodingISO_8859_10) -#define ONIG_ENCODING_ISO_8859_11 (&OnigEncodingISO_8859_11) -#define ONIG_ENCODING_ISO_8859_13 (&OnigEncodingISO_8859_13) -#define ONIG_ENCODING_ISO_8859_14 (&OnigEncodingISO_8859_14) -#define ONIG_ENCODING_ISO_8859_15 (&OnigEncodingISO_8859_15) -#define ONIG_ENCODING_ISO_8859_16 (&OnigEncodingISO_8859_16) -#define ONIG_ENCODING_UTF8 (&OnigEncodingUTF8) -#define ONIG_ENCODING_UTF16_BE (&OnigEncodingUTF16_BE) -#define ONIG_ENCODING_UTF16_LE (&OnigEncodingUTF16_LE) -#define ONIG_ENCODING_UTF32_BE (&OnigEncodingUTF32_BE) -#define ONIG_ENCODING_UTF32_LE (&OnigEncodingUTF32_LE) -#define ONIG_ENCODING_EUC_JP (&OnigEncodingEUC_JP) -#define ONIG_ENCODING_EUC_TW (&OnigEncodingEUC_TW) -#define ONIG_ENCODING_EUC_KR (&OnigEncodingEUC_KR) -#define ONIG_ENCODING_EUC_CN (&OnigEncodingEUC_CN) -#define ONIG_ENCODING_SJIS (&OnigEncodingSJIS) -#define ONIG_ENCODING_KOI8 (&OnigEncodingKOI8) -#define ONIG_ENCODING_KOI8_R (&OnigEncodingKOI8_R) -#define ONIG_ENCODING_CP1251 (&OnigEncodingCP1251) -#define ONIG_ENCODING_BIG5 (&OnigEncodingBIG5) -#define ONIG_ENCODING_GB18030 (&OnigEncodingGB18030) - -#define ONIG_ENCODING_UNDEF ((OnigEncoding )0) - - -/* work size */ -#define ONIGENC_CODE_TO_MBC_MAXLEN 7 -#define ONIGENC_MBC_CASE_FOLD_MAXLEN 18 -/* 18: 6(max-byte) * 3(case-fold chars) */ - -/* character types */ -#define ONIGENC_CTYPE_NEWLINE 0 -#define ONIGENC_CTYPE_ALPHA 1 -#define ONIGENC_CTYPE_BLANK 2 -#define ONIGENC_CTYPE_CNTRL 3 -#define ONIGENC_CTYPE_DIGIT 4 -#define ONIGENC_CTYPE_GRAPH 5 -#define ONIGENC_CTYPE_LOWER 6 -#define ONIGENC_CTYPE_PRINT 7 -#define ONIGENC_CTYPE_PUNCT 8 -#define ONIGENC_CTYPE_SPACE 9 -#define ONIGENC_CTYPE_UPPER 10 -#define ONIGENC_CTYPE_XDIGIT 11 -#define ONIGENC_CTYPE_WORD 12 -#define ONIGENC_CTYPE_ALNUM 13 /* alpha || digit */ -#define ONIGENC_CTYPE_ASCII 14 -#define ONIGENC_MAX_STD_CTYPE ONIGENC_CTYPE_ASCII - - -#define enc_len(enc,p) ONIGENC_MBC_ENC_LEN(enc, p) - -#define ONIGENC_IS_UNDEF(enc) ((enc) == ONIG_ENCODING_UNDEF) -#define ONIGENC_IS_SINGLEBYTE(enc) (ONIGENC_MBC_MAXLEN(enc) == 1) -#define ONIGENC_IS_MBC_HEAD(enc,p) (ONIGENC_MBC_ENC_LEN(enc,p) != 1) -#define ONIGENC_IS_MBC_ASCII(p) (*(p) < 128) -#define ONIGENC_IS_CODE_ASCII(code) ((code) < 128) -#define ONIGENC_IS_MBC_WORD(enc,s,end) \ - ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end)) - - -#define ONIGENC_NAME(enc) ((enc)->name) - -#define ONIGENC_MBC_CASE_FOLD(enc,flag,pp,end,buf) \ - (enc)->mbc_case_fold(flag,(const OnigUChar** )pp,end,buf) -#define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) \ - (enc)->is_allowed_reverse_match(s,end) -#define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s) \ - (enc)->left_adjust_char_head(start, s) -#define ONIGENC_APPLY_ALL_CASE_FOLD(enc,case_fold_flag,f,arg) \ - (enc)->apply_all_case_fold(case_fold_flag,f,arg) -#define ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc,case_fold_flag,p,end,acs) \ - (enc)->get_case_fold_codes_by_str(case_fold_flag,p,end,acs) -#define ONIGENC_STEP_BACK(enc,start,s,n) \ - onigenc_step_back((enc),(start),(s),(n)) - -#define ONIGENC_MBC_ENC_LEN(enc,p) (enc)->mbc_enc_len(p) -#define ONIGENC_MBC_MAXLEN(enc) ((enc)->max_enc_len) -#define ONIGENC_MBC_MAXLEN_DIST(enc) ONIGENC_MBC_MAXLEN(enc) -#define ONIGENC_MBC_MINLEN(enc) ((enc)->min_enc_len) -#define ONIGENC_IS_MBC_NEWLINE(enc,p,end) (enc)->is_mbc_newline((p),(end)) -#define ONIGENC_MBC_TO_CODE(enc,p,end) (enc)->mbc_to_code((p),(end)) -#define ONIGENC_CODE_TO_MBCLEN(enc,code) (enc)->code_to_mbclen(code) -#define ONIGENC_CODE_TO_MBC(enc,code,buf) (enc)->code_to_mbc(code,buf) -#define ONIGENC_PROPERTY_NAME_TO_CTYPE(enc,p,end) \ - (enc)->property_name_to_ctype(enc,p,end) - -#define ONIGENC_IS_CODE_CTYPE(enc,code,ctype) (enc)->is_code_ctype(code,ctype) - -#define ONIGENC_IS_CODE_NEWLINE(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_NEWLINE) -#define ONIGENC_IS_CODE_GRAPH(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_GRAPH) -#define ONIGENC_IS_CODE_PRINT(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PRINT) -#define ONIGENC_IS_CODE_ALNUM(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALNUM) -#define ONIGENC_IS_CODE_ALPHA(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALPHA) -#define ONIGENC_IS_CODE_LOWER(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_LOWER) -#define ONIGENC_IS_CODE_UPPER(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_UPPER) -#define ONIGENC_IS_CODE_CNTRL(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_CNTRL) -#define ONIGENC_IS_CODE_PUNCT(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PUNCT) -#define ONIGENC_IS_CODE_SPACE(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_SPACE) -#define ONIGENC_IS_CODE_BLANK(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_BLANK) -#define ONIGENC_IS_CODE_DIGIT(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_DIGIT) -#define ONIGENC_IS_CODE_XDIGIT(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_XDIGIT) -#define ONIGENC_IS_CODE_WORD(enc,code) \ - ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_WORD) - -#define ONIGENC_GET_CTYPE_CODE_RANGE(enc,ctype,sbout,ranges) \ - (enc)->get_ctype_code_range(ctype,sbout,ranges) - -ONIG_EXTERN -OnigUChar* onigenc_step_back P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, int n)); - - -/* encoding API */ -ONIG_EXTERN -int onigenc_init P_((void)); -ONIG_EXTERN -int onigenc_set_default_encoding P_((OnigEncoding enc)); -ONIG_EXTERN -OnigEncoding onigenc_get_default_encoding P_((void)); -ONIG_EXTERN -void onigenc_set_default_caseconv_table P_((const OnigUChar* table)); -ONIG_EXTERN -OnigUChar* onigenc_get_right_adjust_char_head_with_prev P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar** prev)); -ONIG_EXTERN -OnigUChar* onigenc_get_prev_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); -ONIG_EXTERN -OnigUChar* onigenc_get_left_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); -ONIG_EXTERN -OnigUChar* onigenc_get_right_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); -ONIG_EXTERN -int onigenc_strlen P_((OnigEncoding enc, const OnigUChar* p, const OnigUChar* end)); -ONIG_EXTERN -int onigenc_strlen_null P_((OnigEncoding enc, const OnigUChar* p)); -ONIG_EXTERN -int onigenc_str_bytelen_null P_((OnigEncoding enc, const OnigUChar* p)); - - - -/* PART: regular expression */ - -/* config parameters */ -#define ONIG_NREGION 10 -#define ONIG_MAX_BACKREF_NUM 1000 -#define ONIG_MAX_REPEAT_NUM 100000 -#define ONIG_MAX_MULTI_BYTE_RANGES_NUM 10000 -/* constants */ -#define ONIG_MAX_ERROR_MESSAGE_LEN 90 - -typedef unsigned int OnigOptionType; - -#define ONIG_OPTION_DEFAULT ONIG_OPTION_NONE - -/* options */ -#define ONIG_OPTION_NONE 0U -#define ONIG_OPTION_IGNORECASE 1U -#define ONIG_OPTION_EXTEND (ONIG_OPTION_IGNORECASE << 1) -#define ONIG_OPTION_MULTILINE (ONIG_OPTION_EXTEND << 1) -#define ONIG_OPTION_SINGLELINE (ONIG_OPTION_MULTILINE << 1) -#define ONIG_OPTION_FIND_LONGEST (ONIG_OPTION_SINGLELINE << 1) -#define ONIG_OPTION_FIND_NOT_EMPTY (ONIG_OPTION_FIND_LONGEST << 1) -#define ONIG_OPTION_NEGATE_SINGLELINE (ONIG_OPTION_FIND_NOT_EMPTY << 1) -#define ONIG_OPTION_DONT_CAPTURE_GROUP (ONIG_OPTION_NEGATE_SINGLELINE << 1) -#define ONIG_OPTION_CAPTURE_GROUP (ONIG_OPTION_DONT_CAPTURE_GROUP << 1) -/* options (search time) */ -#define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1) -#define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1) -#define ONIG_OPTION_POSIX_REGION (ONIG_OPTION_NOTEOL << 1) -#define ONIG_OPTION_MAXBIT ONIG_OPTION_POSIX_REGION /* limit */ - -#define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt)) -#define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt)) -#define ONIG_IS_OPTION_ON(options,option) ((options) & (option)) - -/* syntax */ -typedef struct { - unsigned int op; - unsigned int op2; - unsigned int behavior; - OnigOptionType options; /* default option */ - OnigMetaCharTableType meta_char_table; -} OnigSyntaxType; - -ONIG_EXTERN OnigSyntaxType OnigSyntaxASIS; -ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixBasic; -ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixExtended; -ONIG_EXTERN OnigSyntaxType OnigSyntaxEmacs; -ONIG_EXTERN OnigSyntaxType OnigSyntaxGrep; -ONIG_EXTERN OnigSyntaxType OnigSyntaxGnuRegex; -ONIG_EXTERN OnigSyntaxType OnigSyntaxJava; -ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl; -ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl_NG; -ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby; - -/* predefined syntaxes (see regsyntax.c) */ -#define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS) -#define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic) -#define ONIG_SYNTAX_POSIX_EXTENDED (&OnigSyntaxPosixExtended) -#define ONIG_SYNTAX_EMACS (&OnigSyntaxEmacs) -#define ONIG_SYNTAX_GREP (&OnigSyntaxGrep) -#define ONIG_SYNTAX_GNU_REGEX (&OnigSyntaxGnuRegex) -#define ONIG_SYNTAX_JAVA (&OnigSyntaxJava) -#define ONIG_SYNTAX_PERL (&OnigSyntaxPerl) -#define ONIG_SYNTAX_PERL_NG (&OnigSyntaxPerl_NG) -#define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby) - -/* default syntax */ -ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; -#define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax - -/* syntax (operators) */ -#define ONIG_SYN_OP_VARIABLE_META_CHARACTERS (1U<<0) -#define ONIG_SYN_OP_DOT_ANYCHAR (1U<<1) /* . */ -#define ONIG_SYN_OP_ASTERISK_ZERO_INF (1U<<2) /* * */ -#define ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF (1U<<3) -#define ONIG_SYN_OP_PLUS_ONE_INF (1U<<4) /* + */ -#define ONIG_SYN_OP_ESC_PLUS_ONE_INF (1U<<5) -#define ONIG_SYN_OP_QMARK_ZERO_ONE (1U<<6) /* ? */ -#define ONIG_SYN_OP_ESC_QMARK_ZERO_ONE (1U<<7) -#define ONIG_SYN_OP_BRACE_INTERVAL (1U<<8) /* {lower,upper} */ -#define ONIG_SYN_OP_ESC_BRACE_INTERVAL (1U<<9) /* \{lower,upper\} */ -#define ONIG_SYN_OP_VBAR_ALT (1U<<10) /* | */ -#define ONIG_SYN_OP_ESC_VBAR_ALT (1U<<11) /* \| */ -#define ONIG_SYN_OP_LPAREN_SUBEXP (1U<<12) /* (...) */ -#define ONIG_SYN_OP_ESC_LPAREN_SUBEXP (1U<<13) /* \(...\) */ -#define ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR (1U<<14) /* \A, \Z, \z */ -#define ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR (1U<<15) /* \G */ -#define ONIG_SYN_OP_DECIMAL_BACKREF (1U<<16) /* \num */ -#define ONIG_SYN_OP_BRACKET_CC (1U<<17) /* [...] */ -#define ONIG_SYN_OP_ESC_W_WORD (1U<<18) /* \w, \W */ -#define ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END (1U<<19) /* \<. \> */ -#define ONIG_SYN_OP_ESC_B_WORD_BOUND (1U<<20) /* \b, \B */ -#define ONIG_SYN_OP_ESC_S_WHITE_SPACE (1U<<21) /* \s, \S */ -#define ONIG_SYN_OP_ESC_D_DIGIT (1U<<22) /* \d, \D */ -#define ONIG_SYN_OP_LINE_ANCHOR (1U<<23) /* ^, $ */ -#define ONIG_SYN_OP_POSIX_BRACKET (1U<<24) /* [:xxxx:] */ -#define ONIG_SYN_OP_QMARK_NON_GREEDY (1U<<25) /* ??,*?,+?,{n,m}? */ -#define ONIG_SYN_OP_ESC_CONTROL_CHARS (1U<<26) /* \n,\r,\t,\a ... */ -#define ONIG_SYN_OP_ESC_C_CONTROL (1U<<27) /* \cx */ -#define ONIG_SYN_OP_ESC_OCTAL3 (1U<<28) /* \OOO */ -#define ONIG_SYN_OP_ESC_X_HEX2 (1U<<29) /* \xHH */ -#define ONIG_SYN_OP_ESC_X_BRACE_HEX8 (1U<<30) /* \x{7HHHHHHH} */ - -#define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (1U<<0) /* \Q...\E */ -#define ONIG_SYN_OP2_QMARK_GROUP_EFFECT (1U<<1) /* (?...) */ -#define ONIG_SYN_OP2_OPTION_PERL (1U<<2) /* (?imsx),(?-imsx) */ -#define ONIG_SYN_OP2_OPTION_RUBY (1U<<3) /* (?imx), (?-imx) */ -#define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT (1U<<4) /* ?+,*+,++ */ -#define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL (1U<<5) /* {n,m}+ */ -#define ONIG_SYN_OP2_CCLASS_SET_OP (1U<<6) /* [...&&..[..]..] */ -#define ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP (1U<<7) /* (?...) */ -#define ONIG_SYN_OP2_ESC_K_NAMED_BACKREF (1U<<8) /* \k */ -#define ONIG_SYN_OP2_ESC_G_SUBEXP_CALL (1U<<9) /* \g, \g */ -#define ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY (1U<<10) /* (?@..),(?@..) */ -#define ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL (1U<<11) /* \C-x */ -#define ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META (1U<<12) /* \M-x */ -#define ONIG_SYN_OP2_ESC_V_VTAB (1U<<13) /* \v as VTAB */ -#define ONIG_SYN_OP2_ESC_U_HEX4 (1U<<14) /* \uHHHH */ -#define ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR (1U<<15) /* \`, \' */ -#define ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY (1U<<16) /* \p{...}, \P{...} */ -#define ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT (1U<<17) /* \p{^..}, \P{^..} */ -/* #define ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS (1U<<18) */ -#define ONIG_SYN_OP2_ESC_H_XDIGIT (1U<<19) /* \h, \H */ -#define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1U<<20) /* \ */ - -/* syntax (behavior) */ -#define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31) /* not implemented */ -#define ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS (1U<<0) /* ?, *, +, {n,m} */ -#define ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS (1U<<1) /* error or ignore */ -#define ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP (1U<<2) /* ...)... */ -#define ONIG_SYN_ALLOW_INVALID_INTERVAL (1U<<3) /* {??? */ -#define ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV (1U<<4) /* {,n} => {0,n} */ -#define ONIG_SYN_STRICT_CHECK_BACKREF (1U<<5) /* /(\1)/,/\1()/ ..*/ -#define ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND (1U<<6) /* (?<=a|bc) */ -#define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (1U<<7) /* see doc/RE */ -#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1U<<8) /* (?)(?) */ -#define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (1U<<9) /* a{n}?=(?:a{n})? */ - -/* syntax (behavior) in char class [...] */ -#define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (1U<<20) /* [^...] */ -#define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (1U<<21) /* [..\w..] etc.. */ -#define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (1U<<22) -#define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (1U<<23) /* [0-9-a]=[0-9\-a] */ -/* syntax (behavior) warning */ -#define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (1U<<24) /* [,-,] */ -#define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (1U<<25) /* (?:a*)+ */ - -/* meta character specifiers (onig_set_meta_char()) */ -#define ONIG_META_CHAR_ESCAPE 0 -#define ONIG_META_CHAR_ANYCHAR 1 -#define ONIG_META_CHAR_ANYTIME 2 -#define ONIG_META_CHAR_ZERO_OR_ONE_TIME 3 -#define ONIG_META_CHAR_ONE_OR_MORE_TIME 4 -#define ONIG_META_CHAR_ANYCHAR_ANYTIME 5 - -#define ONIG_INEFFECTIVE_META_CHAR 0 - -/* error codes */ -#define ONIG_IS_PATTERN_ERROR(ecode) ((ecode) <= -100 && (ecode) > -1000) -/* normal return */ -#define ONIG_NORMAL 0 -#define ONIG_MISMATCH -1 -#define ONIG_NO_SUPPORT_CONFIG -2 - -/* internal error */ -#define ONIGERR_MEMORY -5 -#define ONIGERR_TYPE_BUG -6 -#define ONIGERR_PARSER_BUG -11 -#define ONIGERR_STACK_BUG -12 -#define ONIGERR_UNDEFINED_BYTECODE -13 -#define ONIGERR_UNEXPECTED_BYTECODE -14 -#define ONIGERR_MATCH_STACK_LIMIT_OVER -15 -#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED -21 -#define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22 -/* general error */ -#define ONIGERR_INVALID_ARGUMENT -30 -/* syntax error */ -#define ONIGERR_END_PATTERN_AT_LEFT_BRACE -100 -#define ONIGERR_END_PATTERN_AT_LEFT_BRACKET -101 -#define ONIGERR_EMPTY_CHAR_CLASS -102 -#define ONIGERR_PREMATURE_END_OF_CHAR_CLASS -103 -#define ONIGERR_END_PATTERN_AT_ESCAPE -104 -#define ONIGERR_END_PATTERN_AT_META -105 -#define ONIGERR_END_PATTERN_AT_CONTROL -106 -#define ONIGERR_META_CODE_SYNTAX -108 -#define ONIGERR_CONTROL_CODE_SYNTAX -109 -#define ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE -110 -#define ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE -111 -#define ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS -112 -#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED -113 -#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID -114 -#define ONIGERR_NESTED_REPEAT_OPERATOR -115 -#define ONIGERR_UNMATCHED_CLOSE_PARENTHESIS -116 -#define ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS -117 -#define ONIGERR_END_PATTERN_IN_GROUP -118 -#define ONIGERR_UNDEFINED_GROUP_OPTION -119 -#define ONIGERR_INVALID_POSIX_BRACKET_TYPE -121 -#define ONIGERR_INVALID_LOOK_BEHIND_PATTERN -122 -#define ONIGERR_INVALID_REPEAT_RANGE_PATTERN -123 -/* values error (syntax error) */ -#define ONIGERR_TOO_BIG_NUMBER -200 -#define ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE -201 -#define ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE -202 -#define ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS -203 -#define ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE -204 -#define ONIGERR_TOO_MANY_MULTI_BYTE_RANGES -205 -#define ONIGERR_TOO_SHORT_MULTI_BYTE_STRING -206 -#define ONIGERR_TOO_BIG_BACKREF_NUMBER -207 -#define ONIGERR_INVALID_BACKREF -208 -#define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED -209 -#define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE -212 -#define ONIGERR_EMPTY_GROUP_NAME -214 -#define ONIGERR_INVALID_GROUP_NAME -215 -#define ONIGERR_INVALID_CHAR_IN_GROUP_NAME -216 -#define ONIGERR_UNDEFINED_NAME_REFERENCE -217 -#define ONIGERR_UNDEFINED_GROUP_REFERENCE -218 -#define ONIGERR_MULTIPLEX_DEFINED_NAME -219 -#define ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL -220 -#define ONIGERR_NEVER_ENDING_RECURSION -221 -#define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222 -#define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223 -#define ONIGERR_INVALID_WIDE_CHAR_VALUE -400 -#define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401 -#define ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION -402 -#define ONIGERR_INVALID_COMBINATION_OF_OPTIONS -403 - -/* errors related to thread */ -#define ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT -1001 - - -/* must be smaller than BIT_STATUS_BITS_NUM (unsigned int * 8) */ -#define ONIG_MAX_CAPTURE_HISTORY_GROUP 31 -#define ONIG_IS_CAPTURE_HISTORY_GROUP(r, i) \ - ((i) <= ONIG_MAX_CAPTURE_HISTORY_GROUP && (r)->list && (r)->list[i]) - -typedef struct OnigCaptureTreeNodeStruct { - int group; /* group number */ - int beg; - int end; - int allocated; - int num_childs; - struct OnigCaptureTreeNodeStruct** childs; -} OnigCaptureTreeNode; - -/* match result region type */ -struct re_registers { - int allocated; - int num_regs; - int* beg; - int* end; - /* extended */ - OnigCaptureTreeNode* history_root; /* capture history tree root */ -}; - -/* capture tree traverse */ -#define ONIG_TRAVERSE_CALLBACK_AT_FIRST 1 -#define ONIG_TRAVERSE_CALLBACK_AT_LAST 2 -#define ONIG_TRAVERSE_CALLBACK_AT_BOTH \ - ( ONIG_TRAVERSE_CALLBACK_AT_FIRST | ONIG_TRAVERSE_CALLBACK_AT_LAST ) - - -#define ONIG_REGION_NOTPOS -1 - -typedef struct re_registers OnigRegion; - -typedef struct { - OnigEncoding enc; - OnigUChar* par; - OnigUChar* par_end; -} OnigErrorInfo; - -typedef struct { - int lower; - int upper; -} OnigRepeatRange; - -typedef void (*OnigWarnFunc) P_((const char* s)); -extern void onig_null_warn P_((const char* s)); -#define ONIG_NULL_WARN onig_null_warn - -#define ONIG_CHAR_TABLE_SIZE 256 - -/* regex_t state */ -#define ONIG_STATE_NORMAL 0 -#define ONIG_STATE_SEARCHING 1 -#define ONIG_STATE_COMPILING -1 -#define ONIG_STATE_MODIFY -2 - -#define ONIG_STATE(reg) \ - ((reg)->state > 0 ? ONIG_STATE_SEARCHING : (reg)->state) - -typedef struct re_pattern_buffer { - /* common members of BBuf(bytes-buffer) */ - unsigned char* p; /* compiled pattern */ - unsigned int used; /* used space for p */ - unsigned int alloc; /* allocated space for p */ - - int state; /* normal, searching, compiling */ - int num_mem; /* used memory(...) num counted from 1 */ - int num_repeat; /* OP_REPEAT/OP_REPEAT_NG id-counter */ - int num_null_check; /* OP_NULL_CHECK_START/END id counter */ - int num_comb_exp_check; /* combination explosion check */ - int num_call; /* number of subexp call */ - unsigned int capture_history; /* (?@...) flag (1-31) */ - unsigned int bt_mem_start; /* need backtrack flag */ - unsigned int bt_mem_end; /* need backtrack flag */ - int stack_pop_level; - int repeat_range_alloc; - OnigRepeatRange* repeat_range; - - OnigEncoding enc; - OnigOptionType options; - OnigSyntaxType* syntax; - OnigCaseFoldType case_fold_flag; - void* name_table; - - /* optimization info (string search, char-map and anchors) */ - int optimize; /* optimize flag */ - int threshold_len; /* search str-length for apply optimize */ - int anchor; /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */ - OnigDistance anchor_dmin; /* (SEMI_)END_BUF anchor distance */ - OnigDistance anchor_dmax; /* (SEMI_)END_BUF anchor distance */ - int sub_anchor; /* start-anchor for exact or map */ - unsigned char *exact; - unsigned char *exact_end; - unsigned char map[ONIG_CHAR_TABLE_SIZE]; /* used as BM skip or char-map */ - int *int_map; /* BM skip for exact_len > 255 */ - int *int_map_backward; /* BM skip for backward search */ - OnigDistance dmin; /* min-distance of exact or map */ - OnigDistance dmax; /* max-distance of exact or map */ - - /* regex_t link chain */ - struct re_pattern_buffer* chain; /* escape compile-conflict */ -} OnigRegexType; - -typedef OnigRegexType* OnigRegex; - -#ifndef ONIG_ESCAPE_REGEX_T_COLLISION - typedef OnigRegexType regex_t; -#endif - - -typedef struct { - int num_of_elements; - OnigEncoding pattern_enc; - OnigEncoding target_enc; - OnigSyntaxType* syntax; - OnigOptionType option; - OnigCaseFoldType case_fold_flag; -} OnigCompileInfo; - -/* Oniguruma Native API */ -ONIG_EXTERN -int onig_init P_((void)); -ONIG_EXTERN -int onig_error_code_to_str PV_((OnigUChar* s, int err_code, ...)); -ONIG_EXTERN -void onig_set_warn_func P_((OnigWarnFunc f)); -ONIG_EXTERN -void onig_set_verb_warn_func P_((OnigWarnFunc f)); -ONIG_EXTERN -int onig_new P_((OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); -ONIG_EXTERN -int onig_new_deluxe P_((OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo)); -ONIG_EXTERN -void onig_free P_((OnigRegex)); -ONIG_EXTERN -int onig_recompile P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); -ONIG_EXTERN -int onig_recompile_deluxe P_((OnigRegex reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo)); -ONIG_EXTERN -int onig_search P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option)); -ONIG_EXTERN -int onig_match P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option)); -ONIG_EXTERN -OnigRegion* onig_region_new P_((void)); -ONIG_EXTERN -void onig_region_init P_((OnigRegion* region)); -ONIG_EXTERN -void onig_region_free P_((OnigRegion* region, int free_self)); -ONIG_EXTERN -void onig_region_copy P_((OnigRegion* to, OnigRegion* from)); -ONIG_EXTERN -void onig_region_clear P_((OnigRegion* region)); -ONIG_EXTERN -int onig_region_resize P_((OnigRegion* region, int n)); -ONIG_EXTERN -int onig_region_set P_((OnigRegion* region, int at, int beg, int end)); -ONIG_EXTERN -int onig_name_to_group_numbers P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums)); -ONIG_EXTERN -int onig_name_to_backref_number P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, OnigRegion *region)); -ONIG_EXTERN -int onig_foreach_name P_((OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg)); -ONIG_EXTERN -int onig_number_of_names P_((OnigRegex reg)); -ONIG_EXTERN -int onig_number_of_captures P_((OnigRegex reg)); -ONIG_EXTERN -int onig_number_of_capture_histories P_((OnigRegex reg)); -ONIG_EXTERN -OnigCaptureTreeNode* onig_get_capture_tree P_((OnigRegion* region)); -ONIG_EXTERN -int onig_capture_tree_traverse P_((OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg)); -ONIG_EXTERN -int onig_noname_group_capture_is_active P_((OnigRegex reg)); -ONIG_EXTERN -OnigEncoding onig_get_encoding P_((OnigRegex reg)); -ONIG_EXTERN -OnigOptionType onig_get_options P_((OnigRegex reg)); -ONIG_EXTERN -OnigCaseFoldType onig_get_case_fold_flag P_((OnigRegex reg)); -ONIG_EXTERN -OnigSyntaxType* onig_get_syntax P_((OnigRegex reg)); -ONIG_EXTERN -int onig_set_default_syntax P_((OnigSyntaxType* syntax)); -ONIG_EXTERN -void onig_copy_syntax P_((OnigSyntaxType* to, OnigSyntaxType* from)); -ONIG_EXTERN -unsigned int onig_get_syntax_op P_((OnigSyntaxType* syntax)); -ONIG_EXTERN -unsigned int onig_get_syntax_op2 P_((OnigSyntaxType* syntax)); -ONIG_EXTERN -unsigned int onig_get_syntax_behavior P_((OnigSyntaxType* syntax)); -ONIG_EXTERN -OnigOptionType onig_get_syntax_options P_((OnigSyntaxType* syntax)); -ONIG_EXTERN -void onig_set_syntax_op P_((OnigSyntaxType* syntax, unsigned int op)); -ONIG_EXTERN -void onig_set_syntax_op2 P_((OnigSyntaxType* syntax, unsigned int op2)); -ONIG_EXTERN -void onig_set_syntax_behavior P_((OnigSyntaxType* syntax, unsigned int behavior)); -ONIG_EXTERN -void onig_set_syntax_options P_((OnigSyntaxType* syntax, OnigOptionType options)); -ONIG_EXTERN -int onig_set_meta_char P_((OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code)); -ONIG_EXTERN -void onig_copy_encoding P_((OnigEncoding to, OnigEncoding from)); -ONIG_EXTERN -OnigCaseFoldType onig_get_default_case_fold_flag P_((void)); -ONIG_EXTERN -int onig_set_default_case_fold_flag P_((OnigCaseFoldType case_fold_flag)); -ONIG_EXTERN -unsigned int onig_get_match_stack_limit_size P_((void)); -ONIG_EXTERN -int onig_set_match_stack_limit_size P_((unsigned int size)); -ONIG_EXTERN -int onig_end P_((void)); -ONIG_EXTERN -const char* onig_version P_((void)); -ONIG_EXTERN -const char* onig_copyright P_((void)); - -#ifdef __cplusplus -} -#endif - -#endif /* ONIGURUMA_H */ diff --git a/pack.c b/pack.c index 767bead44..726048fae 100644 --- a/pack.c +++ b/pack.c @@ -10,7 +10,7 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" #include #include diff --git a/parse.y b/parse.y index 0990ba68c..14a081a06 100644 --- a/parse.y +++ b/parse.y @@ -16,10 +16,10 @@ #define YYERROR_VERBOSE 1 #define YYSTACK_USE_ALLOCA 0 -#include "ruby.h" -#include "intern.h" -#include "node.h" -#include "st.h" +#include "ruby/ruby.h" +#include "ruby/intern.h" +#include "ruby/node.h" +#include "ruby/st.h" #include #include #include @@ -4544,8 +4544,8 @@ ripper_dispatch_delayed_token(struct parser_params *parser, int t) } #endif /* RIPPER */ -#include "regex.h" -#include "util.h" +#include "ruby/regex.h" +#include "ruby/util.h" /* We remove any previous definition of `SIGN_EXTEND_CHAR', since ours (we hope) works properly with all combinations of diff --git a/prec.c b/prec.c index 80396dfde..981dcbc85 100644 --- a/prec.c +++ b/prec.c @@ -10,7 +10,7 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" VALUE rb_mPrecision; diff --git a/process.c b/process.c index c6caf5f7f..c0376f166 100644 --- a/process.c +++ b/process.c @@ -12,8 +12,8 @@ **********************************************************************/ -#include "ruby.h" -#include "rubysig.h" +#include "ruby/ruby.h" +#include "ruby/signal.h" #include "yarvcore.h" #include @@ -50,7 +50,7 @@ struct timeval rb_time_interval(VALUE); #ifdef HAVE_SYS_RESOURCE_H # include #endif -#include "st.h" +#include "ruby/st.h" #ifdef __EMX__ #undef HAVE_GETPGRP diff --git a/random.c b/random.c index 8dad78a27..d37995baf 100644 --- a/random.c +++ b/random.c @@ -176,7 +176,7 @@ genrand_real(void) /* These real versions are due to Isaku Wada, 2002/01/09 added */ -#include "ruby.h" +#include "ruby/ruby.h" #ifdef HAVE_UNISTD_H #include diff --git a/range.c b/range.c index e010778e0..ec866de8e 100644 --- a/range.c +++ b/range.c @@ -10,7 +10,7 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" VALUE rb_cRange; static ID id_cmp, id_succ, id_beg, id_end, id_excl; diff --git a/re.c b/re.c index 07d8fd5db..5398e2994 100644 --- a/re.c +++ b/re.c @@ -9,8 +9,8 @@ **********************************************************************/ -#include "ruby.h" -#include "re.h" +#include "ruby/ruby.h" +#include "ruby/re.h" #include "regint.h" #include diff --git a/re.h b/re.h deleted file mode 100644 index ab6635228..000000000 --- a/re.h +++ /dev/null @@ -1,43 +0,0 @@ -/********************************************************************** - - re.h - - - $Author$ - $Date$ - created at: Thu Sep 30 14:18:32 JST 1993 - - Copyright (C) 1993-2003 Yukihiro Matsumoto - -**********************************************************************/ - -#ifndef RE_H -#define RE_H - -#include -#include - -#include "regex.h" - -typedef struct re_pattern_buffer Regexp; - -struct RMatch { - struct RBasic basic; - VALUE str; - struct re_registers *regs; - VALUE regexp; /* RRegexp */ -}; - -#define RMATCH(obj) (R_CAST(RMatch)(obj)) - -VALUE rb_reg_regcomp(VALUE); -long rb_reg_search(VALUE, VALUE, long, long); -VALUE rb_reg_regsub(VALUE, VALUE, struct re_registers *, VALUE); -long rb_reg_adjust_startpos(VALUE, VALUE, long, long); -void rb_match_busy(VALUE); -VALUE rb_reg_quote(VALUE); - -RUBY_EXTERN int ruby_ignorecase; - -int rb_reg_mbclen2(unsigned int, VALUE); -#define mbclen2(c,re) rb_reg_mbclen2((c),(re)) -#endif diff --git a/regenc.h b/regenc.h index b1d6f2281..882971ceb 100644 --- a/regenc.h +++ b/regenc.h @@ -29,12 +29,12 @@ * SUCH DAMAGE. */ #ifndef REGINT_H -#include "config.h" +#include "ruby/config.h" #ifdef ONIG_ESCAPE_UCHAR_COLLISION #undef ONIG_ESCAPE_UCHAR_COLLISION #endif #endif -#include "oniguruma.h" +#include "ruby/oniguruma.h" typedef struct { OnigCodePoint from; diff --git a/regex.h b/regex.h deleted file mode 100644 index d2877937c..000000000 --- a/regex.h +++ /dev/null @@ -1,28 +0,0 @@ -/********************************************************************** - - regex.h - - - $Author$ - $Date$ - - Copyright (C) 1993-2005 Yukihiro Matsumoto - -**********************************************************************/ - -#ifndef REGEX_H -#define REGEX_H - -#include "oniguruma.h" - -#ifndef ONIG_RUBY_M17N - -ONIG_EXTERN OnigEncoding OnigEncDefaultCharEncoding; - -#undef ismbchar -#define ismbchar(c) (mbclen((c)) != 1) -#define mbclen(c) \ - ONIGENC_MBC_ENC_LEN(OnigEncDefaultCharEncoding, (UChar* )(&c)) - -#endif /* ifndef ONIG_RUBY_M17N */ - -#endif /* !REGEX_H */ diff --git a/regint.h b/regint.h index f76469f37..4a6fc4633 100644 --- a/regint.h +++ b/regint.h @@ -80,9 +80,9 @@ /* */ /* escape other system UChar definition */ -#ifndef DEFINES_H -#include "config.h" -#include "defines.h" +#ifndef RUBY_DEFINES_H +#include "ruby/config.h" +#include "ruby/defines.h" #endif #ifdef ONIG_ESCAPE_UCHAR_COLLISION #undef ONIG_ESCAPE_UCHAR_COLLISION diff --git a/regparse.c b/regparse.c index a255644b3..1d669212d 100644 --- a/regparse.c +++ b/regparse.c @@ -302,7 +302,7 @@ typedef struct { #ifdef USE_ST_HASH_TABLE -#include "st.h" +#include "ruby/st.h" typedef struct { unsigned char* s; diff --git a/ruby.c b/ruby.c index 61ba65baa..fb9c5595d 100644 --- a/ruby.c +++ b/ruby.c @@ -17,11 +17,11 @@ #endif #ifdef _WIN32_WCE #include -#include "wince.h" +#include "ruby/wince.h" #endif -#include "ruby.h" +#include "ruby/ruby.h" +#include "ruby/node.h" #include "dln.h" -#include "node.h" #include #include #include @@ -40,7 +40,7 @@ # define MAXPATHLEN 1024 #endif -#include "util.h" +#include "ruby/util.h" #ifndef HAVE_STDLIB_H char *getenv(); diff --git a/ruby.h b/ruby.h deleted file mode 100644 index c54d445e5..000000000 --- a/ruby.h +++ /dev/null @@ -1,826 +0,0 @@ -/********************************************************************** - - ruby.h - - - $Author$ - created at: Thu Jun 10 14:26:32 JST 1993 - - Copyright (C) 1993-2003 Yukihiro Matsumoto - Copyright (C) 2000 Network Applied Communication Laboratory, Inc. - Copyright (C) 2000 Information-technology Promotion Agency, Japan - -**********************************************************************/ - -#ifndef RUBY_H -#define RUBY_H - -#if defined(__cplusplus) -extern "C" { -#if 0 -} /* satisfy cc-mode */ -#endif -#endif - -#include "config.h" -#ifdef RUBY_EXTCONF_H -#include RUBY_EXTCONF_H -#endif - -#define NORETURN_STYLE_NEW 1 -#ifndef NORETURN -# define NORETURN(x) x -#endif -#ifndef DEPRECATED -# define DEPRECATED(x) x -#endif -#ifndef NOINLINE -# define NOINLINE(x) x -#endif - -#ifdef __GNUC__ -#define PRINTF_ARGS(decl, string_index, first_to_check) \ - decl __attribute__((format(printf, string_index, first_to_check))) -#else -#define PRINTF_ARGS(decl, string_index, first_to_check) decl -#endif - -#ifdef HAVE_STDLIB_H -# include -#endif - -#ifdef HAVE_STRING_H -# include -#else -# include -#endif - -#ifdef HAVE_INTRINSICS_H -# include -#endif - -#include -#include - -#include "defines.h" - -/* need to include to use these macros */ -#ifndef ISPRINT -#define ISASCII(c) isascii((int)(unsigned char)(c)) -#undef ISPRINT -#define ISPRINT(c) (ISASCII(c) && isprint((int)(unsigned char)(c))) -#define ISSPACE(c) (ISASCII(c) && isspace((int)(unsigned char)(c))) -#define ISUPPER(c) (ISASCII(c) && isupper((int)(unsigned char)(c))) -#define ISLOWER(c) (ISASCII(c) && islower((int)(unsigned char)(c))) -#define ISALNUM(c) (ISASCII(c) && isalnum((int)(unsigned char)(c))) -#define ISALPHA(c) (ISASCII(c) && isalpha((int)(unsigned char)(c))) -#define ISDIGIT(c) (ISASCII(c) && isdigit((int)(unsigned char)(c))) -#define ISXDIGIT(c) (ISASCII(c) && isxdigit((int)(unsigned char)(c))) -#endif - -#if defined(HAVE_ALLOCA_H) -#include -#else -# ifdef _AIX -#pragma alloca -# endif -#endif - -#if defined(__VMS) -# pragma builtins -# define alloca __alloca -#endif - -#if SIZEOF_LONG == SIZEOF_VOIDP -typedef unsigned long VALUE; -typedef unsigned long ID; -# define SIGNED_VALUE long -# define SIZEOF_VALUE SIZEOF_LONG -#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP -typedef unsigned LONG_LONG VALUE; -typedef unsigned LONG_LONG ID; -# define SIGNED_VALUE LONG_LONG -# define LONG_LONG_VALUE 1 -# define SIZEOF_VALUE SIZEOF_LONG_LONG -#else -# error ---->> ruby requires sizeof(void*) == sizeof(long) to be compiled. <<---- -#endif - - -#ifdef __STDC__ -# include -#else -# ifndef LONG_MAX -# ifdef HAVE_LIMITS_H -# include -# else - /* assuming 32bit(2's compliment) long */ -# define LONG_MAX 2147483647 -# endif -# endif -# ifndef LONG_MIN -# define LONG_MIN (-LONG_MAX-1) -# endif -# ifndef CHAR_BIT -# define CHAR_BIT 8 -# endif -#endif - -#ifdef HAVE_LONG_LONG -# ifndef LLONG_MAX -# ifdef LONG_LONG_MAX -# define LLONG_MAX LONG_LONG_MAX -# else -# ifdef _I64_MAX -# define LLONG_MAX _I64_MAX -# else - /* assuming 64bit(2's complement) long long */ -# define LLONG_MAX 9223372036854775807LL -# endif -# endif -# endif -# ifndef LLONG_MIN -# ifdef LONG_LONG_MIN -# define LLONG_MIN LONG_LONG_MIN -# else -# ifdef _I64_MIN -# define LLONG_MIN _I64_MIN -# else -# define LLONG_MIN (-LLONG_MAX-1) -# endif -# endif -# endif -#endif - -#ifdef LONG_LONG_VALUE -# define FIXNUM_MAX (LLONG_MAX>>1) -# define FIXNUM_MIN RSHIFT((LONG_LONG)LLONG_MIN,1) -#else -# define FIXNUM_MAX (LONG_MAX>>1) -# define FIXNUM_MIN RSHIFT((long)LONG_MIN,1) -#endif - -#define FIXNUM_FLAG 0x01 -#define INT2FIX(i) ((VALUE)(((SIGNED_VALUE)(i))<<1 | FIXNUM_FLAG)) -#define LONG2FIX(i) INT2FIX(i) -#define rb_fix_new(v) INT2FIX(v) -VALUE rb_int2inum(SIGNED_VALUE); -#define INT2NUM(v) rb_int2inum(v) -#define LONG2NUM(v) INT2NUM(v) -#define rb_int_new(v) rb_int2inum(v) -VALUE rb_uint2inum(VALUE); -#define UINT2NUM(v) rb_uint2inum(v) -#define ULONG2NUM(v) UINT2NUM(v) -#define rb_uint_new(v) rb_uint2inum(v) - -#ifdef HAVE_LONG_LONG -VALUE rb_ll2inum(LONG_LONG); -#define LL2NUM(v) rb_ll2inum(v) -VALUE rb_ull2inum(unsigned LONG_LONG); -#define ULL2NUM(v) rb_ull2inum(v) -#endif - -#if SIZEOF_OFF_T > SIZEOF_LONG && defined(HAVE_LONG_LONG) -# define OFFT2NUM(v) LL2NUM(v) -#elif SIZEOF_OFF_T == SIZEOF_LONG -# define OFFT2NUM(v) LONG2NUM(v) -#else -# define OFFT2NUM(v) INT2NUM(v) -#endif - -#ifndef PIDT2NUM -#define PIDT2NUM(v) LONG2NUM(v) -#endif -#ifndef NUM2PIDT -#define NUM2PIDT(v) NUM2LONG(v) -#endif -#ifndef UIDT2NUM -#define UIDT2NUM(v) LONG2NUM(v) -#endif -#ifndef NUM2UIDT -#define NUM2UIDT(v) NUM2LONG(v) -#endif -#ifndef GIDT2NUM -#define GIDT2NUM(v) LONG2NUM(v) -#endif -#ifndef NUM2GIDT -#define NUM2GIDT(v) NUM2LONG(v) -#endif - -#define FIX2LONG(x) RSHIFT((SIGNED_VALUE)x,1) -#define FIX2ULONG(x) (((VALUE)(x))>>1) -#define FIXNUM_P(f) (((SIGNED_VALUE)(f))&FIXNUM_FLAG) -#define POSFIXABLE(f) ((f) <= FIXNUM_MAX) -#define NEGFIXABLE(f) ((f) >= FIXNUM_MIN) -#define FIXABLE(f) (POSFIXABLE(f) && NEGFIXABLE(f)) - -#define IMMEDIATE_MASK 0x03 -#define IMMEDIATE_P(x) ((VALUE)(x) & IMMEDIATE_MASK) - -#define SYMBOL_FLAG 0x0e -#define SYMBOL_P(x) (((VALUE)(x)&0xff)==SYMBOL_FLAG) -#define ID2SYM(x) ((VALUE)(((long)(x))<<8|SYMBOL_FLAG)) -#define SYM2ID(x) RSHIFT((unsigned long)x,8) - -/* special contants - i.e. non-zero and non-fixnum constants */ -#define Qfalse ((VALUE)0) -#define Qtrue ((VALUE)2) -#define Qnil ((VALUE)4) -#define Qundef ((VALUE)6) /* undefined value for placeholder */ - -#define RTEST(v) (((VALUE)(v) & ~Qnil) != 0) -#define NIL_P(v) ((VALUE)(v) == Qnil) - -#define CLASS_OF(v) rb_class_of((VALUE)(v)) - -#define T_NONE 0x00 - -#define T_NIL 0x01 -#define T_OBJECT 0x02 -#define T_CLASS 0x03 -#define T_ICLASS 0x04 -#define T_MODULE 0x05 -#define T_FLOAT 0x06 -#define T_STRING 0x07 -#define T_REGEXP 0x08 -#define T_ARRAY 0x09 -#define T_FIXNUM 0x0a -#define T_HASH 0x0b -#define T_STRUCT 0x0c -#define T_BIGNUM 0x0d -#define T_FILE 0x0e - -#define T_TRUE 0x10 -#define T_FALSE 0x11 -#define T_DATA 0x12 -#define T_MATCH 0x13 -#define T_SYMBOL 0x14 - -#define T_VALUES 0x1a -#define T_BLOCK 0x1b -#define T_UNDEF 0x1c -#define T_NODE 0x1f - -#define T_MASK 0x1f - -#define BUILTIN_TYPE(x) (((struct RBasic*)(x))->flags & T_MASK) - -#define TYPE(x) rb_type((VALUE)(x)) - -void rb_check_type(VALUE,int); -#define Check_Type(v,t) rb_check_type((VALUE)(v),t) - -VALUE rb_str_to_str(VALUE); -VALUE rb_string_value(volatile VALUE*); -char *rb_string_value_ptr(volatile VALUE*); -char *rb_string_value_cstr(volatile VALUE*); - -#define StringValue(v) rb_string_value(&(v)) -#define StringValuePtr(v) rb_string_value_ptr(&(v)) -#define StringValueCStr(v) rb_string_value_cstr(&(v)) - -void rb_check_safe_obj(VALUE); -void rb_check_safe_str(VALUE); -#define SafeStringValue(v) do {\ - StringValue(v);\ - rb_check_safe_obj(v);\ -} while (0) -/* obsolete macro - use SafeStringValue(v) */ -#define Check_SafeStr(v) rb_check_safe_str((VALUE)(v)) - -VALUE rb_get_path(VALUE); -#define FilePathValue(v) ((v) = rb_get_path(v)) - -void rb_secure(int); -int rb_safe_level(void); -void rb_set_safe_level(int); -void rb_set_safe_level_force(int); -void rb_secure_update(VALUE); - -VALUE rb_errinfo(void); -void rb_set_errinfo(VALUE); - -SIGNED_VALUE rb_num2long(VALUE); -VALUE rb_num2ulong(VALUE); -#define NUM2LONG(x) (FIXNUM_P(x)?FIX2LONG(x):rb_num2long((VALUE)x)) -#define NUM2ULONG(x) rb_num2ulong((VALUE)x) -#if SIZEOF_INT < SIZEOF_LONG -long rb_num2int(VALUE); -#define NUM2INT(x) (FIXNUM_P(x)?FIX2INT(x):rb_num2int((VALUE)x)) -long rb_fix2int(VALUE); -#define FIX2INT(x) rb_fix2int((VALUE)x) -unsigned long rb_num2uint(VALUE); -#define NUM2UINT(x) rb_num2uint(x) -unsigned long rb_fix2uint(VALUE); -#define FIX2UINT(x) rb_fix2uint(x) -#else -#define NUM2INT(x) ((int)NUM2LONG(x)) -#define NUM2UINT(x) ((unsigned int)NUM2ULONG(x)) -#define FIX2INT(x) ((int)FIX2LONG(x)) -#define FIX2UINT(x) ((unsigned int)FIX2ULONG(x)) -#endif - -#ifdef HAVE_LONG_LONG -LONG_LONG rb_num2ll(VALUE); -unsigned LONG_LONG rb_num2ull(VALUE); -# define NUM2LL(x) (FIXNUM_P(x)?FIX2LONG(x):rb_num2ll((VALUE)x)) -# define NUM2ULL(x) rb_num2ull((VALUE)x) -#endif - -#if defined(HAVE_LONG_LONG) && SIZEOF_OFF_T > SIZEOF_LONG -# define NUM2OFFT(x) ((off_t)NUM2LL(x)) -#else -# define NUM2OFFT(x) NUM2LONG(x) -#endif - -double rb_num2dbl(VALUE); -#define NUM2DBL(x) rb_num2dbl((VALUE)(x)) - -/* obsolete API - use StringValue() */ -char *rb_str2cstr(VALUE,long*); -/* obsolete API - use StringValuePtr() */ -#define STR2CSTR(x) rb_str2cstr((VALUE)(x),0) - -#define NUM2CHR(x) (((TYPE(x) == T_STRING)&&(RSTRING_LEN(x)>=1))?\ - RSTRING_PTR(x)[0]:(char)(NUM2INT(x)&0xff)) -#define CHR2FIX(x) INT2FIX((long)((x)&0xff)) - -VALUE rb_newobj(void); -#define NEWOBJ(obj,type) type *obj = (type*)rb_newobj() -#define OBJSETUP(obj,c,t) do {\ - RBASIC(obj)->flags = (t);\ - RBASIC(obj)->klass = (c);\ - if (rb_safe_level() >= 3) FL_SET(obj, FL_TAINT);\ -} while (0) -#define CLONESETUP(clone,obj) do {\ - OBJSETUP(clone,rb_singleton_class_clone((VALUE)obj),RBASIC(obj)->flags);\ - rb_singleton_class_attached(RBASIC(clone)->klass, (VALUE)clone);\ - if (FL_TEST(obj, FL_EXIVAR)) rb_copy_generic_ivar((VALUE)clone,(VALUE)obj);\ -} while (0) -#define DUPSETUP(dup,obj) do {\ - OBJSETUP(dup,rb_obj_class(obj),(RBASIC(obj)->flags)&(T_MASK|FL_EXIVAR|FL_TAINT));\ - if (FL_TEST(obj, FL_EXIVAR)) rb_copy_generic_ivar((VALUE)dup,(VALUE)obj);\ -} while (0) - -struct RBasic { - VALUE flags; - VALUE klass; -}; - -struct RObject { - struct RBasic basic; - struct st_table *iv_tbl; -}; - -struct RValues { - struct RBasic basic; - VALUE v1; - VALUE v2; - VALUE v3; -}; - -struct RClass { - struct RBasic basic; - struct st_table *iv_tbl; - struct st_table *m_tbl; - VALUE super; -}; - -struct RFloat { - struct RBasic basic; - double value; -}; - -#define ELTS_SHARED FL_USER2 - -#define RSTRING_EMBED_LEN_MAX ((sizeof(VALUE)*3)/sizeof(char)-1) -struct RString { - struct RBasic basic; - union { - struct { - long len; - char *ptr; - union { - long capa; - VALUE shared; - } aux; - } heap; - char ary[RSTRING_EMBED_LEN_MAX]; - } as; -}; -#define RSTRING_NOEMBED FL_USER1 -#define RSTRING_EMBED_LEN_MASK (FL_USER2|FL_USER3|FL_USER4|FL_USER5|FL_USER6) -#define RSTRING_EMBED_LEN_SHIFT (FL_USHIFT+2) -#define RSTRING_LEN(str) \ - (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \ - (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & \ - (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : \ - RSTRING(str)->as.heap.len) -#define RSTRING_PTR(str) \ - (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \ - RSTRING(str)->as.ary : \ - RSTRING(str)->as.heap.ptr) - -struct RArray { - struct RBasic basic; - long len; - union { - long capa; - VALUE shared; - } aux; - VALUE *ptr; -}; -#define RARRAY_LEN(a) RARRAY(a)->len -#define RARRAY_PTR(a) RARRAY(a)->ptr - -struct RRegexp { - struct RBasic basic; - struct re_pattern_buffer *ptr; - long len; - char *str; -}; - -struct RHash { - struct RBasic basic; - struct st_table *tbl; - int iter_lev; - VALUE ifnone; -}; - -struct RFile { - struct RBasic basic; - struct rb_io_t *fptr; -}; - -struct RData { - struct RBasic basic; - void (*dmark)(void*); - void (*dfree)(void*); - void *data; -}; - -#define DATA_PTR(dta) (RDATA(dta)->data) - -/* -#define RUBY_DATA_FUNC(func) ((void (*)(void*))func) -*/ -typedef void (*RUBY_DATA_FUNC)(void*); - -VALUE rb_data_object_alloc(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC); - -#define Data_Wrap_Struct(klass,mark,free,sval)\ - rb_data_object_alloc(klass,sval,(RUBY_DATA_FUNC)mark,(RUBY_DATA_FUNC)free) - -#define Data_Make_Struct(klass,type,mark,free,sval) (\ - sval = ALLOC(type),\ - memset(sval, 0, sizeof(type)),\ - Data_Wrap_Struct(klass,mark,free,sval)\ -) - -#define Data_Get_Struct(obj,type,sval) do {\ - Check_Type(obj, T_DATA); \ - sval = (type*)DATA_PTR(obj);\ -} while (0) - -#define RSTRUCT_EMBED_LEN_MAX 3 -struct RStruct { - struct RBasic basic; - union { - struct { - long len; - VALUE *ptr; - } heap; - VALUE ary[RSTRUCT_EMBED_LEN_MAX]; - } as; -}; -#define RSTRUCT_EMBED_LEN_MASK (FL_USER2|FL_USER1) -#define RSTRUCT_EMBED_LEN_SHIFT (FL_USHIFT+1) -#define RSTRUCT_LEN(st) \ - ((RBASIC(st)->flags & RSTRUCT_EMBED_LEN_MASK) ? \ - (long)((RBASIC(st)->flags >> RSTRUCT_EMBED_LEN_SHIFT) & \ - (RSTRUCT_EMBED_LEN_MASK >> RSTRUCT_EMBED_LEN_SHIFT)) : \ - RSTRUCT(st)->as.heap.len) -#define RSTRUCT_PTR(st) \ - ((RBASIC(st)->flags & RSTRUCT_EMBED_LEN_MASK) ? \ - RSTRUCT(st)->as.ary : \ - RSTRUCT(st)->as.heap.ptr) - -struct RBignum { - struct RBasic basic; - char sign; - long len; - void *digits; -}; - -#define R_CAST(st) (struct st*) -#define RBASIC(obj) (R_CAST(RBasic)(obj)) -#define ROBJECT(obj) (R_CAST(RObject)(obj)) -#define RCLASS(obj) (R_CAST(RClass)(obj)) -#define RMODULE(obj) RCLASS(obj) -#define RFLOAT(obj) (R_CAST(RFloat)(obj)) -#define RSTRING(obj) (R_CAST(RString)(obj)) -#define RREGEXP(obj) (R_CAST(RRegexp)(obj)) -#define RARRAY(obj) (R_CAST(RArray)(obj)) -#define RHASH(obj) (R_CAST(RHash)(obj)) -#define RDATA(obj) (R_CAST(RData)(obj)) -#define RSTRUCT(obj) (R_CAST(RStruct)(obj)) -#define RBIGNUM(obj) (R_CAST(RBignum)(obj)) -#define RFILE(obj) (R_CAST(RFile)(obj)) -#define RVALUES(obj) (R_CAST(RValues)(obj)) - -#define FL_SINGLETON FL_USER0 -#define FL_MARK (1<<5) -#define FL_RESERVED (1<<6) /* will be used in the future GC */ -#define FL_FINALIZE (1<<7) -#define FL_TAINT (1<<8) -#define FL_EXIVAR (1<<9) -#define FL_FREEZE (1<<10) - -#define FL_USHIFT 11 - -#define FL_USER0 (1<<(FL_USHIFT+0)) -#define FL_USER1 (1<<(FL_USHIFT+1)) -#define FL_USER2 (1<<(FL_USHIFT+2)) -#define FL_USER3 (1<<(FL_USHIFT+3)) -#define FL_USER4 (1<<(FL_USHIFT+4)) -#define FL_USER5 (1<<(FL_USHIFT+5)) -#define FL_USER6 (1<<(FL_USHIFT+6)) -#define FL_USER7 (1<<(FL_USHIFT+7)) - -#define SPECIAL_CONST_P(x) (IMMEDIATE_P(x) || !RTEST(x)) - -#define FL_ABLE(x) (!SPECIAL_CONST_P(x) && BUILTIN_TYPE(x) != T_NODE) -#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) -#define FL_REVERSE(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags ^= (f);} while (0) - -#define OBJ_TAINTED(x) FL_TEST((x), FL_TAINT) -#define OBJ_TAINT(x) FL_SET((x), FL_TAINT) -#define OBJ_INFECT(x,s) do {if (FL_ABLE(x) && FL_ABLE(s)) RBASIC(x)->flags |= RBASIC(s)->flags & FL_TAINT;} while (0) - -#define OBJ_FROZEN(x) FL_TEST((x), FL_FREEZE) -#define OBJ_FREEZE(x) FL_SET((x), FL_FREEZE) - -#define ALLOC_N(type,n) (type*)xmalloc2((n),sizeof(type)) -#define ALLOC(type) (type*)xmalloc(sizeof(type)) -#define REALLOC_N(var,type,n) (var)=(type*)xrealloc2((char*)(var),(n),sizeof(type)) - -#define ALLOCA_N(type,n) (type*)alloca(sizeof(type)*(n)) - -#define MEMZERO(p,type,n) memset((p), 0, sizeof(type)*(n)) -#define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(n)) -#define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), sizeof(type)*(n)) -#define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), sizeof(type)*(n)) - -void rb_obj_infect(VALUE,VALUE); - -typedef int ruby_glob_func(const char*,VALUE); -void rb_glob(const char*,void(*)(const char*,VALUE),VALUE); -int ruby_glob(const char*,int,ruby_glob_func*,VALUE); -int ruby_brace_expand(const char*,int,ruby_glob_func*,VALUE); -int ruby_brace_glob(const char*,int,ruby_glob_func*,VALUE); - -VALUE rb_define_class(const char*,VALUE); -VALUE rb_define_module(const char*); -VALUE rb_define_class_under(VALUE, const char*, VALUE); -VALUE rb_define_module_under(VALUE, const char*); - -void rb_include_module(VALUE,VALUE); -void rb_extend_object(VALUE,VALUE); - -void rb_define_variable(const char*,VALUE*); -void rb_define_virtual_variable(const char*,VALUE(*)(ANYARGS),void(*)(ANYARGS)); -void rb_define_hooked_variable(const char*,VALUE*,VALUE(*)(ANYARGS),void(*)(ANYARGS)); -void rb_define_readonly_variable(const char*,VALUE*); -void rb_define_const(VALUE,const char*,VALUE); -void rb_define_global_const(const char*,VALUE); - -#define RUBY_METHOD_FUNC(func) ((VALUE (*)(ANYARGS))func) -void rb_define_method(VALUE,const char*,VALUE(*)(ANYARGS),int); -void rb_define_module_function(VALUE,const char*,VALUE(*)(ANYARGS),int); -void rb_define_global_function(const char*,VALUE(*)(ANYARGS),int); - -void rb_undef_method(VALUE,const char*); -void rb_define_alias(VALUE,const char*,const char*); -void rb_define_attr(VALUE,const char*,int,int); - -void rb_global_variable(VALUE*); -void rb_register_mark_object(VALUE); -void rb_gc_register_address(VALUE*); -void rb_gc_unregister_address(VALUE*); - -ID rb_intern(const char*); -ID rb_intern2(const char*, long); -const char *rb_id2name(ID); -ID rb_to_id(VALUE); -VALUE rb_id2str(ID); - -char *rb_class2name(VALUE); -char *rb_obj_classname(VALUE); - -void rb_p(VALUE); - -VALUE rb_eval_string(const char*); -VALUE rb_eval_string_protect(const char*, int*); -VALUE rb_eval_string_wrap(const char*, int*); -VALUE rb_funcall(VALUE, ID, int, ...); -VALUE rb_funcall2(VALUE, ID, int, const VALUE*); -VALUE rb_funcall3(VALUE, ID, int, const VALUE*); -int rb_scan_args(int, const VALUE*, const char*, ...); -VALUE rb_call_super(int, const VALUE*); - -VALUE rb_gv_set(const char*, VALUE); -VALUE rb_gv_get(const char*); -VALUE rb_iv_get(VALUE, const char*); -VALUE rb_iv_set(VALUE, const char*, VALUE); - -VALUE rb_equal(VALUE,VALUE); - -RUBY_EXTERN VALUE ruby_verbose, ruby_debug; - -PRINTF_ARGS(NORETURN(void rb_raise(VALUE, const char*, ...)), 2, 3); -PRINTF_ARGS(NORETURN(void rb_fatal(const char*, ...)), 1, 2); -PRINTF_ARGS(NORETURN(void rb_bug(const char*, ...)), 1, 2); -NORETURN(void rb_sys_fail(const char*)); -NORETURN(void rb_iter_break(void)); -NORETURN(void rb_exit(int)); -NORETURN(void rb_notimplement(void)); - -/* reports if `-w' specified */ -PRINTF_ARGS(void rb_warning(const char*, ...), 1, 2); -PRINTF_ARGS(void rb_compile_warning(const char*, ...), 1, 2); -PRINTF_ARGS(void rb_sys_warning(const char*, ...), 1, 2); -/* reports always */ -PRINTF_ARGS(void rb_warn(const char*, ...), 1, 2); -PRINTF_ARGS(void rb_compile_warn(const char*, ...), 1, 2); - -VALUE rb_each(VALUE); -VALUE rb_yield(VALUE); -VALUE rb_yield_values(int n, ...); -VALUE rb_yield_splat(VALUE); -int rb_block_given_p(void); -void rb_need_block(void); -VALUE rb_iterate(VALUE(*)(VALUE),VALUE,VALUE(*)(ANYARGS),VALUE); -VALUE rb_block_call(VALUE,ID,int,VALUE*,VALUE(*)(ANYARGS),VALUE); -VALUE rb_rescue(VALUE(*)(ANYARGS),VALUE,VALUE(*)(ANYARGS),VALUE); -VALUE rb_rescue2(VALUE(*)(ANYARGS),VALUE,VALUE(*)(ANYARGS),VALUE,...); -VALUE rb_ensure(VALUE(*)(ANYARGS),VALUE,VALUE(*)(ANYARGS),VALUE); -VALUE rb_catch(const char*,VALUE(*)(ANYARGS),VALUE); -NORETURN(void rb_throw(const char*,VALUE)); - -VALUE rb_require(const char*); - -#ifdef __ia64 -void ruby_init_stack(VALUE*, void*); -#define RUBY_INIT_STACK \ - VALUE variable_in_this_stack_frame; \ - ruby_init_stack(&variable_in_this_stack_frame, rb_ia64_bsp()); -#else -void ruby_init_stack(VALUE*); -#define RUBY_INIT_STACK \ - VALUE variable_in_this_stack_frame; \ - ruby_init_stack(&variable_in_this_stack_frame); -#endif -void ruby_init(void); -void ruby_options(int, char**); -NORETURN(void ruby_run(void)); - -RUBY_EXTERN VALUE rb_mKernel; -RUBY_EXTERN VALUE rb_mComparable; -RUBY_EXTERN VALUE rb_mEnumerable; -RUBY_EXTERN VALUE rb_mPrecision; -RUBY_EXTERN VALUE rb_mErrno; -RUBY_EXTERN VALUE rb_mFileTest; -RUBY_EXTERN VALUE rb_mGC; -RUBY_EXTERN VALUE rb_mMath; -RUBY_EXTERN VALUE rb_mProcess; - -RUBY_EXTERN VALUE rb_cBasicObject; -RUBY_EXTERN VALUE rb_cObject; -RUBY_EXTERN VALUE rb_cArray; -RUBY_EXTERN VALUE rb_cBignum; -RUBY_EXTERN VALUE rb_cBinding; -RUBY_EXTERN VALUE rb_cClass; -RUBY_EXTERN VALUE rb_cCont; -RUBY_EXTERN VALUE rb_cDir; -RUBY_EXTERN VALUE rb_cData; -RUBY_EXTERN VALUE rb_cFalseClass; -RUBY_EXTERN VALUE rb_cFile; -RUBY_EXTERN VALUE rb_cFixnum; -RUBY_EXTERN VALUE rb_cFloat; -RUBY_EXTERN VALUE rb_cHash; -RUBY_EXTERN VALUE rb_cInteger; -RUBY_EXTERN VALUE rb_cIO; -RUBY_EXTERN VALUE rb_cMatch; -RUBY_EXTERN VALUE rb_cMethod; -RUBY_EXTERN VALUE rb_cModule; -RUBY_EXTERN VALUE rb_cNameErrorMesg; -RUBY_EXTERN VALUE rb_cNilClass; -RUBY_EXTERN VALUE rb_cNumeric; -RUBY_EXTERN VALUE rb_cProc; -RUBY_EXTERN VALUE rb_cRange; -RUBY_EXTERN VALUE rb_cRegexp; -RUBY_EXTERN VALUE rb_cStat; -RUBY_EXTERN VALUE rb_cString; -RUBY_EXTERN VALUE rb_cStruct; -RUBY_EXTERN VALUE rb_cSymbol; -RUBY_EXTERN VALUE rb_cThread; -RUBY_EXTERN VALUE rb_cTime; -RUBY_EXTERN VALUE rb_cTrueClass; -RUBY_EXTERN VALUE rb_cUnboundMethod; -RUBY_EXTERN VALUE rb_cISeq; -RUBY_EXTERN VALUE rb_cVM; -RUBY_EXTERN VALUE rb_cEnv; - -RUBY_EXTERN VALUE rb_eException; -RUBY_EXTERN VALUE rb_eStandardError; -RUBY_EXTERN VALUE rb_eSystemExit; -RUBY_EXTERN VALUE rb_eInterrupt; -RUBY_EXTERN VALUE rb_eSignal; -RUBY_EXTERN VALUE rb_eFatal; -RUBY_EXTERN VALUE rb_eArgError; -RUBY_EXTERN VALUE rb_eEOFError; -RUBY_EXTERN VALUE rb_eIndexError; -RUBY_EXTERN VALUE rb_eKeyError; -RUBY_EXTERN VALUE rb_eRangeError; -RUBY_EXTERN VALUE rb_eIOError; -RUBY_EXTERN VALUE rb_eRuntimeError; -RUBY_EXTERN VALUE rb_eSecurityError; -RUBY_EXTERN VALUE rb_eSystemCallError; -RUBY_EXTERN VALUE rb_eThreadError; -RUBY_EXTERN VALUE rb_eTypeError; -RUBY_EXTERN VALUE rb_eZeroDivError; -RUBY_EXTERN VALUE rb_eNotImpError; -RUBY_EXTERN VALUE rb_eNoMemError; -RUBY_EXTERN VALUE rb_eNoMethodError; -RUBY_EXTERN VALUE rb_eFloatDomainError; -RUBY_EXTERN VALUE rb_eLocalJumpError; -RUBY_EXTERN VALUE rb_eSysStackError; -RUBY_EXTERN VALUE rb_eRegexpError; - -RUBY_EXTERN VALUE rb_eScriptError; -RUBY_EXTERN VALUE rb_eNameError; -RUBY_EXTERN VALUE rb_eSyntaxError; -RUBY_EXTERN VALUE rb_eLoadError; - -RUBY_EXTERN VALUE rb_stdin, rb_stdout, rb_stderr; - -static inline VALUE -rb_class_of(VALUE obj) -{ - if (IMMEDIATE_P(obj)) { - if (FIXNUM_P(obj)) return rb_cFixnum; - if (obj == Qtrue) return rb_cTrueClass; - if (SYMBOL_P(obj)) return rb_cSymbol; - } - else if (!RTEST(obj)) { - if (obj == Qnil) return rb_cNilClass; - if (obj == Qfalse) return rb_cFalseClass; - } - return RBASIC(obj)->klass; -} - -static inline int -rb_type(VALUE obj) -{ - if (IMMEDIATE_P(obj)) { - if (FIXNUM_P(obj)) return T_FIXNUM; - if (obj == Qtrue) return T_TRUE; - if (SYMBOL_P(obj)) return T_SYMBOL; - if (obj == Qundef) return T_UNDEF; - } - else if (!RTEST(obj)) { - if (obj == Qnil) return T_NIL; - if (obj == Qfalse) return T_FALSE; - } - return BUILTIN_TYPE(obj); -} - -static inline int -rb_special_const_p(VALUE obj) -{ - if (SPECIAL_CONST_P(obj)) return Qtrue; - return Qfalse; -} - -#include "missing.h" -#include "intern.h" - -#if defined(EXTLIB) && defined(USE_DLN_A_OUT) -/* hook for external modules */ -static char *dln_libs_to_be_linked[] = { EXTLIB, 0 }; -#endif - -#define RUBY_VM 1 /* YARV */ -#define HAVE_NATIVETHREAD - -#if defined(__cplusplus) -#if 0 -{ /* satisfy cc-mode */ -#endif -} /* extern "C" { */ -#endif - -#endif /* ifndef RUBY_H */ diff --git a/rubyio.h b/rubyio.h deleted file mode 100644 index 14d203918..000000000 --- a/rubyio.h +++ /dev/null @@ -1,111 +0,0 @@ -/********************************************************************** - - rubyio.h - - - $Author$ - $Date$ - created at: Fri Nov 12 16:47:09 JST 1993 - - Copyright (C) 1993-2003 Yukihiro Matsumoto - -**********************************************************************/ - -#ifndef RUBYIO_H -#define RUBYIO_H - -#include -#include - -#if defined(HAVE_STDIO_EXT_H) -#include -#endif - -typedef struct rb_io_t { - int fd; /* file descriptor */ - FILE *stdio_file; /* stdio ptr for read/write if available */ - int mode; /* mode flags */ - rb_pid_t pid; /* child's pid (for pipes) */ - int lineno; /* number of lines read */ - char *path; /* pathname for file */ - void (*finalize)(struct rb_io_t*,int); /* finalize proc */ - long refcnt; - char *wbuf; /* wbuf_off + wbuf_len <= wbuf_capa */ - int wbuf_off; - int wbuf_len; - int wbuf_capa; - char *rbuf; /* rbuf_off + rbuf_len <= rbuf_capa */ - int rbuf_off; - int rbuf_len; - int rbuf_capa; -} rb_io_t; - -#define HAVE_RB_IO_T 1 - -#define FMODE_READABLE 1 -#define FMODE_WRITABLE 2 -#define FMODE_READWRITE 3 -#define FMODE_APPEND 64 -#define FMODE_CREATE 128 -#define FMODE_BINMODE 4 -#define FMODE_SYNC 8 -#define FMODE_TTY 16 -#define FMODE_DUPLEX 32 -#define FMODE_WSPLIT 0x200 -#define FMODE_WSPLIT_INITIALIZED 0x400 - -#define GetOpenFile(obj,fp) rb_io_check_closed((fp) = RFILE(rb_io_taint_check(obj))->fptr) - -#define MakeOpenFile(obj, fp) do {\ - if (RFILE(obj)->fptr) {\ - rb_io_close(obj);\ - free(RFILE(obj)->fptr);\ - RFILE(obj)->fptr = 0;\ - }\ - fp = 0;\ - fp = RFILE(obj)->fptr = ALLOC(rb_io_t);\ - fp->fd = -1;\ - fp->stdio_file = NULL;\ - fp->mode = 0;\ - fp->pid = 0;\ - fp->lineno = 0;\ - fp->path = NULL;\ - fp->finalize = 0;\ - fp->refcnt = 1;\ - fp->wbuf = NULL;\ - fp->wbuf_off = 0;\ - fp->wbuf_len = 0;\ - fp->wbuf_capa = 0;\ - fp->rbuf = NULL;\ - fp->rbuf_off = 0;\ - fp->rbuf_len = 0;\ - fp->rbuf_capa = 0;\ -} while (0) - -FILE *rb_io_stdio_file(rb_io_t *fptr); - -FILE *rb_fopen(const char*, const char*); -FILE *rb_fdopen(int, const char*); -int rb_io_mode_flags(const char*); -int rb_io_modenum_flags(int); -void rb_io_check_writable(rb_io_t*); -void rb_io_check_readable(rb_io_t*); -int rb_io_fptr_finalize(rb_io_t*); -void rb_io_synchronized(rb_io_t*); -void rb_io_check_initialized(rb_io_t*); -void rb_io_check_closed(rb_io_t*); -int rb_io_wait_readable(int); -int rb_io_wait_writable(int); -void rb_io_set_nonblock(rb_io_t *fptr); - -VALUE rb_io_taint_check(VALUE); -NORETURN(void rb_eof_error(void)); - -void rb_io_read_check(rb_io_t*); -int rb_io_read_pending(rb_io_t*); -void rb_read_check(FILE*); - -DEPRECATED(int rb_getc(FILE*)); -DEPRECATED(long rb_io_fread(char *, long, FILE *)); -DEPRECATED(long rb_io_fwrite(const char *, long, FILE *)); -DEPRECATED(int rb_read_pending(FILE*)); -#endif diff --git a/rubysig.h b/rubysig.h deleted file mode 100644 index 2df03e415..000000000 --- a/rubysig.h +++ /dev/null @@ -1,78 +0,0 @@ -/********************************************************************** - - rubysig.h - - - $Author$ - $Date$ - created at: Wed Aug 16 01:15:38 JST 1995 - - Copyright (C) 1993-2003 Yukihiro Matsumoto - -**********************************************************************/ - -#ifndef RUBYSIG_H -#define RUBYSIG_H -#include - -#ifdef _WIN32 -typedef LONG rb_atomic_t; - -# define ATOMIC_TEST(var) InterlockedExchange(&(var), 0) -# define ATOMIC_SET(var, val) InterlockedExchange(&(var), (val)) -# define ATOMIC_INC(var) InterlockedIncrement(&(var)) -# define ATOMIC_DEC(var) InterlockedDecrement(&(var)) - -/* Windows doesn't allow interrupt while system calls */ -# define TRAP_BEG do {\ - rb_atomic_t trap_immediate = ATOMIC_SET(rb_trap_immediate, 1) - -# define TRAP_END\ - ATOMIC_SET(rb_trap_immediate, trap_immediate);\ -} while (0) - -# define RUBY_CRITICAL(statements) do {\ - rb_atomic_t trap_immediate = ATOMIC_SET(rb_trap_immediate, 0);\ - statements;\ - ATOMIC_SET(rb_trap_immediate, trap_immediate);\ -} while (0) -#else -typedef int rb_atomic_t; - -# define ATOMIC_TEST(var) ((var) ? ((var) = 0, 1) : 0) -# define ATOMIC_SET(var, val) ((var) = (val)) -# define ATOMIC_INC(var) (++(var)) -# define ATOMIC_DEC(var) (--(var)) - -# define TRAP_BEG do {\ - int trap_immediate = rb_trap_immediate;\ - rb_trap_immediate = 1 - -# define TRAP_END \ - rb_trap_immediate = trap_immediate;\ -} while (0) - -# define RUBY_CRITICAL(statements) do {\ - int trap_immediate = rb_trap_immediate;\ - rb_trap_immediate = 0;\ - statements;\ - rb_trap_immediate = trap_immediate;\ -} while (0) -#endif -RUBY_EXTERN rb_atomic_t rb_trap_immediate; - -RUBY_EXTERN int rb_prohibit_interrupt; -#define DEFER_INTS (rb_prohibit_interrupt++) -#define ALLOW_INTS do {\ - rb_prohibit_interrupt--;\ -} while (0) -#define ENABLE_INTS (rb_prohibit_interrupt--) - -VALUE rb_with_disable_interrupt(VALUE(*)(ANYARGS),VALUE); - -RUBY_EXTERN rb_atomic_t rb_trap_pending; -void rb_trap_restore_mask(void); - -RUBY_EXTERN int rb_thread_critical; -void rb_thread_schedule(void); - -#endif /* ifndef RUBYSIG_H */ diff --git a/signal.c b/signal.c index ca96d2289..e785b6fb9 100644 --- a/signal.c +++ b/signal.c @@ -12,9 +12,9 @@ **********************************************************************/ -#include "ruby.h" -#include "rubysig.h" -#include "node.h" +#include "ruby/ruby.h" +#include "ruby/signal.h" +#include "ruby/node.h" #include "yarvcore.h" #include #include diff --git a/sprintf.c b/sprintf.c index 41661f113..5aeb03875 100644 --- a/sprintf.c +++ b/sprintf.c @@ -12,8 +12,8 @@ **********************************************************************/ -#include "ruby.h" -#include "re.h" +#include "ruby/ruby.h" +#include "ruby/re.h" #include #include #include diff --git a/st.c b/st.c index 451d0c0d1..880989aa3 100644 --- a/st.c +++ b/st.c @@ -2,19 +2,20 @@ /* static char sccsid[] = "@(#) st.c 5.1 89/12/14 Crucible"; */ -#include "config.h" #include #ifdef HAVE_STDLIB_H #include #endif #include -#include "defines.h" #ifdef NOT_RUBY #include "regint.h" -#endif - #include "st.h" +#else +#include "ruby/config.h" +#include "ruby/defines.h" +#include "ruby/st.h" +#endif typedef struct st_table_entry st_table_entry; diff --git a/st.h b/st.h deleted file mode 100644 index 45609ddeb..000000000 --- a/st.h +++ /dev/null @@ -1,66 +0,0 @@ -/* This is a public domain general purpose hash table package written by Peter Moore @ UCB. */ - -/* @(#) st.h 5.1 89/12/14 */ - -#ifndef ST_INCLUDED - -#define ST_INCLUDED - -#if SIZEOF_LONG == SIZEOF_VOIDP -typedef unsigned long st_data_t; -#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP -typedef unsigned LONG_LONG st_data_t; -#else -# error ---->> st.c requires sizeof(void*) == sizeof(long) to be compiled. <<--- -- -#endif -#define ST_DATA_T_DEFINED - -typedef struct st_table st_table; - -struct st_hash_type { - int (*compare)(); - int (*hash)(); -}; - -struct st_table { - struct st_hash_type *type; - int num_bins; - int num_entries; - struct st_table_entry **bins; -}; - -#define st_is_member(table,key) st_lookup(table,key,(st_data_t *)0) - -enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK}; - -#ifndef _ -# define _(args) args -#endif -#ifndef ANYARGS -# ifdef __cplusplus -# define ANYARGS ... -# else -# define ANYARGS -# endif -#endif - -st_table *st_init_table(struct st_hash_type *); -st_table *st_init_table_with_size(struct st_hash_type *, int); -st_table *st_init_numtable(void); -st_table *st_init_numtable_with_size(int); -st_table *st_init_strtable(void); -st_table *st_init_strtable_with_size(int); -int st_delete(st_table *, st_data_t *, st_data_t *); -int st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t); -int st_insert(st_table *, st_data_t, st_data_t); -int st_lookup(st_table *, st_data_t, st_data_t *); -int st_foreach(st_table *, int (*)(ANYARGS), st_data_t); -void st_add_direct(st_table *, st_data_t, st_data_t); -void st_free_table(st_table *); -void st_cleanup_safe(st_table *, st_data_t); -st_table *st_copy(st_table *); -int st_numcmp(long, long); -int st_numhash(long); - -#endif /* ST_INCLUDED */ diff --git a/string.c b/string.c index 77f334abf..f5717b923 100644 --- a/string.c +++ b/string.c @@ -12,8 +12,8 @@ **********************************************************************/ -#include "ruby.h" -#include "re.h" +#include "ruby/ruby.h" +#include "ruby/re.h" #define BEG(no) regs->beg[no] #define END(no) regs->end[no] diff --git a/struct.c b/struct.c index 188910be4..dba402636 100644 --- a/struct.c +++ b/struct.c @@ -10,7 +10,7 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" VALUE rb_cStruct; diff --git a/time.c b/time.c index 5a806ecab..21d8bbd45 100644 --- a/time.c +++ b/time.c @@ -10,7 +10,7 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" #include #include diff --git a/unicode.c b/unicode.c index c81f73006..a85b3212a 100644 --- a/unicode.c +++ b/unicode.c @@ -10787,7 +10787,7 @@ onigenc_utf16_32_get_ctype_code_range(int ctype, OnigCodePoint* sb_out, return onigenc_unicode_ctype_code_range(ctype, ranges); } -#include "st.h" +#include "ruby/st.h" #define PROPERTY_NAME_MAX_SIZE 20 diff --git a/util.c b/util.c index e9e53ed4b..b30959851 100644 --- a/util.c +++ b/util.c @@ -10,7 +10,7 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" #include #include @@ -22,7 +22,7 @@ #include "missing/file.h" #endif -#include "util.h" +#include "ruby/util.h" unsigned long ruby_scan_oct(const char *start, int len, int *retlen) diff --git a/util.h b/util.h deleted file mode 100644 index b95a98eca..000000000 --- a/util.h +++ /dev/null @@ -1,67 +0,0 @@ -/********************************************************************** - - util.h - - - $Author$ - $Date$ - created at: Thu Mar 9 11:55:53 JST 1995 - - Copyright (C) 1993-2003 Yukihiro Matsumoto - -**********************************************************************/ - -#ifndef UTIL_H -#define UTIL_H - -#ifndef _ -#ifdef __cplusplus -# ifndef HAVE_PROTOTYPES -# define HAVE_PROTOTYPES 1 -# endif -# ifndef HAVE_STDARG_PROTOTYPES -# define HAVE_STDARG_PROTOTYPES 1 -# endif -#endif -#ifdef HAVE_PROTOTYPES -# define _(args) args -#else -# define _(args) () -#endif -#ifdef HAVE_STDARG_PROTOTYPES -# define __(args) args -#else -# define __(args) () -#endif -#endif - -#define scan_oct ruby_scan_oct -unsigned long ruby_scan_oct(const char *, int, int *); -#define scan_hex ruby_scan_hex -unsigned long ruby_scan_hex(const char *, int, int *); - -#if defined(MSDOS) || defined(__CYGWIN32__) || defined(_WIN32) -void ruby_add_suffix(VALUE str, const char *suffix); -#endif - -void ruby_qsort(void *, const int, const int, - int (*)(const void *, const void *, void *), void *); - -void ruby_setenv(const char *, const char *); -void ruby_unsetenv(const char *); -#undef setenv -#undef unsetenv -#define setenv(name,val) ruby_setenv(name,val) -#define unsetenv(name,val) ruby_unsetenv(name); - -char *ruby_strdup(const char *); -#undef strdup -#define strdup(s) ruby_strdup(s) - -char *ruby_getcwd(void); -#define my_getcwd() ruby_getcwd() - -double ruby_strtod(const char *, char **); -#undef strtod -#define strtod(s,e) ruby_strtod(s,e) - -#endif /* UTIL_H */ diff --git a/variable.c b/variable.c index af29934ae..09593834a 100644 --- a/variable.c +++ b/variable.c @@ -12,10 +12,10 @@ **********************************************************************/ -#include "ruby.h" -#include "node.h" -#include "st.h" -#include "util.h" +#include "ruby/ruby.h" +#include "ruby/node.h" +#include "ruby/st.h" +#include "ruby/util.h" void rb_vm_change_state(void); st_table *rb_global_tbl; diff --git a/version.c b/version.c index 794f62159..8db37ecd3 100644 --- a/version.c +++ b/version.c @@ -10,7 +10,7 @@ **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" #include "version.h" #include diff --git a/version.h b/version.h index c27ab92bc..f8d4d7664 100644 --- a/version.h +++ b/version.h @@ -1,7 +1,7 @@ #define RUBY_VERSION "1.9.0" -#define RUBY_RELEASE_DATE "2007-06-08" +#define RUBY_RELEASE_DATE "2007-06-10" #define RUBY_VERSION_CODE 190 -#define RUBY_RELEASE_CODE 20070608 +#define RUBY_RELEASE_CODE 20070610 #define RUBY_PATCHLEVEL 0 #define RUBY_VERSION_MAJOR 1 @@ -9,7 +9,7 @@ #define RUBY_VERSION_TEENY 0 #define RUBY_RELEASE_YEAR 2007 #define RUBY_RELEASE_MONTH 6 -#define RUBY_RELEASE_DAY 8 +#define RUBY_RELEASE_DAY 10 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[]; diff --git a/vm.c b/vm.c index 603d4d074..94d3034db 100644 --- a/vm.c +++ b/vm.c @@ -9,9 +9,9 @@ **********************************************************************/ -#include "ruby.h" -#include "node.h" -#include "st.h" +#include "ruby/ruby.h" +#include "ruby/node.h" +#include "ruby/st.h" #include "gc.h" #include "yarvcore.h" diff --git a/vm_dump.c b/vm_dump.c index f5baefbd7..815a03e38 100644 --- a/vm_dump.c +++ b/vm_dump.c @@ -10,8 +10,8 @@ **********************************************************************/ -#include -#include +#include "ruby/ruby.h" +#include "ruby/node.h" #include "yarvcore.h" #include "vm.h" diff --git a/win32/Makefile.sub b/win32/Makefile.sub index b27866adb..88bf4f895 100644 --- a/win32/Makefile.sub +++ b/win32/Makefile.sub @@ -34,7 +34,6 @@ iconinc=-I$(icondirs: = -I) !endif ############### -VPATH = $(srcdir);$(srcdir)/missing;$(srcdir)/win32 .SUFFIXES: .y .def .lib !if !defined(CC) @@ -92,6 +91,8 @@ OS = mswin32 !error RT not defined. Retry from configure pass. !endif +arch = $(ARCH)-$(OS) + !ifndef RUBY_SO_NAME RUBY_SO_NAME = $(RT)-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR) !endif @@ -150,7 +151,7 @@ ARFLAGS = -machine:$(MACHINE) -out: CC = $(CC) -nologo LD = $(CC) LDSHARED = $(LD) -LD -XCFLAGS = -DRUBY_EXPORT -I. -I$(srcdir) -I$(srcdir)/missing +XCFLAGS = -DRUBY_EXPORT -I$(arch_hdrdir) -I$(hdrdir) -I$(srcdir) -I$(srcdir)/missing !if $(MSC_VER) >= 1400 # Prevents VC++ 2005 (cl ver 14) warnings CPPFLAGS = $(CPPFLAGS) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE @@ -199,6 +200,10 @@ INSTALLED_LIST= .installed.list WINMAINOBJ = winmain.$(OBJEXT) MINIOBJS = dmydln.$(OBJEXT) +arch_hdrdir = $(EXTOUT)/include/$(arch) +hdrdir = $(srcdir)/include +VPATH = $(arch_hdrdir)/ruby;$(hdrdir)/ruby;$(srcdir);$(srcdir)/missing;$(srcdir)/win32 + all: $(srcdir)/win32/Makefile.sub $(srcdir)/common.mk ruby: $(PROGRAM) @@ -210,6 +215,7 @@ $(MKFILES): $(srcdir)/win32/Makefile.sub $(srcdir)/win32/configure.bat $(srcdir) $(COMSPEC) /C $(srcdir:/=\)\win32\configure.bat $(configure_args) @echo $(MKFILES) should be updated, re-run $(MAKE). +RUBY_CONFIG_H = $(arch_hdrdir)/ruby/config.h CONFIG_H = ./.config.h.time config: config.status @@ -218,9 +224,15 @@ config.status: $(CONFIG_H) $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub @echo Creating config.h - @$(COMSPEC) /C $(srcdir:/=\)\win32\ifchange.bat config.h << +!if !exist("$(arch_hdrdir)") + @md $(arch_hdrdir:/=\) +!endif +!if !exist("$(arch_hdrdir)/ruby") + @md $(arch_hdrdir:/=\)\ruby +!endif + @$(COMSPEC) /C $(srcdir:/=\)\win32\ifchange.bat $(RUBY_CONFIG_H:/=\) << #if _MSC_VER != $(MSC_VER) -#error MSC version unmatch +#error MSC version unmatch: _MSC_VER: $(MSC_VER) is expected. #endif #define STDC_HEADERS 1 #define HAVE_SYS_TYPES_H 1 @@ -329,25 +341,24 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub #define RUBY_LIB "/lib/ruby/$(MAJOR).$(MINOR)" #define RUBY_SITE_LIB "/lib/ruby/site_ruby" #define RUBY_SITE_LIB2 "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)" -#define RUBY_PLATFORM "$(ARCH)-$(OS)" +#define RUBY_PLATFORM "$(arch)" #define RUBY_ARCHLIB "/lib/ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(OS)" #define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(RT)" << @exit > $(@:/=\) -#!if exist(config.h) +#!if exist($(RUBY_CONFIG_H)) #! if exist(config_h.bak) -# @del config_h.bak +# @del $(RUBY_CONFIG_H:.h=_h).bak #! endif -# @ren config.h config_h.bak +# @copy $(RUBY_CONFIG_H) $(RUBY_CONFIG_H:.h=_h).bak #!endif -# @ren config_h~ config.h -#!if exist(config.h) +#!if exist($(RUBY_CONFIG_H)) # @echo NMAKE will abort if config.h is changed, then restart NMAKE. -# @fc.exe config.h config_h.bak > nul -# @echo config.h unchanged. -# @del config.h -# @ren config_h.bak config.h +# @fc.exe $(RUBY_CONFIG_H) $(RUBY_CONFIG_H:.h=_h).bak > nul +# @echo $(RUBY_CONFIG_H) unchanged. +# @del $(RUBY_CONFIG_H) +# @ren $(RUBY_CONFIG_H:.h=_h).bak $(RUBY_CONFIG_H) #!endif config.status: $(MKFILES) $(srcdir)/win32/Makefile.sub $(srcdir)/common.mk @@ -456,7 +467,7 @@ s,@LINK_SO@,@$$(RM) $$(@:/=\).manifest,;t t s,@COMPILE_C@,$$(CC) $$(INCFLAGS) $$(CFLAGS) $$(CPPFLAGS) -c -Tc$$(<:\=/),;t t s,@COMPILE_CXX@,$$(CXX) $$(INCFLAGS) $$(CXXFLAGS) $$(CPPFLAGS) -c -Tp$$(<:\=/),;t t s,@COMPILE_RULES@,{$$(hdrdir)}.%s{}.%s: {$$(topdir)}.%s{}.%s: {$$(srcdir)}.%s{}.%s: .%s.%s:,;t t -s,@RULE_SUBST@,{.;$$(srcdir);$$(topdir);$$(hdrdir)}%s,;t t +s,@RULE_SUBST@,{.;$$(VPATH)}%s,;t t s,@TRY_LINK@,$$(CC) -Feconftest $$(INCFLAGS) -I$$(hdrdir) $$(CPPFLAGS) $$(CFLAGS) $$(src) $$(LOCAL_LIBS) $$(LIBS) -link $$(LDFLAGS) $$(LIBPATH) $$(XLDFLAGS),;t t s,@COMMON_LIBS@,m,;t t s,@COMMON_MACROS@,WIN32_LEAN_AND_MEAN,;t t @@ -557,7 +568,7 @@ lex.c: {$(srcdir)}lex.c.blt sed -e "s!^ *extern char \*getenv();!/* & */!;s/^\(#.*\)y\.tab/\1parse/" y.tab.c > $@ @del y.tab.c -$(OBJS): {$(srcdir)}win32/win32.h +$(OBJS): {$(hdrdir)/ruby}win32.h dir.$(OBJEXT) win32.$(OBJEXT): {$(srcdir)}win32/dir.h diff --git a/win32/mkexports.rb b/win32/mkexports.rb index 2fe867eb1..7ef12cdff 100755 --- a/win32/mkexports.rb +++ b/win32/mkexports.rb @@ -40,7 +40,7 @@ class Exports syms[internal] = export winapis[$1] = internal if /^_?(rb_w32_\w+)(?:@\d+)?$/ =~ internal end - win32h = File.join(File.dirname(__FILE__), "win32.h") + win32h = File.join(File.dirname(File.dirname(__FILE__)), "include/ruby/win32.h") IO.foreach(win32h) do |line| if /^#define (\w+)\((.*?)\)\s+(?:\(void\))?(rb_w32_\w+)\((.*?)\)\s*$/ =~ line and $2.delete(" ") == $4.delete(" ") @@ -80,7 +80,7 @@ end class Exports::Mswin < Exports def each_export(objs) - noprefix = ($arch and /^sh/ !~ $arch) + noprefix = ($arch ||= nil and /^sh/ !~ $arch) objs = objs.collect {|s| s.tr('/', '\\')} filetype = nil IO.popen(%w"dumpbin -symbols -exports" + objs) do |f| diff --git a/win32/win32.c b/win32/win32.c index fef6e49d3..9824f1019 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -10,8 +10,8 @@ * */ -#include "ruby.h" -#include "rubysig.h" +#include "ruby/ruby.h" +#include "ruby/signal.h" #include "dln.h" #include #include @@ -30,7 +30,7 @@ #ifdef __MINGW32__ #include #endif -#include "win32.h" +#include "ruby/win32.h" #include "win32/dir.h" #ifdef _WIN32_WCE #include "wince.h" diff --git a/win32/win32.h b/win32/win32.h deleted file mode 100644 index 281dbc299..000000000 --- a/win32/win32.h +++ /dev/null @@ -1,530 +0,0 @@ -#ifndef RUBY_WIN32_H -#define RUBY_WIN32_H - -/* - * Copyright (c) 1993, Intergraph Corporation - * - * You may distribute under the terms of either the GNU General Public - * License or the Artistic License, as specified in the perl README file. - * - */ - -// -// Definitions for NT port of Perl -// - - -// -// Ok now we can include the normal include files. -// - -// #include conflict with varargs.h? -#if !defined(WSAAPI) -#include -#endif - -#define NT 1 /* deprecated */ - -#ifdef _WIN32_WCE -#undef CharNext -#define CharNext CharNextA -#endif - -// -// We're not using Microsoft's "extensions" to C for -// Structured Exception Handling (SEH) so we can nuke these -// -#undef try -#undef except -#undef finally -#undef leave - -#if defined(__cplusplus) -extern "C++" { -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef HAVE_SYS_UTIME_H -# include -#else -# include -#endif -#include -#include - -#if defined(__cplusplus) -} -#endif - -#ifdef _M_IX86 -# define WIN95 1 -#else -# undef WIN95 -#endif - -#ifdef WIN95 -extern DWORD rb_w32_osid(void); -#define rb_w32_iswinnt() (rb_w32_osid() == VER_PLATFORM_WIN32_NT) -#define rb_w32_iswin95() (rb_w32_osid() == VER_PLATFORM_WIN32_WINDOWS) -#else -#define rb_w32_iswinnt() TRUE -#define rb_w32_iswin95() FALSE -#endif - -#define WNOHANG -1 - -#undef getc -#undef putc -#undef fgetc -#undef fputc -#undef getchar -#undef putchar -#undef fgetchar -#undef fputchar -#undef utime -#undef lseek -#undef fstat -#define getc(_stream) rb_w32_getc(_stream) -#define getchar() rb_w32_getc(stdin) -#define putc(_c, _stream) rb_w32_putc(_c, _stream) -#define putchar(_c) rb_w32_putc(_c, stdout) -#ifdef RUBY_EXPORT -#define fgetc(_stream) getc(_stream) -#define fputc(_c, _stream) putc(_c, _stream) -#define fgetchar() getchar() -#define fputchar(_c) putchar(_c) -#define utime(_p, _t) rb_w32_utime(_p, _t) -#define lseek(_f, _o, _w) _lseeki64(_f, _o, _w) - -#define pipe(p) _pipe(p, 2048L, O_BINARY) -#define close(h) rb_w32_close(h) -#define fclose(f) rb_w32_fclose(f) -#define read(f, b, s) rb_w32_read(f, b, s) -#define write(f, b, s) rb_w32_write(f, b, s) -#define getpid() rb_w32_getpid() -#define sleep(x) rb_w32_Sleep((x)*1000) -#define Sleep(msec) (void)rb_w32_Sleep(msec) -#define fstat(fd,st) _fstati64(fd,st) -#ifdef __BORLANDC__ -#define creat(p, m) _creat(p, m) -#define eof() _eof() -#define filelength(h) _filelength(h) -#define mktemp(t) _mktemp(t) -#define tell(h) _tell(h) -#define _open _sopen -#define sopen _sopen -#define _fstati64(fd,st) rb_w32_fstati64(fd,st) -#undef fopen -#define fopen(p, m) rb_w32_fopen(p, m) -#undef fdopen -#define fdopen(h, m) rb_w32_fdopen(h, m) -#undef fsopen -#define fsopen(p, m, sh) rb_w32_fsopen(p, m, sh) -#endif - -#undef execv -#define execv(path,argv) rb_w32_aspawn(P_OVERLAY,path,argv) -#if !defined(__BORLANDC__) && !defined(_WIN32_WCE) -#undef isatty -#define isatty(h) rb_w32_isatty(h) -#endif - -#undef mkdir -#define mkdir(p, m) rb_w32_mkdir(p, m) -#undef rmdir -#define rmdir(p) rb_w32_rmdir(p) -#undef unlink -#define unlink(p) rb_w32_unlink(p) -#endif - -#if SIZEOF_OFF_T == 8 -#define off_t __int64 -#define stat stati64 -#if defined(__BORLANDC__) -#define stati64(path, st) rb_w32_stati64(path, st) -#elif !defined(_MSC_VER) || _MSC_VER < 1400 -#define stati64 _stati64 -#define _stati64(path, st) rb_w32_stati64(path, st) -#else -#define stati64 _stat64 -#define _stat64(path, st) rb_w32_stati64(path, st) -#endif -#else -#define stat(path,st) rb_w32_stat(path,st) -#define fstat(fd,st) rb_w32_fstat(fd,st) -extern int rb_w32_stat(const char *, struct stat *); -extern int rb_w32_fstat(int, struct stat *); -#endif - -#define strcasecmp(s1, s2) stricmp(s1, s2) -#define strncasecmp(s1, s2, n) strnicmp(s1, s2, n) -#define fsync(h) _commit(h) - -#ifdef __MINGW32__ -struct timezone { - int tz_minuteswest; - int tz_dsttime; -}; -#undef isascii -#define isascii __isascii -#endif -extern void NtInitialize(int *, char ***); -extern int rb_w32_cmdvector(const char *, char ***); -extern rb_pid_t rb_w32_pipe_exec(const char *, const char *, int, int *); -extern int flock(int fd, int oper); -extern int rb_w32_is_socket(int); -extern int WSAAPI rb_w32_accept(int, struct sockaddr *, int *); -extern int WSAAPI rb_w32_bind(int, const struct sockaddr *, int); -extern int WSAAPI rb_w32_connect(int, const struct sockaddr *, int); -extern void rb_w32_fdset(int, fd_set*); -extern void rb_w32_fdclr(int, fd_set*); -extern int rb_w32_fdisset(int, fd_set*); -extern int WSAAPI rb_w32_select(int, fd_set *, fd_set *, fd_set *, struct timeval *); -extern int WSAAPI rb_w32_getpeername(int, struct sockaddr *, int *); -extern int WSAAPI rb_w32_getsockname(int, struct sockaddr *, int *); -extern int WSAAPI rb_w32_getsockopt(int, int, int, char *, int *); -extern int WSAAPI rb_w32_ioctlsocket(int, long, u_long *); -extern int WSAAPI rb_w32_listen(int, int); -extern int WSAAPI rb_w32_recv(int, char *, int, int); -extern int WSAAPI rb_w32_recvfrom(int, char *, int, int, struct sockaddr *, int *); -extern int WSAAPI rb_w32_send(int, const char *, int, int); -extern int WSAAPI rb_w32_sendto(int, const char *, int, int, const struct sockaddr *, int); -extern int WSAAPI rb_w32_setsockopt(int, int, int, const char *, int); -extern int WSAAPI rb_w32_shutdown(int, int); -extern int WSAAPI rb_w32_socket(int, int, int); -extern SOCKET rb_w32_get_osfhandle(int); -extern struct hostent *WSAAPI rb_w32_gethostbyaddr(const char *, int, int); -extern struct hostent *WSAAPI rb_w32_gethostbyname(const char *); -extern int WSAAPI rb_w32_gethostname(char *, int); -extern struct protoent *WSAAPI rb_w32_getprotobyname(const char *); -extern struct protoent *WSAAPI rb_w32_getprotobynumber(int); -extern struct servent *WSAAPI rb_w32_getservbyname(const char *, const char *); -extern struct servent *WSAAPI rb_w32_getservbyport(int, const char *); -extern int rb_w32_socketpair(int, int, int, int *); -extern char * rb_w32_getenv(const char *); -extern int rb_w32_rename(const char *, const char *); -extern char **rb_w32_get_environ(void); -extern void rb_w32_free_environ(char **); - -#define vsnprintf(s,n,f,l) rb_w32_vsnprintf(s,n,f,l) -#define snprintf rb_w32_snprintf -extern int rb_w32_vsnprintf(char *, size_t, const char *, va_list); -extern int rb_w32_snprintf(char *, size_t, const char *, ...); - -extern int chown(const char *, int, int); -extern int link(const char *, const char *); -extern int gettimeofday(struct timeval *, struct timezone *); -extern rb_pid_t waitpid (rb_pid_t, int *, int); -extern int rb_w32_argv_size(char *const *); -extern char *rb_w32_join_argv(char *, char *const *); -extern rb_pid_t rb_w32_spawn(int, const char *, const char*); -extern rb_pid_t rb_w32_aspawn(int, const char *, char *const *); -extern int kill(int, int); -extern int fcntl(int, int, ...); -extern rb_pid_t rb_w32_getpid(void); -#if !defined(__BORLANDC__) && !defined(_WIN32_WCE) -extern int rb_w32_isatty(int); -#endif -extern int rb_w32_mkdir(const char *, int); -extern int rb_w32_rmdir(const char *); -extern int rb_w32_unlink(const char *); -extern int rb_w32_stati64(const char *, struct stati64 *); - -#ifdef __BORLANDC__ -extern int rb_w32_fstati64(int, struct stati64 *); -extern off_t _lseeki64(int, off_t, int); -extern FILE *rb_w32_fopen(const char *, const char *); -extern FILE *rb_w32_fdopen(int, const char *); -extern FILE *rb_w32_fsopen(const char *, const char *, int); -#endif - -#include -#if !defined __MINGW32__ || defined __NO_ISOCEXT -#ifndef isnan -#define isnan(x) _isnan(x) -#endif -#ifndef finite -#define finite(x) _finite(x) -#endif -#ifndef copysign -#define copysign(a, b) _copysign(a, b) -#endif -#ifndef scalb -#define scalb(a, b) _scalb(a, b) -#endif -#endif - -#if !defined S_IFIFO && defined _S_IFIFO -#define S_IFIFO _S_IFIFO -#endif - -#if 0 && defined __BORLANDC__ -#undef S_ISDIR -#undef S_ISFIFO -#undef S_ISBLK -#undef S_ISCHR -#undef S_ISREG -#define S_ISDIR(m) (((unsigned short)(m) & S_IFMT) == S_IFDIR) -#define S_ISFIFO(m) (((unsigned short)(m) & S_IFMT) == S_IFIFO) -#define S_ISBLK(m) (((unsigned short)(m) & S_IFMT) == S_IFBLK) -#define S_ISCHR(m) (((unsigned short)(m) & S_IFMT) == S_IFCHR) -#define S_ISREG(m) (((unsigned short)(m) & S_IFMT) == S_IFREG) -#endif - -#if !defined S_IRUSR && !defined __MINGW32__ -#define S_IRUSR 0400 -#endif -#ifndef S_IRGRP -#define S_IRGRP 0040 -#endif -#ifndef S_IROTH -#define S_IROTH 0004 -#endif - -#if !defined S_IWUSR && !defined __MINGW32__ -#define S_IWUSR 0200 -#endif -#ifndef S_IWGRP -#define S_IWGRP 0020 -#endif -#ifndef S_IWOTH -#define S_IWOTH 0002 -#endif - -#if !defined S_IXUSR && !defined __MINGW32__ -#define S_IXUSR 0100 -#endif -#ifndef S_IXGRP -#define S_IXGRP 0010 -#endif -#ifndef S_IXOTH -#define S_IXOTH 0001 -#endif - -// -// define this so we can do inplace editing -// - -#define SUFFIX -extern int truncate(const char *path, off_t length); -extern int ftruncate(int fd, off_t length); -extern int fseeko(FILE *stream, off_t offset, int whence); -extern off_t ftello(FILE *stream); - -// -// stubs -// -extern int ioctl (int, int, ...); -extern rb_uid_t getuid (void); -extern rb_uid_t geteuid (void); -extern rb_gid_t getgid (void); -extern rb_gid_t getegid (void); -extern int setuid (rb_uid_t); -extern int setgid (rb_gid_t); - -extern char *rb_w32_strerror(int); - -#ifdef RUBY_EXPORT -#define strerror(e) rb_w32_strerror(e) -#endif - -#define PIPE_BUF 1024 - -#define LOCK_SH 1 -#define LOCK_EX 2 -#define LOCK_NB 4 -#define LOCK_UN 8 - - -#ifndef SIGINT -#define SIGINT 2 -#endif -#ifndef SIGKILL -#define SIGKILL 9 -#endif - - -/* #undef va_start */ -/* #undef va_end */ - -/* winsock error map */ -#define EWOULDBLOCK WSAEWOULDBLOCK -#define EINPROGRESS WSAEINPROGRESS -#define EALREADY WSAEALREADY -#define ENOTSOCK WSAENOTSOCK -#define EDESTADDRREQ WSAEDESTADDRREQ -#define EMSGSIZE WSAEMSGSIZE -#define EPROTOTYPE WSAEPROTOTYPE -#define ENOPROTOOPT WSAENOPROTOOPT -#define EPROTONOSUPPORT WSAEPROTONOSUPPORT -#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT -#define EOPNOTSUPP WSAEOPNOTSUPP -#define EPFNOSUPPORT WSAEPFNOSUPPORT -#define EAFNOSUPPORT WSAEAFNOSUPPORT -#define EADDRINUSE WSAEADDRINUSE -#define EADDRNOTAVAIL WSAEADDRNOTAVAIL -#define ENETDOWN WSAENETDOWN -#define ENETUNREACH WSAENETUNREACH -#define ENETRESET WSAENETRESET -#define ECONNABORTED WSAECONNABORTED -#define ECONNRESET WSAECONNRESET -#define ENOBUFS WSAENOBUFS -#define EISCONN WSAEISCONN -#define ENOTCONN WSAENOTCONN -#define ESHUTDOWN WSAESHUTDOWN -#define ETOOMANYREFS WSAETOOMANYREFS -#define ETIMEDOUT WSAETIMEDOUT -#define ECONNREFUSED WSAECONNREFUSED -#define ELOOP WSAELOOP -/*#define ENAMETOOLONG WSAENAMETOOLONG*/ -#define EHOSTDOWN WSAEHOSTDOWN -#define EHOSTUNREACH WSAEHOSTUNREACH -/*#define ENOTEMPTY WSAENOTEMPTY*/ -#define EPROCLIM WSAEPROCLIM -#define EUSERS WSAEUSERS -#define EDQUOT WSAEDQUOT -#define ESTALE WSAESTALE -#define EREMOTE WSAEREMOTE - -#define F_SETFL 1 -#define O_NONBLOCK 1 - -#undef FD_SET -#define FD_SET(f, s) rb_w32_fdset(f, s) - -#undef FD_CLR -#define FD_CLR(f, s) rb_w32_fdclr(f, s) - -#undef FD_ISSET -#define FD_ISSET(f, s) rb_w32_fdisset(f, s) - -#ifdef RUBY_EXPORT -#undef accept -#define accept(s, a, l) rb_w32_accept(s, a, l) - -#undef bind -#define bind(s, a, l) rb_w32_bind(s, a, l) - -#undef connect -#define connect(s, a, l) rb_w32_connect(s, a, l) - -#undef select -#define select(n, r, w, e, t) rb_w32_select(n, r, w, e, t) - -#undef getpeername -#define getpeername(s, a, l) rb_w32_getpeername(s, a, l) - -#undef getsockname -#define getsockname(s, a, l) rb_w32_getsockname(s, a, l) - -#undef getsockopt -#define getsockopt(s, v, n, o, l) rb_w32_getsockopt(s, v, n, o, l) - -#undef ioctlsocket -#define ioctlsocket(s, c, a) rb_w32_ioctlsocket(s, c, a) - -#undef listen -#define listen(s, b) rb_w32_listen(s, b) - -#undef recv -#define recv(s, b, l, f) rb_w32_recv(s, b, l, f) - -#undef recvfrom -#define recvfrom(s, b, l, f, fr, frl) rb_w32_recvfrom(s, b, l, f, fr, frl) - -#undef send -#define send(s, b, l, f) rb_w32_send(s, b, l, f) - -#undef sendto -#define sendto(s, b, l, f, t, tl) rb_w32_sendto(s, b, l, f, t, tl) - -#undef setsockopt -#define setsockopt(s, v, n, o, l) rb_w32_setsockopt(s, v, n, o, l) - -#undef shutdown -#define shutdown(s, h) rb_w32_shutdown(s, h) - -#undef socket -#define socket(s, t, p) rb_w32_socket(s, t, p) - -#undef gethostbyaddr -#define gethostbyaddr(a, l, t) rb_w32_gethostbyaddr(a, l, t) - -#undef gethostbyname -#define gethostbyname(n) rb_w32_gethostbyname(n) - -#undef gethostname -#define gethostname(n, l) rb_w32_gethostname(n, l) - -#undef getprotobyname -#define getprotobyname(n) rb_w32_getprotobyname(n) - -#undef getprotobynumber -#define getprotobynumber(n) rb_w32_getprotobynumber(n) - -#undef getservbyname -#define getservbyname(n, p) rb_w32_getservbyname(n, p) - -#undef getservbyport -#define getservbyport(p, pr) rb_w32_getservbyport(p, pr) - -#undef socketpair -#define socketpair(a, t, p, s) rb_w32_socketpair(a, t, p, s) - -#undef get_osfhandle -#define get_osfhandle(h) rb_w32_get_osfhandle(h) - -#undef getcwd -#define getcwd(b, s) rb_w32_getcwd(b, s) - -#undef getenv -#define getenv(n) rb_w32_getenv(n) - -#undef rename -#define rename(o, n) rb_w32_rename(o, n) - -#undef times -#define times(t) rb_w32_times(t) -#endif - -struct tms { - long tms_utime; - long tms_stime; - long tms_cutime; - long tms_cstime; -}; - -int rb_w32_times(struct tms *); - -/* thread stuff */ -HANDLE GetCurrentThreadHandle(void); -int rb_w32_sleep(unsigned long msec); -int rb_w32_putc(int, FILE*); -int rb_w32_getc(FILE*); -int rb_w32_close(int); -int rb_w32_fclose(FILE*); -size_t rb_w32_read(int, void *, size_t); -size_t rb_w32_write(int, const void *, size_t); -int rb_w32_utime(const char *, const struct utimbuf *); -int WINAPI rb_w32_Sleep(unsigned long msec); - -/* -== ***CAUTION*** -Since this function is very dangerous, ((*NEVER*)) -* lock any HANDLEs(i.e. Mutex, Semaphore, CriticalSection and so on) or, -* use anything like TRAP_BEG...TRAP_END block structure, -in asynchronous_func_t. -*/ -typedef DWORD (*asynchronous_func_t)(DWORD self, int argc, DWORD* argv); -DWORD rb_w32_asynchronize(asynchronous_func_t func, DWORD self, int argc, DWORD* argv, DWORD intrval); - -#endif diff --git a/yarvcore.c b/yarvcore.c index 6c4f83294..f9525e104 100644 --- a/yarvcore.c +++ b/yarvcore.c @@ -10,8 +10,8 @@ **********************************************************************/ -#include "ruby.h" -#include "node.h" +#include "ruby/ruby.h" +#include "ruby/node.h" #include "yarvcore.h" #include "gc.h" diff --git a/yarvcore.h b/yarvcore.h index bb4cfcf08..1c7007ad4 100644 --- a/yarvcore.h +++ b/yarvcore.h @@ -17,10 +17,10 @@ #include -#include "ruby.h" -#include "rubysig.h" -#include "st.h" -#include "node.h" +#include "ruby/ruby.h" +#include "ruby/signal.h" +#include "ruby/st.h" +#include "ruby/node.h" #include "debug.h" #include "vm_opts.h" -- cgit