Index: xotcl/ChangeLog =================================================================== diff -u -r489071934af0126a0f768b0ced07dea3b2328a23 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/ChangeLog (.../ChangeLog) (revision 489071934af0126a0f768b0ced07dea3b2328a23) +++ xotcl/ChangeLog (.../ChangeLog) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -1,5 +1,21 @@ +2004-01-06 Gustaf.Neumann@wu-wien.ac.at + * made introspection options for methods with nonpos args + compatible with tcl + * adding functionality to allow nonpos args and positional args + to be specified in the same argument list (still supporting + the syntax with separate lists) + +2005-01-05 Uwe Zdun + * Added support for defaults + non-pos args in info args, + default, instargs, instdefault + * fixed bug: Check Boolean in non-pos args crashed with 2 args + +2004-12-15 Gustaf.Neumann@wu-wien.ac.at + * fixed crash for empty arguments + (thanks to Gerald Stermsek for reporting this bug) + 2004-12-02 Gustaf.Neumann@wu-wien.ac.at, Uwe Zdun - * release of distribution XOTcl 1.3.3 + * release of distribution XOTcl 1.3.4 2004-12-02 Gustaf.Neumann@wu-wien.ac.at * changed metadata analyser from recursive to iterative Index: xotcl/Makefile =================================================================== diff -u -rf733c5df1b1a91a473d0e361ff206deaa4ecfa0a -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/Makefile (.../Makefile) (revision f733c5df1b1a91a473d0e361ff206deaa4ecfa0a) +++ xotcl/Makefile (.../Makefile) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -12,31 +12,39 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: Makefile,v 1.28 2004/11/27 21:10:33 neumann Exp $ +# RCS: @(#) $Id: Makefile,v 1.29 2005/01/06 03:10:04 neumann Exp $ #======================================================================== # Add additional lines to handle any additional AC_SUBST cases that # have been added in a customized configure script. #======================================================================== -#XOTCL_VERSION = 1.3.3 +#XOTCL_VERSION = 1.3.5 XOTCL_VERSION = 1.3 src_lib_dir = ${srcdir}/library src_doc_dir = ${srcdir}/doc src_test_dir = ${srcdir}/tests src_app_dir = ${srcdir}/apps src_generic_dir = ${srcdir}/generic -PLATFORM_DIR = $(srcdir)/unix -target_doc_dir = ./doc TCL_LIB_SPEC = -L/home/neumann/tcl8.4.7/unix -ltcl8.4 -TK_LIB_SPEC = -L/usr/lib -ltk8.4 -subdirs = library/store/XOTclSdbm/ library/store/XOTclGdbm/ library/xml/TclExpat-1.1/ +TK_LIB_SPEC = +subdirs = aol_prefix = /usr/local/aolserver -libdirs = comm lib serialize actiweb rdf registry store xml patterns +# Requires native paths +PLATFORM_DIR = `echo $(srcdir)/unix` +target_doc_dir = ./doc + +src_lib_dir_native = `echo ${src_lib_dir}` +src_doc_dir_native = `echo ${src_doc_dir}` +src_test_dir_native = `echo ${src_test_dir}` +src_app_dir_native = `echo ${src_app_dir}` +src_generic_dir_native = `echo ${src_generic_dir}` + +libdirs = comm lib serialize libsrc = COPYRIGHT pkgIndex.tcl -appdirs = comm scripts utils actiweb persistence +appdirs = comm scripts utils appsrc = COPYRIGHT DOC_SOURCE = \ @@ -90,8 +98,8 @@ # configuration options) composed of the named objects. #======================================================================== -PKG_LIB_FILE = libxotcl1.3.3.so -PKG_STUB_LIB_FILE = libxotclstub1.3.3.a +PKG_LIB_FILE = libxotcl1.3.5.so +PKG_STUB_LIB_FILE = libxotclstub1.3.5.a lib_BINARIES = $(PKG_LIB_FILE) $(PKG_STUB_LIB_FILE) BINARIES = $(lib_BINARIES) @@ -118,11 +126,11 @@ INSTALL_SCRIPT = ${INSTALL} PACKAGE_NAME = xotcl -PACKAGE_VERSION = 1.3.3 +PACKAGE_VERSION = 1.3.5 CC = gcc -pipe CFLAGS_DEFAULT = -O CFLAGS_WARNING = -Wall -Wconversion -Wno-implicit-int -CLEANFILES = *.o *.a *.so *~ core gmon.out config.* +CLEANFILES = *.o *.a *.so *~ core gmon.out EXEEXT = LDFLAGS_DEFAULT = -rdynamic MAKE_LIB = ${SHLIB_LD} -o $@ $(PKG_OBJECTS) ${SHLIB_LD_FLAGS} ${SHLIB_LD_LIBS} @@ -135,19 +143,19 @@ SHLIB_CFLAGS = -fPIC SHLIB_LD = gcc -pipe -shared SHLIB_LD_FLAGS = -SHLIB_LD_LIBS = ${LIBS} -L/home/neumann/tcl8.4.7/unix -ltclstub8.4 -L/usr/lib -ltkstub8.4 +SHLIB_LD_LIBS = ${LIBS} -L/home/neumann/tcl8.4.7/unix -ltclstub8.4 STLIB_LD = ${AR} cr -TCL_DEFS = -DSTATIC_BUILD=1 -DPEEK_XCLOSEIM=1 -D_LARGEFILE64_SOURCE=1 -DTCL_WIDE_INT_TYPE=long\ long -DHAVE_STRUCT_STAT64=1 -DHAVE_TYPE_OFF64_T=1 -DHAVE_GETCWD=1 -DHAVE_OPENDIR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_STRTOLL=1 -DHAVE_STRTOULL=1 -DHAVE_TMPNAM=1 -DHAVE_WAITPID=1 -DHAVE_LIMITS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_TERMIOS=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1 -DHAVE_GMTIME_R=1 -DHAVE_LOCALTIME_R=1 -DHAVE_TM_GMTOFF=1 -DHAVE_TIMEZONE_VAR=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_LANGINFO=1 -DHAVE_SYS_IOCTL_H=1 +TCL_DEFS = -DTCL_THREADS=1 -DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 -D_THREAD_SAFE=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_PTHREAD_ATFORK=1 -DHAVE_READDIR_R=1 -DPEEK_XCLOSEIM=1 -D_LARGEFILE64_SOURCE=1 -DTCL_WIDE_INT_TYPE=long\ long -DHAVE_STRUCT_STAT64=1 -DHAVE_TYPE_OFF64_T=1 -DHAVE_GETCWD=1 -DHAVE_OPENDIR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_STRTOLL=1 -DHAVE_STRTOULL=1 -DHAVE_TMPNAM=1 -DHAVE_WAITPID=1 -DHAVE_LIMITS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_TERMIOS=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1 -DHAVE_GMTIME_R=1 -DHAVE_LOCALTIME_R=1 -DHAVE_TM_GMTOFF=1 -DHAVE_TIMEZONE_VAR=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_LANGINFO=1 -DHAVE_SYS_IOCTL_H=1 TCL_BIN_DIR = /home/neumann/tcl8.4.7/unix TCL_SRC_DIR = /home/neumann/tcl8.4.7 # This is necessary for packages that use private Tcl headers #TCL_TOP_DIR_NATIVE = $(TCL_SRC_DIR) # Not used, but retained for reference of what libs Tcl required TCL_LIBS = ${DL_LIBS} ${LIBS} ${MATH_LIBS} -pkgdatadir = /usr/share/xotcl1.3.3 -pkglibdir = /usr/lib/xotcl1.3.3 -pkgincludedir = /usr/include/xotcl1.3.3 +pkgdatadir = /usr/share/xotcl1.3.5 +pkglibdir = /usr/lib/xotcl1.3.5 +pkgincludedir = /usr/include/xotcl1.3.5 #======================================================================== # TCLLIBPATH seeds the auto_path in Tcl's init.tcl so we can test our @@ -160,21 +168,21 @@ TCLSH_ENV = TCL_LIBRARY=`echo $(TCL_SRC_DIR)/library` \ LD_LIBRARY_PATH="$(EXTRA_PATH):$(LD_LIBRARY_PATH)" \ PATH="$(EXTRA_PATH):$(PATH)" \ - TCLLIBPATH="$(top_builddir)" + TCLLIBPATH="$(top_builddir) ${srcdir}" TCLSH_PROG = /home/neumann/tcl8.4.7/unix/tclsh TCLSH = $(TCLSH_ENV) $(TCLSH_PROG) SHARED_BUILD = 1 INCLUDES = -I$(TCL_SRC_DIR)/generic -I$(TCL_SRC_DIR)/unix -I./generic -EXTRA_CFLAGS = -DXOTCLVERSION=\"1.3\" -DXOTCLPATCHLEVEL=\".3\" -DHAVE_TCL_COMPILE_H=1 +EXTRA_CFLAGS = -DXOTCLVERSION=\"1.3\" -DXOTCLPATCHLEVEL=\".5\" -DHAVE_TCL_COMPILE_H=1 # TCL_DEFS is not strictly need here, but if you remove it, then you # must make sure that configure.in checks for the necessary components # that your library may use. TCL_DEFS can actually be a problem if # you do not compile with a similar machine setup as the Tcl core was # compiled with. -#DEFS = $(TCL_DEFS) -DPACKAGE_NAME=\"xotcl\" -DPACKAGE_TARNAME=\"xotcl\" -DPACKAGE_VERSION=\"1.3.3\" -DPACKAGE_STRING=\"xotcl\ 1.3.3\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -D_LARGEFILE64_SOURCE=1 -DTCL_WIDE_INT_TYPE=long\ long -DHAVE_STRUCT_STAT64=1 -DHAVE_TYPE_OFF64_T=1 -DHAVE_LIMITS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 -D_THREAD_SAFE=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_READDIR_R=1 -DTCL_THREADS=1 -DUSE_TCL_STUBS=1 -DCOMPILE_XOTCL_STUBS=1 $(EXTRA_CFLAGS) -DEFS = -DPACKAGE_NAME=\"xotcl\" -DPACKAGE_TARNAME=\"xotcl\" -DPACKAGE_VERSION=\"1.3.3\" -DPACKAGE_STRING=\"xotcl\ 1.3.3\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -D_LARGEFILE64_SOURCE=1 -DTCL_WIDE_INT_TYPE=long\ long -DHAVE_STRUCT_STAT64=1 -DHAVE_TYPE_OFF64_T=1 -DHAVE_LIMITS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 -D_THREAD_SAFE=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_READDIR_R=1 -DTCL_THREADS=1 -DUSE_TCL_STUBS=1 -DCOMPILE_XOTCL_STUBS=1 $(EXTRA_CFLAGS) +#DEFS = $(TCL_DEFS) -DPACKAGE_NAME=\"xotcl\" -DPACKAGE_TARNAME=\"xotcl\" -DPACKAGE_VERSION=\"1.3.5\" -DPACKAGE_STRING=\"xotcl\ 1.3.5\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -D_LARGEFILE64_SOURCE=1 -DTCL_WIDE_INT_TYPE=long\ long -DHAVE_STRUCT_STAT64=1 -DHAVE_TYPE_OFF64_T=1 -DHAVE_LIMITS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 -D_THREAD_SAFE=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_READDIR_R=1 -DTCL_THREADS=1 -DUSE_TCL_STUBS=1 -DCOMPILE_XOTCL_STUBS=1 $(EXTRA_CFLAGS) +DEFS = -DPACKAGE_NAME=\"xotcl\" -DPACKAGE_TARNAME=\"xotcl\" -DPACKAGE_VERSION=\"1.3.5\" -DPACKAGE_STRING=\"xotcl\ 1.3.5\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -D_LARGEFILE64_SOURCE=1 -DTCL_WIDE_INT_TYPE=long\ long -DHAVE_STRUCT_STAT64=1 -DHAVE_TYPE_OFF64_T=1 -DHAVE_LIMITS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 -D_THREAD_SAFE=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_READDIR_R=1 -DTCL_THREADS=1 -DUSE_TCL_STUBS=1 -DCOMPILE_XOTCL_STUBS=1 $(EXTRA_CFLAGS) CONFIG_CLEAN_FILES = Makefile xotclConfig.sh apps/utils/xotclsh apps/utils/xowish unix/xotcl.spec unix/pkgIndex.unix autom4te.cache/ @@ -205,7 +213,7 @@ # of the Makefile, in the "BINARIES" variable. #======================================================================== -binaries: $(BINARIES) xotclsh xowish pkgIndex.tcl +binaries: $(BINARIES) xotclsh pkgIndex.tcl @if test ! "x$(subdirs)" = "x" ; then dirs="$(subdirs)" ; \ for dir in $$dirs ; do \ if (cd $$dir; $(MAKE) $@) ; then true ; else exit 1 ; fi ; \ @@ -218,14 +226,17 @@ done; fi; libraries-pkgindex: - @$(TCLSH_PROG) $(src_lib_dir)/lib/make.xotcl -dir $(src_lib_dir) -all + @$(TCLSH) $(src_lib_dir_native)/lib/make.xotcl -dir $(src_lib_dir_native) -all fulldoc: doc pdf # use language reference as sample file to trigger generation of documentation files doc: $(target_doc_dir)/langRef-xotcl.html $(target_doc_dir)/langRef-xotcl.html: $(src_doc_dir)/langRef.xotcl $(DOC_SOURCE) - @$(TCLSH_PROG) $(src_lib_dir)/lib/makeDoc.xotcl $(target_doc_dir) $(DOC_SOURCE) + @docs=""; \ + for i in $(DOC_SOURCE); do docs="$$docs `echo $$i`"; done; \ + $(TCLSH) $(src_lib_dir_native)/lib/makeDoc.xotcl \ + $(target_doc_dir) $$docs pdf: -(cd $(src_doc_dir); htmldoc --webpage --format pdf14 --title \ @@ -252,31 +263,40 @@ install-libraries: libraries $(DESTDIR)$(includedir) $(DESTDIR)$(pkglibdir) @echo "Installing header files in $(DESTDIR)$(includedir)" @for i in $(PKG_HEADERS) ; do \ - echo "Installing $(srcdir)/$$i" ; \ + echo " Installing $$i" ; \ $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(includedir) ; \ done; + @echo "Installing Libraries to $(DESTDIR)$(pkglibdir)/" @for i in $(libdirs) ; do \ - echo "Installing $$i" ; \ + echo " Installing $$i/" ; \ rm -rf $(DESTDIR)$(pkglibdir)/$$i ; \ - (cd $(src_lib_dir); $(INSTALL) -d $$i $(DESTDIR)$(pkglibdir)/$$i ; \ - $(INSTALL) $$i/*tcl $(DESTDIR)$(pkglibdir)/$$i/) ; \ + mkdir -p $(DESTDIR)$(pkglibdir)/$$i; \ + chmod 755 $(DESTDIR)$(pkglibdir)/$$i; \ + for j in $(src_lib_dir)/$$i/*.*tcl ; do \ + $(INSTALL_DATA) $$j $(DESTDIR)$(pkglibdir)/$$i/; \ + done; \ done; - for i in $(libsrc) ; do \ - echo "Installing $$i" ; \ + @for i in $(libsrc) ; do \ + echo " Installing $$i" ; \ rm -rf $(DESTDIR)$(pkglibdir)/$$i ; \ - (cd $(src_lib_dir); $(INSTALL) $$i $(DESTDIR)$(pkglibdir)/$$i) ; \ + $(INSTALL_DATA) $(src_lib_dir)/$$i $(DESTDIR)$(pkglibdir)/$$i ; \ done; - cat ${srcdir}/unix/pkgIndex.unix >> $(DESTDIR)$(pkglibdir)/pkgIndex.tcl - $(INSTALL) xotclConfig.sh $(DESTDIR)$(libdir)/ + cat unix/pkgIndex.unix >> $(DESTDIR)$(pkglibdir)/pkgIndex.tcl + $(INSTALL_DATA) xotclConfig.sh $(DESTDIR)$(libdir)/ + @echo "Installing Applications to $(DESTDIR)$(pkglibdir)/apps/" @for i in $(appdirs) ; do \ - echo "Installing $$i" ; \ + echo " Installing $$i/" ; \ rm -rf $(DESTDIR)$(pkglibdir)/apps/$$i ; \ - (cd $(src_app_dir); $(INSTALL) -d $$i $(DESTDIR)$(pkglibdir)/apps/$$i) ; \ + mkdir -p $(DESTDIR)$(pkglibdir)/apps/$$i; \ + chmod 755 $(DESTDIR)$(pkglibdir)/apps/$$i; \ + for j in $(src_app_dir)/$$i/* ; do \ + $(INSTALL) $$j $(DESTDIR)$(pkglibdir)/apps/$$i/; \ + done; \ done; @for i in $(appsrc) ; do \ - echo "Installing $$i" ; \ + echo " Installing $$i" ; \ rm -rf $(DESTDIR)$(pkglibdir)/apps/$$i ; \ - $(INSTALL) $(src_app_dir)/$$i $(DESTDIR)$(pkglibdir)/apps ; \ + $(INSTALL_DATA) $(src_app_dir)/$$i $(DESTDIR)$(pkglibdir)/apps ; \ done; @rm -rf $(DESTDIR)$(pkglibdir)/store/XOTclGdbm @rm -rf $(DESTDIR)$(pkglibdir)/store/XOTclSdbm @@ -299,29 +319,35 @@ done) ; \ fi -test: binaries libraries test-core test-actiweb +shell: binaries libraries + @$(TCLSH) $(SCRIPT) +gdb: + $(TCLSH_ENV) gdb $(TCLSH_PROG) $(SCRIPT) + +test: binaries libraries test-core + #TESTFLAGS = -srcdir $(srcdir) test-core: $(TCLSH_PROG) - $(TCLSH_PROG) `echo $(src_test_dir)/testx.xotcl` \ - -libdir `echo $(PLATFORM_DIR)` $(TESTFLAGS) - $(TCLSH_PROG) `echo $(src_test_dir)/testo.xotcl` \ - -libdir `echo $(PLATFORM_DIR)` $(TESTFLAGS) - $(TCLSH_PROG) `echo $(src_test_dir)/speedtest.xotcl` \ - -libdir `echo $(PLATFORM_DIR)` $(TESTFLAGS) - $(TCLSH_PROG) `echo $(src_test_dir)/forwardtest.xotcl` \ - -libdir `echo $(PLATFORM_DIR)` $(TESTFLAGS) - $(TCLSH_PROG) `echo $(src_test_dir)/xocomm.test` \ - -libdir `echo $(PLATFORM_DIR)` $(TESTFLAGS) + $(TCLSH) $(src_test_dir_native)/testx.xotcl \ + -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_test_dir_native)/testo.xotcl \ + -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_test_dir_native)/speedtest.xotcl \ + -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_test_dir_native)/forwardtest.xotcl \ + -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_test_dir_native)/xocomm.test \ + -libdir $(PLATFORM_DIR) $(TESTFLAGS) test-actiweb: $(TCLSH_PROG) - $(TCLSH_PROG) `echo $(src_test_dir)/actiweb.test` \ - -libdir `echo $(PLATFORM_DIR)` $(TESTFLAGS) - $(TCLSH_PROG) `echo $(src_test_dir)/persistence.test` \ - -libdir `echo $(PLATFORM_DIR)` $(TESTFLAGS) - $(TCLSH_PROG) `echo $(src_test_dir)/UNIVERSAL.test` \ - -libdir `echo $(PLATFORM_DIR)` $(TESTFLAGS) - $(TCLSH_PROG) `echo $(src_test_dir)/xoRDF.test` \ - -libdir `echo $(PLATFORM_DIR)` $(TESTFLAGS) + $(TCLSH) $(src_test_dir_native)/actiweb.test \ + -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_test_dir_native)/persistence.test \ + -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_test_dir_native)/UNIVERSAL.test \ + -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_test_dir_native)/xoRDF.test \ + -libdir $(PLATFORM_DIR) $(TESTFLAGS) @rm -rf receiver depend: @@ -412,7 +438,7 @@ #======================================================================== $(src_generic_dir)/predefined.h: $(src_generic_dir)/mk_predefined.xotcl $(src_generic_dir)/predefined.xotcl - (cd $(src_generic_dir); $(TCLSH_PROG) mk_predefined.xotcl > predefined.h) + (cd $(src_generic_dir); $(TCLSH) mk_predefined.xotcl > predefined.h) xotclStubInit.$(OBJEXT): $(PKG_HEADERS) xotclStubLib.$(OBJEXT): $(src_generic_dir)/xotclStubLib.c $(PKG_HEADERS) @@ -431,7 +457,7 @@ # genstubs: - $(TCLSH_PROG) $(TCL_TOOL_DIR_NATIVE)/genStubs.tcl $(src_generic_dir) \ + $(TCLSH) $(TCL_TOOL_DIR_NATIVE)/genStubs.tcl $(src_generic_dir) \ $(src_generic_dir)/xotcl.decls $(src_generic_dir)/xotclInt.decls # @@ -461,7 +487,7 @@ #======================================================================== clean: - -rm -rf $(BINARIES) $(CLEANFILES) xotclsh xowish pkgIndex.tcl ./receiver \ + -rm -rf $(BINARIES) $(CLEANFILES) xotclsh pkgIndex.tcl ./receiver \ $(target_doc_dir)/*-xotcl.html find ${srcdir} -type f -name \*~ -exec rm \{} \; @if test ! "x$(subdirs)" = "x" ; then dirs="$(subdirs)" ; \ @@ -471,6 +497,7 @@ distclean: clean -rm -rf Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log config.status @if test ! "x$(subdirs)" = "x" ; then dirs="$(subdirs)" ; \ for dir in $$dirs ; do \ if (cd $$dir; $(MAKE) $@) ; then true ; else exit 1 ; fi ; \ Index: xotcl/Makefile.in =================================================================== diff -u -r489071934af0126a0f768b0ced07dea3b2328a23 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/Makefile.in (.../Makefile.in) (revision 489071934af0126a0f768b0ced07dea3b2328a23) +++ xotcl/Makefile.in (.../Makefile.in) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -12,7 +12,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: Makefile.in,v 1.13 2004/12/02 00:01:20 neumann Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.14 2005/01/06 03:10:04 neumann Exp $ #======================================================================== # Add additional lines to handle any additional AC_SUBST cases that @@ -168,7 +168,7 @@ TCLSH_ENV = TCL_LIBRARY=`@CYGPATH@ $(TCL_SRC_DIR)/library` \ @LD_LIBRARY_PATH_VAR@="$(EXTRA_PATH):$(@LD_LIBRARY_PATH_VAR@)" \ PATH="$(EXTRA_PATH):$(PATH)" \ - TCLLIBPATH="$(top_builddir)" + TCLLIBPATH="$(top_builddir) ${srcdir}" TCLSH_PROG = @TCLSH_PROG@ TCLSH = $(TCLSH_ENV) $(TCLSH_PROG) SHARED_BUILD = @SHARED_BUILD@ Index: xotcl/configure =================================================================== diff -u -r489071934af0126a0f768b0ced07dea3b2328a23 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/configure (.../configure) (revision 489071934af0126a0f768b0ced07dea3b2328a23) +++ xotcl/configure (.../configure) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for xotcl 1.3.4. +# Generated by GNU Autoconf 2.59 for xotcl 1.3.5. # # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation @@ -267,8 +267,8 @@ # Identity of this package. PACKAGE_NAME='xotcl' PACKAGE_TARNAME='xotcl' -PACKAGE_VERSION='1.3.4' -PACKAGE_STRING='xotcl 1.3.4' +PACKAGE_VERSION='1.3.5' +PACKAGE_STRING='xotcl 1.3.5' PACKAGE_BUGREPORT='' # Factoring default headers for most tests. @@ -777,7 +777,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures xotcl 1.3.4 to adapt to many kinds of systems. +\`configure' configures xotcl 1.3.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -834,7 +834,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xotcl 1.3.4:";; + short | recursive ) echo "Configuration of xotcl 1.3.5:";; esac cat <<\_ACEOF @@ -977,7 +977,7 @@ test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -xotcl configure 1.3.4 +xotcl configure 1.3.5 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. @@ -991,7 +991,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by xotcl $as_me 1.3.4, which was +It was created by xotcl $as_me 1.3.5, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ @@ -1562,7 +1562,7 @@ # do not modify the following lines manually, they are generated with changeXOTclVersion XOTCL_MAJOR_VERSION=1 XOTCL_MINOR_VERSION=3 -XOTCL_RELEASE_LEVEL=.4 +XOTCL_RELEASE_LEVEL=.5 XOTCL_VERSION=${XOTCL_MAJOR_VERSION}.${XOTCL_MINOR_VERSION} NODOT_VERSION=${XOTCL_MAJOR_VERSION}${XOTCL_MINOR_VERSION} @@ -10676,7 +10676,7 @@ } >&5 cat >&5 <<_CSEOF -This file was extended by xotcl $as_me 1.3.4, which was +This file was extended by xotcl $as_me 1.3.5, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -10731,7 +10731,7 @@ cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -xotcl config.status 1.3.4 +xotcl config.status 1.3.5 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" @@ -11328,3 +11328,5 @@ + + Index: xotcl/configure.in =================================================================== diff -u -r489071934af0126a0f768b0ced07dea3b2328a23 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/configure.in (.../configure.in) (revision 489071934af0126a0f768b0ced07dea3b2328a23) +++ xotcl/configure.in (.../configure.in) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -11,7 +11,7 @@ # for this package, and can be a relative path, such as: # #-------------------------------------------------------------------- -define(XOTclVersion, 1.3.4) +define(XOTclVersion, 1.3.5) AC_INIT([xotcl], [XOTclVersion]) #-------------------------------------------------------------------- @@ -104,7 +104,7 @@ # do not modify the following lines manually, they are generated with changeXOTclVersion XOTCL_MAJOR_VERSION=1 XOTCL_MINOR_VERSION=3 -XOTCL_RELEASE_LEVEL=.4 +XOTCL_RELEASE_LEVEL=.5 XOTCL_VERSION=${XOTCL_MAJOR_VERSION}.${XOTCL_MINOR_VERSION} NODOT_VERSION=${XOTCL_MAJOR_VERSION}${XOTCL_MINOR_VERSION} @@ -452,3 +452,5 @@ + + Index: xotcl/doc/xo-daemon.html =================================================================== diff -u -r489071934af0126a0f768b0ced07dea3b2328a23 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/doc/xo-daemon.html (.../xo-daemon.html) (revision 489071934af0126a0f768b0ced07dea3b2328a23) +++ xotcl/doc/xo-daemon.html (.../xo-daemon.html) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -76,7 +76,7 @@ Date: - [::xotcl::rcs date {$Date: 2004/12/02 00:01:20 $}] + [::xotcl::rcs date {$Date: 2005/01/06 03:10:05 $}] Index: xotcl/doc/xo-whichPkg.html =================================================================== diff -u -r489071934af0126a0f768b0ced07dea3b2328a23 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/doc/xo-whichPkg.html (.../xo-whichPkg.html) (revision 489071934af0126a0f768b0ced07dea3b2328a23) +++ xotcl/doc/xo-whichPkg.html (.../xo-whichPkg.html) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -52,7 +52,7 @@ Date: - [::xotcl::rcs date {$Date: 2004/12/02 00:01:20 $}] + [::xotcl::rcs date {$Date: 2005/01/06 03:10:05 $}] Index: xotcl/generic/aol-xotcl.tcl =================================================================== diff -u -r47c4c8f68826b6e7b4b9fa38e65bd77f281d7dbf -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/generic/aol-xotcl.tcl (.../aol-xotcl.tcl) (revision 47c4c8f68826b6e7b4b9fa38e65bd77f281d7dbf) +++ xotcl/generic/aol-xotcl.tcl (.../aol-xotcl.tcl) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -1,4 +1,4 @@ -# $Id: aol-xotcl.tcl,v 1.2 2004/07/27 09:35:18 neumann Exp $ +# $Id: aol-xotcl.tcl,v 1.3 2005/01/06 03:10:05 neumann Exp $ # # Load XOTcl library and some related packages. @@ -9,7 +9,7 @@ # package require XOTcl; namespace import ::xotcl::* -package require xotcl::serializer +package require xotcl::serializer 0.6 # # Overload procedure defined in bin/init.tcl. Index: xotcl/generic/xotcl.c =================================================================== diff -u -r489071934af0126a0f768b0ced07dea3b2328a23 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/generic/xotcl.c (.../xotcl.c) (revision 489071934af0126a0f768b0ced07dea3b2328a23) +++ xotcl/generic/xotcl.c (.../xotcl.c) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -1,4 +1,4 @@ -/* $Id: xotcl.c,v 1.33 2004/12/02 00:01:20 neumann Exp $ +/* $Id: xotcl.c,v 1.34 2005/01/06 03:10:05 neumann Exp $ * * XOTcl - Extended OTcl * @@ -756,7 +756,8 @@ ov[2] = objPtr; } INCR_REF_COUNT(ov[2]); - /* fprintf(stderr,"+++ calling __unknown for %s\n", ObjStr(ov[2]));*/ + /*fprintf(stderr,"+++ calling %s __unknown for %s\n", + ObjStr(ov[0]), ObjStr(ov[2]));*/ result = Tcl_EvalObjv(in, 3, ov, 0); @@ -4344,55 +4345,55 @@ */ static void -NonPosArgsDeleteHashEntry(Tcl_HashEntry* hPtr) { - XOTclNonPosArgs* nonPosArg = (XOTclNonPosArgs*) Tcl_GetHashValue(hPtr); - if (nonPosArg) { - DECR_REF_COUNT(nonPosArg->nonPosArgs); - DECR_REF_COUNT(nonPosArg->ordinaryArgs); - MEM_COUNT_FREE("nonPosArg",nonPosArg); - ckfree((char*) nonPosArg); +NonposArgsDeleteHashEntry(Tcl_HashEntry* hPtr) { + XOTclNonposArgs* nonposArg = (XOTclNonposArgs*) Tcl_GetHashValue(hPtr); + if (nonposArg) { + DECR_REF_COUNT(nonposArg->nonposArgs); + DECR_REF_COUNT(nonposArg->ordinaryArgs); + MEM_COUNT_FREE("nonposArg",nonposArg); + ckfree((char*) nonposArg); Tcl_DeleteHashEntry(hPtr); } } static Tcl_HashTable* -NonPosArgsCreateTable() { - Tcl_HashTable* nonPosArgsTable = +NonposArgsCreateTable() { + Tcl_HashTable* nonposArgsTable = (Tcl_HashTable *) ckalloc(sizeof(Tcl_HashTable)); - MEM_COUNT_ALLOC("Tcl_HashTable",nonPosArgsTable); - Tcl_InitHashTable(nonPosArgsTable, TCL_STRING_KEYS); - MEM_COUNT_ALLOC("Tcl_InitHashTable",nonPosArgsTable); - return nonPosArgsTable; + MEM_COUNT_ALLOC("Tcl_HashTable",nonposArgsTable); + Tcl_InitHashTable(nonposArgsTable, TCL_STRING_KEYS); + MEM_COUNT_ALLOC("Tcl_InitHashTable",nonposArgsTable); + return nonposArgsTable; } static void -NonPosArgsFreeTable(Tcl_HashTable* nonPosArgsTable) { +NonposArgsFreeTable(Tcl_HashTable* nonposArgsTable) { Tcl_HashSearch hSrch; - Tcl_HashEntry* hPtr = nonPosArgsTable ? - Tcl_FirstHashEntry(nonPosArgsTable, &hSrch) : 0; + Tcl_HashEntry* hPtr = nonposArgsTable ? + Tcl_FirstHashEntry(nonposArgsTable, &hSrch) : 0; for (; hPtr != 0; hPtr = Tcl_NextHashEntry(&hSrch)) { - NonPosArgsDeleteHashEntry(hPtr); + NonposArgsDeleteHashEntry(hPtr); } } -static XOTclNonPosArgs* -NonPosArgsGet(Tcl_HashTable* nonPosArgsTable, char* methodName) { - Tcl_HashEntry* hPtr = nonPosArgsTable ? Tcl_FindHashEntry(nonPosArgsTable, +static XOTclNonposArgs* +NonposArgsGet(Tcl_HashTable* nonposArgsTable, char* methodName) { + Tcl_HashEntry* hPtr = nonposArgsTable ? Tcl_FindHashEntry(nonposArgsTable, methodName) : 0; if (hPtr) { - return (XOTclNonPosArgs*) Tcl_GetHashValue(hPtr); + return (XOTclNonposArgs*) Tcl_GetHashValue(hPtr); } return NULL; } static Tcl_Obj* -NonPosArgsFormat(Tcl_Interp *in, Tcl_Obj* nonPosArgsData) { +NonposArgsFormat(Tcl_Interp *in, Tcl_Obj* nonposArgsData) { int r1, npalistc, npac, checkc, i, j, first; Tcl_Obj **npalistv, **npav, **checkv, *list = Tcl_NewListObj(0, NULL), *innerlist, *nameStringObj; - r1 = Tcl_ListObjGetElements(in, nonPosArgsData, &npalistc, &npalistv); + r1 = Tcl_ListObjGetElements(in, nonposArgsData, &npalistc, &npalistv); if (r1 == TCL_OK) { for (i=0; i < npalistc; i++) { r1 = Tcl_ListObjGetElements(in, npalistv[i], &npac, &npav); @@ -4431,122 +4432,183 @@ * Proc-Creation */ -static Tcl_Obj* addPrefixToBody(Tcl_Obj *body, int nonPositionalArgs) { +static Tcl_Obj* addPrefixToBody(Tcl_Obj *body, int nonposArgs) { Tcl_Obj* resultBody; resultBody = Tcl_NewStringObj("", 0); INCR_REF_COUNT(resultBody); Tcl_AppendStringsToObj(resultBody, "::xotcl::initProcNS\n", NULL); - if (nonPositionalArgs) { + if (nonposArgs) { Tcl_AppendStringsToObj(resultBody, - "::xotcl::interpretNonPositionalArgs $args\n", + "::xotcl::interpretNonpositionalArgs $args\n", NULL); } Tcl_AppendStringsToObj(resultBody, ObjStr(body), NULL); return resultBody; } +static int +parseNonposArgs(Tcl_Interp *in, + char *procName, Tcl_Obj *npArgs, Tcl_Obj *ordinaryArgs, + Tcl_HashTable **nonposArgsTable, + int *haveNonposArgs) { + int rc, nonposArgsDefc, npac; + Tcl_Obj **nonposArgsDefv; + rc = Tcl_ListObjGetElements(in, npArgs, &nonposArgsDefc, &nonposArgsDefv); + if (rc != TCL_OK) { + return XOTclVarErrMsg(in, "cannot break down non-positional args: ", + ObjStr(npArgs), (char *)NULL); + } + if (nonposArgsDefc > 0) { + int start, end, length, i, j, nw = 0; + char *arg; + Tcl_Obj *npaObj, **npav, *nonposArgsObj = Tcl_NewListObj(0, NULL); + Tcl_HashEntry *hPtr; + + INCR_REF_COUNT(nonposArgsObj); + for (i=0; i < nonposArgsDefc; i++) { + rc = Tcl_ListObjGetElements(in, nonposArgsDefv[i], &npac, &npav); + if (rc == TCL_ERROR || npac < 1 || npac > 2) { + DECR_REF_COUNT(nonposArgsObj); + return XOTclVarErrMsg(in, "wrong # of elements in non-positional args ", + "(should be 1 or 2 list elements): ", + ObjStr(npArgs), (char *)NULL); + } + npaObj = Tcl_NewListObj(0, NULL); + arg = ObjStr(npav[0]); + if (arg[0] != '-') { + INCR_REF_COUNT(npaObj); + DECR_REF_COUNT(npaObj); + DECR_REF_COUNT(nonposArgsObj); + return XOTclVarErrMsg(in, "non-positional args does not start with '-': ", + arg, " in: ", ObjStr(npArgs), (char *)NULL); + } + + length = strlen(arg); + for (j=0; j0 && isspace((int)arg[end-1]); end--); + Tcl_ListObjAppendElement(in, list, Tcl_NewStringObj(arg+start, end-start)); + l++; + start = l; + while(start0 && isspace((int)arg[end-1]); end--); + Tcl_ListObjAppendElement(in, list, Tcl_NewStringObj(arg+start, end-start)); + /* append the whole thing to the list */ + Tcl_ListObjAppendElement(in, npaObj, list); + } else { + Tcl_ListObjAppendElement(in, npaObj, Tcl_NewStringObj(arg+1, length)); + Tcl_ListObjAppendElement(in, npaObj, Tcl_NewStringObj("", 0)); + } + if (npac == 2) { + Tcl_ListObjAppendElement(in, npaObj, npav[1]); + } + Tcl_ListObjAppendElement(in, nonposArgsObj, npaObj); + + if (*nonposArgsTable == 0) { + *nonposArgsTable = NonposArgsCreateTable(); + } + + hPtr = Tcl_CreateHashEntry(*nonposArgsTable, procName, &nw); + if (nw) { + XOTclNonposArgs* nonposArg; + MEM_COUNT_ALLOC("nonposArg",nonposArg); + nonposArg = (XOTclNonposArgs*)ckalloc(sizeof(XOTclNonposArgs)); + nonposArg->nonposArgs = nonposArgsObj; + nonposArg->ordinaryArgs = ordinaryArgs; + INCR_REF_COUNT(ordinaryArgs); + Tcl_SetHashValue(hPtr, (ClientData)nonposArg); + } + *haveNonposArgs = 1; + } + } + return TCL_OK; +} + + static int -MakeProc(Tcl_Namespace* ns, XOTclAssertionStore* aStore, - Tcl_HashTable* nonPosArgsTable, +MakeProc(Tcl_Namespace *ns, XOTclAssertionStore *aStore, + Tcl_HashTable **nonposArgsTable, Tcl_Interp *in, int objc, Tcl_Obj *objv[], XOTclObject *obj) { - int result, incr, start; + int result, incr, haveNonposArgs=0; Tcl_CallFrame frame; - char *arg; - Tcl_Obj *ov[4], *nonPosArgsObj = 0, *npaObj, **nonPosArgsDefv, **npav, - *list; - int nw = 0, r1, nonPosArgsDefc, length, i, j, l, npac; + Tcl_Obj *ov[4]; Tcl_HashEntry* hPtr = NULL; - XOTclNonPosArgs* nonPosArg; + char *procName = ObjStr(objv[1]); - hPtr = nonPosArgsTable ? Tcl_FindHashEntry(nonPosArgsTable, - ObjStr(objv[1])) : 0; - if (hPtr) NonPosArgsDeleteHashEntry(hPtr); - + hPtr = *nonposArgsTable ? Tcl_FindHashEntry(*nonposArgsTable, procName) : 0; + if (hPtr) + NonposArgsDeleteHashEntry(hPtr); + ov[0] = objv[0]; ov[1] = objv[1]; + if (objc == 5 || objc == 7) { - r1 = Tcl_ListObjGetElements(in, objv[2], &nonPosArgsDefc, &nonPosArgsDefv); - if (r1 != TCL_OK) { - return XOTclVarErrMsg(in, "cannot break down non-positional args: ", - ObjStr(objv[2]), (char *)NULL); - } - if (nonPosArgsDefc > 0) { - nonPosArgsObj = Tcl_NewListObj(0, NULL); - INCR_REF_COUNT(nonPosArgsObj); - for (i=0; i < nonPosArgsDefc; i++) { - r1 = Tcl_ListObjGetElements(in, nonPosArgsDefv[i], &npac, &npav); - if (r1 == TCL_ERROR || npac < 1 || npac > 2) { - DECR_REF_COUNT(nonPosArgsObj); - return XOTclVarErrMsg(in, "wrong # of elements in non-positional args ", - "(should be 1 or 2 list elements): ", - ObjStr(objv[2]), (char *)NULL); - } - npaObj = Tcl_NewListObj(0, NULL); - arg = ObjStr(npav[0]); - if (arg[0] != '-') { - INCR_REF_COUNT(npaObj); - DECR_REF_COUNT(npaObj); - DECR_REF_COUNT(nonPosArgsObj); - return XOTclVarErrMsg(in, "non-positional args does not start with '-': ", - arg, " in: ", ObjStr(objv[2]), (char *)NULL); - } - - length = strlen(arg); - for (j=0; j0 && isspace((int)arg[end-1]); end--); - Tcl_ListObjAppendElement(in, list, Tcl_NewStringObj(arg+start, end-start)); - l++; - start = l; - while(start0 && isspace((int)arg[end-1]); end--); - Tcl_ListObjAppendElement(in, list, Tcl_NewStringObj(arg+start, end-start)); - /* append the whole thing to the list */ - Tcl_ListObjAppendElement(in, npaObj, list); - } else { - Tcl_ListObjAppendElement(in, npaObj, Tcl_NewStringObj(arg+1, length)); - Tcl_ListObjAppendElement(in, npaObj, Tcl_NewStringObj("", 0)); - } - if (npac == 2) { - Tcl_ListObjAppendElement(in, npaObj, npav[1]); - } - Tcl_ListObjAppendElement(in, nonPosArgsObj, npaObj); - } - + if ((result = parseNonposArgs(in, procName, objv[2], objv[3], + nonposArgsTable, &haveNonposArgs)) != TCL_OK) + return result; + + if (haveNonposArgs) { ov[2] = XOTclGlobalObjects[XOTE_ARGS]; ov[3] = addPrefixToBody(objv[4], 1); - - hPtr = Tcl_CreateHashEntry(nonPosArgsTable, ObjStr(ov[1]), &nw); - if (nw) { - MEM_COUNT_ALLOC("nonPosArg",nonPosArg); - nonPosArg = (XOTclNonPosArgs*)ckalloc(sizeof(XOTclNonPosArgs)); - nonPosArg->nonPosArgs = nonPosArgsObj; - nonPosArg->ordinaryArgs = objv[3]; - INCR_REF_COUNT(objv[3]); - Tcl_SetHashValue(hPtr, (ClientData)nonPosArg); - } - - - } else { /* no nonpositional arguments */ + } else { /* no nonpos arguments */ ov[2] = objv[3]; ov[3] = addPrefixToBody(objv[4], 0); } } else { - ov[2] = objv[2]; - ov[3] = addPrefixToBody(objv[3], 0); + int argsc, i; + Tcl_Obj **argsv; + + result = Tcl_ListObjGetElements(in, objv[2], &argsc, &argsv); + if (result != TCL_OK) { + return XOTclVarErrMsg(in, "cannot break args into list: ", + ObjStr(objv[2]), (char *)NULL); + } + for (i=0; i ordinary <%s>\n", + ObjStr(nonposArgs),ObjStr(ordinaryArgs));*/ + result = parseNonposArgs(in, procName, nonposArgs, ordinaryArgs, + nonposArgsTable, &haveNonposArgs); + DECR_REF_COUNT(ordinaryArgs); + DECR_REF_COUNT(nonposArgs); + if (result != TCL_OK) + return result; + } + if (haveNonposArgs) { + /*fprintf(stderr, "haveNonposArgs = %d\n",haveNonposArgs);*/ + ov[2] = XOTclGlobalObjects[XOTE_ARGS]; + ov[3] = addPrefixToBody(objv[3], 1); + } else { /* no nonpos arguments */ + ov[2] = objv[2]; + ov[3] = addPrefixToBody(objv[3], 0); + } + } #ifdef AUTOVARS @@ -4562,16 +4624,17 @@ #endif Tcl_PushCallFrame(in,&frame,ns,0); - + result = Tcl_ProcObjCmd(0, in, 4, ov) != TCL_OK; #if defined(NAMESPACEINSTPROCS) { - Proc *procPtr = TclFindProc((Interp *)in, ObjStr(ov[1])); - Command *cmd = (Command *)obj->id; + Proc *procPtr = TclFindProc((Interp *)in, procName); /*fprintf(stderr,"proc=%p cmd=%p ns='%s' objns=%s\n",procPtr,procPtr->cmdPtr, procPtr->cmdPtr->nsPtr->fullName,cmd->nsPtr->fullName);*/ /*** patch the command ****/ - procPtr->cmdPtr = cmd; + if (procPtr) { + procPtr->cmdPtr = (Command *)obj->id; + } } #endif @@ -5018,6 +5081,29 @@ } static int +ListArgsFromOrdinaryArgs(Tcl_Interp *in, XOTclNonposArgs* nonposArgs) { + int i, rc, ordinaryArgsDefc, defaultValueObjc; + Tcl_Obj **ordinaryArgsDefv, **defaultValueObjv, *ordinaryArg, + *argList = Tcl_NewListObj(0, NULL); + rc = Tcl_ListObjGetElements(in, nonposArgs->ordinaryArgs, + &ordinaryArgsDefc, &ordinaryArgsDefv); + if (rc != TCL_OK) + return TCL_ERROR; + + for (i=0; i < ordinaryArgsDefc; i++) { + ordinaryArg = ordinaryArgsDefv[i]; + rc = Tcl_ListObjGetElements(in, ordinaryArg, + &defaultValueObjc, &defaultValueObjv); + if (rc == TCL_OK && defaultValueObjc == 2) { + ordinaryArg = defaultValueObjv[0]; + } + Tcl_ListObjAppendElement(in, argList, ordinaryArg); + } + Tcl_SetObjResult(in, argList); + return TCL_OK; +} + +static int GetProcDefault(Tcl_Interp *in, Tcl_HashTable *table, char *name, char *arg, Tcl_Obj **resultObj) { Proc* proc = FindProc(in, table, name); @@ -5038,39 +5124,46 @@ return TCL_ERROR; } +static int +SetProcDefault(Tcl_Interp *in, Tcl_Obj *var, Tcl_Obj* defVal) { + int result = TCL_OK; + callFrameContext ctx = {0}; + CallStackUseActiveFrames(in,&ctx); + + if (defVal != 0) { + if (Tcl_ObjSetVar2(in, var, 0, defVal, 0) != NULL) { + Tcl_SetIntObj(Tcl_GetObjResult(in), 1); + } else { + result = TCL_ERROR; + } + } else { + if (Tcl_ObjSetVar2(in, var, 0, + XOTclGlobalObjects[XOTE_EMPTY], 0) != NULL) { + Tcl_SetIntObj(Tcl_GetObjResult(in), 0); + } else { + result = TCL_ERROR; + } + } + CallStackRestoreSavedFrames(in, &ctx); + + if (result == TCL_ERROR) { + Tcl_ResetResult(in); + Tcl_AppendResult(in, "couldn't store default value in variable '", + var, "'", (char *) 0); + } + return result; +} static int ListProcDefault(Tcl_Interp *in, Tcl_HashTable *table, char *name, char *arg, Tcl_Obj *var) { Tcl_Obj *defVal; int result; if (GetProcDefault(in, table, name, arg, &defVal) == TCL_OK) { - callFrameContext ctx = {0}; - CallStackUseActiveFrames(in,&ctx); - - if (defVal != 0) { - if (Tcl_ObjSetVar2(in, var, 0, defVal, 0) != NULL) { - Tcl_SetIntObj(Tcl_GetObjResult(in), 1); - result = TCL_OK; - } else - result = TCL_ERROR; - } else { - if (Tcl_ObjSetVar2(in, var, 0, XOTclGlobalObjects[XOTE_EMPTY], 0) != NULL) { - Tcl_SetIntObj(Tcl_GetObjResult(in), 0); - return TCL_OK; - } else - result = TCL_ERROR; - } - CallStackRestoreSavedFrames(in, &ctx); - - if (result == TCL_ERROR) { - Tcl_ResetResult(in); - Tcl_AppendResult(in, "couldn't store default value in variable '", - var, "'", (char *) 0); - } + result = SetProcDefault(in, var, defVal); } else { Tcl_ResetResult(in); - Tcl_AppendResult(in, "procedure '", name, + Tcl_AppendResult(in, "method '", name, "' doesn't exist or doesn't have an argument '", arg, "'", (char *) 0); result = TCL_ERROR; @@ -5079,14 +5172,40 @@ } static int +ListDefaultFromOrdinaryArgs(Tcl_Interp *in, char *procName, + XOTclNonposArgs* nonposArgs, char *arg, Tcl_Obj *var) { + int i, rc, ordinaryArgsDefc, defaultValueObjc; + Tcl_Obj **ordinaryArgsDefv, **defaultValueObjv, *ordinaryArg; + + rc = Tcl_ListObjGetElements(in, nonposArgs->ordinaryArgs, + &ordinaryArgsDefc, &ordinaryArgsDefv); + if (rc != TCL_OK) + return TCL_ERROR; + + for (i=0; i < ordinaryArgsDefc; i++) { + ordinaryArg = ordinaryArgsDefv[i]; + rc = Tcl_ListObjGetElements(in, ordinaryArg, + &defaultValueObjc, &defaultValueObjv); + if (rc == TCL_OK && !strcmp(arg, ObjStr(defaultValueObjv[0]))) { + return SetProcDefault(in, var, defaultValueObjc == 2 ? + defaultValueObjv[1] : NULL); + } + } + Tcl_ResetResult(in); + Tcl_AppendResult(in, "method '", procName, "' doesn't have an argument '", + arg, "'", (char *) 0); + return TCL_ERROR; +} + +static int ListProcBody(Tcl_Interp *in, Tcl_HashTable *table, char *name) { Proc* proc = FindProc(in, table, name); if (proc) { char *body = ObjStr(proc->bodyPtr); if (strncmp(body, "::xotcl::initProcNS\n",20) == 0) body+=20; - if (strncmp(body, "::xotcl::interpretNonPositionalArgs $args\n",42) == 0) + if (strncmp(body, "::xotcl::interpretNonpositionalArgs $args\n",42) == 0) body+=42; Tcl_SetObjResult(in, Tcl_NewStringObj(body, -1)); return TCL_OK; @@ -5722,12 +5841,12 @@ opt = obj->opt = 0; } - if (obj->nonPosArgsTable) { - NonPosArgsFreeTable(obj->nonPosArgsTable); - Tcl_DeleteHashTable(obj->nonPosArgsTable); - MEM_COUNT_FREE("Tcl_InitHashTable", obj->nonPosArgsTable); - ckfree((char*) obj->nonPosArgsTable); - MEM_COUNT_FREE("Tcl_HashTable",obj->nonPosArgsTable); + if (obj->nonposArgsTable) { + NonposArgsFreeTable(obj->nonposArgsTable); + Tcl_DeleteHashTable(obj->nonposArgsTable); + MEM_COUNT_FREE("Tcl_InitHashTable", obj->nonposArgsTable); + ckfree((char*) obj->nonposArgsTable); + MEM_COUNT_FREE("Tcl_HashTable",obj->nonposArgsTable); } obj->flags &= ~XOTCL_MIXIN_ORDER_VALID; @@ -5751,7 +5870,7 @@ if (obj->flags & XOTCL_RECREATE) { obj->opt = 0; obj->varTable = 0; - obj->nonPosArgsTable = 0; + obj->nonposArgsTable = 0; obj->mixinOrder = 0; obj->filterOrder = 0; obj->flags = 0; @@ -5962,12 +6081,12 @@ } } - if (cl->nonPosArgsTable) { - NonPosArgsFreeTable(cl->nonPosArgsTable); - Tcl_DeleteHashTable(cl->nonPosArgsTable); - MEM_COUNT_FREE("Tcl_InitHashTable", cl->nonPosArgsTable); - ckfree((char*) cl->nonPosArgsTable); - MEM_COUNT_FREE("Tcl_HashTable",cl->nonPosArgsTable); + if (cl->nonposArgsTable) { + NonposArgsFreeTable(cl->nonposArgsTable); + Tcl_DeleteHashTable(cl->nonposArgsTable); + MEM_COUNT_FREE("Tcl_InitHashTable", cl->nonposArgsTable); + ckfree((char*) cl->nonposArgsTable); + MEM_COUNT_FREE("Tcl_HashTable",cl->nonposArgsTable); } Tcl_DeleteHashTable(&cl->instances); @@ -6037,7 +6156,7 @@ MEM_COUNT_ALLOC("Tcl_InitHashTable",&cl->instances); cl->opt = 0; - cl->nonPosArgsTable = 0; + cl->nonposArgsTable = 0; } /* @@ -6627,11 +6746,11 @@ if (isArgsString(cmd)) { if (objc != 3 || modifiers > 0) return XOTclObjErrArgCnt(in, obj->cmdName, "info args "); - if (obj->nonPosArgsTable) { - XOTclNonPosArgs* nonPosArgs = NonPosArgsGet(obj->nonPosArgsTable, pattern); - if (nonPosArgs) { - Tcl_SetObjResult(in, nonPosArgs->ordinaryArgs); - return TCL_OK; + if (obj->nonposArgsTable) { + XOTclNonposArgs* nonposArgs = + NonposArgsGet(obj->nonposArgsTable, pattern); + if (nonposArgs) { + return ListArgsFromOrdinaryArgs(in, nonposArgs); } } if (nsp) @@ -6679,6 +6798,15 @@ if (!strcmp(cmd, "default")) { if (objc != 5 || modifiers > 0) return XOTclObjErrArgCnt(in, obj->cmdName, "info default "); + + if (obj->nonposArgsTable) { + XOTclNonposArgs* nonposArgs = + NonposArgsGet(obj->nonposArgsTable, pattern); + if (nonposArgs) { + return ListDefaultFromOrdinaryArgs(in, pattern, nonposArgs, + ObjStr(objv[3]), objv[4]); + } + } if (nsp) return ListProcDefault(in, Tcl_Namespace_cmdTable(nsp), pattern, ObjStr(objv[3]), objv[4]); @@ -6809,11 +6937,11 @@ if (!strcmp(cmd, "nonposargs")) { if (objc != 3 || modifiers > 0) return XOTclObjErrArgCnt(in, obj->cmdName, "info nonposargs "); - if (obj->nonPosArgsTable) { - XOTclNonPosArgs* nonPosArgs = - NonPosArgsGet(obj->nonPosArgsTable, pattern); - if (nonPosArgs) { - Tcl_SetObjResult(in, NonPosArgsFormat(in, nonPosArgs->nonPosArgs)); + if (obj->nonposArgsTable) { + XOTclNonposArgs* nonposArgs = + NonposArgsGet(obj->nonposArgsTable, pattern); + if (nonposArgs) { + Tcl_SetObjResult(in, NonposArgsFormat(in, nonposArgs->nonposArgs)); } } return TCL_OK; @@ -6879,9 +7007,6 @@ "proc name ?non-positional-args? args body ?preAssertion postAssertion?"); if (objc == 5 || objc == 7) { - if (obj->nonPosArgsTable == 0) { - obj->nonPosArgsTable = NonPosArgsCreateTable(); - } incr = 1; } @@ -6904,7 +7029,7 @@ aStore = opt->assertions; } requireObjNamespace(in, obj); - result = MakeProc(obj->nsPtr, aStore, obj->nonPosArgsTable, + result = MakeProc(obj->nsPtr, aStore, &(obj->nonposArgsTable), in, objc, (Tcl_Obj **) objv, obj); } @@ -8883,11 +9008,11 @@ if (objc != 3 || modifiers > 0) return XOTclObjErrArgCnt(in, cl->object.cmdName, "info instargs "); - if (cl->nonPosArgsTable) { - XOTclNonPosArgs* nonPosArgs = NonPosArgsGet(cl->nonPosArgsTable, pattern); - if (nonPosArgs) { - Tcl_SetObjResult(in, nonPosArgs->ordinaryArgs); - return TCL_OK; + if (cl->nonposArgsTable) { + XOTclNonposArgs* nonposArgs = + NonposArgsGet(cl->nonposArgsTable, pattern); + if (nonposArgs) { + return ListArgsFromOrdinaryArgs(in, nonposArgs); } } return ListProcArgs(in, Tcl_Namespace_cmdTable(nsp), pattern); @@ -8917,6 +9042,15 @@ if (objc != 5 || modifiers > 0) return XOTclObjErrArgCnt(in, cl->object.cmdName, "info instdefault "); + + if (cl->nonposArgsTable) { + XOTclNonposArgs* nonposArgs = + NonposArgsGet(cl->nonposArgsTable, pattern); + if (nonposArgs) { + return ListDefaultFromOrdinaryArgs(in, pattern, nonposArgs, + ObjStr(objv[3]), objv[4]); + } + } return ListProcDefault(in, Tcl_Namespace_cmdTable(nsp), pattern, ObjStr(objv[3]), objv[4]); } @@ -8995,12 +9129,12 @@ if (objc != 3 || modifiers > 0) return XOTclObjErrArgCnt(in, cl->object.cmdName, "info instnonposargs "); - if (cl->nonPosArgsTable) { - XOTclNonPosArgs* nonPosArgs = - NonPosArgsGet(cl->nonPosArgsTable, pattern); - if (nonPosArgs) { - Tcl_SetObjResult(in, NonPosArgsFormat(in, - nonPosArgs->nonPosArgs)); + if (cl->nonposArgsTable) { + XOTclNonposArgs* nonposArgs = + NonposArgsGet(cl->nonposArgsTable, pattern); + if (nonposArgs) { + Tcl_SetObjResult(in, NonposArgsFormat(in, + nonposArgs->nonposArgs)); } } return TCL_OK; @@ -9393,8 +9527,8 @@ "instproc name ?non-positional-args? args body ?preAssertion postAssertion?"); if (objc == 5 || objc == 7) { - if (cl->nonPosArgsTable == 0) { - cl->nonPosArgsTable = NonPosArgsCreateTable(); + if (cl->nonposArgsTable == 0) { + cl->nonposArgsTable = NonposArgsCreateTable(); } incr = 1; } @@ -9428,7 +9562,8 @@ opt->assertions = AssertionCreateStore(); aStore = opt->assertions; } - result = MakeProc(cl->nsPtr, aStore, cl->nonPosArgsTable, in, objc, (Tcl_Obj **) objv, &cl->object); + result = MakeProc(cl->nsPtr, aStore, &(cl->nonposArgsTable), + in, objc, (Tcl_Obj **) objv, &cl->object); } /* could be a filter or filter inheritance ... update filter orders */ @@ -9878,14 +10013,14 @@ * Interpretation of Non-Positional Args */ int -isNonPositionalArg(Tcl_Interp *in, char* argStr, - int nonPosArgsDefc, Tcl_Obj **nonPosArgsDefv, +isNonposArg(Tcl_Interp *in, char* argStr, + int nonposArgsDefc, Tcl_Obj **nonposArgsDefv, char **varName) { int i, npac; Tcl_Obj **npav; if (argStr[0] == '-') { - for (i=0; i < nonPosArgsDefc; i++) { - if (Tcl_ListObjGetElements(in, nonPosArgsDefv[i], + for (i=0; i < nonposArgsDefc; i++) { + if (Tcl_ListObjGetElements(in, nonposArgsDefv[i], &npac, &npav) == TCL_OK && npac > 0) { *varName = argStr+1; if (!strcmp(*varName, ObjStr(npav[0]))) { @@ -9902,9 +10037,15 @@ Tcl_Obj *CONST objv[]) { int result, bool; Tcl_Obj* boolean; - if (objc != 2 && objc != 3) + + if (objc == 2) { + /* the variable is not yet defined (set), so we cannot check + whether it is boolean or not */ + return TCL_OK; + } else if (objc != 3) { return XOTclObjErrArgCnt(in, NULL, - "::xotcl::nonPositionalArgs boolean ?currentValue?"); + "::xotcl::nonpositionalArgs boolean name ?value?"); + } boolean = Tcl_DuplicateObj(objv[2]); INCR_REF_COUNT(boolean); @@ -9926,7 +10067,7 @@ Tcl_Obj *CONST objv[]) { if (objc != 2 && objc != 3) return XOTclObjErrArgCnt(in, NULL, - "::xotcl::nonPositionalArgs required ?currentValue?"); + "::xotcl::nonpositionalArgs required ?currentValue?"); if (objc != 3) return XOTclVarErrMsg(in, @@ -9936,49 +10077,49 @@ } int -XOTclInterpretNonPositionalArgsCmd(ClientData cd, Tcl_Interp *in, int objc, +XOTclInterpretNonpositionalArgsCmd(ClientData cd, Tcl_Interp *in, int objc, Tcl_Obj *CONST objv[]) { - Tcl_Obj **npav, **checkv, **checkArgv, **argsv, **nonPosArgsDefv, + Tcl_Obj **npav, **checkv, **checkArgv, **argsv, **nonposArgsDefv, *invocation[4], **ordinaryArgsDefv, **defaultValueObjv, *list, *checkObj, *ordinaryArg; - int npac, checkc, checkArgc, argsc, nonPosArgsDefc, + int npac, checkc, checkArgc, argsc, nonposArgsDefc, ordinaryArgsDefc, defaultValueObjc, argsDefined = 0, ordinaryArgsCounter = 0, i, j, result, ic; char* lastDefArg = NULL, *varName, *arg, *argStr; - int endOfNonPosArgsReached = 0; + int endOfNonposArgsReached = 0; Var *varPtr; XOTclClass* selfClass = GetSelfClass(in); char* methodName = (char*) GetSelfProc(in); - Tcl_HashTable* nonPosArgsTable; - XOTclNonPosArgs* nonPosArgs; + Tcl_HashTable* nonposArgsTable; + XOTclNonposArgs* nonposArgs; XOTclObject* selfObj; int r1, r2, r3, r4; if (objc != 2) return XOTclObjErrArgCnt(in, NULL, - "::xotcl::interpretNonPositionalArgs "); + "::xotcl::interpretNonpositionalArgs "); if (selfClass) { - nonPosArgsTable = selfClass->nonPosArgsTable; + nonposArgsTable = selfClass->nonposArgsTable; } else if ((selfObj = GetSelfObj(in))) { - nonPosArgsTable = selfObj->nonPosArgsTable; + nonposArgsTable = selfObj->nonposArgsTable; } else { return XOTclVarErrMsg(in, "Non positional args: can't find self/self class", NULL); } - nonPosArgs = NonPosArgsGet(nonPosArgsTable, methodName); - if (nonPosArgs == 0) { + nonposArgs = NonposArgsGet(nonposArgsTable, methodName); + if (nonposArgs == 0) { return XOTclVarErrMsg(in, "Non positional args: can't find hash entry for: ", methodName, NULL); } - r1 = Tcl_ListObjGetElements(in, nonPosArgs->nonPosArgs, - &nonPosArgsDefc, &nonPosArgsDefv); - r2 = Tcl_ListObjGetElements(in, nonPosArgs->ordinaryArgs, + r1 = Tcl_ListObjGetElements(in, nonposArgs->nonposArgs, + &nonposArgsDefc, &nonposArgsDefv); + r2 = Tcl_ListObjGetElements(in, nonposArgs->ordinaryArgs, &ordinaryArgsDefc, &ordinaryArgsDefv); r3 = Tcl_ListObjGetElements(in, objv[1], &argsc, &argsv); if (r1 != TCL_OK || r2 != TCL_OK || r3 != TCL_OK) { @@ -9988,8 +10129,8 @@ NULL); } - for (i=0; i < nonPosArgsDefc; i++) { - r1 = Tcl_ListObjGetElements(in, nonPosArgsDefv[i], &npac, &npav); + for (i=0; i < nonposArgsDefc; i++) { + r1 = Tcl_ListObjGetElements(in, nonposArgsDefv[i], &npac, &npav); if (r1 == TCL_OK && npac == 3) { Tcl_ObjSetVar2(in, npav[0], 0, npav[2], 0); } @@ -10003,28 +10144,28 @@ } for (i=0; i < argsc; i++) { - if (!endOfNonPosArgsReached) { + if (!endOfNonposArgsReached) { argStr = ObjStr(argsv[i]); if (isDoubleDashString(argStr)) { - endOfNonPosArgsReached = 1; + endOfNonposArgsReached = 1; i++; } - if (isNonPositionalArg(in, argStr, nonPosArgsDefc, - nonPosArgsDefv, &varName)) { + if (isNonposArg(in, argStr, nonposArgsDefc, + nonposArgsDefv, &varName)) { i++; if (i >= argsc) return XOTclVarErrMsg(in, "Non positional arg '", argStr, "': value missing", NULL); Tcl_SetVar2(in, varName, 0, ObjStr(argsv[i]), 0); } else { - endOfNonPosArgsReached = 1; + endOfNonposArgsReached = 1; } } - if (endOfNonPosArgsReached && i < argsc) { + if (endOfNonposArgsReached && i < argsc) { if (ordinaryArgsCounter >= ordinaryArgsDefc) { - return XOTclObjErrArgCnt(in, NULL, ObjStr(nonPosArgs->ordinaryArgs)); + return XOTclObjErrArgCnt(in, NULL, ObjStr(nonposArgs->ordinaryArgs)); } arg = ObjStr(ordinaryArgsDefv[ordinaryArgsCounter]); /* this is the last arg and 'args' is defined */ @@ -10059,16 +10200,16 @@ if (r4 == TCL_OK && defaultValueObjc == 2) { Tcl_ObjSetVar2(in, defaultValueObjv[0], 0, defaultValueObjv[1], 0); } else { - return XOTclObjErrArgCnt(in, NULL, ObjStr(nonPosArgs->ordinaryArgs)); + return XOTclObjErrArgCnt(in, NULL, ObjStr(nonposArgs->ordinaryArgs)); } ordinaryArgsCounter++; } } Tcl_UnsetVar2(in, "args", 0, 0); } - for (i=0; i < nonPosArgsDefc; i++) { - r1 = Tcl_ListObjGetElements(in, nonPosArgsDefv[i], &npac, &npav); + for (i=0; i < nonposArgsDefc; i++) { + r1 = Tcl_ListObjGetElements(in, nonposArgsDefv[i], &npac, &npav); if (r1 == TCL_OK && npac > 1 && *(ObjStr(npav[1])) != '\0') { r1 = Tcl_ListObjGetElements(in, npav[1], &checkc, &checkv); if (r1 == TCL_OK) { @@ -10554,7 +10695,7 @@ XOTclClass *theobj = 0; XOTclClass *thecls = 0; XOTclClass *paramCl = 0; - XOTclClass *nonPositionalArgsCl = 0; + XOTclClass *nonposArgsCl = 0; ClientData runtimeState; int result, i; #ifdef XOTCL_BYTECODE @@ -10786,8 +10927,8 @@ instructions[INST_INITPROC].cmdPtr = (Command *) #endif Tcl_CreateObjCommand(in, "::xotcl::initProcNS", XOTclInitProcNSCmd, 0, 0); - Tcl_CreateObjCommand(in, "::xotcl::interpretNonPositionalArgs", - XOTclInterpretNonPositionalArgsCmd, 0, 0); + Tcl_CreateObjCommand(in, "::xotcl::interpretNonpositionalArgs", + XOTclInterpretNonpositionalArgsCmd, 0, 0); #ifdef XOTCL_BYTECODE instructions[INST_SELF_DISPATCH].cmdPtr = (Command *) @@ -10802,17 +10943,17 @@ * Non-Positional Args Object */ - nonPositionalArgsCl = PrimitiveCCreate(in, + nonposArgsCl = PrimitiveCCreate(in, XOTclGlobalStrings[XOTE_NON_POS_ARGS_CL], thecls); - XOTclAddIMethod(in, (XOTcl_Class*) nonPositionalArgsCl, + XOTclAddIMethod(in, (XOTcl_Class*) nonposArgsCl, "required", (Tcl_ObjCmdProc*) XOTclCheckRequiredArgs, 0, 0); - XOTclAddIMethod(in, (XOTcl_Class*) nonPositionalArgsCl, + XOTclAddIMethod(in, (XOTcl_Class*) nonposArgsCl, "boolean", (Tcl_ObjCmdProc*) XOTclCheckBooleanArgs, 0, 0); PrimitiveOCreate(in, XOTclGlobalStrings[XOTE_NON_POS_ARGS_OBJ], - nonPositionalArgsCl); + nonposArgsCl); /* * Parameter Class Index: xotcl/generic/xotclInt.h =================================================================== diff -u -r489071934af0126a0f768b0ced07dea3b2328a23 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/generic/xotclInt.h (.../xotclInt.h) (revision 489071934af0126a0f768b0ced07dea3b2328a23) +++ xotcl/generic/xotclInt.h (.../xotclInt.h) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -1,5 +1,5 @@ /* -*- Mode: c++ -*- - * $Id: xotclInt.h,v 1.12 2004/12/02 00:01:20 neumann Exp $ + * $Id: xotclInt.h,v 1.13 2005/01/06 03:10:05 neumann Exp $ * Extended Object Tcl (XOTcl) * * Copyright (C) 1999-2002 Gustaf Neumann, Uwe Zdun @@ -443,10 +443,10 @@ * object and class internals */ -typedef struct XOTclNonPosArgs { - Tcl_Obj* nonPosArgs; +typedef struct XOTclNonposArgs { + Tcl_Obj* nonposArgs; Tcl_Obj* ordinaryArgs; -} XOTclNonPosArgs; +} XOTclNonposArgs; typedef struct XOTclObjectOpt { XOTclAssertionStore *assertions; @@ -473,7 +473,7 @@ XOTclMixinStack *mixinStack; int refCount; short flags; - Tcl_HashTable *nonPosArgsTable; + Tcl_HashTable *nonposArgsTable; } XOTclObject; typedef struct XOTclClassOpt { @@ -498,7 +498,7 @@ Tcl_Namespace *nsPtr; Tcl_Obj* parameters; XOTclClassOpt* opt; - Tcl_HashTable *nonPosArgsTable; + Tcl_HashTable *nonposArgsTable; } XOTclClass; typedef struct XOTclClasses { @@ -535,7 +535,7 @@ "0", "move", "self", "class", "recreate", "self class", "self proc", "::xotcl::Class::Parameter", "searchDefaults", "__exitHandler", - "::xotcl::NonPosArgs", "::xotcl::nonPosArgs", + "::xotcl::NonposArgs", "::xotcl::nonposArgs", "cleanup", "configure", "filter", "instfilter", "instproc", "proc", "mkGetterSetter", "format", "__#", "-guard", "defaultmethod", Index: xotcl/library/lib/changeXOTclVersion.xotcl =================================================================== diff -u -r489071934af0126a0f768b0ced07dea3b2328a23 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/library/lib/changeXOTclVersion.xotcl (.../changeXOTclVersion.xotcl) (revision 489071934af0126a0f768b0ced07dea3b2328a23) +++ xotcl/library/lib/changeXOTclVersion.xotcl (.../changeXOTclVersion.xotcl) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -6,7 +6,7 @@ # set XOTCL_MAJOR_VERSION 1 set XOTCL_MINOR_VERSION 3 -set XOTCL_RELEASE_LEVEL .4 +set XOTCL_RELEASE_LEVEL .5 # example settings: # 1.0 Index: xotcl/library/lib/trace.xotcl =================================================================== diff -u -r47c4c8f68826b6e7b4b9fa38e65bd77f281d7dbf -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/library/lib/trace.xotcl (.../trace.xotcl) (revision 47c4c8f68826b6e7b4b9fa38e65bd77f281d7dbf) +++ xotcl/library/lib/trace.xotcl (.../trace.xotcl) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -1,4 +1,4 @@ -# -*- Tcl -*- $Id: trace.xotcl,v 1.2 2004/07/27 09:35:18 neumann Exp $ +# -*- Tcl -*- $Id: trace.xotcl,v 1.3 2005/01/06 03:10:05 neumann Exp $ package provide xotcl::trace 0.91 @ @File {description { Various tracing tools for the XOTcl language. @@ -126,7 +126,7 @@ instproc {set dargs [list [lindex $args 0] [lindex $args 1] ...] } default {set dargs $args } } - my showStack + #my showStack Trace::puts "CALL $context> [self]->$method $dargs (next=[self next])" set result [next] Trace::puts "EXIT $context> [self]->$method ($result)" Index: xotcl/library/serialize/Serializer.xotcl =================================================================== diff -u -r464284f53643031115e4da0204025a733675ad60 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/library/serialize/Serializer.xotcl (.../Serializer.xotcl) (revision 464284f53643031115e4da0204025a733675ad60) +++ xotcl/library/serialize/Serializer.xotcl (.../Serializer.xotcl) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -1,6 +1,6 @@ -# $Id: Serializer.xotcl,v 1.4 2004/08/19 09:57:50 neumann Exp $ +# $Id: Serializer.xotcl,v 1.5 2005/01/06 03:10:05 neumann Exp $ package require XOTcl 1.0 -package provide xotcl::serializer 0.4 +package provide xotcl::serializer 0.6 @ @File { description { @@ -11,7 +11,7 @@ authors { Gustaf Neumann, Gustaf.Neumann@wu-wien.ac.at } - date { $Date: 2004/08/19 09:57:50 $ } + date { $Date: 2005/01/06 03:10:05 $ } } @ Serializer proc all { @@ -81,6 +81,9 @@ ######################################################################################## Class Serializer -parameter {ignoreVarsRE map} +Serializer proc addGlobalMethods list { + foreach {o p m} $list {my set globalExportMethods($o,$p,$m) 1} +} Serializer proc ignore args { my set skip $args } @@ -94,17 +97,21 @@ } } Serializer instproc method-serialize {o m prefix} { + my pcmd [my unescaped-method-serialize $o $m $prefix] +} +Serializer instproc unescaped-method-serialize {o m prefix} { set arglist [list] foreach v [$o info ${prefix}args $m] { if {[$o info ${prefix}default $m $v x]} { lappend arglist [list $v $x] } {lappend arglist $v} } - lappend r ${prefix}proc $m [$o info ${prefix}nonposargs $m] \ - $arglist [$o info ${prefix}body $m] + lappend r ${prefix}proc $m \ + [concat [$o info ${prefix}nonposargs $m] $arglist] \ + [$o info ${prefix}body $m] foreach p {pre post} { if {[$o info ${prefix}$p $m]!=""} {lappend r [$o info ${prefix}$p $m]} } - return [my pcmd $r] + return $r } Serializer instproc pcmd list { foreach a $list { @@ -275,12 +282,27 @@ Serializer proc all {args} { set s [eval my new -childof [self] -volatile $args] set r [$s serializeList [$s allInstances ::Object]] - if {[string compare [::xotcl::Object info body __exitHandler] "\n;"]} { - append r \n "::xotcl::Object configure " \ - [$s method-serialize ::xotcl::Object __exitHandler ""] \n + my addGlobalMethods [list ::xotcl::Object proc __exitHandler] + foreach k [my array names globalExportMethods] { + foreach {o p m} [split $k ,] break + switch $p { + proc {set prefix ""} + instproc {set prefix inst} + } + if {[string compare "" [$o info ${prefix}procs $m]]} { + if {![info exists methods($o)]} {set methods($o) ""} + append methods($o) [$s method-serialize $o $m $prefix] " \\\n " + } } + foreach o [array names methods] { + append r \n "$o configure \\\n " [string trimright $methods($o) "\\\n "] + } return $r } +Serializer proc methodSerialize {object method prefix} { + set s [my new -childof [self] -volatile] + concat $object [$s unescaped-method-serialize $object $method $prefix] +} Serializer proc deepSerialize args { set s [my new -childof [self] -volatile] set nr [eval $s configure $args] Index: xotcl/library/serialize/pkgIndex.tcl =================================================================== diff -u -rf7894d9be99a8da3a04218abcdb9bd46b6d625c8 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/library/serialize/pkgIndex.tcl (.../pkgIndex.tcl) (revision f7894d9be99a8da3a04218abcdb9bd46b6d625c8) +++ xotcl/library/serialize/pkgIndex.tcl (.../pkgIndex.tcl) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -10,4 +10,4 @@ package ifneeded xotcl::scriptCreation::recoveryPoint 0.8 [list source [file join $dir RecoveryPoint.xotcl]] package ifneeded xotcl::scriptCreation::scriptCreator 0.8 [list source [file join $dir ScriptCreator.xotcl]] -package ifneeded xotcl::serializer 0.3 [list source [file join $dir Serializer.xotcl]] +package ifneeded xotcl::serializer 0.6 [list source [file join $dir Serializer.xotcl]] Index: xotcl/library/store/XOTclGdbm/configure =================================================================== diff -u -r489071934af0126a0f768b0ced07dea3b2328a23 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/library/store/XOTclGdbm/configure (.../configure) (revision 489071934af0126a0f768b0ced07dea3b2328a23) +++ xotcl/library/store/XOTclGdbm/configure (.../configure) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -10922,3 +10922,5 @@ + + Index: xotcl/library/store/XOTclGdbm/configure.in =================================================================== diff -u -r489071934af0126a0f768b0ced07dea3b2328a23 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/library/store/XOTclGdbm/configure.in (.../configure.in) (revision 489071934af0126a0f768b0ced07dea3b2328a23) +++ xotcl/library/store/XOTclGdbm/configure.in (.../configure.in) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -3,7 +3,7 @@ dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.6 2004/12/02 00:01:20 neumann Exp $ +# RCS: @(#) $Id: configure.in,v 1.7 2005/01/06 03:10:05 neumann Exp $ #----------------------------------------------------------------------- # Sample configure.in for Tcl Extensions. The only places you should @@ -253,3 +253,5 @@ + + Index: xotcl/library/store/XOTclSdbm/configure =================================================================== diff -u -r489071934af0126a0f768b0ced07dea3b2328a23 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/library/store/XOTclSdbm/configure (.../configure) (revision 489071934af0126a0f768b0ced07dea3b2328a23) +++ xotcl/library/store/XOTclSdbm/configure (.../configure) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -10878,3 +10878,5 @@ + + Index: xotcl/library/store/XOTclSdbm/configure.in =================================================================== diff -u -r489071934af0126a0f768b0ced07dea3b2328a23 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/library/store/XOTclSdbm/configure.in (.../configure.in) (revision 489071934af0126a0f768b0ced07dea3b2328a23) +++ xotcl/library/store/XOTclSdbm/configure.in (.../configure.in) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -3,7 +3,7 @@ dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.6 2004/12/02 00:01:20 neumann Exp $ +# RCS: @(#) $Id: configure.in,v 1.7 2005/01/06 03:10:05 neumann Exp $ #----------------------------------------------------------------------- # Sample configure.in for Tcl Extensions. The only places you should @@ -216,3 +216,5 @@ + + Index: xotcl/library/store/pkgIndex.tcl =================================================================== diff -u -r9722a51911e1502444c173306c8c88f7f3888989 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/library/store/pkgIndex.tcl (.../pkgIndex.tcl) (revision 9722a51911e1502444c173306c8c88f7f3888989) +++ xotcl/library/store/pkgIndex.tcl (.../pkgIndex.tcl) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -15,7 +15,6 @@ package ifneeded xotcl::store::persistence 0.8 [list source [file join $dir Persistence.xotcl]] package ifneeded xotcl::store::tclgdbm 0.84 [list source [file join $dir TclGdbmStorage.xotcl]] package ifneeded xotcl::store::textfile 0.84 [list source [file join $dir TextFileStorage.xotcl]] - set __store_dir__ $dir foreach index [glob -nocomplain [file join $dir * pkgIndex.tcl]] { set dir [file dirname $index] @@ -26,5 +25,3 @@ unset __store_dir__ - - Index: xotcl/library/xml/TclExpat-1.1/configure =================================================================== diff -u -r489071934af0126a0f768b0ced07dea3b2328a23 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/library/xml/TclExpat-1.1/configure (.../configure) (revision 489071934af0126a0f768b0ced07dea3b2328a23) +++ xotcl/library/xml/TclExpat-1.1/configure (.../configure) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -10878,3 +10878,5 @@ + + Index: xotcl/library/xml/TclExpat-1.1/configure.in =================================================================== diff -u -r489071934af0126a0f768b0ced07dea3b2328a23 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/library/xml/TclExpat-1.1/configure.in (.../configure.in) (revision 489071934af0126a0f768b0ced07dea3b2328a23) +++ xotcl/library/xml/TclExpat-1.1/configure.in (.../configure.in) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -3,7 +3,7 @@ dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. # -# RCS: @(#) $Id: configure.in,v 1.6 2004/12/02 00:01:20 neumann Exp $ +# RCS: @(#) $Id: configure.in,v 1.7 2005/01/06 03:10:05 neumann Exp $ #----------------------------------------------------------------------- # Sample configure.in for Tcl Extensions. The only places you should @@ -216,3 +216,5 @@ + + Index: xotcl/tests/testx.xotcl =================================================================== diff -u -ra2a38f88c2b4e7891bf5addc324e2023d3adfccd -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/tests/testx.xotcl (.../testx.xotcl) (revision a2a38f88c2b4e7891bf5addc324e2023d3adfccd) +++ xotcl/tests/testx.xotcl (.../testx.xotcl) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -1,4 +1,4 @@ -#$Id: testx.xotcl,v 1.22 2004/11/20 18:54:34 neumann Exp $ +#$Id: testx.xotcl,v 1.23 2005/01/06 03:10:05 neumann Exp $ package require XOTcl namespace import -force xotcl::* @@ -3476,7 +3476,7 @@ } o proc z4 {{{-b: required, checkobj colorchecker,color, reddish, - checkobj xotcl::nonPosArgs,required} red} + checkobj xotcl::nonposArgs,required} red} {{-c: required }}} {arg} { lappend ::r "$b $arg" return "$b $arg" @@ -3538,7 +3538,7 @@ errorCheck [o info body z2] {return "$x -- $args -- $a -- $b"} "info body 1" errorCheck [P info instbody z2] {return "$x -- $args -- $a -- $b"} "info instbody z2" errorCheck [o info args z4] {arg} "info args" - errorCheck [o info nonposargs z4] "{{-b:required,checkobj colorchecker,color,reddish,checkobj xotcl::nonPosArgs,required} red} -c:required" "info nonposargs 1" + errorCheck [o info nonposargs z4] "{{-b:required,checkobj colorchecker,color,reddish,checkobj xotcl::nonposArgs,required} red} -c:required" "info nonposargs 1" errorCheck [o info nonposargs x] {} "info nonposargs 2" errorCheck [P info instargs z3] {a b c} "info instargs" errorCheck [P info instnonposargs z3] {-x:required {-a 1} {-b {1 2}}} "info instnonposargs 1" @@ -3589,6 +3589,45 @@ catch {oa foo "--"} msg errorCheck $msg "wrong # args: should be {b}" "Non-pos arg: double dash alone" + + Class C + C create c1 + C instproc m2 { + {-flag:boolean false} + } {x y {z 15}} { + return $flag-$z + } + c1 proc m14 { + {-flag:boolean false} + } {x y {z 15}} { + return $flag-$z + } + + errorCheck [list [c1 m14 1 2 3] [c1 info args m14] \ + [c1 info default m14 z e] [set e]] \ + "false-3 {x y z} 1 15" \ + "Defaults proc" + + + errorCheck [list [c1 m2 1 2 3] [C info instargs m2]] \ + "false-3 {x y z}" \ + "info instargs" + + errorCheck [list [C info instdefault m2 x d] [C info instdefault m2 z d] [set d]] \ + "0 1 15" \ + "Defaults for instproc" + + catch {C info instdefault m2 xxx e} msg + errorCheck $msg "method 'm2' doesn't have an argument 'xxx'" \ + "Defaults instproc error" + + C instproc m3 { + {-flag:boolean} + } {x y z} { + return hu3 + } + + errorCheck [c1 m3 1 2 3] "hu3" "Defaults instproc no flag" return "PASSED [self]" } Index: xotcl/tests/xocomm.test =================================================================== diff -u -rf7894d9be99a8da3a04218abcdb9bd46b6d625c8 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/tests/xocomm.test (.../xocomm.test) (revision f7894d9be99a8da3a04218abcdb9bd46b6d625c8) +++ xotcl/tests/xocomm.test (.../xocomm.test) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -1,5 +1,5 @@ #!../../xotcl-0.9.4/xotclsh -# $Id: xocomm.test,v 1.1 2004/05/23 22:50:39 neumann Exp $ +# $Id: xocomm.test,v 1.2 2005/01/06 03:10:05 neumann Exp $ package require XOTcl; namespace import -force xotcl::* lappend auto_path [file dirname [info script]]/.. package require xotcl::test @@ -29,7 +29,7 @@ puts $startCmd } -#package require package; package verbose 1 +package require xotcl::package; package verbose 1 package require xotcl::comm::httpAccess package require xotcl::comm::ftp package require xotcl::trace Index: xotcl/unix/pkgIndex.unix =================================================================== diff -u -r2c6cdd4f5d1c45c96e996a70b54ae4c5f46a40fd -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/unix/pkgIndex.unix (.../pkgIndex.unix) (revision 2c6cdd4f5d1c45c96e996a70b54ae4c5f46a40fd) +++ xotcl/unix/pkgIndex.unix (.../pkgIndex.unix) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -1,4 +1,4 @@ - package ifneeded XOTcl 1.3.3 [list load \ - [file join $dir libxotcl1.3.3.so] XOTcl] + package ifneeded XOTcl 1.3.5 [list load \ + [file join $dir libxotcl1.3.5.so] XOTcl] Index: xotcl/unix/xotcl.spec =================================================================== diff -u -r2c6cdd4f5d1c45c96e996a70b54ae4c5f46a40fd -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/unix/xotcl.spec (.../xotcl.spec) (revision 2c6cdd4f5d1c45c96e996a70b54ae4c5f46a40fd) +++ xotcl/unix/xotcl.spec (.../xotcl.spec) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -1,10 +1,10 @@ Summary: Object Oriented Extension for Tcl Name: xotcl -Version: 1.3.3 +Version: 1.3.5 Release: 0 Copyright: open source Group: Development/Languages -Source: http://www.xotcl.org/xotcl-1.3.3.tar.gz +Source: http://www.xotcl.org/xotcl-1.3.5.tar.gz URL: http://www.xotcl.org Packager: Gustaf.Neumann@wu-wien.ac.at Distribution: RedHat 8.0 @@ -21,7 +21,7 @@ consult http://www.xotcl.org %prep -%setup -q -n xotcl-1.3.3 +%setup -q -n xotcl-1.3.5 %build @@ -37,7 +37,7 @@ %undefine __check_files %doc doc -/usr/lib/xotcl1.3.3 +/usr/lib/xotcl1.3.5 /usr/bin/xotclsh /usr/bin/xowish /usr/include/xotclDecls.h Index: xotcl/xotclConfig.sh =================================================================== diff -u -r8c47264f39e2e6a65fc0c23d8d856a47cdf27fc4 -r0896d4deb00780e48b5b03269bf9c4ecca948919 --- xotcl/xotclConfig.sh (.../xotclConfig.sh) (revision 8c47264f39e2e6a65fc0c23d8d856a47cdf27fc4) +++ xotcl/xotclConfig.sh (.../xotclConfig.sh) (revision 0896d4deb00780e48b5b03269bf9c4ecca948919) @@ -15,7 +15,7 @@ XOTCL_VERSION='1.3' XOTCL_MAJOR_VERSION='1' XOTCL_MINOR_VERSION='3' -XOTCL_RELEASE_LEVEL='.3' +XOTCL_RELEASE_LEVEL='.5' # String to pass to compiles to pick up includes during build # (i.e., assuming nothing has been installed) @@ -24,34 +24,34 @@ # String to pass to compiles to pick up the XOTcl includes from their # installed directory. -XOTCL_INCLUDE_DIR="/usr/include/xotcl1.3.3" +XOTCL_INCLUDE_DIR="/usr/include/xotcl1.3.5" XOTCL_INCLUDE_SPEC="-I$XOTCL_INCLUDE_DIR" # The name of the XOTcl library (may be either a .a file or a shared library): -XOTCL_LIB_FILE=libxotcl1.3.3.so +XOTCL_LIB_FILE=libxotcl1.3.5.so # String to pass to linker to pick up the XOTcl library from its # build directory. -XOTCL_BUILD_LIB_SPEC='-L/home/neumann/xotcl-1.3.3 -lxotcl1.3.3' +XOTCL_BUILD_LIB_SPEC='-L/home/neumann/xotcl-1.3.5 -lxotcl1.3.5' # String to pass to linker to pick up the XOTcl library from its # installed directory. -XOTCL_LIB_SPEC='-L/usr/lib/xotcl1.3.3 -lxotcl1.3.3' +XOTCL_LIB_SPEC='-L/usr/lib/xotcl1.3.5 -lxotcl1.3.5' # The name of the XOTcl stub library (a .a file): -# XOTCL_STUB_LIB_FILE=libxotclstub1.3.3.a +# XOTCL_STUB_LIB_FILE=libxotclstub1.3.5.a # String to pass to linker to pick up the XOTcl stub library from its # build directory. -XOTCL_BUILD_STUB_LIB_SPEC='-L/home/neumann/xotcl-1.3.3 -lxotclstub1.3.3' +XOTCL_BUILD_STUB_LIB_SPEC='-L/home/neumann/xotcl-1.3.5 -lxotclstub1.3.5' # String to pass to linker to pick up the XOTcl stub library from its # installed directory. -XOTCL_STUB_LIB_SPEC='-L/usr/lib/xotcl1.3.3 -lxotclstub1.3.3' +XOTCL_STUB_LIB_SPEC='-L/usr/lib/xotcl1.3.5 -lxotclstub1.3.5' # Name of the xotcl stub library with full path in build and install directory -XOTCL_BUILD_STUB_LIB_PATH='/home/neumann/xotcl-1.3.3/libxotclstub1.3.3.a' -XOTCL_STUB_LIB_PATH='/usr/lib/xotcl1.3.3/libxotclstub1.3.3.a' +XOTCL_BUILD_STUB_LIB_PATH='/home/neumann/xotcl-1.3.5/libxotclstub1.3.5.a' +XOTCL_STUB_LIB_PATH='/usr/lib/xotcl1.3.5/libxotclstub1.3.5.a' # Location of the top-level source directories from which XOTcl # was built. This is the directory that contains generic, unix, etc. @@ -61,8 +61,8 @@ XOTCL_SRC_DIR='.' # shared and unshared library suffix -XOTCL_SHARED_LIB_SUFFIX=1.3.3${DBGX}.so -XOTCL_UNSHARED_LIB_SUFFIX=1.3.3${DBGX}.a +XOTCL_SHARED_LIB_SUFFIX=1.3.5${DBGX}.so +XOTCL_UNSHARED_LIB_SUFFIX=1.3.5${DBGX}.a # the shell in whose installation dirs the xotcl package is installed XOTCL_COMPATIBLE_TCLSH=/home/neumann/tcl8.4.7/unix/tclsh